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>
このコミットが含まれているのは:
@@ -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,
|
||||
|
新しいイシューから参照
ユーザーをブロックする