Commit 8c13415c8a43 for kernel

commit 8c13415c8a4383447c21ec832b20b3b283f0e01a
Merge: 5cd1731cc883 06cb687a5132
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Jun 18 17:21:54 2026 -0700

    Merge tag 'media/v7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

    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
      ...

diff --cc drivers/media/platform/qcom/iris/Kconfig
index 5498f48362d1,39b06de6c3e6..af78a1775937
--- a/drivers/media/platform/qcom/iris/Kconfig
+++ b/drivers/media/platform/qcom/iris/Kconfig
@@@ -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
diff --cc drivers/media/platform/qcom/iris/iris_core.c
index dbaac01eb15a,a1823ded46e8..52bf56e517f9
--- a/drivers/media/platform/qcom/iris/iris_core.c
+++ b/drivers/media/platform/qcom/iris/iris_core.c
@@@ -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;
diff --cc drivers/media/platform/qcom/iris/iris_vdec.c
index 99d544e2af4f,a8d6354bee28..9e228b70420e
--- a/drivers/media/platform/qcom/iris/iris_vdec.c
+++ b/drivers/media/platform/qcom/iris/iris_vdec.c
@@@ -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;
diff --cc drivers/media/platform/qcom/iris/iris_venc.c
index 4d886769d958,2398992d0596..a945992f63aa
--- a/drivers/media/platform/qcom/iris/iris_venc.c
+++ b/drivers/media/platform/qcom/iris/iris_venc.c
@@@ -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;
diff --cc drivers/media/platform/qcom/iris/iris_vpu_common.c
index 69e6126dc4d9,37dbfe433a08..ab41da1f47c8
--- a/drivers/media/platform/qcom/iris/iris_vpu_common.c
+++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c
@@@ -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 = iris_prepare_enable_clock(core, IRIS_BSE_HW_CLK);
+ 	if (ret && ret != -ENOENT)
+ 		goto err_disable_hw_ahb_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;
 -
  	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:
diff --cc drivers/media/platform/renesas/vsp1/vsp1_brx.c
index 9d93cb8b8e82,d150a92b2617..325be30836d7
--- a/drivers/media/platform/renesas/vsp1/vsp1_brx.c
+++ b/drivers/media/platform/renesas/vsp1/vsp1_brx.c
@@@ -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,