V4L/DVB (11367): v4l2-common: remove legacy code

Now that all drivers are converted to v4l2_subdev we can remove legacy code
in v4l2-common. Also move the documentation of the internal API to
v4l2-subdev.h where it really belongs.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index 1d181b4..9a8535b 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -27,6 +27,22 @@
 struct v4l2_subdev;
 struct tuner_setup;
 
+/* decode_vbi_line */
+struct v4l2_decode_vbi_line {
+	u32 is_second_field;	/* Set to 0 for the first (odd) field,
+				   set to 1 for the second (even) field. */
+	u8 *p; 			/* Pointer to the sliced VBI data from the decoder.
+				   On exit points to the start of the payload. */
+	u32 line;		/* Line number of the sliced VBI data (1-23) */
+	u32 type;		/* VBI service type (V4L2_SLICED_*). 0 if no service found */
+};
+
+/* s_crystal_freq */
+struct v4l2_crystal_freq {
+	u32 freq;	/* frequency in Hz of the crystal */
+	u32 flags; 	/* device specific flags */
+};
+
 /* Sub-devices are devices that are connected somehow to the main bridge
    device. These devices are usually audio/video muxers/encoders/decoders or
    sensors and webcam controllers.
@@ -68,6 +84,21 @@
    the use-case it might be better to use subdev-specific ops (currently
    not yet implemented) since ops provide proper type-checking.
  */
+
+/* init: initialize the sensor registors to some sort of reasonable default
+	values. Do not use for new drivers and should be removed in existing
+	drivers.
+
+  reset: generic reset command. The argument selects which subsystems to
+	reset. Passing 0 will always reset the whole chip. Do not use for new
+	drivers without discussing this first on the linux-media mailinglist.
+	There should be no reason normally to reset a device.
+
+   s_gpio: set GPIO pins. Very simple right now, might need to be extended with
+	a direction argument if needed.
+
+   s_standby: puts tuner on powersaving state, disabling it, except for i2c.
+ */
 struct v4l2_subdev_core_ops {
 	int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip);
 	int (*log_status)(struct v4l2_subdev *sd);
@@ -89,6 +120,14 @@
 #endif
 };
 
+/* s_mode: switch the tuner to a specific tuner mode. Replacement of s_radio.
+
+   s_radio: v4l device was opened in Radio mode, to be replaced by s_mode.
+
+   s_type_addr: sets tuner type and its I2C addr.
+
+   s_config: sets tda9887 specific stuff, like port1, port2 and qss
+ */
 struct v4l2_subdev_tuner_ops {
 	int (*s_mode)(struct v4l2_subdev *sd, enum v4l2_tuner_type);
 	int (*s_radio)(struct v4l2_subdev *sd);
@@ -101,12 +140,68 @@
 	int (*s_config)(struct v4l2_subdev *sd, const struct v4l2_priv_tun_config *config);
 };
 
+/* s_clock_freq: set the frequency (in Hz) of the audio clock output.
+	Used to slave an audio processor to the video decoder, ensuring that
+	audio and video remain synchronized. Usual values for the frequency
+	are 48000, 44100 or 32000 Hz. If the frequency is not supported, then
+	-EINVAL is returned.
+
+   s_i2s_clock_freq: sets I2S speed in bps. This is used to provide a standard
+	way to select I2S clock used by driving digital audio streams at some
+	board designs. Usual values for the frequency are 1024000 and 2048000.
+	If the frequency is not supported, then -EINVAL is returned.
+
+   s_routing: used to define the input and/or output pins of an audio chip.
+	Never attempt to use user-level input IDs (e.g. Composite, S-Video,
+	Tuner) at this level. An i2c device shouldn't know about whether an
+	input pin is connected to a Composite connector, become on another
+	board or platform it might be connected to something else entirely.
+	The calling driver is responsible for mapping a user-level input to
+	the right pins on the i2c device.
+ */
 struct v4l2_subdev_audio_ops {
 	int (*s_clock_freq)(struct v4l2_subdev *sd, u32 freq);
 	int (*s_i2s_clock_freq)(struct v4l2_subdev *sd, u32 freq);
 	int (*s_routing)(struct v4l2_subdev *sd, const struct v4l2_routing *route);
 };
 
+/*
+   decode_vbi_line: video decoders that support sliced VBI need to implement
+	this ioctl. Field p of the v4l2_sliced_vbi_line struct is set to the
+	start of the VBI data that was generated by the decoder. The driver
+	then parses the sliced VBI data and sets the other fields in the
+	struct accordingly. The pointer p is updated to point to the start of
+	the payload which can be copied verbatim into the data field of the
+	v4l2_sliced_vbi_data struct. If no valid VBI data was found, then the
+	type field is set to 0 on return.
+
+  s_vbi_data: used to generate VBI signals on a video signal.
+	v4l2_sliced_vbi_data is filled with the data packets that should be
+	output. Note that if you set the line field to 0, then that VBI signal
+	is disabled. If no valid VBI data was found, then the type field is
+	set to 0 on return.
+
+  g_vbi_data: used to obtain the sliced VBI packet from a readback register.
+	Not all video decoders support this. If no data is available because
+	the readback register contains invalid or erroneous data -EIO is
+	returned. Note that you must fill in the 'id' member and the 'field'
+	member (to determine whether CC data from the first or second field
+	should be obtained).
+
+  s_std_output: set v4l2_std_id for video OUTPUT devices. This is ignored by
+	video input devices.
+
+  s_crystal_freq: sets the frequency of the crystal used to generate the
+	clocks. An extra flags field allows device specific configuration
+	regarding clock frequency dividers, etc. If not used, then set flags
+	to 0. If the frequency is not supported, then -EINVAL is returned.
+
+  g_input_status: get input status. Same as the status field in the v4l2_input
+	struct.
+
+  s_routing: see s_routing in audio_ops, except this version is for video
+	devices.
+ */
 struct v4l2_subdev_video_ops {
 	int (*s_routing)(struct v4l2_subdev *sd, const struct v4l2_routing *route);
 	int (*s_crystal_freq)(struct v4l2_subdev *sd, struct v4l2_crystal_freq *freq);
@@ -163,18 +258,6 @@
 	return sd->priv;
 }
 
-/* Convert an ioctl-type command to the proper v4l2_subdev_ops function call.
-   This is used by subdev modules that can be called by both old-style ioctl
-   commands and through the v4l2_subdev_ops.
-
-   The ioctl API of the subdev driver can call this function to call the
-   right ops based on the ioctl cmd and arg.
-
-   Once all subdev drivers have been converted and all drivers no longer
-   use the ioctl interface, then this function can be removed.
- */
-int v4l2_subdev_command(struct v4l2_subdev *sd, unsigned cmd, void *arg);
-
 static inline void v4l2_subdev_init(struct v4l2_subdev *sd,
 					const struct v4l2_subdev_ops *ops)
 {