Lines Matching refs:inst
10 static bool iris_allow_inst_state_change(struct iris_inst *inst, in iris_allow_inst_state_change() argument
13 switch (inst->state) { in iris_allow_inst_state_change()
47 int iris_inst_change_state(struct iris_inst *inst, in iris_inst_change_state() argument
50 if (inst->state == IRIS_INST_ERROR) in iris_inst_change_state()
53 if (inst->state == request_state) in iris_inst_change_state()
59 if (!iris_allow_inst_state_change(inst, request_state)) in iris_inst_change_state()
63 inst->state = request_state; in iris_inst_change_state()
64 dev_dbg(inst->core->dev, "state changed from %x to %x\n", in iris_inst_change_state()
65 inst->state, request_state); in iris_inst_change_state()
70 int iris_inst_state_change_streamon(struct iris_inst *inst, u32 plane) in iris_inst_state_change_streamon() argument
75 if (inst->state == IRIS_INST_INIT) in iris_inst_state_change_streamon()
77 else if (inst->state == IRIS_INST_OUTPUT_STREAMING) in iris_inst_state_change_streamon()
80 if (inst->state == IRIS_INST_INIT) in iris_inst_state_change_streamon()
82 else if (inst->state == IRIS_INST_INPUT_STREAMING) in iris_inst_state_change_streamon()
86 return iris_inst_change_state(inst, new_state); in iris_inst_state_change_streamon()
89 int iris_inst_state_change_streamoff(struct iris_inst *inst, u32 plane) in iris_inst_state_change_streamoff() argument
94 if (inst->state == IRIS_INST_INPUT_STREAMING) in iris_inst_state_change_streamoff()
96 else if (inst->state == IRIS_INST_STREAMING) in iris_inst_state_change_streamoff()
99 if (inst->state == IRIS_INST_OUTPUT_STREAMING) in iris_inst_state_change_streamoff()
101 else if (inst->state == IRIS_INST_STREAMING) in iris_inst_state_change_streamoff()
105 return iris_inst_change_state(inst, new_state); in iris_inst_state_change_streamoff()
108 static bool iris_inst_allow_sub_state(struct iris_inst *inst, enum iris_inst_sub_state sub_state) in iris_inst_allow_sub_state() argument
113 switch (inst->state) { in iris_inst_allow_sub_state()
145 int iris_inst_change_sub_state(struct iris_inst *inst, in iris_inst_change_sub_state() argument
151 if (inst->state == IRIS_INST_ERROR) in iris_inst_change_sub_state()
162 prev_sub_state = inst->sub_state; in iris_inst_change_sub_state()
164 if (!iris_inst_allow_sub_state(inst, set_sub_state)) in iris_inst_change_sub_state()
167 inst->sub_state |= set_sub_state; in iris_inst_change_sub_state()
168 inst->sub_state &= ~clear_sub_state; in iris_inst_change_sub_state()
170 if (inst->sub_state != prev_sub_state) in iris_inst_change_sub_state()
171 dev_dbg(inst->core->dev, "sub_state changed from %x to %x\n", in iris_inst_change_sub_state()
172 prev_sub_state, inst->sub_state); in iris_inst_change_sub_state()
177 int iris_inst_sub_state_change_drc(struct iris_inst *inst) in iris_inst_sub_state_change_drc() argument
181 if (inst->sub_state & IRIS_INST_SUB_DRC) in iris_inst_sub_state_change_drc()
184 if (inst->state == IRIS_INST_INPUT_STREAMING || in iris_inst_sub_state_change_drc()
185 inst->state == IRIS_INST_INIT) in iris_inst_sub_state_change_drc()
190 return iris_inst_change_sub_state(inst, 0, set_sub_state); in iris_inst_sub_state_change_drc()
193 int iris_inst_sub_state_change_drain_last(struct iris_inst *inst) in iris_inst_sub_state_change_drain_last() argument
197 if (inst->sub_state & IRIS_INST_SUB_DRAIN_LAST) in iris_inst_sub_state_change_drain_last()
200 if (!(inst->sub_state & IRIS_INST_SUB_DRAIN)) in iris_inst_sub_state_change_drain_last()
205 return iris_inst_change_sub_state(inst, 0, set_sub_state); in iris_inst_sub_state_change_drain_last()
208 int iris_inst_sub_state_change_drc_last(struct iris_inst *inst) in iris_inst_sub_state_change_drc_last() argument
212 if (inst->sub_state & IRIS_INST_SUB_DRC_LAST) in iris_inst_sub_state_change_drc_last()
215 if (!(inst->sub_state & IRIS_INST_SUB_DRC) || in iris_inst_sub_state_change_drc_last()
216 !(inst->sub_state & IRIS_INST_SUB_INPUT_PAUSE)) in iris_inst_sub_state_change_drc_last()
219 if (inst->sub_state & IRIS_INST_SUB_FIRST_IPSC) in iris_inst_sub_state_change_drc_last()
224 return iris_inst_change_sub_state(inst, 0, set_sub_state); in iris_inst_sub_state_change_drc_last()
227 int iris_inst_sub_state_change_pause(struct iris_inst *inst, u32 plane) in iris_inst_sub_state_change_pause() argument
232 if (inst->sub_state & IRIS_INST_SUB_DRC && in iris_inst_sub_state_change_pause()
233 !(inst->sub_state & IRIS_INST_SUB_DRC_LAST)) in iris_inst_sub_state_change_pause()
236 if (inst->sub_state & IRIS_INST_SUB_DRAIN && in iris_inst_sub_state_change_pause()
237 !(inst->sub_state & IRIS_INST_SUB_DRAIN_LAST)) in iris_inst_sub_state_change_pause()
245 return iris_inst_change_sub_state(inst, 0, set_sub_state); in iris_inst_sub_state_change_pause()
248 bool iris_drc_pending(struct iris_inst *inst) in iris_drc_pending() argument
250 return inst->sub_state & IRIS_INST_SUB_DRC && in iris_drc_pending()
251 inst->sub_state & IRIS_INST_SUB_DRC_LAST; in iris_drc_pending()
254 static inline bool iris_drain_pending(struct iris_inst *inst) in iris_drain_pending() argument
256 return inst->sub_state & IRIS_INST_SUB_DRAIN && in iris_drain_pending()
257 inst->sub_state & IRIS_INST_SUB_DRAIN_LAST; in iris_drain_pending()
260 bool iris_allow_cmd(struct iris_inst *inst, u32 cmd) in iris_allow_cmd() argument
262 struct vb2_queue *src_q = v4l2_m2m_get_src_vq(inst->m2m_ctx); in iris_allow_cmd()
263 struct vb2_queue *dst_q = v4l2_m2m_get_dst_vq(inst->m2m_ctx); in iris_allow_cmd()
267 if (iris_drc_pending(inst) || iris_drain_pending(inst)) in iris_allow_cmd()
271 if (inst->sub_state != IRIS_INST_SUB_DRAIN) in iris_allow_cmd()