Skip to content

Commit 280d4c8

Browse files
Dikshita Agarwalgregkh
authored andcommitted
media: iris: Avoid updating frame size to firmware during reconfig
commit caf2055 upstream. During reconfig, the firmware sends the resolution aligned to 8 bytes. If the driver sends the same resolution back to the firmware the resolution will be aligned to 16 bytes not 8. The alignment mismatch would then subsequently cause the firmware to send another redundant sequence change event. Fix this by not setting the resolution property during reconfig. Cc: stable@vger.kernel.org Fixes: 3a19d7b ("media: iris: implement set properties to firmware during streamon") Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-HDK Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-QRD Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com> Tested-by: Vikash Garodia <quic_vgarodia@quicinc.com> # on sa8775p-ride Signed-off-by: Bryan O'Donoghue <bod@kernel.org> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 7cbce62 commit 280d4c8

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -546,14 +546,15 @@ static int iris_hfi_gen1_set_resolution(struct iris_inst *inst)
546546
struct hfi_framesize fs;
547547
int ret;
548548

549-
fs.buffer_type = HFI_BUFFER_INPUT;
550-
fs.width = inst->fmt_src->fmt.pix_mp.width;
551-
fs.height = inst->fmt_src->fmt.pix_mp.height;
552-
553-
ret = hfi_gen1_set_property(inst, ptype, &fs, sizeof(fs));
554-
if (ret)
555-
return ret;
549+
if (!iris_drc_pending(inst)) {
550+
fs.buffer_type = HFI_BUFFER_INPUT;
551+
fs.width = inst->fmt_src->fmt.pix_mp.width;
552+
fs.height = inst->fmt_src->fmt.pix_mp.height;
556553

554+
ret = hfi_gen1_set_property(inst, ptype, &fs, sizeof(fs));
555+
if (ret)
556+
return ret;
557+
}
557558
fs.buffer_type = HFI_BUFFER_OUTPUT2;
558559
fs.width = inst->fmt_dst->fmt.pix_mp.width;
559560
fs.height = inst->fmt_dst->fmt.pix_mp.height;

drivers/media/platform/qcom/iris/iris_state.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ int iris_inst_sub_state_change_pause(struct iris_inst *inst, u32 plane)
245245
return iris_inst_change_sub_state(inst, 0, set_sub_state);
246246
}
247247

248-
static inline bool iris_drc_pending(struct iris_inst *inst)
248+
bool iris_drc_pending(struct iris_inst *inst)
249249
{
250250
return inst->sub_state & IRIS_INST_SUB_DRC &&
251251
inst->sub_state & IRIS_INST_SUB_DRC_LAST;

drivers/media/platform/qcom/iris/iris_state.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,5 +140,6 @@ int iris_inst_sub_state_change_drain_last(struct iris_inst *inst);
140140
int iris_inst_sub_state_change_drc_last(struct iris_inst *inst);
141141
int iris_inst_sub_state_change_pause(struct iris_inst *inst, u32 plane);
142142
bool iris_allow_cmd(struct iris_inst *inst, u32 cmd);
143+
bool iris_drc_pending(struct iris_inst *inst);
143144

144145
#endif

0 commit comments

Comments
 (0)