Merge tag 'media/v7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 19 Jun 2026 00:21:54 +0000 (17:21 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 19 Jun 2026 00:21:54 +0000 (17:21 -0700)
Pull media updates from Mauro Carvalho Chehab:

 - v4l2:
     - core: fix subdev sensor ownership
     - subdev: Allow accessing routes with STREAMS client capability
     - ctrls: Add validation for HEVC active reference counts and
       background detection control
     - common: Add YUV24 format info and has_alpha helper

 - vb2: Change vb2_read() and vb2_write() return types to ssize_t

 - i2c: cvs: Add driver of Intel Computer Vision Sensing Controller(CVS)

 - atmel-isc: remove deprecated driver

 - cec: Add CEC Latency Indication Protocol (LIP) support

 - imon: Add iMON VFD HID OEM v1.2 key mappings

 - AVMatrix: new HWS capture driver

 - isp4: new AMD capture driver

 - qcom:
     - iris: Add hierarchical coding, B-frame, and Long-Term Reference
       support for encoder
     - camss: Add SM6350 platform support
     - venus: Add SM6115 platform support

 - chips-media: wave5: Add support for Packed YUV422, CBP profile, and
   background detection

 - csi2rx: Add multistream support and 32 dma chans

 - Several cleanups and fixes

* tag 'media/v7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (394 commits)
  media: v4l2-fwnode: Fix subdev owner overwritten in v4l2_async_register_subdev_sensor()
  media: qcom: iris: vdec: allow GEN2 decoding into 10bit format
  media: qcom: iris: vdec: update find_format to handle 8bit and 10bit formats
  media: qcom: iris: vdec: update size and stride calculations for 10bit formats
  media: qcom: iris: gen2: add support for 10bit decoding
  media: qcom: iris: add QC10C & P010 buffer size calculations
  media: qcom: iris: add helpers for 8bit and 10bit formats
  media: qcom: iris: Fix FPS calculation and VPP FW overhead
  media: qcom: camss: vfe-340: Support for PIX client
  media: qcom: camss: vfe-340: Proper client handling
  media: qcom: camss: csid-340: Enable PIX interface routing
  media: qcom: camss: csid-340: Add port-to-interface mapping
  media: qcom: camss: csid-340: Switch to generic CSID_CFG/CTRL registers
  media: iris: Initialize HFI ops after firmware load in core init
  media: iris: drop struct iris_fmt
  media: iris: Add platform data for X1P42100
  media: iris: Add hardware power on/off ops for X1P42100
  media: iris: optimize COMV buffer allocation for VPU3x and VPU4x
  media: iris: add FPS calculation and VPP FW overhead in frequency formula
  media: qcom: iris: Simplify COMV size calculation
  ...

17 files changed:
1  2 
MAINTAINERS
drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c
drivers/media/platform/qcom/iris/Kconfig
drivers/media/platform/qcom/iris/iris_buffer.c
drivers/media/platform/qcom/iris/iris_core.c
drivers/media/platform/qcom/iris/iris_hfi_common.c
drivers/media/platform/qcom/iris/iris_vdec.c
drivers/media/platform/qcom/iris/iris_venc.c
drivers/media/platform/qcom/iris/iris_vidc.c
drivers/media/platform/qcom/iris/iris_vpu2.c
drivers/media/platform/qcom/iris/iris_vpu_common.c
drivers/media/platform/qcom/iris/iris_vpu_common.h
drivers/media/platform/renesas/vsp1/vsp1_brx.c
drivers/media/platform/renesas/vsp1/vsp1_entity.c
drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c
drivers/media/usb/msi2500/msi2500.c

diff --cc MAINTAINERS
Simple merge
@@@ -3,8 -3,9 +3,9 @@@ config VIDEO_QCOM_IRI
          depends on VIDEO_DEV
          depends on ARCH_QCOM || COMPILE_TEST
          select V4L2_MEM2MEM_DEV
 -        select QCOM_MDT_LOADER if ARCH_QCOM
 +        select QCOM_MDT_LOADER
          select QCOM_SCM
+         select QCOM_UBWC_CONFIG
          select VIDEOBUF2_DMA_CONTIG
          help
            This is a V4L2 driver for Qualcomm iris video accelerator
