The description there is completely broken and it mentions
an ioctl that doesn't exist.

Fix it.

Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>
---
 include/media/v4l2-subdev.h | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index b299cf63972b..c43e3d650fe6 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -216,7 +216,10 @@ struct v4l2_subdev_core_ops {
  * struct v4l2_subdev_tuner_ops - Callbacks used when v4l device was opened
  *     in radio mode.
  *
- * @s_radio: callback for VIDIOC_S_RADIO() ioctl handler code.
+ * @s_radio: callback that switches the tuner to radio mode.
+ *          drivers should explicitly call it when a tuner ops should
+ *          operate on radio mode, before being able to handle it.
+ *          Used on devices that have both AM/FM radio receiver and TV.
  *
  * @s_frequency: callback for VIDIOC_S_FREQUENCY() ioctl handler code.
  *
@@ -239,6 +242,22 @@ struct v4l2_subdev_core_ops {
  * @s_type_addr: sets tuner type and its I2C addr.
  *
  * @s_config: sets tda9887 specific stuff, like port1, port2 and qss
+ *
+ * .. note::
+ *
+ *     On devices that have both AM/FM and TV, it is up to the driver
+ *     to explicitly call s_radio when the tuner should be switched to
+ *     radio mode, before handling other &struct v4l2_subdev_tuner_ops
+ *     that would require it. An example of such usage is::
+ *
+ *       static void s_frequency(void *priv, const struct v4l2_frequency *f)
+ *       {
+ *             ...
+ *             if (f.type == V4L2_TUNER_RADIO)
+ *                     v4l2_device_call_all(v4l2_dev, 0, tuner, s_radio);
+ *             ...
+ *             v4l2_device_call_all(v4l2_dev, 0, tuner, s_frequency);
+ *       }
  */
 struct v4l2_subdev_tuner_ops {
        int (*s_radio)(struct v4l2_subdev *sd);
-- 
2.13.6

Reply via email to