video: driver: add core sub_state support
Introduce core->sub_state similar to inst->sub_state. [1] pm_suspended - moved to this substate in case of PM suspend [2] handoff - moved to this state after successful handoff_regulator call. [3] fw_power_control - moved to this state in case of IFPC. [4] power_enable - will track core power_on/power_off status. [5] page_fault - used to rate_limit fault logs. [6] cpu_wd - indicates hw fired wd interrupt. [7] video_unresponsive - moved to this state if sync cmd fails. Change-Id: Iceb65cf404fd93aff7846860b0276307e4eab570 Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
这个提交包含在:
@@ -370,6 +370,17 @@ static inline bool is_sub_state(struct msm_vidc_inst *inst,
|
||||
return (inst->sub_state & sub_state);
|
||||
}
|
||||
|
||||
static inline bool is_core_state(struct msm_vidc_core *core, enum msm_vidc_core_state state)
|
||||
{
|
||||
return core->state == state;
|
||||
}
|
||||
|
||||
static inline bool is_core_sub_state(struct msm_vidc_core *core,
|
||||
enum msm_vidc_core_sub_state sub_state)
|
||||
{
|
||||
return !!(core->sub_state & sub_state);
|
||||
}
|
||||
|
||||
const char *cap_name(enum msm_vidc_inst_capability_type cap_id);
|
||||
const char *v4l2_pixelfmt_name(struct msm_vidc_inst *inst, u32 pixelfmt);
|
||||
const char *v4l2_type_name(u32 port);
|
||||
@@ -434,6 +445,9 @@ int msm_vidc_kill_session(struct msm_vidc_inst* inst);
|
||||
int msm_vidc_get_inst_capability(struct msm_vidc_inst *inst);
|
||||
int msm_vidc_change_core_state(struct msm_vidc_core *core,
|
||||
enum msm_vidc_core_state request_state, const char *func);
|
||||
int msm_vidc_change_core_sub_state(struct msm_vidc_core *core,
|
||||
enum msm_vidc_core_sub_state clear_sub_states,
|
||||
enum msm_vidc_core_sub_state set_sub_states, const char *func);
|
||||
int msm_vidc_core_init(struct msm_vidc_core *core);
|
||||
int msm_vidc_core_init_wait(struct msm_vidc_core *core);
|
||||
int msm_vidc_core_deinit(struct msm_vidc_core *core, bool force);
|
||||
@@ -451,7 +465,7 @@ int msm_vidc_trigger_stability(struct msm_vidc_core *core,
|
||||
void msm_vidc_stability_handler(struct work_struct *work);
|
||||
int cancel_stability_work_sync(struct msm_vidc_inst *inst);
|
||||
void msm_vidc_fw_unload_handler(struct work_struct *work);
|
||||
int msm_vidc_suspend(struct msm_vidc_core *core);
|
||||
int msm_vidc_suspend_locked(struct msm_vidc_core *core);
|
||||
void msm_vidc_batch_handler(struct work_struct *work);
|
||||
int msm_vidc_event_queue_init(struct msm_vidc_inst *inst);
|
||||
int msm_vidc_event_queue_deinit(struct msm_vidc_inst *inst);
|
||||
@@ -516,6 +530,7 @@ enum msm_vidc_allow msm_vidc_allow_qbuf(struct msm_vidc_inst *inst, u32 type);
|
||||
enum msm_vidc_allow msm_vidc_allow_input_psc(struct msm_vidc_inst *inst);
|
||||
bool msm_vidc_allow_drain_last_flag(struct msm_vidc_inst *inst);
|
||||
bool msm_vidc_allow_psc_last_flag(struct msm_vidc_inst *inst);
|
||||
bool msm_vidc_allow_pm_suspend(struct msm_vidc_core *core);
|
||||
int msm_vidc_state_change_streamon(struct msm_vidc_inst *inst, u32 type);
|
||||
int msm_vidc_state_change_streamoff(struct msm_vidc_inst *inst, u32 type);
|
||||
int msm_vidc_state_change_input_psc(struct msm_vidc_inst *inst);
|
||||
|
在新工单中引用
屏蔽一个用户