@@@ -75,10 -74,8 +74,12 @@@ int iris_core_init(struct iris_core *co
        if (ret)
                goto error_unload_fw;
  
 +      ret = iris_vpu_switch_to_hwmode(core);
 +      if (ret)
 +              goto error_unload_fw;
 +
+       core->iris_firmware_data->init_hfi_ops(core);
        ret = iris_hfi_core_init(core);
        if (ret)
                goto error_unload_fw;
@@@ -61,23 -62,24 +62,18 @@@ int iris_vdec_inst_init(struct iris_ins
        return iris_ctrls_init(inst);
  }
  
- static const struct iris_fmt iris_vdec_formats_cap[] = {
-       [IRIS_FMT_NV12] = {
-               .pixfmt = V4L2_PIX_FMT_NV12,
-               .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
-       },
-       [IRIS_FMT_QC08C] = {
-               .pixfmt = V4L2_PIX_FMT_QC08C,
-               .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
-       },
 -void iris_vdec_inst_deinit(struct iris_inst *inst)
 -{
 -      kfree(inst->fmt_dst);
 -      kfree(inst->fmt_src);
 -}
 -
+ static const u32 iris_vdec_formats_cap[] = {
+       [IRIS_FMT_NV12] = V4L2_PIX_FMT_NV12,
+       [IRIS_FMT_QC08C] = V4L2_PIX_FMT_QC08C,
+       [IRIS_FMT_TP10] =  V4L2_PIX_FMT_P010,
+       [IRIS_FMT_QC10C] =  V4L2_PIX_FMT_QC10C,
  };
  
- static const struct iris_fmt *
- find_format(struct iris_inst *inst, u32 pixfmt, u32 type)
+ static bool check_format(struct iris_inst *inst, u32 pixfmt, u32 type)
  {
-       const struct iris_fmt *fmt = NULL;
-       unsigned int size = 0;
-       unsigned int i;
+       unsigned int size, i;
+       const u32 *fmt;
        switch (type) {
        case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
                fmt = inst->core->iris_platform_data->inst_iris_fmts;
@@@ -79,34 -79,27 +79,21 @@@ int iris_venc_inst_init(struct iris_ins
        return iris_ctrls_init(inst);
  }
  
- static const struct iris_fmt iris_venc_formats_cap[] = {
-       [IRIS_FMT_H264] = {
-               .pixfmt = V4L2_PIX_FMT_H264,
-               .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
-       },
-       [IRIS_FMT_HEVC] = {
-               .pixfmt = V4L2_PIX_FMT_HEVC,
-               .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
-       },
 -void iris_venc_inst_deinit(struct iris_inst *inst)
 -{
 -      kfree(inst->fmt_dst);
 -      kfree(inst->fmt_src);
 -}
 -
+ static const u32 iris_venc_formats_cap[] = {
+       [IRIS_FMT_H264] = V4L2_PIX_FMT_H264,
+       [IRIS_FMT_HEVC] = V4L2_PIX_FMT_HEVC,
  };
  
- static const struct iris_fmt iris_venc_formats_out[] = {
-       [IRIS_FMT_NV12] = {
-               .pixfmt = V4L2_PIX_FMT_NV12,
-               .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
-       },
-       [IRIS_FMT_QC08C] = {
-               .pixfmt = V4L2_PIX_FMT_QC08C,
-               .type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
-       },
+ static const u32 iris_venc_formats_out[] = {
+       [IRIS_FMT_NV12] = V4L2_PIX_FMT_NV12,
+       [IRIS_FMT_QC08C] = V4L2_PIX_FMT_QC08C,
  };
  
- static const struct iris_fmt *
- find_format(struct iris_inst *inst, u32 pixfmt, u32 type)
+ static bool check_format(struct iris_inst *inst, u32 pixfmt, u32 type)
  {
-       const struct iris_fmt *fmt = NULL;
-       unsigned int size = 0;
-       unsigned int i;
+       unsigned int size, i;
+       const u32 *fmt;
        switch (type) {
        case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
                fmt = iris_venc_formats_out;
@@@ -292,8 -293,20 +293,14 @@@ int iris_vpu_power_on_hw(struct iris_co
        if (ret && ret != -ENOENT)
                goto err_disable_hw_clock;
  
 -      ret = dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN], true);
 -      if (ret)
 -              goto err_disable_bse_hw_clock;
 -
+       ret = iris_prepare_enable_clock(core, IRIS_BSE_HW_CLK);
+       if (ret && ret != -ENOENT)
+               goto err_disable_hw_ahb_clock;
        return 0;
  
 -err_disable_bse_hw_clock:
 -      iris_disable_unprepare_clock(core, IRIS_BSE_HW_CLK);
+ err_disable_hw_ahb_clock:
+       iris_disable_unprepare_clock(core, IRIS_HW_AHB_CLK);
  err_disable_hw_clock:
        iris_disable_unprepare_clock(core, IRIS_HW_CLK);
  err_disable_power:
@@@ -164,11 -164,12 +161,9 @@@ static int brx_set_format(struct v4l2_s
                        format = v4l2_subdev_state_get_format(state, i);
                        format->code = fmt->format.code;
                }
 -
 -              format = v4l2_subdev_state_get_format(state, i);
 -              *format = fmt->format;
        }
  
- done:
-       mutex_unlock(&brx->entity.lock);
-       return ret;
+       return 0;
  }
  
  static int brx_get_selection(struct v4l2_subdev *subdev,
Simple merge