Fix camera
Change-Id: Icebc2f332c36bae4480a62851a7e934fa367c73e
This commit is contained in:
parent
0dcceff803
commit
d7d7c480b8
@ -4,10 +4,16 @@ KBUILD_OPTIONS += CAMERA_KERNEL_ROOT=$(KERNEL_SRC)/$(M)
|
|||||||
KBUILD_OPTIONS += KERNEL_ROOT=$(KERNEL_SRC)
|
KBUILD_OPTIONS += KERNEL_ROOT=$(KERNEL_SRC)
|
||||||
KBUILD_OPTIONS += MODNAME=camera
|
KBUILD_OPTIONS += MODNAME=camera
|
||||||
KBUILD_OPTIONS += BOARD_PLATFORM=pineapple
|
KBUILD_OPTIONS += BOARD_PLATFORM=pineapple
|
||||||
|
KBUILD_OPTIONS += CONFIG_QCOM_SMCINVOKE=m
|
||||||
|
KBUILD_OPTIONS += TARGET_SYNX_ENABLE=m
|
||||||
|
KBUILD_OPTIONS += CONFIG_MSM_MMRM=y
|
||||||
|
KBUILD_OPTIONS += CONFIG_MSM_MMRM_VM=n
|
||||||
|
KBUILD_OPTIONS += CONFIG_QTI_SMMU_PROXY=m
|
||||||
|
|
||||||
KBUILD_EXTRA_SYMBOLS := \
|
KBUILD_EXTRA_SYMBOLS := \
|
||||||
$(OUT_DIR)/../sm8650-modules/qcom/opensource/mmrm-driver/Module.symvers \
|
$(OUT_DIR)/../sm8650-modules/qcom/opensource/mmrm-driver/Module.symvers \
|
||||||
$(OUT_DIR)/../sm8650-modules/qcom/opensource/securemsm-kernel/Module.symvers
|
$(OUT_DIR)/../sm8650-modules/qcom/opensource/securemsm-kernel/Module.symvers \
|
||||||
|
$(OUT_DIR)/../sm8650-modules/qcom/opensource/synx-kernel/Module.symvers
|
||||||
|
|
||||||
all: modules
|
all: modules
|
||||||
|
|
||||||
|
@ -621,6 +621,7 @@ static int mmrm_sw_throttle_low_priority_client(
|
|||||||
{
|
{
|
||||||
int rc = 0, i;
|
int rc = 0, i;
|
||||||
u64 start_ts = 0, end_ts = 0;
|
u64 start_ts = 0, end_ts = 0;
|
||||||
|
bool found_client_throttle = false;
|
||||||
struct mmrm_sw_clk_client_tbl_entry *tbl_entry_throttle_client;
|
struct mmrm_sw_clk_client_tbl_entry *tbl_entry_throttle_client;
|
||||||
struct mmrm_client_notifier_data notifier_data;
|
struct mmrm_client_notifier_data notifier_data;
|
||||||
struct completion timeout;
|
struct completion timeout;
|
||||||
@ -635,32 +636,37 @@ static int mmrm_sw_throttle_low_priority_client(
|
|||||||
for (i = 0; i < sinfo->throttle_clients_data_length ; i++) {
|
for (i = 0; i < sinfo->throttle_clients_data_length ; i++) {
|
||||||
tbl_entry_throttle_client =
|
tbl_entry_throttle_client =
|
||||||
&sinfo->clk_client_tbl[sinfo->throttle_clients_info[i].tbl_entry_id];
|
&sinfo->clk_client_tbl[sinfo->throttle_clients_info[i].tbl_entry_id];
|
||||||
|
if (!IS_ERR_OR_NULL(tbl_entry_throttle_client)) {
|
||||||
|
now_cur_ma = tbl_entry_throttle_client->current_ma
|
||||||
|
[tbl_entry_throttle_client->vdd_level]
|
||||||
|
[peak_data->aggreg_level];
|
||||||
|
min_cur_ma = tbl_entry_throttle_client->current_ma[clk_min_level]
|
||||||
|
[peak_data->aggreg_level];
|
||||||
|
|
||||||
if (IS_ERR_OR_NULL(tbl_entry_throttle_client))
|
d_mpr_h("%s:csid(0x%x) name(%s)\n",
|
||||||
continue;
|
__func__, tbl_entry_throttle_client->clk_src_id,
|
||||||
|
tbl_entry_throttle_client->name);
|
||||||
|
d_mpr_h("%s:now_cur_ma(%llu) min_cur_ma(%llu) delta_cur(%d)\n",
|
||||||
|
__func__, now_cur_ma, min_cur_ma, *delta_cur);
|
||||||
|
|
||||||
now_cur_ma = tbl_entry_throttle_client->current_ma
|
if ((now_cur_ma > min_cur_ma)
|
||||||
[tbl_entry_throttle_client->vdd_level]
|
&& (now_cur_ma - min_cur_ma > *delta_cur)) {
|
||||||
[peak_data->aggreg_level];
|
found_client_throttle = true;
|
||||||
min_cur_ma = tbl_entry_throttle_client->current_ma[clk_min_level]
|
d_mpr_h("%s: Throttle client csid(0x%x) name(%s)\n",
|
||||||
[peak_data->aggreg_level];
|
__func__, tbl_entry_throttle_client->clk_src_id,
|
||||||
|
tbl_entry_throttle_client->name);
|
||||||
d_mpr_h("%s:csid(0x%x) name(%s)\n",
|
d_mpr_h("%s:now_cur_ma %llu-min_cur_ma %llu>delta_cur %d\n",
|
||||||
__func__, tbl_entry_throttle_client->clk_src_id,
|
__func__, now_cur_ma, min_cur_ma, *delta_cur);
|
||||||
tbl_entry_throttle_client->name);
|
/* found client to throttle, break from here. */
|
||||||
d_mpr_h("%s:now_cur_ma(%llu) min_cur_ma(%llu) delta_cur(%d)\n",
|
break;
|
||||||
__func__, now_cur_ma, min_cur_ma, *delta_cur);
|
}
|
||||||
|
}
|
||||||
if ((now_cur_ma <= min_cur_ma) || (now_cur_ma - min_cur_ma <= *delta_cur))
|
}
|
||||||
continue;
|
|
||||||
|
|
||||||
d_mpr_h("%s: Throttle client csid(0x%x) name(%s)\n",
|
|
||||||
__func__, tbl_entry_throttle_client->clk_src_id,
|
|
||||||
tbl_entry_throttle_client->name);
|
|
||||||
d_mpr_h("%s:now_cur_ma %llu-min_cur_ma %llu>delta_cur %d\n",
|
|
||||||
__func__, now_cur_ma, min_cur_ma, *delta_cur);
|
|
||||||
|
|
||||||
|
/*Client to throttle is found, Throttle this client now to minimum clock rate*/
|
||||||
|
if (found_client_throttle) {
|
||||||
/* Setup notifier */
|
/* Setup notifier */
|
||||||
|
|
||||||
notifier_data.cb_type = MMRM_CLIENT_RESOURCE_VALUE_CHANGE;
|
notifier_data.cb_type = MMRM_CLIENT_RESOURCE_VALUE_CHANGE;
|
||||||
notifier_data.cb_data.val_chng.old_val =
|
notifier_data.cb_data.val_chng.old_val =
|
||||||
tbl_entry_throttle_client->freq[tbl_entry_throttle_client->vdd_level];
|
tbl_entry_throttle_client->freq[tbl_entry_throttle_client->vdd_level];
|
||||||
@ -679,7 +685,8 @@ static int mmrm_sw_throttle_low_priority_client(
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
d_mpr_e("%s: Client failed to send SUCCESS in callback(%d)\n",
|
d_mpr_e("%s: Client failed to send SUCCESS in callback(%d)\n",
|
||||||
__func__, tbl_entry_throttle_client->clk_src_id);
|
__func__, tbl_entry_throttle_client->clk_src_id);
|
||||||
continue;
|
rc = -EINVAL;
|
||||||
|
goto err_clk_set_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((end_ts - start_ts) > NOTIFY_TIMEOUT)
|
if ((end_ts - start_ts) > NOTIFY_TIMEOUT)
|
||||||
@ -692,7 +699,8 @@ static int mmrm_sw_throttle_low_priority_client(
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
d_mpr_e("%s: Failed to throttle the clk csid(%d)\n",
|
d_mpr_e("%s: Failed to throttle the clk csid(%d)\n",
|
||||||
__func__, tbl_entry_throttle_client->clk_src_id);
|
__func__, tbl_entry_throttle_client->clk_src_id);
|
||||||
continue;
|
rc = -EINVAL;
|
||||||
|
goto err_clk_set_fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -722,10 +730,8 @@ static int mmrm_sw_throttle_low_priority_client(
|
|||||||
|
|
||||||
/* Clearing the reserve flag */
|
/* Clearing the reserve flag */
|
||||||
tbl_entry_throttle_client->reserve = false;
|
tbl_entry_throttle_client->reserve = false;
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
err_clk_set_fail:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ static struct mmrm_common_data common_pt_data[] = {
|
|||||||
|
|
||||||
/*throttle client list is as per fdd & resource availability*/
|
/*throttle client list is as per fdd & resource availability*/
|
||||||
|
|
||||||
static struct mmrm_throttle_clients_data common_pt_throttle_clients_data_pineapple[] = {
|
static struct mmrm_throttle_clients_data common_pt_throttle_clients_data[] = {
|
||||||
{
|
{
|
||||||
.domain = MMRM_CLIENT_DOMAIN_DISPLAY,
|
.domain = MMRM_CLIENT_DOMAIN_DISPLAY,
|
||||||
.id = 0x3e,
|
.id = 0x3e,
|
||||||
@ -42,59 +42,25 @@ static struct mmrm_throttle_clients_data common_pt_throttle_clients_data_pineapp
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mmrm_throttle_clients_data common_pt_throttle_clients_data_cliffs[] = {
|
static struct mmrm_platform_data commom_pt_platform_data = {
|
||||||
{
|
|
||||||
.domain = MMRM_CLIENT_DOMAIN_DISPLAY,
|
|
||||||
.id = 0x3e,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.domain = MMRM_CLIENT_DOMAIN_VIDEO,
|
|
||||||
.id = 0x03,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.domain = MMRM_CLIENT_DOMAIN_CAMERA,
|
|
||||||
.id = 0x62,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.domain = MMRM_CLIENT_DOMAIN_CVP,
|
|
||||||
.id = 0x0a,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.domain = MMRM_CLIENT_DOMAIN_CAMERA,
|
|
||||||
.id = 0x17,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct mmrm_platform_data commom_pt_platform_data_pineapple = {
|
|
||||||
.common_data = common_pt_data,
|
.common_data = common_pt_data,
|
||||||
.common_data_length = ARRAY_SIZE(common_pt_data),
|
.common_data_length = ARRAY_SIZE(common_pt_data),
|
||||||
.throttle_clk_clients_data = common_pt_throttle_clients_data_pineapple,
|
.throttle_clk_clients_data = common_pt_throttle_clients_data,
|
||||||
.throttle_clk_clients_data_length = ARRAY_SIZE(common_pt_throttle_clients_data_pineapple),
|
.throttle_clk_clients_data_length = ARRAY_SIZE(common_pt_throttle_clients_data),
|
||||||
};
|
|
||||||
|
|
||||||
static struct mmrm_platform_data commom_pt_platform_data_cliffs = {
|
|
||||||
.common_data = common_pt_data,
|
|
||||||
.common_data_length = ARRAY_SIZE(common_pt_data),
|
|
||||||
.throttle_clk_clients_data = common_pt_throttle_clients_data_cliffs,
|
|
||||||
.throttle_clk_clients_data_length = ARRAY_SIZE(common_pt_throttle_clients_data_cliffs),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct of_device_id mmrm_dt_match[] = {
|
static const struct of_device_id mmrm_dt_match[] = {
|
||||||
{
|
{
|
||||||
.compatible = "qcom,waipio-mmrm",
|
.compatible = "qcom,waipio-mmrm",
|
||||||
.data = &commom_pt_platform_data_pineapple,
|
.data = &commom_pt_platform_data,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.compatible = "qcom,kalama-mmrm",
|
.compatible = "qcom,kalama-mmrm",
|
||||||
.data = &commom_pt_platform_data_pineapple,
|
.data = &commom_pt_platform_data,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.compatible = "qcom,pineapple-mmrm",
|
.compatible = "qcom,pineapple-mmrm",
|
||||||
.data = &commom_pt_platform_data_pineapple,
|
.data = &commom_pt_platform_data,
|
||||||
},
|
|
||||||
{
|
|
||||||
.compatible = "qcom,cliffs-mmrm",
|
|
||||||
.data = &commom_pt_platform_data_cliffs,
|
|
||||||
},
|
},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
@ -10,7 +10,7 @@ endif
|
|||||||
|
|
||||||
ifeq ($(CONFIG_MSM_VIDC_PINEAPPLE), y)
|
ifeq ($(CONFIG_MSM_VIDC_PINEAPPLE), y)
|
||||||
LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/platform/pineapple/inc \
|
LINUXINCLUDE += -I$(VIDEO_DRIVER_ABS_PATH)/platform/pineapple/inc \
|
||||||
-I$(VIDEO_DRIVER_ABS_PATH)/platform/cliffs/inc
|
-I$(VIDEO_DRIVER_ABS_PATH)/platform/cliffs/inc \
|
||||||
-I$(VIDEO_DRIVER_ABS_PATH)/variant/iris33/inc
|
-I$(VIDEO_DRIVER_ABS_PATH)/variant/iris33/inc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user