diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index c9c7d1ca8d672f5657d825788a854db7fbf42fc4..faa0fd14666a54bc2688ca176c9dee531cc5eccf 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2480,6 +2480,15 @@ that used it. It was originally scheduled for removal in 2.6.35.
+
+ V4L2 in Linux 3.6
+
+
+ Added support for frequency band enumerations: &VIDIOC-ENUM-FREQ-BANDS;.
+
+
+
+
Relation of V4L2 to other Linux multimedia APIs
@@ -2609,6 +2618,9 @@ ioctls.
V4L2_CID_AUTO_FOCUS_AREA control.
+
+ Support for frequency band enumeration: &VIDIOC-ENUM-FREQ-BANDS; ioctl.
+
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
index 36bafc48e03baa86890d1cf2c062c825be55a35c..eee6908c749fd3b6fb66e0e9ab84c9775c09509b 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -140,6 +140,11 @@ structs, ioctls) must be noted in more detail in the history chapter
applications. -->
+ 3.6
+ 2012-07-02
+ hv
+ Added VIDIOC_ENUM_FREQ_BANDS.
+ 3.52012-05-07sa, sn
@@ -534,6 +539,7 @@ and discussions on the V4L mailing list.
&sub-enum-fmt;
&sub-enum-framesizes;
&sub-enum-frameintervals;
+ &sub-enum-freq-bands;
&sub-enuminput;
&sub-enumoutput;
&sub-enumstd;
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml b/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6541ba0175eddbe1078c47778a646c3bb7dd0f1b
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
@@ -0,0 +1,179 @@
+
+
+ ioctl VIDIOC_ENUM_FREQ_BANDS
+ &manvol;
+
+
+
+ VIDIOC_ENUM_FREQ_BANDS
+ Enumerate supported frequency bands
+
+
+
+
+
+ int ioctl
+ int fd
+ int request
+ struct v4l2_frequency_band
+*argp
+
+
+
+
+
+ Arguments
+
+
+
+ fd
+
+ &fd;
+
+
+
+ request
+
+ VIDIOC_ENUM_FREQ_BANDS
+
+
+
+ argp
+
+
+
+
+
+
+
+
+ Description
+
+
+ Experimental
+ This is an experimental
+ interface and may change in the future.
+
+
+ Enumerates the frequency bands that a tuner or modulator supports.
+To do this applications initialize the tuner,
+type and index fields,
+and zero out the reserved array of a &v4l2-frequency-band; and
+call the VIDIOC_ENUM_FREQ_BANDS ioctl with a pointer
+to this structure.
+
+ This ioctl is supported if the V4L2_TUNER_CAP_FREQ_BANDS capability
+ of the corresponding tuner/modulator is set.
+
+
+ struct v4l2_frequency_band
+
+ &cs-str;
+
+
+ __u32
+ tuner
+ The tuner or modulator index number. This is the
+same value as in the &v4l2-input; tuner
+field and the &v4l2-tuner; index field, or
+the &v4l2-output; modulator field and the
+&v4l2-modulator; index field.
+
+
+ __u32
+ type
+ The tuner type. This is the same value as in the
+&v4l2-tuner; type field. The type must be set
+to V4L2_TUNER_RADIO for /dev/radioX
+device nodes, and to V4L2_TUNER_ANALOG_TV
+for all others. Set this field to V4L2_TUNER_RADIO for
+modulators (currently only radio modulators are supported).
+See
+
+
+ __u32
+ index
+ Identifies the frequency band, set by the application.
+
+
+ __u32
+ capability
+ The tuner/modulator capability flags for
+this frequency band, see . The V4L2_TUNER_CAP_LOW
+capability must be the same for all frequency bands of the selected tuner/modulator.
+So either all bands have that capability set, or none of them have that capability.
+
+
+ __u32
+ rangelow
+ The lowest tunable frequency in
+units of 62.5 kHz, or if the capability
+flag V4L2_TUNER_CAP_LOW is set, in units of 62.5
+Hz, for this frequency band.
+
+
+ __u32
+ rangehigh
+ The highest tunable frequency in
+units of 62.5 kHz, or if the capability
+flag V4L2_TUNER_CAP_LOW is set, in units of 62.5
+Hz, for this frequency band.
+
+
+ __u32
+ modulation
+ The supported modulation systems of this frequency band.
+ See . Note that currently only one
+ modulation system per frequency band is supported. More work will need to
+ be done if multiple modulation systems are possible. Contact the
+ linux-media mailing list (&v4l-ml;) if you need that functionality.
+
+
+ __u32
+ reserved[9]
+ Reserved for future extensions. Applications and drivers
+ must set the array to zero.
+
+
+
+
+
+
+ Band Modulation Systems
+
+ &cs-def;
+
+
+ V4L2_BAND_MODULATION_VSB
+ 0x02
+ Vestigial Sideband modulation, used for analog TV.
+
+
+ V4L2_BAND_MODULATION_FM
+ 0x04
+ Frequency Modulation, commonly used for analog radio.
+
+
+ V4L2_BAND_MODULATION_AM
+ 0x08
+ Amplitude Modulation, commonly used for analog radio.
+
+
+
+
+
+
+
+ &return-value;
+
+
+
+ EINVAL
+
+ The tuner or index
+is out of bounds or the type field is wrong.
+
+
+
+
+
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
index 40e58a42eb26d55123ccf1153d702eb1b9a70953..c7a1c462e7243fe665dab4b5e4fbcb762765f874 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
@@ -98,11 +98,12 @@ the &v4l2-output; modulator field and the
__u32typeThe tuner type. This is the same value as in the
-&v4l2-tuner; type field. See The type must be set
+&v4l2-tuner; type field. The type must be set
to V4L2_TUNER_RADIO for /dev/radioX
device nodes, and to V4L2_TUNER_ANALOG_TV
-for all others. The field is not applicable to modulators, &ie; ignored
-by drivers. See
+for all others. Set this field to V4L2_TUNER_RADIO for
+modulators (currently only radio modulators are supported).
+See __u32
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
index 95d5371c17090af4ff0c9ba1e51aa3a0dbdc0d98..720395127904574b69db6dd2b042f46b3d14901b 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
@@ -119,10 +119,14 @@ field is not quite clear.-->
. Audio flags indicate the ability
to decode audio subprograms. They will not
change, for example with the current video standard.When
-the structure refers to a radio tuner only the
-V4L2_TUNER_CAP_LOW,
-V4L2_TUNER_CAP_STEREO and
-V4L2_TUNER_CAP_RDS flags can be set.
+the structure refers to a radio tuner the
+V4L2_TUNER_CAP_LANG1,
+V4L2_TUNER_CAP_LANG2 and
+V4L2_TUNER_CAP_NORM flags can't be used.
+If multiple frequency bands are supported, then
+capability is the union of all
+capability> fields of each &v4l2-frequency-band;.
+__u32
@@ -130,7 +134,9 @@ the structure refers to a radio tuner only the
The lowest tunable frequency in
units of 62.5 kHz, or if the capability
flag V4L2_TUNER_CAP_LOW is set, in units of 62.5
-Hz.
+Hz. If multiple frequency bands are supported, then
+rangelow is the lowest frequency
+of all the frequency bands.
__u32
@@ -138,7 +144,9 @@ Hz.
The highest tunable frequency in
units of 62.5 kHz, or if the capability
flag V4L2_TUNER_CAP_LOW is set, in units of 62.5
-Hz.
+Hz. If multiple frequency bands are supported, then
+rangehigh is the highest frequency
+of all the frequency bands.
__u32
@@ -340,6 +348,12 @@ radio tuners.
0x0200The RDS data is parsed by the hardware and set via controls.
+
+ V4L2_TUNER_CAP_FREQ_BANDS
+ 0x0400
+ The &VIDIOC-ENUM-FREQ-BANDS; ioctl can be used to enumerate
+ the available frequency bands.
+