video: driver: new workhandler for inst events

create a new work handler and post and handle
events like psc.
introduce reuse concept for internal buffers.

Change-Id: Ibeaabae1b5923681756e959389df00b287206fb6
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
このコミットが含まれているのは:
Darshana Patil
2020-12-22 19:15:25 -08:00
コミット cff8298acc
8個のファイルの変更261行の追加48行の削除

ファイルの表示

@@ -60,6 +60,18 @@ enum msm_vidc_core_state {
MSM_VIDC_CORE_ERROR = 2,
};
enum work_type {
MSM_VIDC_INST_WORK_PSC = 1,
};
struct work_header {
void *data;
struct list_head list;
enum work_type type;
u32 session_id;
u32 data_size;
};
struct msm_vidc_core {
struct platform_device *pdev;
struct msm_video_device vdev[2];
@@ -108,6 +120,9 @@ struct msm_vidc_core {
u32 header_id;
u32 packet_id;
struct completion init_done;
struct list_head inst_works; /* list of struct work_header */
struct delayed_work inst_work;
struct workqueue_struct *inst_workq;
};
#endif // _MSM_VIDC_CORE_H_

ファイルの表示

@@ -130,6 +130,8 @@ int v4l2_type_to_driver_port(struct msm_vidc_inst *inst, u32 type,
const char *func);
int msm_vidc_change_inst_state(struct msm_vidc_inst *inst,
enum msm_vidc_inst_state state, const char *func);
int msm_vidc_get_input_internal_buffers(struct msm_vidc_inst *inst,
enum msm_vidc_buffer_type buffer_type);
int msm_vidc_create_internal_buffers(struct msm_vidc_inst *inst,
enum msm_vidc_buffer_type buffer_type);
int msm_vidc_queue_internal_buffers(struct msm_vidc_inst *inst,

ファイルの表示

@@ -691,6 +691,7 @@ struct msm_vidc_buffers {
u32 extra_count;
u32 actual_count;
u32 size;
bool reuse;
};
struct msm_vidc_ssr {

ファイルの表示

@@ -71,6 +71,7 @@ int venus_hfi_scale_buses(struct msm_vidc_inst* inst, u64 bw_ddr, u64 bw_llcc);
void venus_hfi_work_handler(struct work_struct *work);
void venus_hfi_pm_work_handler(struct work_struct *work);
void venus_hfi_inst_work_handler(struct work_struct *work);
irqreturn_t venus_hfi_isr(int irq, void *data);
void __write_register(struct msm_vidc_core *core,