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,