diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2025-03-25 21:00:31 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2025-03-25 21:00:31 -0700 |
| commit | 1e26c5e28ca5821a824e90dd359556f5e9e7b89f (patch) | |
| tree | 4d6865ec1c41324dcda4591482c55e34fcc6d6fb /drivers/staging | |
| parent | c84907a1459588c883ef84a35bb69d46ca37e4e7 (diff) | |
| parent | f2151613e040973c868d28c8b00885dfab69eb75 (diff) | |
Merge tag 'media/v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab:
- platform: synopsys: hdmirx: Fix 64-bit division for 32-bit targets
- vim2m: print device name after registering device
- Synopsys DesignWare HDMI RX Driver and various fixes
- cec/printk fixes and the removal of the vidioc_g/s_ctrl and
vidioc_queryctrl callbacks
- AVerMedia H789-C PCIe support and rc-core structs padding
- Several camera sensor patches
- uvcvideo improvements
- visl: Fix ERANGE error when setting enum controls
- codec fixes
- V4L2 camera sensor patches mostly
- chips-media: wave5: Fixes
- Add SDM670 camera subsystem
- Qualcomm iris video decoder driver
- dt-bindings: update clocks for sc7280-camss
- various fixes and enhancements
* tag 'media/v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (264 commits)
media: pci: mgb4: include linux/errno.h
media: synopsys: hdmirx: Fix signedness bug in hdmirx_parse_dt()
media: platform: synopsys: hdmirx: Fix 64-bit division for 32-bit targets
media: vim2m: print device name after registering device
media: vivid: Introduce VIDEO_VIVID_OSD
media: vivid: Move all fb_info references into vivid-osd
media: platform: synopsys: hdmirx: Optimize struct snps_hdmirx_dev
media: platform: synopsys: hdmirx: Remove unused HDMI audio CODEC relics
media: platform: synopsys: hdmirx: Remove duplicated header inclusion
media: qcom: Clean up Kconfig dependencies
media: dvb-frontends: tda10048: Make the range of z explicit.
media: platform: stm32: Add check for clk_enable()
media: xilinx-tpg: fix double put in xtpg_parse_of()
media: siano: Fix error handling in smsdvb_module_init()
media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe()
media: i2c: tda1997x: Call of_node_put(ep) only once in tda1997x_parse_dt()
dt-bindings: media: mediatek,vcodec: Revise description
dt-bindings: media: mediatek,jpeg: Relax IOMMU max item count
media: v4l2-dv-timings: prevent possible overflow in v4l2_detect_gtf()
media: rockchip: rga: fix rga offset lookup
...
Diffstat (limited to 'drivers/staging')
3 files changed, 22 insertions, 76 deletions
diff --git a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c index 1a960a01854f..1fb2ba819de3 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c +++ b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c @@ -34,7 +34,7 @@ static const char *CARD = "ATOM ISP"; /* max size 31 */ * FIXME: ISP should not know beforehand all CIDs supported by sensor. * Instead, it needs to propagate to sensor unknown CIDs. */ -static struct v4l2_queryctrl ci_v4l2_controls[] = { +static struct v4l2_query_ext_ctrl ci_v4l2_controls[] = { { .id = V4L2_CID_AUTO_WHITE_BALANCE, .type = V4L2_CTRL_TYPE_BOOLEAN, @@ -1140,31 +1140,34 @@ static int atomisp_s_ctrl(struct file *file, void *fh, /* * To query the attributes of a control. - * applications set the id field of a struct v4l2_queryctrl and call the + * applications set the id field of a struct v4l2_query_ext_ctrl and call the * this ioctl with a pointer to this structure. The driver fills * the rest of the structure. */ -static int atomisp_queryctl(struct file *file, void *fh, - struct v4l2_queryctrl *qc) +static int atomisp_query_ext_ctrl(struct file *file, void *fh, + struct v4l2_query_ext_ctrl *qc) { - int i, ret = -EINVAL; + int i; + /* TODO: implement V4L2_CTRL_FLAG_NEXT_CTRL */ if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL) - return ret; + return -EINVAL; for (i = 0; i < ctrls_num; i++) { if (ci_v4l2_controls[i].id == qc->id) { - memcpy(qc, &ci_v4l2_controls[i], - sizeof(struct v4l2_queryctrl)); - qc->reserved[0] = 0; - ret = 0; - break; + *qc = ci_v4l2_controls[i]; + qc->elems = 1; + qc->elem_size = 4; + return 0; } } - if (ret != 0) - qc->flags = V4L2_CTRL_FLAG_DISABLED; - return ret; + /* + * This is probably not needed, but this flag has been set for + * many kernel versions. Leave it to avoid breaking any apps. + */ + qc->flags = V4L2_CTRL_FLAG_DISABLED; + return -EINVAL; } static int atomisp_camera_g_ext_ctrls(struct file *file, void *fh, @@ -1561,9 +1564,7 @@ const struct v4l2_ioctl_ops atomisp_ioctl_ops = { .vidioc_enum_input = atomisp_enum_input, .vidioc_g_input = atomisp_g_input, .vidioc_s_input = atomisp_s_input, - .vidioc_queryctrl = atomisp_queryctl, - .vidioc_s_ctrl = atomisp_s_ctrl, - .vidioc_g_ctrl = atomisp_g_ctrl, + .vidioc_query_ext_ctrl = atomisp_query_ext_ctrl, .vidioc_s_ext_ctrls = atomisp_s_ext_ctrls, .vidioc_g_ext_ctrls = atomisp_g_ext_ctrls, .vidioc_enum_framesizes = atomisp_enum_framesizes, diff --git a/drivers/staging/media/atomisp/pci/isp/kernels/sdis/sdis_1.0/ia_css_sdis.host.c b/drivers/staging/media/atomisp/pci/isp/kernels/sdis/sdis_1.0/ia_css_sdis.host.c index a4e019e74e6b..a1bea8bd1a39 100644 --- a/drivers/staging/media/atomisp/pci/isp/kernels/sdis/sdis_1.0/ia_css_sdis.host.c +++ b/drivers/staging/media/atomisp/pci/isp/kernels/sdis/sdis_1.0/ia_css_sdis.host.c @@ -230,7 +230,8 @@ void ia_css_sdis_clear_coefficients( int ia_css_get_dvs_statistics( struct ia_css_dvs_statistics *host_stats, - const struct ia_css_isp_dvs_statistics *isp_stats) { + const struct ia_css_isp_dvs_statistics *isp_stats) +{ struct ia_css_isp_dvs_statistics_map *map; int ret = 0; @@ -240,13 +241,11 @@ ia_css_get_dvs_statistics( assert(isp_stats); map = ia_css_isp_dvs_statistics_map_allocate(isp_stats, NULL); - if (map) - { + if (map) { hmm_load(isp_stats->data_ptr, map->data_ptr, isp_stats->size); ia_css_translate_dvs_statistics(host_stats, map); ia_css_isp_dvs_statistics_map_free(map); - } else - { + } else { IA_CSS_ERROR("out of memory"); ret = -ENOMEM; } diff --git a/drivers/staging/media/imx/imx-media-vdic.c b/drivers/staging/media/imx/imx-media-vdic.c index 09da4103a8db..86f2b30cb06c 100644 --- a/drivers/staging/media/imx/imx-media-vdic.c +++ b/drivers/staging/media/imx/imx-media-vdic.c @@ -180,60 +180,6 @@ out: return ret; } -/* - * This function is currently unused, but will be called when the - * output/mem2mem device at the IDMAC input pad sends us a new - * buffer. It kicks off the IDMAC read channels to bring in the - * buffer fields from memory and begin the conversions. - */ -static void __maybe_unused prepare_vdi_in_buffers(struct vdic_priv *priv, - struct imx_media_buffer *curr) -{ - dma_addr_t prev_phys, curr_phys, next_phys; - struct imx_media_buffer *prev; - struct vb2_buffer *curr_vb, *prev_vb; - u32 fs = priv->field_size; - u32 is = priv->in_stride; - - /* current input buffer is now previous */ - priv->prev_in_buf = priv->curr_in_buf; - priv->curr_in_buf = curr; - prev = priv->prev_in_buf ? priv->prev_in_buf : curr; - - prev_vb = &prev->vbuf.vb2_buf; - curr_vb = &curr->vbuf.vb2_buf; - - switch (priv->fieldtype) { - case V4L2_FIELD_SEQ_TB: - case V4L2_FIELD_SEQ_BT: - prev_phys = vb2_dma_contig_plane_dma_addr(prev_vb, 0) + fs; - curr_phys = vb2_dma_contig_plane_dma_addr(curr_vb, 0); - next_phys = vb2_dma_contig_plane_dma_addr(curr_vb, 0) + fs; - break; - case V4L2_FIELD_INTERLACED_TB: - case V4L2_FIELD_INTERLACED_BT: - case V4L2_FIELD_INTERLACED: - prev_phys = vb2_dma_contig_plane_dma_addr(prev_vb, 0) + is; - curr_phys = vb2_dma_contig_plane_dma_addr(curr_vb, 0); - next_phys = vb2_dma_contig_plane_dma_addr(curr_vb, 0) + is; - break; - default: - /* - * can't get here, priv->fieldtype can only be one of - * the above. This is to quiet smatch errors. - */ - return; - } - - ipu_cpmem_set_buffer(priv->vdi_in_ch_p, 0, prev_phys); - ipu_cpmem_set_buffer(priv->vdi_in_ch, 0, curr_phys); - ipu_cpmem_set_buffer(priv->vdi_in_ch_n, 0, next_phys); - - ipu_idmac_select_buffer(priv->vdi_in_ch_p, 0); - ipu_idmac_select_buffer(priv->vdi_in_ch, 0); - ipu_idmac_select_buffer(priv->vdi_in_ch_n, 0); -} - static int setup_vdi_channel(struct vdic_priv *priv, struct ipuv3_channel *channel, dma_addr_t phys0, dma_addr_t phys1) |
