Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions drivers/media/platform/qcom/iris/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ qcom-iris-objs += iris_buffer.o \
iris_platform_vpu2.o \
iris_platform_vpu3x.o \
iris_platform_vpu4x.o \
iris_platform_vpu_ar50lt.o \
iris_power.o \
iris_probe.o \
iris_resources.o \
Expand All @@ -28,6 +29,7 @@ qcom-iris-objs += iris_buffer.o \
iris_vpu2.o \
iris_vpu3x.o \
iris_vpu4x.o \
iris_vpu_ar50lt.o \
iris_vpu_buffer.o \
iris_vpu_common.o \

Expand Down
4 changes: 4 additions & 0 deletions drivers/media/platform/qcom/iris/iris_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ static int iris_wait_for_system_response(struct iris_core *core)

int iris_core_init(struct iris_core *core)
{
const struct vpu_ops *vpu_ops = core->iris_platform_data->vpu_ops;
int ret;

mutex_lock(&core->lock);
Expand Down Expand Up @@ -83,6 +84,9 @@ int iris_core_init(struct iris_core *core)
if (ret)
goto error_unload_fw;

if (vpu_ops->disable_arp)
vpu_ops->disable_arp(core);

core->iris_firmware_data->init_hfi_ops(core);

ret = iris_hfi_core_init(core);
Expand Down
4 changes: 4 additions & 0 deletions drivers/media/platform/qcom/iris/iris_hfi_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ int iris_hfi_pm_suspend(struct iris_core *core)

int iris_hfi_pm_resume(struct iris_core *core)
{
const struct vpu_ops *vpu_ops = core->iris_platform_data->vpu_ops;
const struct iris_hfi_sys_ops *ops = core->hfi_sys_ops;
int ret;

Expand All @@ -163,6 +164,9 @@ int iris_hfi_pm_resume(struct iris_core *core)
if (ret)
goto err_suspend_hw;

if (vpu_ops->disable_arp)
vpu_ops->disable_arp(core);

ret = ops->sys_interframe_powercollapse(core);
if (ret)
goto err_suspend_hw;
Expand Down
55 changes: 55 additions & 0 deletions drivers/media/platform/qcom/iris/iris_hfi_gen2.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "iris_hfi_gen2.h"
#include "iris_hfi_gen2_defines.h"
#include "iris_platform_common.h"
#include "iris_platform_qcm2290.h"
#include "iris_vpu_buffer.h"

#define VIDEO_ARCH_LX 1
Expand Down Expand Up @@ -894,3 +895,57 @@ const struct iris_firmware_data iris_hfi_gen2_data = {
.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_firmware_data iris_hfi_gen2_ar50lt_data = {
.init_hfi_ops = iris_hfi_gen2_sys_ops_init,

.core_arch = VIDEO_ARCH_LX,

.inst_fw_caps_dec = inst_fw_cap_qcm2290_dec,
.inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_qcm2290_dec),
.inst_fw_caps_enc = inst_fw_cap_qcm2290_enc,
.inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_qcm2290_enc),
.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_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_ip_int_buf_tbl = qcm2290_dec_ip_int_buf_tbl,
.dec_ip_int_buf_tbl_size = ARRAY_SIZE(qcm2290_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),
};
3 changes: 3 additions & 0 deletions drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ void iris_hfi_gen2_packet_sys_init(struct iris_core *core, struct iris_hfi_heade
&payload,
sizeof(u32));

if (!ubwc->ubwc_enc_version)
return;

payload = qcom_ubwc_macrotile_mode(ubwc) ? 8 : 4;
iris_hfi_gen2_create_packet(hdr,
HFI_PROP_UBWC_MAX_CHANNELS,
Expand Down
6 changes: 6 additions & 0 deletions drivers/media/platform/qcom/iris/iris_platform_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,11 @@ enum pipe_type {

extern const struct iris_firmware_data iris_hfi_gen1_data;
extern const struct iris_firmware_data iris_hfi_gen2_data;
extern const struct iris_firmware_data iris_hfi_gen2_ar50lt_data;

extern const struct iris_platform_data glymur_data;
extern const struct iris_platform_data kaanapali_data;
extern const struct iris_platform_data qcm2290_data;
extern const struct iris_platform_data qcs8300_data;
extern const struct iris_platform_data sc7280_data;
extern const struct iris_platform_data sm8250_data;
Expand All @@ -70,6 +72,7 @@ enum platform_clk_type {
IRIS_VPP0_HW_CLK,
IRIS_VPP1_HW_CLK,
IRIS_APV_HW_CLK,
IRIS_THROTTLE_CLK,
IRIS_AXI_VCODEC1_CLK,
IRIS_VCODEC1_CLK,
IRIS_VCODEC1_FREERUN_CLK,
Expand Down Expand Up @@ -301,6 +304,9 @@ struct iris_platform_data {
u32 tz_cp_config_data_size;
u32 num_vpp_pipe;
bool no_aon;
bool no_rpmh;
u32 wd_intr_mask;
u32 icc_ib_multiplier;
u32 max_session_count;
/* max number of macroblocks per frame supported */
u32 max_core_mbpf;
Expand Down
Loading