media: qcom: iris: vdec: update find_format to handle 8bit and 10bit formats

The 10bit pixel format can be only used when the decoder identifies the
stream as decoding into 10bit pixel format buffers, so update the
find_format helper to filter the formats and only allow the proper
formats when setting or trying a capture format.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Tested-by: Wangao Wang <wangao.wang@oss.qualcomm.com>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
This commit is contained in:
Neil Armstrong 2026-06-02 10:39:20 +02:00 committed by Bryan O'Donoghue
parent 2f2f76d433
commit 20c3ef4c7c
2 changed files with 16 additions and 2 deletions

View File

@ -17,6 +17,7 @@ struct iris_inst;
#define REGISTER_BIT_DEPTH(luma, chroma) ((luma) << 16 | (chroma))
#define BIT_DEPTH_8 REGISTER_BIT_DEPTH(8, 8)
#define BIT_DEPTH_10 REGISTER_BIT_DEPTH(10, 10)
#define CODED_FRAMES_PROGRESSIVE 0x0
#define DEFAULT_MAX_HOST_BUF_COUNT 64
#define DEFAULT_MAX_HOST_BURST_BUF_COUNT 256

View File

@ -93,10 +93,23 @@ static bool check_format(struct iris_inst *inst, u32 pixfmt, u32 type)
for (i = 0; i < size; i++) {
if (fmt[i] == pixfmt)
return true;
break;
}
return false;
if (i == size)
return false;
if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
if (iris_fmt_is_8bit(pixfmt) &&
inst->fw_caps[BIT_DEPTH].value == BIT_DEPTH_10)
return false;
if (iris_fmt_is_10bit(pixfmt) &&
inst->fw_caps[BIT_DEPTH].value != BIT_DEPTH_10)
return false;
}
return true;
}
static u32 find_format_by_index(struct iris_inst *inst, u32 index, u32 type)