On Sun Mar 29 02:33:09 2026 +0200, Dmitry Baryshkov wrote:
> Having firmware-related fields in platform data results in the tying
> platform data to the HFI firmware data rather than the actual hardware.
> For example, SM8450 uses Gen2 firmware, so currently its platform data
> should be placed next to the other gen2 platforms, although it has the
> VPU2.0 core, similar to the one found on SM8250 and SC7280 and so the
> hardware-specific platform data is also close to those devices.
>
> Split firmware data to a separate struct, separating hardware-related
> data from the firmware interfaces.
>
> Reviewed-by: Dikshita Agarwal <[email protected]>
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> Signed-off-by: Bryan O'Donoghue <[email protected]>
Patch committed.
Thanks,
Bryan O'Donoghue
drivers/media/platform/qcom/iris/iris_buffer.c | 82 +++----
drivers/media/platform/qcom/iris/iris_core.h | 2 +
drivers/media/platform/qcom/iris/iris_ctrls.c | 8 +-
.../platform/qcom/iris/iris_hfi_gen1_command.c | 8 +-
.../platform/qcom/iris/iris_hfi_gen2_command.c | 66 +++---
.../platform/qcom/iris/iris_platform_common.h | 81 ++++---
.../media/platform/qcom/iris/iris_platform_gen1.c | 67 +++---
.../media/platform/qcom/iris/iris_platform_gen2.c | 248 ++++-----------------
drivers/media/platform/qcom/iris/iris_probe.c | 3 +-
drivers/media/platform/qcom/iris/iris_vidc.c | 10 +-
drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 +-
11 files changed, 206 insertions(+), 371 deletions(-)
---
diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c
b/drivers/media/platform/qcom/iris/iris_buffer.c
index f55b7c608116..fbe136360aa1 100644
--- a/drivers/media/platform/qcom/iris/iris_buffer.c
+++ b/drivers/media/platform/qcom/iris/iris_buffer.c
@@ -301,31 +301,31 @@ static void iris_fill_internal_buf_info(struct iris_inst
*inst,
void iris_get_internal_buffers(struct iris_inst *inst, u32 plane)
{
- const struct iris_platform_data *platform_data =
inst->core->iris_platform_data;
+ const struct iris_firmware_data *firmware_data =
inst->core->iris_firmware_data;
const u32 *internal_buf_type;
u32 internal_buffer_count, i;
if (inst->domain == DECODER) {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count =
platform_data->dec_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_ip_int_buf_tbl;
+ internal_buffer_count =
firmware_data->dec_ip_int_buf_tbl_size;
for (i = 0; i < internal_buffer_count; i++)
iris_fill_internal_buf_info(inst,
internal_buf_type[i]);
} else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- internal_buffer_count =
platform_data->dec_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_op_int_buf_tbl;
+ internal_buffer_count =
firmware_data->dec_op_int_buf_tbl_size;
for (i = 0; i < internal_buffer_count; i++)
iris_fill_internal_buf_info(inst,
internal_buf_type[i]);
}
} else {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count =
platform_data->enc_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_ip_int_buf_tbl;
+ internal_buffer_count =
firmware_data->enc_ip_int_buf_tbl_size;
for (i = 0; i < internal_buffer_count; i++)
iris_fill_internal_buf_info(inst,
internal_buf_type[i]);
} else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- internal_buffer_count =
platform_data->enc_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_op_int_buf_tbl;
+ internal_buffer_count =
firmware_data->enc_op_int_buf_tbl_size;
for (i = 0; i < internal_buffer_count; i++)
iris_fill_internal_buf_info(inst,
internal_buf_type[i]);
}
@@ -366,7 +366,7 @@ static int iris_create_internal_buffer(struct iris_inst
*inst,
int iris_create_internal_buffers(struct iris_inst *inst, u32 plane)
{
- const struct iris_platform_data *platform_data =
inst->core->iris_platform_data;
+ const struct iris_firmware_data *firmware_data =
inst->core->iris_firmware_data;
u32 internal_buffer_count, i, j;
struct iris_buffers *buffers;
const u32 *internal_buf_type;
@@ -374,19 +374,19 @@ int iris_create_internal_buffers(struct iris_inst *inst,
u32 plane)
if (inst->domain == DECODER) {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count =
platform_data->dec_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_ip_int_buf_tbl;
+ internal_buffer_count =
firmware_data->dec_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- internal_buffer_count =
platform_data->dec_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_op_int_buf_tbl;
+ internal_buffer_count =
firmware_data->dec_op_int_buf_tbl_size;
}
} else {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count =
platform_data->enc_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_ip_int_buf_tbl;
+ internal_buffer_count =
firmware_data->enc_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- internal_buffer_count =
platform_data->enc_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_op_int_buf_tbl;
+ internal_buffer_count =
firmware_data->enc_op_int_buf_tbl_size;
}
}
@@ -442,7 +442,7 @@ int iris_queue_internal_deferred_buffers(struct iris_inst
*inst, enum iris_buffe
int iris_queue_internal_buffers(struct iris_inst *inst, u32 plane)
{
- const struct iris_platform_data *platform_data =
inst->core->iris_platform_data;
+ const struct iris_firmware_data *firmware_data =
inst->core->iris_firmware_data;
struct iris_buffer *buffer, *next;
struct iris_buffers *buffers;
const u32 *internal_buf_type;
@@ -451,19 +451,19 @@ int iris_queue_internal_buffers(struct iris_inst *inst,
u32 plane)
if (inst->domain == DECODER) {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count =
platform_data->dec_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_ip_int_buf_tbl;
+ internal_buffer_count =
firmware_data->dec_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- internal_buffer_count =
platform_data->dec_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_op_int_buf_tbl;
+ internal_buffer_count =
firmware_data->dec_op_int_buf_tbl_size;
}
} else {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count =
platform_data->enc_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_ip_int_buf_tbl;
+ internal_buffer_count =
firmware_data->enc_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- internal_buffer_count =
platform_data->enc_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_op_int_buf_tbl;
+ internal_buffer_count =
firmware_data->enc_op_int_buf_tbl_size;
}
}
@@ -501,7 +501,7 @@ int iris_destroy_internal_buffer(struct iris_inst *inst,
struct iris_buffer *buf
static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane,
bool force)
{
- const struct iris_platform_data *platform_data =
inst->core->iris_platform_data;
+ const struct iris_firmware_data *firmware_data =
inst->core->iris_firmware_data;
struct iris_buffer *buf, *next;
struct iris_buffers *buffers;
const u32 *internal_buf_type;
@@ -510,19 +510,19 @@ static int iris_destroy_internal_buffers(struct iris_inst
*inst, u32 plane, bool
if (inst->domain == DECODER) {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- len = platform_data->dec_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_ip_int_buf_tbl;
+ len = firmware_data->dec_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- len = platform_data->dec_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_op_int_buf_tbl;
+ len = firmware_data->dec_op_int_buf_tbl_size;
}
} else {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- len = platform_data->enc_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_ip_int_buf_tbl;
+ len = firmware_data->enc_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- len = platform_data->enc_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_op_int_buf_tbl;
+ len = firmware_data->enc_op_int_buf_tbl_size;
}
}
@@ -593,17 +593,17 @@ static int iris_release_internal_buffers(struct iris_inst
*inst,
static int iris_release_input_internal_buffers(struct iris_inst *inst)
{
- const struct iris_platform_data *platform_data =
inst->core->iris_platform_data;
+ const struct iris_firmware_data *firmware_data =
inst->core->iris_firmware_data;
const u32 *internal_buf_type;
u32 internal_buffer_count, i;
int ret;
if (inst->domain == DECODER) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count = platform_data->dec_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_ip_int_buf_tbl;
+ internal_buffer_count = firmware_data->dec_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count = platform_data->enc_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->enc_ip_int_buf_tbl;
+ internal_buffer_count = firmware_data->enc_ip_int_buf_tbl_size;
}
for (i = 0; i < internal_buffer_count; i++) {
diff --git a/drivers/media/platform/qcom/iris/iris_core.h
b/drivers/media/platform/qcom/iris/iris_core.h
index 1592681640ab..e0ca245c8c63 100644
--- a/drivers/media/platform/qcom/iris/iris_core.h
+++ b/drivers/media/platform/qcom/iris/iris_core.h
@@ -54,6 +54,7 @@ struct qcom_ubwc_cfg_data;
* @resets: table of iris reset clocks
* @controller_resets: table of controller reset clocks
* @iris_platform_data: a structure for platform data
+ * @iris_firmware_data: a pointer to the firmware (or HFI) specific data
* @ubwc_cfg: UBWC configuration for the platform
* @state: current state of core
* @iface_q_table_daddr: device address for interface queue table memory
@@ -97,6 +98,7 @@ struct iris_core {
struct reset_control_bulk_data *resets;
struct reset_control_bulk_data *controller_resets;
const struct iris_platform_data *iris_platform_data;
+ const struct iris_firmware_data *iris_firmware_data;
const struct qcom_ubwc_cfg_data *ubwc_cfg;
enum iris_core_state state;
dma_addr_t iface_q_table_daddr;
diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c
b/drivers/media/platform/qcom/iris/iris_ctrls.c
index 5a24aa869b2d..ef7adac3764d 100644
--- a/drivers/media/platform/qcom/iris/iris_ctrls.c
+++ b/drivers/media/platform/qcom/iris/iris_ctrls.c
@@ -332,8 +332,8 @@ void iris_session_init_caps(struct iris_core *core)
const struct platform_inst_fw_cap *caps;
u32 i, num_cap, cap_id;
- caps = core->iris_platform_data->inst_fw_caps_dec;
- num_cap = core->iris_platform_data->inst_fw_caps_dec_size;
+ caps = core->iris_firmware_data->inst_fw_caps_dec;
+ num_cap = core->iris_firmware_data->inst_fw_caps_dec_size;
for (i = 0; i < num_cap; i++) {
cap_id = caps[i].cap_id;
@@ -360,8 +360,8 @@ void iris_session_init_caps(struct iris_core *core)
}
}
- caps = core->iris_platform_data->inst_fw_caps_enc;
- num_cap = core->iris_platform_data->inst_fw_caps_enc_size;
+ caps = core->iris_firmware_data->inst_fw_caps_enc;
+ num_cap = core->iris_firmware_data->inst_fw_caps_enc_size;
for (i = 0; i < num_cap; i++) {
cap_id = caps[i].cap_id;
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
index 0017ade4adbd..3fb90a466a64 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
@@ -1033,8 +1033,8 @@ static int iris_hfi_gen1_session_set_config_params(struct
iris_inst *inst, u32 p
};
if (inst->domain == DECODER) {
- config_params =
core->iris_platform_data->dec_input_config_params_default;
- config_params_size =
core->iris_platform_data->dec_input_config_params_default_size;
+ config_params =
core->iris_firmware_data->dec_input_config_params_default;
+ config_params_size =
core->iris_firmware_data->dec_input_config_params_default_size;
if (V4L2_TYPE_IS_OUTPUT(plane)) {
handler = vdec_prop_type_handle_inp_arr;
handler_size =
ARRAY_SIZE(vdec_prop_type_handle_inp_arr);
@@ -1043,8 +1043,8 @@ static int iris_hfi_gen1_session_set_config_params(struct
iris_inst *inst, u32 p
handler_size =
ARRAY_SIZE(vdec_prop_type_handle_out_arr);
}
} else {
- config_params =
core->iris_platform_data->enc_input_config_params;
- config_params_size =
core->iris_platform_data->enc_input_config_params_size;
+ config_params =
core->iris_firmware_data->enc_input_config_params;
+ config_params_size =
core->iris_firmware_data->enc_input_config_params_size;
handler = venc_prop_type_handle_inp_arr;
handler_size = ARRAY_SIZE(venc_prop_type_handle_inp_arr);
}
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
index 639b75fca1ab..c90b22a75bc5 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
@@ -601,7 +601,7 @@ static int iris_hfi_gen2_set_super_block(struct iris_inst
*inst, u32 plane)
static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst, u32
plane)
{
- const struct iris_platform_data *pdata = inst->core->iris_platform_data;
+ const struct iris_firmware_data *fdata = inst->core->iris_firmware_data;
u32 config_params_size = 0, i, j;
const u32 *config_params = NULL;
int ret;
@@ -630,31 +630,31 @@ static int iris_hfi_gen2_session_set_config_params(struct
iris_inst *inst, u32 p
if (inst->domain == DECODER) {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
if (inst->codec == V4L2_PIX_FMT_H264) {
- config_params =
pdata->dec_input_config_params_default;
- config_params_size =
pdata->dec_input_config_params_default_size;
+ config_params =
fdata->dec_input_config_params_default;
+ config_params_size =
fdata->dec_input_config_params_default_size;
} else if (inst->codec == V4L2_PIX_FMT_HEVC) {
- config_params =
pdata->dec_input_config_params_hevc;
- config_params_size =
pdata->dec_input_config_params_hevc_size;
+ config_params =
fdata->dec_input_config_params_hevc;
+ config_params_size =
fdata->dec_input_config_params_hevc_size;
} else if (inst->codec == V4L2_PIX_FMT_VP9) {
- config_params =
pdata->dec_input_config_params_vp9;
- config_params_size =
pdata->dec_input_config_params_vp9_size;
+ config_params =
fdata->dec_input_config_params_vp9;
+ config_params_size =
fdata->dec_input_config_params_vp9_size;
} else if (inst->codec == V4L2_PIX_FMT_AV1) {
- config_params =
pdata->dec_input_config_params_av1;
- config_params_size =
pdata->dec_input_config_params_av1_size;
+ config_params =
fdata->dec_input_config_params_av1;
+ config_params_size =
fdata->dec_input_config_params_av1_size;
} else {
return -EINVAL;
}
} else {
- config_params = pdata->dec_output_config_params;
- config_params_size =
pdata->dec_output_config_params_size;
+ config_params = fdata->dec_output_config_params;
+ config_params_size =
fdata->dec_output_config_params_size;
}
} else {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- config_params = pdata->enc_input_config_params;
- config_params_size =
pdata->enc_input_config_params_size;
+ config_params = fdata->enc_input_config_params;
+ config_params_size =
fdata->enc_input_config_params_size;
} else {
- config_params = pdata->enc_output_config_params;
- config_params_size =
pdata->enc_output_config_params_size;
+ config_params = fdata->enc_output_config_params;
+ config_params_size =
fdata->enc_output_config_params_size;
}
}
@@ -849,24 +849,24 @@ static int iris_hfi_gen2_subscribe_change_param(struct
iris_inst *inst, u32 plan
switch (inst->codec) {
case V4L2_PIX_FMT_H264:
- change_param =
core->iris_platform_data->dec_input_config_params_default;
+ change_param =
core->iris_firmware_data->dec_input_config_params_default;
change_param_size =
-
core->iris_platform_data->dec_input_config_params_default_size;
+
core->iris_firmware_data->dec_input_config_params_default_size;
break;
case V4L2_PIX_FMT_HEVC:
- change_param =
core->iris_platform_data->dec_input_config_params_hevc;
+ change_param =
core->iris_firmware_data->dec_input_config_params_hevc;
change_param_size =
-
core->iris_platform_data->dec_input_config_params_hevc_size;
+
core->iris_firmware_data->dec_input_config_params_hevc_size;
break;
case V4L2_PIX_FMT_VP9:
- change_param =
core->iris_platform_data->dec_input_config_params_vp9;
+ change_param =
core->iris_firmware_data->dec_input_config_params_vp9;
change_param_size =
-
core->iris_platform_data->dec_input_config_params_vp9_size;
+
core->iris_firmware_data->dec_input_config_params_vp9_size;
break;
case V4L2_PIX_FMT_AV1:
- change_param =
core->iris_platform_data->dec_input_config_params_av1;
+ change_param =
core->iris_firmware_data->dec_input_config_params_av1;
change_param_size =
-
core->iris_platform_data->dec_input_config_params_av1_size;
+
core->iris_firmware_data->dec_input_config_params_av1_size;
break;
}
@@ -996,29 +996,29 @@ static int iris_hfi_gen2_subscribe_property(struct
iris_inst *inst, u32 plane)
return 0;
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- subscribe_prop_size =
core->iris_platform_data->dec_input_prop_size;
- subcribe_prop = core->iris_platform_data->dec_input_prop;
+ subscribe_prop_size =
core->iris_firmware_data->dec_input_prop_size;
+ subcribe_prop = core->iris_firmware_data->dec_input_prop;
} else {
switch (inst->codec) {
case V4L2_PIX_FMT_H264:
- subcribe_prop =
core->iris_platform_data->dec_output_prop_avc;
+ subcribe_prop =
core->iris_firmware_data->dec_output_prop_avc;
subscribe_prop_size =
-
core->iris_platform_data->dec_output_prop_avc_size;
+
core->iris_firmware_data->dec_output_prop_avc_size;
break;
case V4L2_PIX_FMT_HEVC:
- subcribe_prop =
core->iris_platform_data->dec_output_prop_hevc;
+ subcribe_prop =
core->iris_firmware_data->dec_output_prop_hevc;
subscribe_prop_size =
-
core->iris_platform_data->dec_output_prop_hevc_size;
+
core->iris_firmware_data->dec_output_prop_hevc_size;
break;
case V4L2_PIX_FMT_VP9:
- subcribe_prop =
core->iris_platform_data->dec_output_prop_vp9;
+ subcribe_prop =
core->iris_firmware_data->dec_output_prop_vp9;
subscribe_prop_size =
-
core->iris_platform_data->dec_output_prop_vp9_size;
+
core->iris_firmware_data->dec_output_prop_vp9_size;
break;
case V4L2_PIX_FMT_AV1:
- subcribe_prop =
core->iris_platform_data->dec_output_prop_av1;
+ subcribe_prop =
core->iris_firmware_data->dec_output_prop_av1;
subscribe_prop_size =
-
core->iris_platform_data->dec_output_prop_av1_size;
+
core->iris_firmware_data->dec_output_prop_av1_size;
break;
}
}
diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h
b/drivers/media/platform/qcom/iris/iris_platform_common.h
index e8a219023aaa..5af6d9f49f01 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_common.h
+++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
@@ -201,44 +201,16 @@ enum platform_pm_domain_type {
IRIS_APV_HW_POWER_DOMAIN,
};
-struct iris_platform_data {
+struct iris_firmware_data {
void (*init_hfi_ops)(struct iris_core *core);
- u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum
iris_buffer_type buffer_type);
- const struct vpu_ops *vpu_ops;
- const struct icc_info *icc_tbl;
- unsigned int icc_tbl_size;
- const struct bw_info *bw_tbl_dec;
- unsigned int bw_tbl_dec_size;
- const char * const *pmdomain_tbl;
- unsigned int pmdomain_tbl_size;
- const char * const *opp_pd_tbl;
- unsigned int opp_pd_tbl_size;
- const struct platform_clk_data *clk_tbl;
- const char * const *opp_clk_tbl;
- unsigned int clk_tbl_size;
- const char * const *clk_rst_tbl;
- unsigned int clk_rst_tbl_size;
- const char * const *controller_rst_tbl;
- unsigned int controller_rst_tbl_size;
- u64 dma_mask;
- const char *fwname;
- struct iris_fmt *inst_iris_fmts;
- u32 inst_iris_fmts_size;
- struct platform_inst_caps *inst_caps;
+
+ u32 core_arch;
+
const struct platform_inst_fw_cap *inst_fw_caps_dec;
u32 inst_fw_caps_dec_size;
const struct platform_inst_fw_cap *inst_fw_caps_enc;
u32 inst_fw_caps_enc_size;
- const struct tz_cp_config *tz_cp_config_data;
- u32 tz_cp_config_data_size;
- u32 core_arch;
- u32 num_vpp_pipe;
- bool no_aon;
- u32 max_session_count;
- /* max number of macroblocks per frame supported */
- u32 max_core_mbpf;
- /* max number of macroblocks per second supported */
- u32 max_core_mbps;
+
const u32 *dec_input_config_params_default;
unsigned int dec_input_config_params_default_size;
const u32 *dec_input_config_params_hevc;
@@ -253,6 +225,7 @@ struct iris_platform_data {
unsigned int enc_input_config_params_size;
const u32 *enc_output_config_params;
unsigned int enc_output_config_params_size;
+
const u32 *dec_input_prop;
unsigned int dec_input_prop_size;
const u32 *dec_output_prop_avc;
@@ -263,6 +236,7 @@ struct iris_platform_data {
unsigned int dec_output_prop_vp9_size;
const u32 *dec_output_prop_av1;
unsigned int dec_output_prop_av1_size;
+
const u32 *dec_ip_int_buf_tbl;
unsigned int dec_ip_int_buf_tbl_size;
const u32 *dec_op_int_buf_tbl;
@@ -273,4 +247,45 @@ struct iris_platform_data {
unsigned int enc_op_int_buf_tbl_size;
};
+struct iris_platform_data {
+ /*
+ * XXX: remove firmware_data pointer and consider moving
+ * get_vpu_buffer_size pointer once we have platforms supporting both
+ * firmware kinds.
+ */
+ const struct iris_firmware_data *firmware_data;
+ u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum
iris_buffer_type buffer_type);
+
+ const struct vpu_ops *vpu_ops;
+ const struct icc_info *icc_tbl;
+ unsigned int icc_tbl_size;
+ const struct bw_info *bw_tbl_dec;
+ unsigned int bw_tbl_dec_size;
+ const char * const *pmdomain_tbl;
+ unsigned int pmdomain_tbl_size;
+ const char * const *opp_pd_tbl;
+ unsigned int opp_pd_tbl_size;
+ const struct platform_clk_data *clk_tbl;
+ const char * const *opp_clk_tbl;
+ unsigned int clk_tbl_size;
+ const char * const *clk_rst_tbl;
+ unsigned int clk_rst_tbl_size;
+ const char * const *controller_rst_tbl;
+ unsigned int controller_rst_tbl_size;
+ u64 dma_mask;
+ const char *fwname;
+ struct iris_fmt *inst_iris_fmts;
+ u32 inst_iris_fmts_size;
+ struct platform_inst_caps *inst_caps;
+ const struct tz_cp_config *tz_cp_config_data;
+ u32 tz_cp_config_data_size;
+ u32 num_vpp_pipe;
+ bool no_aon;
+ u32 max_session_count;
+ /* max number of macroblocks per frame supported */
+ u32 max_core_mbpf;
+ /* max number of macroblocks per second supported */
+ u32 max_core_mbps;
+};
+
#endif
diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c
b/drivers/media/platform/qcom/iris/iris_platform_gen1.c
index 6ed4c4ae4056..8875f90d487e 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c
+++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c
@@ -332,8 +332,33 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] = {
BUF_SCRATCH_2,
};
-const struct iris_platform_data sm8250_data = {
+const struct iris_firmware_data iris_hfi_gen1_data = {
.init_hfi_ops = &iris_hfi_gen1_sys_ops_init,
+
+ .inst_fw_caps_dec = inst_fw_cap_sm8250_dec,
+ .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8250_dec),
+ .inst_fw_caps_enc = inst_fw_cap_sm8250_enc,
+ .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8250_enc),
+
+ .dec_input_config_params_default =
+ sm8250_vdec_input_config_param_default,
+ .dec_input_config_params_default_size =
+ ARRAY_SIZE(sm8250_vdec_input_config_param_default),
+ .enc_input_config_params = sm8250_venc_input_config_param,
+ .enc_input_config_params_size =
+ ARRAY_SIZE(sm8250_venc_input_config_param),
+
+ .dec_ip_int_buf_tbl = sm8250_dec_ip_int_buf_tbl,
+ .dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl),
+ .dec_op_int_buf_tbl = sm8250_dec_op_int_buf_tbl,
+ .dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8250_dec_op_int_buf_tbl),
+
+ .enc_ip_int_buf_tbl = sm8250_enc_ip_int_buf_tbl,
+ .enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl),
+};
+
+const struct iris_platform_data sm8250_data = {
+ .firmware_data = &iris_hfi_gen1_data,
.get_vpu_buffer_size = iris_vpu_buf_size,
.vpu_ops = &iris_vpu2_ops,
.icc_tbl = sm8250_icc_table,
@@ -355,35 +380,16 @@ const struct iris_platform_data sm8250_data = {
.inst_iris_fmts = platform_fmts_sm8250_dec,
.inst_iris_fmts_size = ARRAY_SIZE(platform_fmts_sm8250_dec),
.inst_caps = &platform_inst_cap_sm8250,
- .inst_fw_caps_dec = inst_fw_cap_sm8250_dec,
- .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8250_dec),
- .inst_fw_caps_enc = inst_fw_cap_sm8250_enc,
- .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8250_enc),
.tz_cp_config_data = tz_cp_config_sm8250,
.tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8250),
.num_vpp_pipe = 4,
.max_session_count = 16,
.max_core_mbpf = NUM_MBS_8K,
.max_core_mbps = ((7680 * 4320) / 256) * 60,
- .dec_input_config_params_default =
- sm8250_vdec_input_config_param_default,
- .dec_input_config_params_default_size =
- ARRAY_SIZE(sm8250_vdec_input_config_param_default),
- .enc_input_config_params = sm8250_venc_input_config_param,
- .enc_input_config_params_size =
- ARRAY_SIZE(sm8250_venc_input_config_param),
-
- .dec_ip_int_buf_tbl = sm8250_dec_ip_int_buf_tbl,
- .dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl),
- .dec_op_int_buf_tbl = sm8250_dec_op_int_buf_tbl,
- .dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8250_dec_op_int_buf_tbl),
-
- .enc_ip_int_buf_tbl = sm8250_enc_ip_int_buf_tbl,
- .enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl),
};
const struct iris_platform_data sc7280_data = {
- .init_hfi_ops = &iris_hfi_gen1_sys_ops_init,
+ .firmware_data = &iris_hfi_gen1_data,
.get_vpu_buffer_size = iris_vpu_buf_size,
.vpu_ops = &iris_vpu2_ops,
.icc_tbl = sm8250_icc_table,
@@ -403,10 +409,6 @@ const struct iris_platform_data sc7280_data = {
.inst_iris_fmts = platform_fmts_sm8250_dec,
.inst_iris_fmts_size = ARRAY_SIZE(platform_fmts_sm8250_dec),
.inst_caps = &platform_inst_cap_sm8250,
- .inst_fw_caps_dec = inst_fw_cap_sm8250_dec,
- .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8250_dec),
- .inst_fw_caps_enc = inst_fw_cap_sm8250_enc,
- .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8250_enc),
.tz_cp_config_data = tz_cp_config_sm8250,
.tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8250),
.num_vpp_pipe = 1,
@@ -415,19 +417,4 @@ const struct iris_platform_data sc7280_data = {
.max_core_mbpf = 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256,
/* max spec for SC7280 is 4096x2176@60fps */
.max_core_mbps = 4096 * 2176 / 256 * 60,
- .dec_input_config_params_default =
- sm8250_vdec_input_config_param_default,
- .dec_input_config_params_default_size =
- ARRAY_SIZE(sm8250_vdec_input_config_param_default),
- .enc_input_config_params = sm8250_venc_input_config_param,
- .enc_input_config_params_size =
- ARRAY_SIZE(sm8250_venc_input_config_param),
-
- .dec_ip_int_buf_tbl = sm8250_dec_ip_int_buf_tbl,
- .dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl),
- .dec_op_int_buf_tbl = sm8250_dec_op_int_buf_tbl,
- .dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8250_dec_op_int_buf_tbl),
-
- .enc_ip_int_buf_tbl = sm8250_enc_ip_int_buf_tbl,
- .enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl),
};
diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c
b/drivers/media/platform/qcom/iris/iris_platform_gen2.c
index abe523db45c2..05fbab276100 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c
+++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c
@@ -906,40 +906,16 @@ static const u32 sm8550_enc_op_int_buf_tbl[] = {
BUF_SCRATCH_2,
};
-const struct iris_platform_data sm8550_data = {
+const struct iris_firmware_data iris_hfi_gen2_data = {
.init_hfi_ops = iris_hfi_gen2_sys_ops_init,
- .get_vpu_buffer_size = iris_vpu_buf_size,
- .vpu_ops = &iris_vpu3_ops,
- .icc_tbl = sm8550_icc_table,
- .icc_tbl_size = ARRAY_SIZE(sm8550_icc_table),
- .clk_rst_tbl = sm8550_clk_reset_table,
- .clk_rst_tbl_size = ARRAY_SIZE(sm8550_clk_reset_table),
- .bw_tbl_dec = sm8550_bw_table_dec,
- .bw_tbl_dec_size = ARRAY_SIZE(sm8550_bw_table_dec),
- .pmdomain_tbl = sm8550_pmdomain_table,
- .pmdomain_tbl_size = ARRAY_SIZE(sm8550_pmdomain_table),
- .opp_pd_tbl = sm8550_opp_pd_table,
- .opp_pd_tbl_size = ARRAY_SIZE(sm8550_opp_pd_table),
- .clk_tbl = sm8550_clk_table,
- .clk_tbl_size = ARRAY_SIZE(sm8550_clk_table),
- .opp_clk_tbl = sm8550_opp_clk_table,
- /* Upper bound of DMA address range */
- .dma_mask = 0xe0000000 - 1,
- .fwname = "qcom/vpu/vpu30_p4.mbn",
- .inst_iris_fmts = platform_fmts_sm8550_dec,
- .inst_iris_fmts_size = ARRAY_SIZE(platform_fmts_sm8550_dec),
- .inst_caps = &platform_inst_cap_sm8550,
+
+ .core_arch = VIDEO_ARCH_LX,
+
.inst_fw_caps_dec = inst_fw_cap_sm8550_dec,
.inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8550_dec),
.inst_fw_caps_enc = inst_fw_cap_sm8550_enc,
.inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8550_enc),
- .tz_cp_config_data = tz_cp_config_sm8550,
- .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8550),
- .core_arch = VIDEO_ARCH_LX,
- .num_vpp_pipe = 4,
- .max_session_count = 16,
- .max_core_mbpf = NUM_MBS_8K * 2,
- .max_core_mbps = ((7680 * 4320) / 256) * 60,
+
.dec_input_config_params_default =
sm8550_vdec_input_config_params_default,
.dec_input_config_params_default_size =
@@ -996,6 +972,37 @@ const struct iris_platform_data sm8550_data = {
.enc_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_op_int_buf_tbl),
};
+const struct iris_platform_data sm8550_data = {
+ .firmware_data = &iris_hfi_gen2_data,
+ .get_vpu_buffer_size = iris_vpu_buf_size,
+ .vpu_ops = &iris_vpu3_ops,
+ .icc_tbl = sm8550_icc_table,
+ .icc_tbl_size = ARRAY_SIZE(sm8550_icc_table),
+ .clk_rst_tbl = sm8550_clk_reset_table,
+ .clk_rst_tbl_size = ARRAY_SIZE(sm8550_clk_reset_table),
+ .bw_tbl_dec = sm8550_bw_table_dec,
+ .bw_tbl_dec_size = ARRAY_SIZE(sm8550_bw_table_dec),
+ .pmdomain_tbl = sm8550_pmdomain_table,
+ .pmdomain_tbl_size = ARRAY_SIZE(sm8550_pmdomain_table),
+ .opp_pd_tbl = sm8550_opp_pd_table,
+ .opp_pd_tbl_size = ARRAY_SIZE(sm8550_opp_pd_table),
+ .clk_tbl = sm8550_clk_table,
+ .clk_tbl_size = ARRAY_SIZE(sm8550_clk_table),
+ .opp_clk_tbl = sm8550_opp_clk_table,
+ /* Upper bound of DMA address range */
+ .dma_mask = 0xe0000000 - 1,
+ .fwname = "qcom/vpu/vpu30_p4.mbn",
+ .inst_iris_fmts = platform_fmts_sm8550_dec,
+ .inst_iris_fmts_size = ARRAY_SIZE(platform_fmts_sm8550_dec),
+ .inst_caps = &platform_inst_cap_sm8550,
+ .tz_cp_config_data = tz_cp_config_sm8550,
+ .tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8550),
+ .num_vpp_pipe = 4,
+ .max_session_count = 16,
+ .max_core_mbpf = NUM_MBS_8K * 2,
+ .max_core_mbps = ((7680 * 4320) / 256) * 60,
+};
+
/*
* Shares most of SM8550 data except:
* - vpu_ops to iris_vpu33_ops
@@ -1004,7 +1011,7 @@ const struct iris_platform_data sm8550_data = {
* - fwname to "qcom/vpu/vpu33_p4.mbn"
*/
const struct iris_platform_data sm8650_data = {
- .init_hfi_ops = iris_hfi_gen2_sys_ops_init,
+ .firmware_data = &iris_hfi_gen2_data,
.get_vpu_buffer_size = iris_vpu33_buf_size,
.vpu_ops = &iris_vpu33_ops,
.icc_tbl = sm8550_icc_table,
@@ -1028,75 +1035,16 @@ const struct iris_platform_data sm8650_data = {
.inst_iris_fmts = platform_fmts_sm8550_dec,
.inst_iris_fmts_size = ARRAY_SIZE(platform_fmts_sm8550_dec),
.inst_caps = &platform_inst_cap_sm8550,
- .inst_fw_caps_dec = inst_fw_cap_sm8550_dec,
- .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8550_dec),
- .inst_fw_caps_enc = inst_fw_cap_sm8550_enc,
- .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8550_enc),
.tz_cp_config_data = tz_cp_config_sm8550,
.tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8550),
- .core_arch = VIDEO_ARCH_LX,
.num_vpp_pipe = 4,
.max_session_count = 16,
.max_core_mbpf = NUM_MBS_8K * 2,
.max_core_mbps = ((7680 * 4320) / 256) * 60,
- .dec_input_config_params_default =
- sm8550_vdec_input_config_params_default,
- .dec_input_config_params_default_size =
- ARRAY_SIZE(sm8550_vdec_input_config_params_default),
- .dec_input_config_params_hevc =
- sm8550_vdec_input_config_param_hevc,
- .dec_input_config_params_hevc_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_hevc),
- .dec_input_config_params_vp9 =
- sm8550_vdec_input_config_param_vp9,
- .dec_input_config_params_vp9_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_vp9),
- .dec_input_config_params_av1 =
- sm8550_vdec_input_config_param_av1,
- .dec_input_config_params_av1_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_av1),
- .dec_output_config_params =
- sm8550_vdec_output_config_params,
- .dec_output_config_params_size =
- ARRAY_SIZE(sm8550_vdec_output_config_params),
-
- .enc_input_config_params =
- sm8550_venc_input_config_params,
- .enc_input_config_params_size =
- ARRAY_SIZE(sm8550_venc_input_config_params),
- .enc_output_config_params =
- sm8550_venc_output_config_params,
- .enc_output_config_params_size =
- ARRAY_SIZE(sm8550_venc_output_config_params),
-
- .dec_input_prop = sm8550_vdec_subscribe_input_properties,
- .dec_input_prop_size =
ARRAY_SIZE(sm8550_vdec_subscribe_input_properties),
- .dec_output_prop_avc = sm8550_vdec_subscribe_output_properties_avc,
- .dec_output_prop_avc_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc),
- .dec_output_prop_hevc = sm8550_vdec_subscribe_output_properties_hevc,
- .dec_output_prop_hevc_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc),
- .dec_output_prop_vp9 = sm8550_vdec_subscribe_output_properties_vp9,
- .dec_output_prop_vp9_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9),
- .dec_output_prop_av1 = sm8550_vdec_subscribe_output_properties_av1,
- .dec_output_prop_av1_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1),
-
- .dec_ip_int_buf_tbl = sm8550_dec_ip_int_buf_tbl,
- .dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl),
- .dec_op_int_buf_tbl = sm8550_dec_op_int_buf_tbl,
- .dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_op_int_buf_tbl),
-
- .enc_ip_int_buf_tbl = sm8550_enc_ip_int_buf_tbl,
- .enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl),
- .enc_op_int_buf_tbl = sm8550_enc_op_int_buf_tbl,
- .enc_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_op_int_buf_tbl),
};
const struct iris_platform_data sm8750_data = {
- .init_hfi_ops = iris_hfi_gen2_sys_ops_init,
+ .firmware_data = &iris_hfi_gen2_data,
.get_vpu_buffer_size = iris_vpu33_buf_size,
.vpu_ops = &iris_vpu35_ops,
.icc_tbl = sm8550_icc_table,
@@ -1118,71 +1066,12 @@ const struct iris_platform_data sm8750_data = {
.inst_iris_fmts = platform_fmts_sm8550_dec,
.inst_iris_fmts_size = ARRAY_SIZE(platform_fmts_sm8550_dec),
.inst_caps = &platform_inst_cap_sm8550,
- .inst_fw_caps_dec = inst_fw_cap_sm8550_dec,
- .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8550_dec),
- .inst_fw_caps_enc = inst_fw_cap_sm8550_enc,
- .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8550_enc),
.tz_cp_config_data = tz_cp_config_sm8550,
.tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8550),
- .core_arch = VIDEO_ARCH_LX,
.num_vpp_pipe = 4,
.max_session_count = 16,
.max_core_mbpf = NUM_MBS_8K * 2,
.max_core_mbps = ((7680 * 4320) / 256) * 60,
- .dec_input_config_params_default =
- sm8550_vdec_input_config_params_default,
- .dec_input_config_params_default_size =
- ARRAY_SIZE(sm8550_vdec_input_config_params_default),
- .dec_input_config_params_hevc =
- sm8550_vdec_input_config_param_hevc,
- .dec_input_config_params_hevc_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_hevc),
- .dec_input_config_params_vp9 =
- sm8550_vdec_input_config_param_vp9,
- .dec_input_config_params_vp9_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_vp9),
- .dec_input_config_params_av1 =
- sm8550_vdec_input_config_param_av1,
- .dec_input_config_params_av1_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_av1),
- .dec_output_config_params =
- sm8550_vdec_output_config_params,
- .dec_output_config_params_size =
- ARRAY_SIZE(sm8550_vdec_output_config_params),
-
- .enc_input_config_params =
- sm8550_venc_input_config_params,
- .enc_input_config_params_size =
- ARRAY_SIZE(sm8550_venc_input_config_params),
- .enc_output_config_params =
- sm8550_venc_output_config_params,
- .enc_output_config_params_size =
- ARRAY_SIZE(sm8550_venc_output_config_params),
-
- .dec_input_prop = sm8550_vdec_subscribe_input_properties,
- .dec_input_prop_size =
ARRAY_SIZE(sm8550_vdec_subscribe_input_properties),
- .dec_output_prop_avc = sm8550_vdec_subscribe_output_properties_avc,
- .dec_output_prop_avc_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc),
- .dec_output_prop_hevc = sm8550_vdec_subscribe_output_properties_hevc,
- .dec_output_prop_hevc_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc),
- .dec_output_prop_vp9 = sm8550_vdec_subscribe_output_properties_vp9,
- .dec_output_prop_vp9_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9),
- .dec_output_prop_av1 = sm8550_vdec_subscribe_output_properties_av1,
- .dec_output_prop_av1_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1),
-
- .dec_ip_int_buf_tbl = sm8550_dec_ip_int_buf_tbl,
- .dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl),
- .dec_op_int_buf_tbl = sm8550_dec_op_int_buf_tbl,
- .dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_op_int_buf_tbl),
-
- .enc_ip_int_buf_tbl = sm8550_enc_ip_int_buf_tbl,
- .enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl),
- .enc_op_int_buf_tbl = sm8550_enc_op_int_buf_tbl,
- .enc_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_op_int_buf_tbl),
};
/*
@@ -1190,7 +1079,7 @@ const struct iris_platform_data sm8750_data = {
* - inst_caps to platform_inst_cap_qcs8300
*/
const struct iris_platform_data qcs8300_data = {
- .init_hfi_ops = iris_hfi_gen2_sys_ops_init,
+ .firmware_data = &iris_hfi_gen2_data,
.get_vpu_buffer_size = iris_vpu_buf_size,
.vpu_ops = &iris_vpu3_ops,
.icc_tbl = sm8550_icc_table,
@@ -1212,69 +1101,10 @@ const struct iris_platform_data qcs8300_data = {
.inst_iris_fmts = platform_fmts_sm8550_dec,
.inst_iris_fmts_size = ARRAY_SIZE(platform_fmts_sm8550_dec),
.inst_caps = &platform_inst_cap_qcs8300,
- .inst_fw_caps_dec = inst_fw_cap_sm8550_dec,
- .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8550_dec),
- .inst_fw_caps_enc = inst_fw_cap_sm8550_enc,
- .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8550_enc),
.tz_cp_config_data = tz_cp_config_sm8550,
.tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8550),
- .core_arch = VIDEO_ARCH_LX,
.num_vpp_pipe = 2,
.max_session_count = 16,
.max_core_mbpf = ((4096 * 2176) / 256) * 4,
.max_core_mbps = (((3840 * 2176) / 256) * 120),
- .dec_input_config_params_default =
- sm8550_vdec_input_config_params_default,
- .dec_input_config_params_default_size =
- ARRAY_SIZE(sm8550_vdec_input_config_params_default),
- .dec_input_config_params_hevc =
- sm8550_vdec_input_config_param_hevc,
- .dec_input_config_params_hevc_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_hevc),
- .dec_input_config_params_vp9 =
- sm8550_vdec_input_config_param_vp9,
- .dec_input_config_params_vp9_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_vp9),
- .dec_input_config_params_av1 =
- sm8550_vdec_input_config_param_av1,
- .dec_input_config_params_av1_size =
- ARRAY_SIZE(sm8550_vdec_input_config_param_av1),
- .dec_output_config_params =
- sm8550_vdec_output_config_params,
- .dec_output_config_params_size =
- ARRAY_SIZE(sm8550_vdec_output_config_params),
-
- .enc_input_config_params =
- sm8550_venc_input_config_params,
- .enc_input_config_params_size =
- ARRAY_SIZE(sm8550_venc_input_config_params),
- .enc_output_config_params =
- sm8550_venc_output_config_params,
- .enc_output_config_params_size =
- ARRAY_SIZE(sm8550_venc_output_config_params),
-
- .dec_input_prop = sm8550_vdec_subscribe_input_properties,
- .dec_input_prop_size =
ARRAY_SIZE(sm8550_vdec_subscribe_input_properties),
- .dec_output_prop_avc = sm8550_vdec_subscribe_output_properties_avc,
- .dec_output_prop_avc_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc),
- .dec_output_prop_hevc = sm8550_vdec_subscribe_output_properties_hevc,
- .dec_output_prop_hevc_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc),
- .dec_output_prop_vp9 = sm8550_vdec_subscribe_output_properties_vp9,
- .dec_output_prop_vp9_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9),
- .dec_output_prop_av1 = sm8550_vdec_subscribe_output_properties_av1,
- .dec_output_prop_av1_size =
- ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1),
-
- .dec_ip_int_buf_tbl = sm8550_dec_ip_int_buf_tbl,
- .dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl),
- .dec_op_int_buf_tbl = sm8550_dec_op_int_buf_tbl,
- .dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_op_int_buf_tbl),
-
- .enc_ip_int_buf_tbl = sm8550_enc_ip_int_buf_tbl,
- .enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl),
- .enc_op_int_buf_tbl = sm8550_enc_op_int_buf_tbl,
- .enc_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_op_int_buf_tbl),
};
diff --git a/drivers/media/platform/qcom/iris/iris_probe.c
b/drivers/media/platform/qcom/iris/iris_probe.c
index fa561f6a736c..dd87504c2e67 100644
--- a/drivers/media/platform/qcom/iris/iris_probe.c
+++ b/drivers/media/platform/qcom/iris/iris_probe.c
@@ -251,6 +251,7 @@ static int iris_probe(struct platform_device *pdev)
return core->irq;
core->iris_platform_data = of_device_get_match_data(core->dev);
+ core->iris_firmware_data = core->iris_platform_data->firmware_data;
core->ubwc_cfg = qcom_ubwc_config_get_data();
if (IS_ERR(core->ubwc_cfg))
@@ -264,7 +265,7 @@ static int iris_probe(struct platform_device *pdev)
disable_irq_nosync(core->irq);
iris_init_ops(core);
- core->iris_platform_data->init_hfi_ops(core);
+ core->iris_firmware_data->init_hfi_ops(core);
ret = iris_init_resources(core);
if (ret)
diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c
b/drivers/media/platform/qcom/iris/iris_vidc.c
index ecd8a20fedbf..807c9a20b6ba 100644
--- a/drivers/media/platform/qcom/iris/iris_vidc.c
+++ b/drivers/media/platform/qcom/iris/iris_vidc.c
@@ -243,7 +243,7 @@ static void iris_session_close(struct iris_inst *inst)
static void iris_check_num_queued_internal_buffers(struct iris_inst *inst, u32
plane)
{
- const struct iris_platform_data *platform_data =
inst->core->iris_platform_data;
+ const struct iris_firmware_data *firmware_data =
inst->core->iris_firmware_data;
struct iris_buffer *buf, *next;
struct iris_buffers *buffers;
const u32 *internal_buf_type;
@@ -251,11 +251,11 @@ static void iris_check_num_queued_internal_buffers(struct
iris_inst *inst, u32 p
u32 count = 0;
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count = platform_data->dec_ip_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_ip_int_buf_tbl;
+ internal_buffer_count = firmware_data->dec_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- internal_buffer_count = platform_data->dec_op_int_buf_tbl_size;
+ internal_buf_type = firmware_data->dec_op_int_buf_tbl;
+ internal_buffer_count = firmware_data->dec_op_int_buf_tbl_size;
}
for (i = 0; i < internal_buffer_count; i++) {
diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c
b/drivers/media/platform/qcom/iris/iris_vpu_common.c
index dbce5aeba06c..c6cfc1d9fd9e 100644
--- a/drivers/media/platform/qcom/iris/iris_vpu_common.c
+++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c
@@ -63,7 +63,7 @@ static void iris_vpu_setup_ucregion_memory_map(struct
iris_core *core)
writel(QTBL_ENABLE, core->reg_base + QTBL_INFO);
if (core->sfr_daddr) {
- value = (u32)core->sfr_daddr +
core->iris_platform_data->core_arch;
+ value = (u32)core->sfr_daddr +
core->iris_firmware_data->core_arch;
writel(value, core->reg_base + SFR_ADDR);
}
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]