diff --git a/drivers/media/radio/Kconfig b/drivers/media/radio/Kconfig index 36f3e67447be..ee0a25aa24c3 100644 --- a/drivers/media/radio/Kconfig +++ b/drivers/media/radio/Kconfig @@ -508,7 +508,7 @@ endif # V4L_RADIO_ISA_DRIVERS config I2C_RTC6226_QCA tristate "Richwave RTC6226 FM Radio Receiver support with I2C for QCA" - depends on I2C && VIDEO_V4L2 + depends on I2C && VIDEO_V4L2 && QGKI ---help--- This is a driver for I2C devices with the Richwave RTC6226 chip. diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index 4037689a945a..807b607b99e5 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c @@ -728,6 +728,9 @@ static void determine_valid_ioctls(struct video_device *vdev) SET_VALID_IOCTL(ops, VIDIOC_ENUM_DV_TIMINGS, vidioc_enum_dv_timings); SET_VALID_IOCTL(ops, VIDIOC_DV_TIMINGS_CAP, vidioc_dv_timings_cap); SET_VALID_IOCTL(ops, VIDIOC_G_EDID, vidioc_g_edid); + } else { + /* ioctls valid for radio */ + SET_VALID_IOCTL(ops, VIDIOC_DQBUF, vidioc_dqbuf); } if (is_tx && (is_radio || is_sdr)) { /* radio transmitter only ioctls */ diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index 51b912743f0f..0fde379e5cd9 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1003,6 +1003,12 @@ static int check_fmt(struct file *file, enum v4l2_buf_type type) if (is_vid && is_tx && ops->vidioc_g_fmt_meta_out) return 0; break; +#ifdef CONFIG_I2C_RTC6226_QCA + case V4L2_BUF_TYPE_PRIVATE: + if (ops->vidioc_g_fmt_type_private) + return 0; + break; +#endif default: break; } diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h index 4bba65a59d46..d8dc2bc8a8f3 100644 --- a/include/media/v4l2-ioctl.h +++ b/include/media/v4l2-ioctl.h @@ -345,6 +345,10 @@ struct v4l2_ioctl_ops { struct v4l2_format *f); int (*vidioc_g_fmt_meta_out)(struct file *file, void *fh, struct v4l2_format *f); +#ifdef CONFIG_I2C_RTC6226_QCA + int (*vidioc_g_fmt_type_private)(struct file *file, void *fh, + struct v4l2_format *f); +#endif /* VIDIOC_S_FMT handlers */ int (*vidioc_s_fmt_vid_cap)(struct file *file, void *fh,