On Tue Jun 2 10:39:20 2026 +0200, Neil Armstrong wrote:
> 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 <[email protected]>
> Reviewed-by: Bryan O'Donoghue <[email protected]>
> Tested-by: Wangao Wang <[email protected]>
> Signed-off-by: Neil Armstrong <[email protected]>
> Signed-off-by: Bryan O'Donoghue <[email protected]>

Patch committed.

Thanks,
Bryan O'Donoghue

 drivers/media/platform/qcom/iris/iris_platform_common.h |  1 +
 drivers/media/platform/qcom/iris/iris_vdec.c            | 17 +++++++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

---

diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h 
b/drivers/media/platform/qcom/iris/iris_platform_common.h
index 6d69a1e3dcd3..c9256f2323dc 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_common.h
+++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
@@ -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
diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c 
b/drivers/media/platform/qcom/iris/iris_vdec.c
index 92e9201cd3a4..d55671340600 100644
--- a/drivers/media/platform/qcom/iris/iris_vdec.c
+++ b/drivers/media/platform/qcom/iris/iris_vdec.c
@@ -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;
+       }
+
+       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 false;
+       return true;
 }
 
 static u32 find_format_by_index(struct iris_inst *inst, u32 index, u32 type)
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to