aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/media/atmel-isc.txt65
-rw-r--r--Documentation/media/kapi/cec-core.rst (renamed from Documentation/cec.txt)147
-rw-r--r--Documentation/media/kapi/v4l2-dev.rst1
-rw-r--r--Documentation/media/media_api_files/typical_media_device.pdfbin134268 -> 52895 bytes
-rw-r--r--Documentation/media/media_kapi.rst1
-rw-r--r--Documentation/media/uapi/cec/cec-func-close.rst4
-rw-r--r--Documentation/media/uapi/cec/cec-func-ioctl.rst4
-rw-r--r--Documentation/media/uapi/cec/cec-func-open.rst4
-rw-r--r--Documentation/media/uapi/cec/cec-func-poll.rst4
-rw-r--r--Documentation/media/uapi/cec/cec-intro.rst4
-rw-r--r--Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst6
-rw-r--r--Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst13
-rw-r--r--Documentation/media/uapi/cec/cec-ioc-adap-g-phys-addr.rst4
-rw-r--r--Documentation/media/uapi/cec/cec-ioc-dqevent.rst22
-rw-r--r--Documentation/media/uapi/cec/cec-ioc-g-mode.rst7
-rw-r--r--Documentation/media/uapi/cec/cec-ioc-receive.rst10
-rw-r--r--Documentation/media/uapi/dvb/audio-fopen.rst2
-rw-r--r--Documentation/media/uapi/dvb/ca-fopen.rst2
-rw-r--r--Documentation/media/uapi/dvb/dmx-fread.rst3
-rw-r--r--Documentation/media/uapi/dvb/dmx-fwrite.rst2
-rw-r--r--Documentation/media/uapi/dvb/dmx-set-pes-filter.rst2
-rw-r--r--Documentation/media/uapi/dvb/dmx-start.rst2
-rw-r--r--Documentation/media/uapi/dvb/dmx_types.rst1
-rw-r--r--Documentation/media/uapi/dvb/dvb-fe-read-status.rst4
-rw-r--r--Documentation/media/uapi/dvb/dvbapi.rst4
-rw-r--r--Documentation/media/uapi/dvb/dvbproperty.rst4
-rw-r--r--Documentation/media/uapi/dvb/examples.rst4
-rw-r--r--Documentation/media/uapi/dvb/fe-diseqc-recv-slave-reply.rst2
-rw-r--r--Documentation/media/uapi/dvb/fe-diseqc-send-master-cmd.rst2
-rw-r--r--Documentation/media/uapi/dvb/fe-get-info.rst7
-rw-r--r--Documentation/media/uapi/dvb/fe-read-status.rst5
-rw-r--r--Documentation/media/uapi/dvb/fe-type-t.rst2
-rw-r--r--Documentation/media/uapi/dvb/fe_property_parameters.rst8
-rw-r--r--Documentation/media/uapi/dvb/frontend.rst4
-rw-r--r--Documentation/media/uapi/dvb/video-fopen.rst2
-rw-r--r--Documentation/media/uapi/gen-errors.rst2
-rw-r--r--Documentation/media/uapi/mediactl/media-ioc-device-info.rst2
-rw-r--r--Documentation/media/uapi/mediactl/media-ioc-enum-entities.rst2
-rw-r--r--Documentation/media/uapi/mediactl/media-ioc-enum-links.rst6
-rw-r--r--Documentation/media/uapi/mediactl/media-ioc-g-topology.rst6
-rw-r--r--Documentation/media/uapi/mediactl/media-types.rst14
-rw-r--r--Documentation/media/uapi/rc/lirc-set-wideband-receiver.rst4
-rw-r--r--Documentation/media/uapi/rc/rc-tables.rst2
-rw-r--r--Documentation/media/uapi/v4l/audio.rst4
-rw-r--r--Documentation/media/uapi/v4l/buffer.rst41
-rw-r--r--Documentation/media/uapi/v4l/control.rst4
-rw-r--r--Documentation/media/uapi/v4l/crop.rst12
-rw-r--r--Documentation/media/uapi/v4l/dev-codec.rst4
-rw-r--r--Documentation/media/uapi/v4l/dev-osd.rst4
-rw-r--r--Documentation/media/uapi/v4l/dev-output.rst2
-rw-r--r--Documentation/media/uapi/v4l/dev-overlay.rst14
-rw-r--r--Documentation/media/uapi/v4l/dev-raw-vbi.rst14
-rw-r--r--Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdfbin3395 -> 3706 bytes
-rw-r--r--Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdfbin3683 -> 3996 bytes
-rw-r--r--Documentation/media/uapi/v4l/dev-rds.rst10
-rw-r--r--Documentation/media/uapi/v4l/dev-sdr.rst2
-rw-r--r--Documentation/media/uapi/v4l/dev-sliced-vbi.rst50
-rw-r--r--Documentation/media/uapi/v4l/dev-subdev.rst9
-rw-r--r--Documentation/media/uapi/v4l/diff-v4l.rst4
-rw-r--r--Documentation/media/uapi/v4l/extended-controls.rst328
-rw-r--r--Documentation/media/uapi/v4l/field-order.rst2
-rw-r--r--Documentation/media/uapi/v4l/func-mmap.rst4
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-002.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-003.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-006.rst9
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-007.rst30
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-013.rst2
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-grey.rst5
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-m420.rst4
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv12.rst4
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv12m.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv12mt.rst6
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.gifbin2108 -> 0 bytes
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.pngbin0 -> 1920 bytes
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.gifbin6858 -> 0 bytes
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.pngbin0 -> 5261 bytes
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv16.rst5
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv16m.rst5
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-nv24.rst5
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-packed-rgb.rst114
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-packed-yuv.rst26
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-reserved.rst4
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sbggr16.rst10
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sbggr8.rst4
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sdr-cs08.rst5
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sdr-cs14le.rst5
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sdr-cu08.rst6
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sdr-cu16le.rst4
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sdr-ru12le.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sgbrg8.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-sgrbg8.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-srggb10.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-srggb10alaw8.rst2
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-srggb10p.rst12
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-srggb12.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-srggb8.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-uv8.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-uyvy.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-vyuy.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y10.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y10b.rst6
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y12.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y12i.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y16-be.rst7
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y16.rst7
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y41p.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-y8i.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuv410.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuv411p.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuv420.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuv420m.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuv422m.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuv422p.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuv444m.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yuyv.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-yvyu.rst3
-rw-r--r--Documentation/media/uapi/v4l/pixfmt-z16.rst3
-rw-r--r--Documentation/media/uapi/v4l/standard.rst4
-rw-r--r--Documentation/media/uapi/v4l/subdev-formats.rst5600
-rw-r--r--Documentation/media/uapi/v4l/tuner.rst4
-rw-r--r--Documentation/media/uapi/v4l/userp.rst4
-rw-r--r--Documentation/media/uapi/v4l/v4l2-selection-flags.rst1
-rw-r--r--Documentation/media/uapi/v4l/v4l2-selection-targets.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-create-bufs.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-cropcap.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-dbg-g-chip-info.rst6
-rw-r--r--Documentation/media/uapi/v4l/vidioc-dbg-g-register.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst10
-rw-r--r--Documentation/media/uapi/v4l/vidioc-dqevent.rst22
-rw-r--r--Documentation/media/uapi/v4l/vidioc-dv-timings-cap.rst19
-rw-r--r--Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst5
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enum-dv-timings.rst6
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enum-fmt.rst19
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enum-frameintervals.rst8
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enum-framesizes.rst10
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enum-freq-bands.rst13
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enumaudioout.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enuminput.rst8
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enumoutput.rst6
-rw-r--r--Documentation/media/uapi/v4l/vidioc-enumstd.rst53
-rw-r--r--Documentation/media/uapi/v4l/vidioc-expbuf.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-audio.rst6
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-audioout.rst6
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-crop.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-ctrl.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst17
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-edid.rst6
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-enc-index.rst9
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst22
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-fbuf.rst8
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-fmt.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-frequency.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-jpegcomp.rst3
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-modulator.rst18
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-parm.rst10
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-priority.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-selection.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-sliced-vbi-cap.rst32
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-tuner.rst58
-rw-r--r--Documentation/media/uapi/v4l/vidioc-qbuf.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-query-dv-timings.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-querycap.rst22
-rw-r--r--Documentation/media/uapi/v4l/vidioc-queryctrl.rst34
-rw-r--r--Documentation/media/uapi/v4l/vidioc-querystd.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-reqbufs.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-s-hw-freq-seek.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-streamon.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-interval.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-size.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subdev-enum-mbus-code.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subdev-g-crop.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst4
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subdev-g-frame-interval.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subdev-g-selection.rst2
-rw-r--r--Documentation/media/uapi/v4l/vidioc-subscribe-event.rst8
-rw-r--r--Documentation/media/v4l-drivers/bttv.rst1
-rw-r--r--Documentation/media/v4l-drivers/cpia2.rst3
-rw-r--r--Documentation/media/v4l-drivers/si476x.rst116
-rw-r--r--Documentation/media/v4l-drivers/zr364xx.rst2
-rw-r--r--MAINTAINERS8
-rw-r--r--drivers/media/platform/Kconfig1
-rw-r--r--drivers/media/platform/Makefile2
-rw-r--r--drivers/media/platform/atmel/Kconfig9
-rw-r--r--drivers/media/platform/atmel/Makefile1
-rw-r--r--drivers/media/platform/atmel/atmel-isc-regs.h165
-rw-r--r--drivers/media/platform/atmel/atmel-isc.c1514
-rw-r--r--drivers/media/usb/cx231xx/cx231xx-core.c23
187 files changed, 5919 insertions, 3321 deletions
diff --git a/Documentation/devicetree/bindings/media/atmel-isc.txt b/Documentation/devicetree/bindings/media/atmel-isc.txt
new file mode 100644
index 000000000000..bbe0e87c6188
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/atmel-isc.txt
@@ -0,0 +1,65 @@
+Atmel Image Sensor Controller (ISC)
+----------------------------------------------
+
+Required properties for ISC:
+- compatible
+ Must be "atmel,sama5d2-isc".
+- reg
+ Physical base address and length of the registers set for the device.
+- interrupts
+ Should contain IRQ line for the ISC.
+- clocks
+ List of clock specifiers, corresponding to entries in
+ the clock-names property;
+ Please refer to clock-bindings.txt.
+- clock-names
+ Required elements: "hclock", "iscck", "gck".
+- #clock-cells
+ Should be 0.
+- clock-output-names
+ Should be "isc-mck".
+- pinctrl-names, pinctrl-0
+ Please refer to pinctrl-bindings.txt.
+
+ISC supports a single port node with parallel bus. It should contain one
+'port' child node with child 'endpoint' node. Please refer to the bindings
+defined in Documentation/devicetree/bindings/media/video-interfaces.txt.
+
+Example:
+isc: isc@f0008000 {
+ compatible = "atmel,sama5d2-isc";
+ reg = <0xf0008000 0x4000>;
+ interrupts = <46 IRQ_TYPE_LEVEL_HIGH 5>;
+ clocks = <&isc_clk>, <&iscck>, <&isc_gclk>;
+ clock-names = "hclock", "iscck", "gck";
+ #clock-cells = <0>;
+ clock-output-names = "isc-mck";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_isc_base &pinctrl_isc_data_8bit &pinctrl_isc_data_9_10 &pinctrl_isc_data_11_12>;
+
+ port {
+ isc_0: endpoint {
+ remote-endpoint = <&ov7740_0>;
+ hsync-active = <1>;
+ vsync-active = <0>;
+ pclk-sample = <1>;
+ };
+ };
+};
+
+i2c1: i2c@fc028000 {
+ ov7740: camera@21 {
+ compatible = "ovti,ov7740";
+ reg = <0x21>;
+ clocks = <&isc>;
+ clock-names = "xvclk";
+ assigned-clocks = <&isc>;
+ assigned-clock-rates = <24000000>;
+
+ port {
+ ov7740_0: endpoint {
+ remote-endpoint = <&isc_0>;
+ };
+ };
+ };
+};
diff --git a/Documentation/cec.txt b/Documentation/media/kapi/cec-core.rst
index 75155fe37153..88c33b53ec13 100644
--- a/Documentation/cec.txt
+++ b/Documentation/media/kapi/cec-core.rst
@@ -36,39 +36,50 @@ CEC Adapter
The struct cec_adapter represents the CEC adapter hardware. It is created by
calling cec_allocate_adapter() and deleted by calling cec_delete_adapter():
-struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
+.. c:function::
+ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
void *priv, const char *name, u32 caps, u8 available_las,
struct device *parent);
-void cec_delete_adapter(struct cec_adapter *adap);
+
+.. c:function::
+ void cec_delete_adapter(struct cec_adapter *adap);
To create an adapter you need to pass the following information:
-ops: adapter operations which are called by the CEC framework and that you
-have to implement.
+ops:
+ adapter operations which are called by the CEC framework and that you
+ have to implement.
-priv: will be stored in adap->priv and can be used by the adapter ops.
+priv:
+ will be stored in adap->priv and can be used by the adapter ops.
-name: the name of the CEC adapter. Note: this name will be copied.
+name:
+ the name of the CEC adapter. Note: this name will be copied.
-caps: capabilities of the CEC adapter. These capabilities determine the
+caps:
+ capabilities of the CEC adapter. These capabilities determine the
capabilities of the hardware and which parts are to be handled
by userspace and which parts are handled by kernelspace. The
capabilities are returned by CEC_ADAP_G_CAPS.
-available_las: the number of simultaneous logical addresses that this
+available_las:
+ the number of simultaneous logical addresses that this
adapter can handle. Must be 1 <= available_las <= CEC_MAX_LOG_ADDRS.
-parent: the parent device.
+parent:
+ the parent device.
To register the /dev/cecX device node and the remote control device (if
CEC_CAP_RC is set) you call:
-int cec_register_adapter(struct cec_adapter *adap);
+.. c:function::
+ int cec_register_adapter(struct cec_adapter \*adap);
To unregister the devices call:
-void cec_unregister_adapter(struct cec_adapter *adap);
+.. c:function::
+ void cec_unregister_adapter(struct cec_adapter \*adap);
Note: if cec_register_adapter() fails, then call cec_delete_adapter() to
clean up. But if cec_register_adapter() succeeded, then only call
@@ -83,18 +94,23 @@ Implementing the Low-Level CEC Adapter
The following low-level adapter operations have to be implemented in
your driver:
-struct cec_adap_ops {
- /* Low-level callbacks */
- int (*adap_enable)(struct cec_adapter *adap, bool enable);
- int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
- int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
- int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
- u32 signal_free_time, struct cec_msg *msg);
- void (*adap_log_status)(struct cec_adapter *adap);
+.. c:type:: struct cec_adap_ops
+
+.. code-block:: none
+
+ struct cec_adap_ops
+ {
+ /* Low-level callbacks */
+ int (*adap_enable)(struct cec_adapter *adap, bool enable);
+ int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
+ int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
+ int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
+ u32 signal_free_time, struct cec_msg *msg);
+ void (\*adap_log_status)(struct cec_adapter *adap);
- /* High-level callbacks */
- ...
-};
+ /* High-level callbacks */
+ ...
+ };
The three low-level ops deal with various aspects of controlling the CEC adapter
hardware:
@@ -102,6 +118,7 @@ hardware:
To enable/disable the hardware:
+.. c:function::
int (*adap_enable)(struct cec_adapter *adap, bool enable);
This callback enables or disables the CEC hardware. Enabling the CEC hardware
@@ -115,6 +132,7 @@ Note that adap_enable must return 0 if enable is false.
To enable/disable the 'monitor all' mode:
+.. c:function::
int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
If enabled, then the adapter should be put in a mode to also monitor messages
@@ -127,6 +145,7 @@ Note that adap_monitor_all_enable must return 0 if enable is false.
To program a new logical address:
+.. c:function::
int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
If logical_addr == CEC_LOG_ADDR_INVALID then all programmed logical addresses
@@ -140,6 +159,7 @@ Note that adap_log_addr must return 0 if logical_addr is CEC_LOG_ADDR_INVALID.
To transmit a new message:
+.. c:function::
int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
u32 signal_free_time, struct cec_msg *msg);
@@ -158,6 +178,7 @@ microseconds (one data bit period is 2.4 ms).
To log the current CEC hardware status:
+.. c:function::
void (*adap_status)(struct cec_adapter *adap, struct seq_file *file);
This optional callback can be used to show the status of the CEC hardware.
@@ -169,29 +190,41 @@ driven) by calling into the framework in the following situations:
When a transmit finished (successfully or otherwise):
-void cec_transmit_done(struct cec_adapter *adap, u8 status, u8 arb_lost_cnt,
+.. c:function::
+ void cec_transmit_done(struct cec_adapter *adap, u8 status, u8 arb_lost_cnt,
u8 nack_cnt, u8 low_drive_cnt, u8 error_cnt);
The status can be one of:
-CEC_TX_STATUS_OK: the transmit was successful.
-CEC_TX_STATUS_ARB_LOST: arbitration was lost: another CEC initiator
-took control of the CEC line and you lost the arbitration.
-CEC_TX_STATUS_NACK: the message was nacked (for a directed message) or
-acked (for a broadcast message). A retransmission is needed.
-CEC_TX_STATUS_LOW_DRIVE: low drive was detected on the CEC bus. This
-indicates that a follower detected an error on the bus and requested a
-retransmission.
-CEC_TX_STATUS_ERROR: some unspecified error occurred: this can be one of
-the previous two if the hardware cannot differentiate or something else
-entirely.
-CEC_TX_STATUS_MAX_RETRIES: could not transmit the message after
-trying multiple times. Should only be set by the driver if it has hardware
-support for retrying messages. If set, then the framework assumes that it
-doesn't have to make another attempt to transmit the message since the
-hardware did that already.
-
-The *_cnt arguments are the number of error conditions that were seen.
+CEC_TX_STATUS_OK:
+ the transmit was successful.
+
+CEC_TX_STATUS_ARB_LOST:
+ arbitration was lost: another CEC initiator
+ took control of the CEC line and you lost the arbitration.
+
+CEC_TX_STATUS_NACK:
+ the message was nacked (for a directed message) or
+ acked (for a broadcast message). A retransmission is needed.
+
+CEC_TX_STATUS_LOW_DRIVE:
+ low drive was detected on the CEC bus. This indicates that
+ a follower detected an error on the bus and requested a
+ retransmission.
+
+CEC_TX_STATUS_ERROR:
+ some unspecified error occurred: this can be one of
+ the previous two if the hardware cannot differentiate or something
+ else entirely.
+
+CEC_TX_STATUS_MAX_RETRIES:
+ could not transmit the message after trying multiple times.
+ Should only be set by the driver if it has hardware support for
+ retrying messages. If set, then the framework assumes that it
+ doesn't have to make another attempt to transmit the message
+ since the hardware did that already.
+
+The \*_cnt arguments are the number of error conditions that were seen.
This may be 0 if no information is available. Drivers that do not support
hardware retry can just set the counter corresponding to the transmit error
to 1, if the hardware does support retry then either set these counters to
@@ -200,7 +233,8 @@ times, or fill in the correct values as reported by the hardware.
When a CEC message was received:
-void cec_received_msg(struct cec_adapter *adap, struct cec_msg *msg);
+.. c:function::
+ void cec_received_msg(struct cec_adapter *adap, struct cec_msg *msg);
Speaks for itself.
@@ -210,17 +244,20 @@ Implementing the High-Level CEC Adapter
The low-level operations drive the hardware, the high-level operations are
CEC protocol driven. The following high-level callbacks are available:
-struct cec_adap_ops {
- /* Low-level callbacks */
- ...
+.. code-block:: none
- /* High-level CEC message callback */
- int (*received)(struct cec_adapter *adap, struct cec_msg *msg);
-};
+ struct cec_adap_ops {
+ /\* Low-level callbacks \*/
+ ...
+
+ /\* High-level CEC message callback \*/
+ int (\*received)(struct cec_adapter \*adap, struct cec_msg \*msg);
+ };
The received() callback allows the driver to optionally handle a newly
received CEC message
+.. c:function::
int (*received)(struct cec_adapter *adap, struct cec_msg *msg);
If the driver wants to process a CEC message, then it can implement this
@@ -234,13 +271,16 @@ CEC framework functions
CEC Adapter drivers can call the following CEC framework functions:
-int cec_transmit_msg(struct cec_adapter *adap, struct cec_msg *msg,
- bool block);
+.. c:function::
+ int cec_transmit_msg(struct cec_adapter *adap, struct cec_msg *msg,
+ bool block);
Transmit a CEC message. If block is true, then wait until the message has been
transmitted, otherwise just queue it and return.
-void cec_s_phys_addr(struct cec_adapter *adap, u16 phys_addr, bool block);
+.. c:function::
+ void cec_s_phys_addr(struct cec_adapter *adap, u16 phys_addr,
+ bool block);
Change the physical address. This function will set adap->phys_addr and
send an event if it has changed. If cec_s_log_addrs() has been called and
@@ -254,8 +294,9 @@ then the CEC adapter will be disabled. If you change a valid physical address
to another valid physical address, then this function will first set the
address to CEC_PHYS_ADDR_INVALID before enabling the new physical address.
-int cec_s_log_addrs(struct cec_adapter *adap,
- struct cec_log_addrs *log_addrs, bool block);
+.. c:function::
+ int cec_s_log_addrs(struct cec_adapter *adap,
+ struct cec_log_addrs *log_addrs, bool block);
Claim the CEC logical addresses. Should never be called if CEC_CAP_LOG_ADDRS
is set. If block is true, then wait until the logical addresses have been
diff --git a/Documentation/media/kapi/v4l2-dev.rst b/Documentation/media/kapi/v4l2-dev.rst
index cdfcf0bc78be..429883b2f6ef 100644
--- a/Documentation/media/kapi/v4l2-dev.rst
+++ b/Documentation/media/kapi/v4l2-dev.rst
@@ -262,6 +262,7 @@ file operations.
It is a bitmask and the following bits can be set:
+.. tabularcolumns:: |p{5ex}|L|
===== ================================================================
Mask Description
diff --git a/Documentation/media/media_api_files/typical_media_device.pdf b/Documentation/media/media_api_files/typical_media_device.pdf
index eb3045813815..d000d802b20f 100644
--- a/Documentation/media/media_api_files/typical_media_device.pdf
+++ b/Documentation/media/media_api_files/typical_media_device.pdf
Binary files differ
diff --git a/Documentation/media/media_kapi.rst b/Documentation/media/media_kapi.rst
index b71e8e8048ca..f282ca270369 100644
--- a/Documentation/media/media_kapi.rst
+++ b/Documentation/media/media_kapi.rst
@@ -32,3 +32,4 @@ For more details see the file COPYING in the source distribution of Linux.
kapi/dtv-core
kapi/rc-core
kapi/mc-core
+ kapi/cec-core
diff --git a/Documentation/media/uapi/cec/cec-func-close.rst b/Documentation/media/uapi/cec/cec-func-close.rst
index bb94e4358910..bdbb9e545ae4 100644
--- a/Documentation/media/uapi/cec/cec-func-close.rst
+++ b/Documentation/media/uapi/cec/cec-func-close.rst
@@ -32,7 +32,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
Closes the cec device. Resources associated with the file descriptor are
diff --git a/Documentation/media/uapi/cec/cec-func-ioctl.rst b/Documentation/media/uapi/cec/cec-func-ioctl.rst
index d0279e6d2734..170bdd56211e 100644
--- a/Documentation/media/uapi/cec/cec-func-ioctl.rst
+++ b/Documentation/media/uapi/cec/cec-func-ioctl.rst
@@ -38,7 +38,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
The :c:func:`ioctl()` function manipulates cec device parameters. The
diff --git a/Documentation/media/uapi/cec/cec-func-open.rst b/Documentation/media/uapi/cec/cec-func-open.rst
index 7c0f981a6e07..3d55e9f2f64d 100644
--- a/Documentation/media/uapi/cec/cec-func-open.rst
+++ b/Documentation/media/uapi/cec/cec-func-open.rst
@@ -45,7 +45,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
To open a cec device applications call :c:func:`open()` with the
diff --git a/Documentation/media/uapi/cec/cec-func-poll.rst b/Documentation/media/uapi/cec/cec-func-poll.rst
index fcab65f6d6b8..5d1e0525056e 100644
--- a/Documentation/media/uapi/cec/cec-func-poll.rst
+++ b/Documentation/media/uapi/cec/cec-func-poll.rst
@@ -29,7 +29,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
With the :c:func:`poll()` function applications can wait for CEC
diff --git a/Documentation/media/uapi/cec/cec-intro.rst b/Documentation/media/uapi/cec/cec-intro.rst
index afa76f26fdde..4a19ea5323a9 100644
--- a/Documentation/media/uapi/cec/cec-intro.rst
+++ b/Documentation/media/uapi/cec/cec-intro.rst
@@ -3,7 +3,9 @@
Introduction
============
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
HDMI connectors provide a single pin for use by the Consumer Electronics
diff --git a/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst b/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst
index eaedc63186e6..89ba813e577c 100644
--- a/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst
+++ b/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst
@@ -31,7 +31,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query
@@ -39,6 +41,7 @@ device information, applications call the ioctl with a pointer to a
struct :ref:`cec_caps <cec-caps>`. The driver fills the structure and
returns the information to the application. The ioctl never fails.
+.. tabularcolumns:: |p{1.2cm}|p{2.5cm}|p{13.8cm}|
.. _cec-caps:
@@ -84,6 +87,7 @@ returns the information to the application. The ioctl never fails.
macro.
+.. tabularcolumns:: |p{4.4cm}|p{2.5cm}|p{10.6cm}|
.. _cec-capabilities:
diff --git a/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst b/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst
index 04ee90099676..42f8e856ec55 100644
--- a/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst
+++ b/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst
@@ -35,7 +35,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
To query the current CEC logical addresses, applications call
@@ -64,9 +66,12 @@ logical addresses are claimed or cleared.
Attempting to call :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` when
logical address types are already defined will return with error ``EBUSY``.
+.. tabularcolumns:: |p{1.0cm}|p{7.5cm}|p{8.0cm}|
.. _cec-log-addrs:
+.. cssclass:: longtable
+
.. flat-table:: struct cec_log_addrs
:header-rows: 0
:stub-columns: 0
@@ -201,6 +206,8 @@ logical address types are already defined will return with error ``EBUSY``.
give the CEC framework more information about the device type, even
though the framework won't use it directly in the CEC message.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _cec-versions:
.. flat-table:: CEC Versions
@@ -234,6 +241,7 @@ logical address types are already defined will return with error ``EBUSY``.
- CEC version according to the HDMI 2.0 standard.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _cec-prim-dev-types:
@@ -300,6 +308,7 @@ logical address types are already defined will return with error ``EBUSY``.
- Use for a video processor device.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _cec-log-addr-types:
@@ -369,6 +378,8 @@ logical address types are already defined will return with error ``EBUSY``.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _cec-all-dev-types-flags:
.. flat-table:: CEC All Device Types Flags
diff --git a/Documentation/media/uapi/cec/cec-ioc-adap-g-phys-addr.rst b/Documentation/media/uapi/cec/cec-ioc-adap-g-phys-addr.rst
index b955d044b334..c50aa3ee1e0d 100644
--- a/Documentation/media/uapi/cec/cec-ioc-adap-g-phys-addr.rst
+++ b/Documentation/media/uapi/cec/cec-ioc-adap-g-phys-addr.rst
@@ -34,7 +34,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
To query the current physical address applications call
diff --git a/Documentation/media/uapi/cec/cec-ioc-dqevent.rst b/Documentation/media/uapi/cec/cec-ioc-dqevent.rst
index 4e12e6cd88ee..ca9ef597527e 100644
--- a/Documentation/media/uapi/cec/cec-ioc-dqevent.rst
+++ b/Documentation/media/uapi/cec/cec-ioc-dqevent.rst
@@ -33,7 +33,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
CEC devices can send asynchronous events. These can be retrieved by
@@ -50,6 +52,7 @@ two :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` events with
the same state). In that case the intermediate state changes were lost but
it is guaranteed that the state did change in between the two events.
+.. tabularcolumns:: |p{1.2cm}|p{2.9cm}|p{13.4cm}|
.. _cec-event-state-change_s:
@@ -76,6 +79,7 @@ it is guaranteed that the state did change in between the two events.
- The current set of claimed logical addresses.
+.. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.5cm}|
.. _cec-event-lost-msgs_s:
@@ -102,6 +106,7 @@ it is guaranteed that the state did change in between the two events.
this is more than enough.
+.. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{2.5cm}|p{8.8cm}|
.. _cec-event:
@@ -117,21 +122,18 @@ it is guaranteed that the state did change in between the two events.
- ``ts``
- - Timestamp of the event in ns.
+ - :cspan:`1` Timestamp of the event in ns.
+
The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access
the same clock from userspace use :c:func:`clock_gettime(2)`.
- -
-
- .. row 2
- __u32
- ``event``
- - The CEC event type, see :ref:`cec-events`.
-
- -
+ - :cspan:`1` The CEC event type, see :ref:`cec-events`.
- .. row 3
@@ -139,9 +141,7 @@ it is guaranteed that the state did change in between the two events.
- ``flags``
- - Event flags, see :ref:`cec-event-flags`.
-
- -
+ - :cspan:`1` Event flags, see :ref:`cec-event-flags`.
- .. row 4
@@ -173,6 +173,7 @@ it is guaranteed that the state did change in between the two events.
event.
+.. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}|
.. _cec-events:
@@ -202,6 +203,7 @@ it is guaranteed that the state did change in between the two events.
application didn't dequeue CEC messages fast enough.
+.. tabularcolumns:: |p{6.0cm}|p{0.6cm}|p{10.9cm}|
.. _cec-event-flags:
diff --git a/Documentation/media/uapi/cec/cec-ioc-g-mode.rst b/Documentation/media/uapi/cec/cec-ioc-g-mode.rst
index f0084d892db6..b75ed7057f7c 100644
--- a/Documentation/media/uapi/cec/cec-ioc-g-mode.rst
+++ b/Documentation/media/uapi/cec/cec-ioc-g-mode.rst
@@ -30,7 +30,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
By default any filehandle can use :ref:`CEC_TRANSMIT`, but in order to prevent
@@ -71,6 +73,7 @@ always call :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`.
Available initiator modes are:
+.. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}|
.. _cec-mode-initiator_e:
@@ -114,6 +117,7 @@ Available initiator modes are:
Available follower modes are:
+.. tabularcolumns:: |p{6.6cm}|p{0.9cm}|p{10.0cm}|
.. _cec-mode-follower_e:
@@ -206,6 +210,7 @@ Available follower modes are:
Core message processing details:
+.. tabularcolumns:: |p{6.6cm}|p{10.9cm}|
.. _cec-core-processing:
diff --git a/Documentation/media/uapi/cec/cec-ioc-receive.rst b/Documentation/media/uapi/cec/cec-ioc-receive.rst
index ae5a39ade45f..821562bc8c7a 100644
--- a/Documentation/media/uapi/cec/cec-ioc-receive.rst
+++ b/Documentation/media/uapi/cec/cec-ioc-receive.rst
@@ -33,7 +33,9 @@ Arguments
Description
===========
-.. note:: This documents the proposed CEC API. This API is not yet finalized
+.. note::
+
+ This documents the proposed CEC API. This API is not yet finalized
and is currently only available as a staging kernel module.
To receive a CEC message the application has to fill in the
@@ -71,8 +73,12 @@ checked against the received messages to find the corresponding transmit
result.
+.. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{13.0cm}|
+
.. _cec-msg:
+.. cssclass:: longtable
+
.. flat-table:: struct cec_msg
:header-rows: 0
:stub-columns: 0
@@ -247,6 +253,7 @@ result.
valid if the :ref:`CEC_TX_STATUS_ERROR <CEC-TX-STATUS-ERROR>` status bit is set.
+.. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}|
.. _cec-tx-status:
@@ -315,6 +322,7 @@ result.
be set to explain which failures were seen.
+.. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}|
.. _cec-rx-status:
diff --git a/Documentation/media/uapi/dvb/audio-fopen.rst b/Documentation/media/uapi/dvb/audio-fopen.rst
index ec3b23aa79b3..3ef4fd62ffb6 100644
--- a/Documentation/media/uapi/dvb/audio-fopen.rst
+++ b/Documentation/media/uapi/dvb/audio-fopen.rst
@@ -80,6 +80,8 @@ AUDIO_GET_STATUS. All other call will return with an error code.
Return Value
------------
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/dvb/ca-fopen.rst b/Documentation/media/uapi/dvb/ca-fopen.rst
index f284461cce20..9960fc76189c 100644
--- a/Documentation/media/uapi/dvb/ca-fopen.rst
+++ b/Documentation/media/uapi/dvb/ca-fopen.rst
@@ -79,6 +79,8 @@ the device in this mode will fail, and an error code will be returned.
Return Value
------------
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/dvb/dmx-fread.rst b/Documentation/media/uapi/dvb/dmx-fread.rst
index d25b19e4f696..266c9ca259c9 100644
--- a/Documentation/media/uapi/dvb/dmx-fread.rst
+++ b/Documentation/media/uapi/dvb/dmx-fread.rst
@@ -53,10 +53,11 @@ data. The filtered data is transferred from the driver’s internal
circular buffer to buf. The maximum amount of data to be transferred is
implied by count.
-
Return Value
------------
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/dvb/dmx-fwrite.rst b/Documentation/media/uapi/dvb/dmx-fwrite.rst
index 9efd81a1b5c8..3d76470bef60 100644
--- a/Documentation/media/uapi/dvb/dmx-fwrite.rst
+++ b/Documentation/media/uapi/dvb/dmx-fwrite.rst
@@ -59,6 +59,8 @@ The amount of data to be transferred is implied by count.
Return Value
------------
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/dvb/dmx-set-pes-filter.rst b/Documentation/media/uapi/dvb/dmx-set-pes-filter.rst
index addc321011ce..d71db779b6fd 100644
--- a/Documentation/media/uapi/dvb/dmx-set-pes-filter.rst
+++ b/Documentation/media/uapi/dvb/dmx-set-pes-filter.rst
@@ -61,7 +61,7 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.
-
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
.. flat-table::
:header-rows: 0
diff --git a/Documentation/media/uapi/dvb/dmx-start.rst b/Documentation/media/uapi/dvb/dmx-start.rst
index 9835d1e78400..959b5eee2647 100644
--- a/Documentation/media/uapi/dvb/dmx-start.rst
+++ b/Documentation/media/uapi/dvb/dmx-start.rst
@@ -53,7 +53,7 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.
-
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
.. flat-table::
:header-rows: 0
diff --git a/Documentation/media/uapi/dvb/dmx_types.rst b/Documentation/media/uapi/dvb/dmx_types.rst
index 7a8900af2680..efd564035958 100644
--- a/Documentation/media/uapi/dvb/dmx_types.rst
+++ b/Documentation/media/uapi/dvb/dmx_types.rst
@@ -12,6 +12,7 @@ Demux Data Types
Output for the demux
====================
+.. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
.. _dmx-output:
diff --git a/Documentation/media/uapi/dvb/dvb-fe-read-status.rst b/Documentation/media/uapi/dvb/dvb-fe-read-status.rst
index fcffaa7e1463..76c20612b274 100644
--- a/Documentation/media/uapi/dvb/dvb-fe-read-status.rst
+++ b/Documentation/media/uapi/dvb/dvb-fe-read-status.rst
@@ -17,7 +17,9 @@ using :ref:`FE_READ_STATUS`.
Signal statistics are provided via
:ref:`FE_GET_PROPERTY`.
-.. note:: Most statistics require the demodulator to be fully locked
+.. note::
+
+ Most statistics require the demodulator to be fully locked
(e. g. with FE_HAS_LOCK bit set). See
:ref:`Frontend statistics indicators <frontend-stat-properties>` for
more details.
diff --git a/Documentation/media/uapi/dvb/dvbapi.rst b/Documentation/media/uapi/dvb/dvbapi.rst
index 48e61aba741e..37680137e3f2 100644
--- a/Documentation/media/uapi/dvb/dvbapi.rst
+++ b/Documentation/media/uapi/dvb/dvbapi.rst
@@ -8,7 +8,9 @@
Part II - Digital TV API
########################
-.. note:: This API is also known as **DVB API**, although it is generic
+.. note::
+
+ This API is also known as **DVB API**, although it is generic
enough to support all digital TV standards.
**Version 5.10**
diff --git a/Documentation/media/uapi/dvb/dvbproperty.rst b/Documentation/media/uapi/dvb/dvbproperty.rst
index cd0511b06c2c..a5a859a45381 100644
--- a/Documentation/media/uapi/dvb/dvbproperty.rst
+++ b/Documentation/media/uapi/dvb/dvbproperty.rst
@@ -20,7 +20,9 @@ Also, the union didn't have any space left to be expanded without
breaking userspace. So, the decision was to deprecate the legacy
union/struct based approach, in favor of a properties set approach.
-.. note:: On Linux DVB API version 3, setting a frontend were done via
+.. note::
+
+ On Linux DVB API version 3, setting a frontend were done via
:ref:`struct dvb_frontend_parameters <dvb-frontend-parameters>`.
This got replaced on version 5 (also called "S2API", as this API were
added originally_enabled to provide support for DVB-S2), because the
diff --git a/Documentation/media/uapi/dvb/examples.rst b/Documentation/media/uapi/dvb/examples.rst
index bf0a8617de92..1a94966312c0 100644
--- a/Documentation/media/uapi/dvb/examples.rst
+++ b/Documentation/media/uapi/dvb/examples.rst
@@ -9,7 +9,9 @@ Examples
In this section we would like to present some examples for using the DVB
API.
-..note:: This section is out of date, and the code below won't even
+.. note::
+
+ This section is out of date, and the code below won't even
compile. Please refer to the
`libdvbv5 <https://linuxtv.org/docs/libdvbv5/index.html>`__ for
updated/recommended examples.
diff --git a/Documentation/media/uapi/dvb/fe-diseqc-recv-slave-reply.rst b/Documentation/media/uapi/dvb/fe-diseqc-recv-slave-reply.rst
index 7bd02ac7bff4..7b32566b77a3 100644
--- a/Documentation/media/uapi/dvb/fe-diseqc-recv-slave-reply.rst
+++ b/Documentation/media/uapi/dvb/fe-diseqc-recv-slave-reply.rst
@@ -42,6 +42,8 @@ Receives reply from a DiSEqC 2.0 command.
struct dvb_diseqc_slave_reply
-----------------------------
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct dvb_diseqc_slave_reply
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/dvb/fe-diseqc-send-master-cmd.rst b/Documentation/media/uapi/dvb/fe-diseqc-send-master-cmd.rst
index 58a5e6ac10bd..865914bf4efe 100644
--- a/Documentation/media/uapi/dvb/fe-diseqc-send-master-cmd.rst
+++ b/Documentation/media/uapi/dvb/fe-diseqc-send-master-cmd.rst
@@ -42,6 +42,8 @@ Sends a DiSEqC command to the antenna subsystem.
struct dvb_diseqc_master_cmd
============================
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct dvb_diseqc_master_cmd
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/dvb/fe-get-info.rst b/Documentation/media/uapi/dvb/fe-get-info.rst
index bb6c32e47ce8..87ff3f62050d 100644
--- a/Documentation/media/uapi/dvb/fe-get-info.rst
+++ b/Documentation/media/uapi/dvb/fe-get-info.rst
@@ -47,6 +47,8 @@ returns an error.
struct dvb_frontend_info
========================
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct dvb_frontend_info
:header-rows: 0
:stub-columns: 0
@@ -144,7 +146,9 @@ struct dvb_frontend_info
- Capabilities supported by the frontend
-.. note:: The frequencies are specified in Hz for Terrestrial and Cable
+.. note::
+
+ The frequencies are specified in Hz for Terrestrial and Cable
systems. They're specified in kHz for Satellite systems
@@ -156,6 +160,7 @@ frontend capabilities
Capabilities describe what a frontend can do. Some capabilities are
supported only on some specific frontend types.
+.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
.. _fe-caps:
diff --git a/Documentation/media/uapi/dvb/fe-read-status.rst b/Documentation/media/uapi/dvb/fe-read-status.rst
index 624ed9d06488..def8160d6807 100644
--- a/Documentation/media/uapi/dvb/fe-read-status.rst
+++ b/Documentation/media/uapi/dvb/fe-read-status.rst
@@ -40,7 +40,9 @@ used to check about the locking status of the frontend after being
tuned. The ioctl takes a pointer to an integer where the status will be
written.
-.. note:: The size of status is actually sizeof(enum fe_status), with
+.. note::
+
+ The size of status is actually sizeof(enum fe_status), with
varies according with the architecture. This needs to be fixed in the
future.
@@ -54,6 +56,7 @@ The fe_status parameter is used to indicate the current state and/or
state changes of the frontend hardware. It is produced using the enum
:ref:`fe_status <fe-status>` values on a bitmask
+.. tabularcolumns:: |p{3.5cm}|p{14.0cm}|
.. _fe-status:
diff --git a/Documentation/media/uapi/dvb/fe-type-t.rst b/Documentation/media/uapi/dvb/fe-type-t.rst
index 8ca762b42e4d..fa377fe9e104 100644
--- a/Documentation/media/uapi/dvb/fe-type-t.rst
+++ b/Documentation/media/uapi/dvb/fe-type-t.rst
@@ -13,6 +13,8 @@ fe_type_t type, defined as:
.. _fe-type:
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table:: Frontend types
:header-rows: 1
:stub-columns: 0
diff --git a/Documentation/media/uapi/dvb/fe_property_parameters.rst b/Documentation/media/uapi/dvb/fe_property_parameters.rst
index f776d62523da..304ac1a3c2ff 100644
--- a/Documentation/media/uapi/dvb/fe_property_parameters.rst
+++ b/Documentation/media/uapi/dvb/fe_property_parameters.rst
@@ -1005,10 +1005,9 @@ Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)
Note: Truth table for ``DTV_ISDBT_SOUND_BROADCASTING`` and
``DTV_ISDBT_PARTIAL_RECEPTION`` and ``LAYER[A-C]_SEGMENT_COUNT``
-
.. _isdbt-layer_seg-cnt-table:
-.. flat-table::
+.. flat-table:: Truth table for ISDB-T Sound Broadcasting
:header-rows: 0
:stub-columns: 0
@@ -1101,7 +1100,7 @@ TMCC-structure, as shown in the table below.
.. _isdbt-layer-interleaving-table:
-.. flat-table::
+.. flat-table:: ISDB-T time interleaving modes
:header-rows: 0
:stub-columns: 0
@@ -1234,6 +1233,7 @@ Reed Solomon (RS) frame mode.
Possible values are:
+.. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
.. _atscmh-rs-frame-mode:
@@ -1395,6 +1395,7 @@ Series Concatenated Convolutional Code Block Mode.
Possible values are:
+.. tabularcolumns:: |p{4.5cm}|p{13.0cm}|
.. _atscmh-sccc-block-mode:
@@ -1687,6 +1688,7 @@ on OFTM-based standards, e. g. DVB-T/T2, ISDB-T, DTMB
enum fe_transmit_mode: Number of carriers per channel
-----------------------------------------------------
+.. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
.. _fe-transmit-mode:
diff --git a/Documentation/media/uapi/dvb/frontend.rst b/Documentation/media/uapi/dvb/frontend.rst
index 48c5cd487ce7..e051a9012540 100644
--- a/Documentation/media/uapi/dvb/frontend.rst
+++ b/Documentation/media/uapi/dvb/frontend.rst
@@ -29,7 +29,9 @@ The frontend can be accessed through ``/dev/dvb/adapter?/frontend?``.
Data types and ioctl definitions can be accessed by including
``linux/dvb/frontend.h`` in your application.
-.. note:: Transmission via the internet (DVB-IP) is not yet handled by this
+.. note::
+
+ Transmission via the internet (DVB-IP) is not yet handled by this
API but a future extension is possible.
On Satellite systems, the API support for the Satellite Equipment
diff --git a/Documentation/media/uapi/dvb/video-fopen.rst b/Documentation/media/uapi/dvb/video-fopen.rst
index 9e5471557b83..9addca95516e 100644
--- a/Documentation/media/uapi/dvb/video-fopen.rst
+++ b/Documentation/media/uapi/dvb/video-fopen.rst
@@ -82,6 +82,8 @@ return an error code.
Return Value
------------
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/gen-errors.rst b/Documentation/media/uapi/gen-errors.rst
index d6b0cfd00a3f..6e983b9880fc 100644
--- a/Documentation/media/uapi/gen-errors.rst
+++ b/Documentation/media/uapi/gen-errors.rst
@@ -9,6 +9,8 @@ Generic Error Codes
.. _gen-errors:
+.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
+
.. flat-table:: Generic error codes
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/mediactl/media-ioc-device-info.rst b/Documentation/media/uapi/mediactl/media-ioc-device-info.rst
index 467d82cbb81e..567f5515a791 100644
--- a/Documentation/media/uapi/mediactl/media-ioc-device-info.rst
+++ b/Documentation/media/uapi/mediactl/media-ioc-device-info.rst
@@ -42,6 +42,8 @@ ioctl never fails.
.. _media-device-info:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct media_device_info
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/mediactl/media-ioc-enum-entities.rst b/Documentation/media/uapi/mediactl/media-ioc-enum-entities.rst
index 12d4b25d5b94..a51c4cc9f6d3 100644
--- a/Documentation/media/uapi/mediactl/media-ioc-enum-entities.rst
+++ b/Documentation/media/uapi/mediactl/media-ioc-enum-entities.rst
@@ -53,6 +53,8 @@ id's until they get an error.
.. _media-entity-desc:
+.. tabularcolumns:: |p{1.5cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|p{11.5cm}|
+
.. flat-table:: struct media_entity_desc
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/mediactl/media-ioc-enum-links.rst b/Documentation/media/uapi/mediactl/media-ioc-enum-links.rst
index 87443b1ce42d..f4334f5765c6 100644
--- a/Documentation/media/uapi/mediactl/media-ioc-enum-links.rst
+++ b/Documentation/media/uapi/mediactl/media-ioc-enum-links.rst
@@ -57,6 +57,8 @@ returned during the enumeration process.
.. _media-links-enum:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct media_links_enum
:header-rows: 0
:stub-columns: 0
@@ -93,6 +95,8 @@ returned during the enumeration process.
.. _media-pad-desc:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct media_pad_desc
:header-rows: 0
:stub-columns: 0
@@ -127,6 +131,8 @@ returned during the enumeration process.
.. _media-link-desc:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct media_link_desc
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/mediactl/media-ioc-g-topology.rst b/Documentation/media/uapi/mediactl/media-ioc-g-topology.rst
index 2e382cc7762c..c836d64df03b 100644
--- a/Documentation/media/uapi/mediactl/media-ioc-g-topology.rst
+++ b/Documentation/media/uapi/mediactl/media-ioc-g-topology.rst
@@ -48,6 +48,7 @@ other values untouched.
If the ``topology_version`` remains the same, the ioctl should fill the
desired arrays with the media graph elements.
+.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-topology:
@@ -142,6 +143,7 @@ desired arrays with the media graph elements.
won't store the links. It will just update ``num_links``
+.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-entity:
@@ -185,6 +187,7 @@ desired arrays with the media graph elements.
this array to zero.
+.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-interface:
@@ -236,6 +239,7 @@ desired arrays with the media graph elements.
:ref:`media-v2-intf-devnode` for details..
+.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-intf-devnode:
@@ -262,6 +266,7 @@ desired arrays with the media graph elements.
- Device node minor number.
+.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-pad:
@@ -305,6 +310,7 @@ desired arrays with the media graph elements.
this array to zero.
+.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-link:
diff --git a/Documentation/media/uapi/mediactl/media-types.rst b/Documentation/media/uapi/mediactl/media-types.rst
index c77717b236ce..20f99301bfdb 100644
--- a/Documentation/media/uapi/mediactl/media-types.rst
+++ b/Documentation/media/uapi/mediactl/media-types.rst
@@ -5,9 +5,12 @@
Types and flags used to represent the media graph elements
==========================================================
+.. tabularcolumns:: |p{8.0cm}|p{10.5cm}|
.. _media-entity-type:
+.. cssclass:: longtable
+
.. flat-table:: Media entity types
:header-rows: 0
:stub-columns: 0
@@ -15,10 +18,12 @@ Types and flags used to represent the media graph elements
- .. row 1
- .. _MEDIA-ENT-F-UNKNOWN:
+ .. _MEDIA-ENT-F-UNKNOWN:
.. _MEDIA-ENT-F-V4L2-SUBDEV-UNKNOWN:
- - ``MEDIA_ENT_F_UNKNOWN`` and ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
+ - ``MEDIA_ENT_F_UNKNOWN`` and
+
+ ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
- Unknown entity. That generally indicates that a driver didn't
initialize properly the entity, with is a Kernel bug
@@ -294,6 +299,8 @@ Types and flags used to represent the media graph elements
its source pad.
+.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
+
.. _media-entity-flag:
.. flat-table:: Media entity flags
@@ -319,6 +326,7 @@ Types and flags used to represent the media graph elements
- The entity represents a data conector
+.. tabularcolumns:: |p{6.5cm}|p{6.0cm}|p{5.0cm}|
.. _media-intf-type:
@@ -508,6 +516,7 @@ Types and flags used to represent the media graph elements
- typically, /dev/snd/timer
+.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
.. _media-pad-flag:
@@ -551,6 +560,7 @@ Types and flags used to represent the media graph elements
One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
must be set for every pad.
+.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
.. _media-link-flag:
diff --git a/Documentation/media/uapi/rc/lirc-set-wideband-receiver.rst b/Documentation/media/uapi/rc/lirc-set-wideband-receiver.rst
index cffb01fd1042..b9d582fd7df1 100644
--- a/Documentation/media/uapi/rc/lirc-set-wideband-receiver.rst
+++ b/Documentation/media/uapi/rc/lirc-set-wideband-receiver.rst
@@ -42,7 +42,9 @@ that prevents them to be used with some remotes. Wide band receiver might
also be more precise. On the other hand its disadvantage it usually
reduced range of reception.
-.. note:: Wide band receiver might be implictly enabled if you enable
+.. note::
+
+ Wide band receiver might be implictly enabled if you enable
carrier reports. In that case it will be disabled as soon as you disable
carrier reports. Trying to disable wide band receiver while carrier
reports are active will do nothing.
diff --git a/Documentation/media/uapi/rc/rc-tables.rst b/Documentation/media/uapi/rc/rc-tables.rst
index 0bb16c4af27d..c8ae9479f842 100644
--- a/Documentation/media/uapi/rc/rc-tables.rst
+++ b/Documentation/media/uapi/rc/rc-tables.rst
@@ -25,6 +25,8 @@ the remote via /dev/input/event devices.
.. _rc_standard_keymap:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: IR default keymapping
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/audio.rst b/Documentation/media/uapi/v4l/audio.rst
index 4dd11345866c..b8059fb05372 100644
--- a/Documentation/media/uapi/v4l/audio.rst
+++ b/Documentation/media/uapi/v4l/audio.rst
@@ -37,7 +37,9 @@ The :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` and
:ref:`VIDIOC_G_AUDOUT <VIDIOC_G_AUDOUT>` ioctls report the current
audio input and output, respectively.
-.. note:: Note that, unlike :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and
+.. note::
+
+ Note that, unlike :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and
:ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` these ioctls return a
structure as :ref:`VIDIOC_ENUMAUDIO` and
:ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>` do, not just an index.
diff --git a/Documentation/media/uapi/v4l/buffer.rst b/Documentation/media/uapi/v4l/buffer.rst
index 5deb4a46f992..7bab30b59eae 100644
--- a/Documentation/media/uapi/v4l/buffer.rst
+++ b/Documentation/media/uapi/v4l/buffer.rst
@@ -39,10 +39,14 @@ buffer.
struct v4l2_buffer
==================
+.. tabularcolumns:: |p{2.8cm}|p{2.5cm}|p{1.3cm}|p{10.5cm}|
+
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_buffer
:header-rows: 0
:stub-columns: 0
- :widths: 1 1 1 2
+ :widths: 1 2 1 10
- .. row 1
@@ -166,12 +170,15 @@ struct v4l2_buffer
output device because the application did not pass new data in
time.
- .. note:: This may count the frames received e.g. over USB, without
+ .. note::
+
+ This may count the frames received e.g. over USB, without
taking into account the frames dropped by the remote hardware due
to limited compression throughput or bus bandwidth. These devices
identify by not enumerating any video standards, see
:ref:`standard`.
+
- .. row 10
- __u32
@@ -279,6 +286,10 @@ struct v4l2_buffer
struct v4l2_plane
=================
+.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
+
+.. cssclass:: longtable
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -299,7 +310,9 @@ struct v4l2_plane
``bytesused`` will be set to the size of the plane (see the
``length`` field of this struct) by the driver.
- .. note:: Note that the actual image data starts at ``data_offset``
+ .. note::
+
+ Note that the actual image data starts at ``data_offset``
which may not be 0.
- .. row 2
@@ -371,7 +384,9 @@ struct v4l2_plane
field when ``type`` refers to a capture stream, applications when
it refers to an output stream.
- .. note:: That data_offset is included in ``bytesused``. So the
+ .. note::
+
+ That data_offset is included in ``bytesused``. So the
size of the image in the plane is ``bytesused``-``data_offset``
at offset ``data_offset`` from the start of the plane.
@@ -392,10 +407,14 @@ struct v4l2_plane
enum v4l2_buf_type
==================
+.. cssclass:: longtable
+
+.. tabularcolumns:: |p{7.2cm}|p{0.6cm}|p{9.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 3 1 4
+ :widths: 4 1 9
- .. row 1
@@ -506,6 +525,10 @@ enum v4l2_buf_type
Buffer Flags
============
+.. tabularcolumns:: |p{7.0cm}|p{2.2cm}|p{8.3cm}|
+
+.. cssclass:: longtable
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -755,6 +778,8 @@ Buffer Flags
enum v4l2_memory
================
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -809,6 +834,8 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
struct v4l2_timecode
--------------------
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -879,6 +906,8 @@ struct v4l2_timecode
Timecode Types
--------------
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -932,6 +961,8 @@ Timecode Types
Timecode Flags
--------------
+.. tabularcolumns:: |p{6.6cm}|p{1.4cm}|p{9.5cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/control.rst b/Documentation/media/uapi/v4l/control.rst
index 10ab53dd3163..e881cd1f30d6 100644
--- a/Documentation/media/uapi/v4l/control.rst
+++ b/Documentation/media/uapi/v4l/control.rst
@@ -191,10 +191,12 @@ Control IDs
+.. tabularcolumns:: |p{5.5cm}|p{12cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
+ :widths: 11 24
- .. row 1
diff --git a/Documentation/media/uapi/v4l/crop.rst b/Documentation/media/uapi/v4l/crop.rst
index 0913822347af..4622884b06ea 100644
--- a/Documentation/media/uapi/v4l/crop.rst
+++ b/Documentation/media/uapi/v4l/crop.rst
@@ -15,7 +15,9 @@ offset into a video signal.
Applications can use the following API to select an area in the video
signal, query the default area and the hardware limits.
-.. note:: Despite their name, the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>`,
+.. note::
+
+ Despite their name, the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>`,
:ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_S_CROP
<VIDIOC_G_CROP>` ioctls apply to input as well as output devices.
@@ -38,7 +40,9 @@ support scaling or the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and
:ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` ioctls. Their size (and position
where applicable) will be fixed in this case.
-.. note:: All capture and output devices must support the
+.. note::
+
+ All capture and output devices must support the
:ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>` ioctl such that applications
can determine if scaling takes place.
@@ -144,7 +148,9 @@ reopening a device, such that piping data into or out of a device will
work without special preparations. More advanced applications should
ensure the parameters are suitable before starting I/O.
-.. note:: On the next two examples, a video capture device is assumed;
+.. note::
+
+ On the next two examples, a video capture device is assumed;
change ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` for other types of device.
Example: Resetting the cropping parameters
diff --git a/Documentation/media/uapi/v4l/dev-codec.rst b/Documentation/media/uapi/v4l/dev-codec.rst
index dfb20328e34d..d9f218449ddd 100644
--- a/Documentation/media/uapi/v4l/dev-codec.rst
+++ b/Documentation/media/uapi/v4l/dev-codec.rst
@@ -21,7 +21,9 @@ for both capture and output to start the codec.
Video compression codecs use the MPEG controls to setup their codec
parameters
-.. note:: The MPEG controls actually support many more codecs than
+.. note::
+
+ The MPEG controls actually support many more codecs than
just MPEG. See :ref:`mpeg-controls`.
Memory-to-memory devices can often be used as a shared resource: you can
diff --git a/Documentation/media/uapi/v4l/dev-osd.rst b/Documentation/media/uapi/v4l/dev-osd.rst
index fadda131f020..4e1ee79ec334 100644
--- a/Documentation/media/uapi/v4l/dev-osd.rst
+++ b/Documentation/media/uapi/v4l/dev-osd.rst
@@ -16,7 +16,9 @@ this interface, which borrows structures and ioctls of the
The OSD function is accessible through the same character special file
as the :ref:`Video Output <capture>` function.
-.. note:: The default function of such a ``/dev/video`` device is video
+.. note::
+
+ The default function of such a ``/dev/video`` device is video
capturing or output. The OSD function is only available after calling
the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl.
diff --git a/Documentation/media/uapi/v4l/dev-output.rst b/Documentation/media/uapi/v4l/dev-output.rst
index 4f1123a0b40d..dfb8207c21cc 100644
--- a/Documentation/media/uapi/v4l/dev-output.rst
+++ b/Documentation/media/uapi/v4l/dev-output.rst
@@ -16,7 +16,7 @@ device special files named ``/dev/video`` and ``/dev/video0`` to
``/dev/video`` is typically a symbolic link to the preferred video
device.
-..note:: The same device file names are used also for video capture devices.
+.. note:: The same device file names are used also for video capture devices.
Querying Capabilities
diff --git a/Documentation/media/uapi/v4l/dev-overlay.rst b/Documentation/media/uapi/v4l/dev-overlay.rst
index 92b4471b0c6e..50e2d52fcae6 100644
--- a/Documentation/media/uapi/v4l/dev-overlay.rst
+++ b/Documentation/media/uapi/v4l/dev-overlay.rst
@@ -19,7 +19,9 @@ video into a window.
Video overlay devices are accessed through the same character special
files as :ref:`video capture <capture>` devices.
-.. note:: The default function of a ``/dev/video`` device is video
+.. note::
+
+ The default function of a ``/dev/video`` device is video
capturing. The overlay function is only available after calling
the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl.
@@ -236,10 +238,12 @@ exceeded are undefined. [#f3]_
:ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>`,
:ref:`framebuffer-flags`).
- .. note:: This field was added in Linux 2.6.23, extending the
- structure. However the :ref:`VIDIOC_[G|S|TRY]_FMT <VIDIOC_G_FMT>`
- ioctls, which take a pointer to a :ref:`v4l2_format <v4l2-format>`
- parent structure with padding bytes at the end, are not affected.
+.. note::
+
+ This field was added in Linux 2.6.23, extending the
+ structure. However the :ref:`VIDIOC_[G|S|TRY]_FMT <VIDIOC_G_FMT>`
+ ioctls, which take a pointer to a :ref:`v4l2_format <v4l2-format>`
+ parent structure with padding bytes at the end, are not affected.
.. _v4l2-clip:
diff --git a/Documentation/media/uapi/v4l/dev-raw-vbi.rst b/Documentation/media/uapi/v4l/dev-raw-vbi.rst
index d5a4b3530b69..3cf44869a425 100644
--- a/Documentation/media/uapi/v4l/dev-raw-vbi.rst
+++ b/Documentation/media/uapi/v4l/dev-raw-vbi.rst
@@ -99,9 +99,12 @@ VBI devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does.
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` is optional.
+.. tabularcolumns:: |p{2.4cm}|p{4.4cm}|p{10.7cm}|
.. _v4l2-vbi-format:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_vbi_format
:header-rows: 0
:stub-columns: 0
@@ -194,10 +197,9 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
driver. Anyway, drivers may not support single field capturing and
return both count values non-zero.
- Both ``count`` values set to zero, or line numbers outside the
- bounds depicted in :ref:`vbi-525` and :ref:`vbi-625`, or a
- field image covering lines of two fields, are invalid and shall
- not be returned by the driver.
+ Both ``count`` values set to zero, or line numbers are outside the
+ bounds depicted\ [#f4]_, or a field image covering lines of two
+ fields, are invalid and shall not be returned by the driver.
To initialize the ``start`` and ``count`` fields, applications
must first determine the current video standard selection. The
@@ -224,6 +226,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
applications must set it to zero.
+.. tabularcolumns:: |p{4.0cm}|p{1.5cm}|p{12.0cm}|
.. _vbifmt-flags:
@@ -348,3 +351,6 @@ another process.
Most VBI services transmit on both fields, but some have different
semantics depending on the field number. These cannot be reliable
decoded or encoded when ``V4L2_VBI_UNSYNC`` is set.
+
+.. [#f4]
+ The valid values ar shown at :ref:`vbi-525` and :ref:`vbi-625`.
diff --git a/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdf b/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdf
index 9e72c25b208d..0bae28385dfa 100644
--- a/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdf
+++ b/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdf
Binary files differ
diff --git a/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdf b/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdf
index 765235e33a4d..bf29b95dcd08 100644
--- a/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdf
+++ b/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdf
Binary files differ
diff --git a/Documentation/media/uapi/v4l/dev-rds.rst b/Documentation/media/uapi/v4l/dev-rds.rst
index cd6ad63cb90b..841761a3ea59 100644
--- a/Documentation/media/uapi/v4l/dev-rds.rst
+++ b/Documentation/media/uapi/v4l/dev-rds.rst
@@ -14,7 +14,9 @@ at devices capable of receiving and/or transmitting RDS information.
For more information see the core RDS standard :ref:`iec62106` and the
RBDS standard :ref:`nrsc4`.
-.. note:: Note that the RBDS standard as is used in the USA is almost
+.. note::
+
+ Note that the RBDS standard as is used in the USA is almost
identical to the RDS standard. Any RDS decoder/encoder can also handle
RBDS. Only some of the fields have slightly different meanings. See the
RBDS standard for more information.
@@ -93,6 +95,8 @@ RDS datastructures
.. _v4l2-rds-data:
+.. tabularcolumns:: |p{2.5cm}|p{2.5cm}|p{12.5cm}|
+
.. flat-table:: struct v4l2_rds_data
:header-rows: 0
:stub-columns: 0
@@ -127,6 +131,8 @@ RDS datastructures
.. _v4l2-rds-block:
+.. tabularcolumns:: |p{2.9cm}|p{14.6cm}|
+
.. flat-table:: Block description
:header-rows: 0
:stub-columns: 0
@@ -164,6 +170,8 @@ RDS datastructures
.. _v4l2-rds-block-codes:
+.. tabularcolumns:: |p{5.6cm}|p{2.0cm}|p{1.5cm}|p{7.0cm}|
+
.. flat-table:: Block defines
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/dev-sdr.rst b/Documentation/media/uapi/v4l/dev-sdr.rst
index fc4053f957fb..3b6aa2a58430 100644
--- a/Documentation/media/uapi/v4l/dev-sdr.rst
+++ b/Documentation/media/uapi/v4l/dev-sdr.rst
@@ -80,6 +80,8 @@ data transfer, set by the driver in order to inform application.
.. _v4l2-sdr-format:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_sdr_format
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/dev-sliced-vbi.rst b/Documentation/media/uapi/v4l/dev-sliced-vbi.rst
index ec52a825f4d6..86d2d698d2af 100644
--- a/Documentation/media/uapi/v4l/dev-sliced-vbi.rst
+++ b/Documentation/media/uapi/v4l/dev-sliced-vbi.rst
@@ -105,6 +105,10 @@ which may return ``EBUSY`` can be the
struct v4l2_sliced_vbi_format
-----------------------------
+.. tabularcolumns:: |p{1.0cm}|p{4.5cm}|p{4.0cm}|p{4.0cm}|p{4.0cm}|
+
+.. cssclass:: longtable
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -153,8 +157,7 @@ struct v4l2_sliced_vbi_format
service the driver chooses.
Data services are defined in :ref:`vbi-services2`. Array indices
- map to ITU-R line numbers (see also :ref:`vbi-525` and
- :ref:`vbi-625`) as follows:
+ map to ITU-R line numbers\ [#f2]_ as follows:
- .. row 3
@@ -241,8 +244,8 @@ struct v4l2_sliced_vbi_format
- ``reserved``\ [2]
- :cspan:`2` This array is reserved for future extensions.
- Applications and drivers must set it to zero.
+ Applications and drivers must set it to zero.
.. _vbi-services2:
@@ -250,6 +253,12 @@ struct v4l2_sliced_vbi_format
Sliced VBI services
-------------------
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{5.0cm}|p{1.4cm}|p{3.0cm}|p{2.5cm}|p{9.0cm}|
+
.. flat-table::
:header-rows: 1
:stub-columns: 0
@@ -274,7 +283,9 @@ Sliced VBI services
- 0x0001
- - :ref:`ets300706`, :ref:`itu653`
+ - :ref:`ets300706`,
+
+ :ref:`itu653`
- PAL/SECAM line 7-22, 320-335 (second field 7-22)
@@ -313,7 +324,9 @@ Sliced VBI services
- 0x4000
- - :ref:`itu1119`, :ref:`en300294`
+ - :ref:`itu1119`,
+
+ :ref:`en300294`
- PAL/SECAM line 23
@@ -341,6 +354,10 @@ Sliced VBI services
- :cspan:`2` Set of services applicable to 625 line systems.
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
+
Drivers may return an ``EINVAL`` error code when applications attempt to
read or write data without prior format negotiation, after switching the
@@ -371,6 +388,8 @@ of one video frame. The ``id`` of unused
struct v4l2_sliced_vbi_data
---------------------------
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -556,6 +575,8 @@ number).
struct v4l2_mpeg_vbi_fmt_ivtv
-----------------------------
+.. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{1.0cm}|p{11.5cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -611,6 +632,8 @@ struct v4l2_mpeg_vbi_fmt_ivtv
Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field
-------------------------------------------------------------
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 1
:stub-columns: 0
@@ -652,6 +675,8 @@ Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field
struct v4l2_mpeg_vbi_itv0
-------------------------
+.. tabularcolumns:: |p{4.4cm}|p{2.4cm}|p{10.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -676,9 +701,9 @@ struct v4l2_mpeg_vbi_itv0
::
linemask[0] b0: line 6 first field
- linemask[0] b17: line 23 first field
- linemask[0] b18: line 6 second field
- linemask[0] b31: line 19 second field
+ linemask[0] b17: line 23 first field
+ linemask[0] b18: line 6 second field
+ linemask[0] b31: line 19 second field
linemask[1] b0: line 20 second field
linemask[1] b3: line 23 second field
linemask[1] b4-b31: unused and set to 0
@@ -709,6 +734,8 @@ struct v4l2_mpeg_vbi_itv0
struct v4l2_mpeg_vbi_ITV0
-------------------------
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -734,6 +761,8 @@ struct v4l2_mpeg_vbi_ITV0
struct v4l2_mpeg_vbi_itv0_line
------------------------------
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -765,6 +794,8 @@ struct v4l2_mpeg_vbi_itv0_line
Line Identifiers for struct v4l2_mpeg_vbi_itv0_line id field
------------------------------------------------------------
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 1
:stub-columns: 0
@@ -820,3 +851,6 @@ Line Identifiers for struct v4l2_mpeg_vbi_itv0_line id field
.. [#f1]
According to :ref:`ETS 300 706 <ets300706>` lines 6-22 of the first
field and lines 5-22 of the second field may carry Teletext data.
+
+.. [#f2]
+ See also :ref:`vbi-525` and :ref:`vbi-625`.
diff --git a/Documentation/media/uapi/v4l/dev-subdev.rst b/Documentation/media/uapi/v4l/dev-subdev.rst
index 5a112eb7a245..1045b3c61031 100644
--- a/Documentation/media/uapi/v4l/dev-subdev.rst
+++ b/Documentation/media/uapi/v4l/dev-subdev.rst
@@ -202,11 +202,18 @@ for the pipeline described in :ref:`pipeline-scaling` (table columns
list entity names and pad numbers).
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}|p{4.5cm}|
+
.. _sample-pipeline-config:
.. flat-table:: Sample Pipeline Configuration
:header-rows: 1
:stub-columns: 0
+ :widths: 5 5 5 5 5 5 5
- .. row 1
@@ -288,7 +295,9 @@ list entity names and pad numbers).
- *1280x960/SGRBG8_1X8*
+.. raw:: latex
+ \end{adjustbox}\newline\newline
1. Initial state. The sensor source pad format is set to its native 3MP
size and V4L2_MBUS_FMT_SGRBG8_1X8 media bus code. Formats on the
diff --git a/Documentation/media/uapi/v4l/diff-v4l.rst b/Documentation/media/uapi/v4l/diff-v4l.rst
index e1e034df514c..93263e477127 100644
--- a/Documentation/media/uapi/v4l/diff-v4l.rst
+++ b/Documentation/media/uapi/v4l/diff-v4l.rst
@@ -95,7 +95,9 @@ and radio devices supporting a set of related functions like video
capturing, video overlay and VBI capturing. See :ref:`open` for an
introduction.
+.. tabularcolumns:: |p{5.5cm}|p{6.5cm}|p{5.5cm}
+.. cssclass:: longtable
.. flat-table::
:header-rows: 1
@@ -104,7 +106,7 @@ introduction.
- .. row 1
- - struct :c:type:`struct video_capability` ``type``
+ - ``struct video_capability`` ``type``
- struct :ref:`v4l2_capability <v4l2-capability>`
``capabilities`` flags
diff --git a/Documentation/media/uapi/v4l/extended-controls.rst b/Documentation/media/uapi/v4l/extended-controls.rst
index 71071d73747d..9c6aff3e97c1 100644
--- a/Documentation/media/uapi/v4l/extended-controls.rst
+++ b/Documentation/media/uapi/v4l/extended-controls.rst
@@ -184,7 +184,9 @@ Codec Control Reference
Below all controls within the Codec control class are described. First
the generic controls, then controls specific for certain hardware.
-.. note:: These controls are applicable to all codecs and not just MPEG. The
+.. note::
+
+ These controls are applicable to all codecs and not just MPEG. The
defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG as the controls
were originally made for MPEG codecs and later extended to cover all
encoding formats.
@@ -207,7 +209,10 @@ Codec Control IDs
.. _v4l2-mpeg-stream-type:
-``V4L2_CID_MPEG_STREAM_TYPE (enum v4l2_mpeg_stream_type)``
+``V4L2_CID_MPEG_STREAM_TYPE``
+ (enum)
+
+enum v4l2_mpeg_stream_type -
The MPEG-1, -2 or -4 output stream type. One cannot assume anything
here. Each hardware MPEG encoder tends to support different subsets
of the available MPEG stream types. This control is specific to
@@ -280,7 +285,10 @@ Codec Control IDs
.. _v4l2-mpeg-stream-vbi-fmt:
-``V4L2_CID_MPEG_STREAM_VBI_FMT (enum v4l2_mpeg_stream_vbi_fmt)``
+``V4L2_CID_MPEG_STREAM_VBI_FMT``
+ (enum)
+
+enum v4l2_mpeg_stream_vbi_fmt -
Some cards can embed VBI data (e. g. Closed Caption, Teletext) into
the MPEG stream. This control selects whether VBI data should be
embedded, and if so, what embedding method should be used. The list
@@ -289,6 +297,8 @@ Codec Control IDs
+.. tabularcolumns:: |p{6 cm}|p{11.5cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -312,7 +322,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-sampling-freq:
-``V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (enum v4l2_mpeg_audio_sampling_freq)``
+``V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ``
+ (enum)
+
+enum v4l2_mpeg_audio_sampling_freq -
MPEG Audio sampling frequency. Possible values are:
@@ -344,7 +357,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-encoding:
-``V4L2_CID_MPEG_AUDIO_ENCODING (enum v4l2_mpeg_audio_encoding)``
+``V4L2_CID_MPEG_AUDIO_ENCODING``
+ (enum)
+
+enum v4l2_mpeg_audio_encoding -
MPEG Audio encoding. This control is specific to multiplexed MPEG
streams. Possible values are:
@@ -389,7 +405,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-l1-bitrate:
-``V4L2_CID_MPEG_AUDIO_L1_BITRATE (enum v4l2_mpeg_audio_l1_bitrate)``
+``V4L2_CID_MPEG_AUDIO_L1_BITRATE``
+ (enum)
+
+enum v4l2_mpeg_audio_l1_bitrate -
MPEG-1/2 Layer I bitrate. Possible values are:
@@ -487,7 +506,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-l2-bitrate:
-``V4L2_CID_MPEG_AUDIO_L2_BITRATE (enum v4l2_mpeg_audio_l2_bitrate)``
+``V4L2_CID_MPEG_AUDIO_L2_BITRATE``
+ (enum)
+
+enum v4l2_mpeg_audio_l2_bitrate -
MPEG-1/2 Layer II bitrate. Possible values are:
@@ -585,7 +607,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-l3-bitrate:
-``V4L2_CID_MPEG_AUDIO_L3_BITRATE (enum v4l2_mpeg_audio_l3_bitrate)``
+``V4L2_CID_MPEG_AUDIO_L3_BITRATE``
+ (enum)
+
+enum v4l2_mpeg_audio_l3_bitrate -
MPEG-1/2 Layer III bitrate. Possible values are:
@@ -686,7 +711,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-ac3-bitrate:
-``V4L2_CID_MPEG_AUDIO_AC3_BITRATE (enum v4l2_mpeg_audio_ac3_bitrate)``
+``V4L2_CID_MPEG_AUDIO_AC3_BITRATE``
+ (enum)
+
+enum v4l2_mpeg_audio_ac3_bitrate -
AC-3 bitrate. Possible values are:
@@ -814,7 +842,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-mode:
-``V4L2_CID_MPEG_AUDIO_MODE (enum v4l2_mpeg_audio_mode)``
+``V4L2_CID_MPEG_AUDIO_MODE``
+ (enum)
+
+enum v4l2_mpeg_audio_mode -
MPEG Audio mode. Possible values are:
@@ -852,7 +883,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-mode-extension:
-``V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (enum v4l2_mpeg_audio_mode_extension)``
+``V4L2_CID_MPEG_AUDIO_MODE_EXTENSION``
+ (enum)
+
+enum v4l2_mpeg_audio_mode_extension -
Joint Stereo audio mode extension. In Layer I and II they indicate
which subbands are in intensity stereo. All other subbands are coded
in stereo. Layer III is not (yet) supported. Possible values are:
@@ -892,7 +926,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-emphasis:
-``V4L2_CID_MPEG_AUDIO_EMPHASIS (enum v4l2_mpeg_audio_emphasis)``
+``V4L2_CID_MPEG_AUDIO_EMPHASIS``
+ (enum)
+
+enum v4l2_mpeg_audio_emphasis -
Audio Emphasis. Possible values are:
@@ -924,7 +961,10 @@ Codec Control IDs
.. _v4l2-mpeg-audio-crc:
-``V4L2_CID_MPEG_AUDIO_CRC (enum v4l2_mpeg_audio_crc)``
+``V4L2_CID_MPEG_AUDIO_CRC``
+ (enum)
+
+enum v4l2_mpeg_audio_crc -
CRC method. Possible values are:
@@ -956,12 +996,17 @@ Codec Control IDs
.. _v4l2-mpeg-audio-dec-playback:
-``V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (enum v4l2_mpeg_audio_dec_playback)``
+``V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK``
+ (enum)
+
+enum v4l2_mpeg_audio_dec_playback -
Determines how monolingual audio should be played back. Possible
values are:
+.. tabularcolumns:: |p{9.0cm}|p{8.5cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -1007,12 +1052,18 @@ Codec Control IDs
.. _v4l2-mpeg-audio-dec-multilingual-playback:
-``V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (enum v4l2_mpeg_audio_dec_playback)``
+``V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK``
+ (enum)
+
+enum v4l2_mpeg_audio_dec_playback -
Determines how multilingual audio should be played back.
.. _v4l2-mpeg-video-encoding:
-``V4L2_CID_MPEG_VIDEO_ENCODING (enum v4l2_mpeg_video_encoding)``
+``V4L2_CID_MPEG_VIDEO_ENCODING``
+ (enum)
+
+enum v4l2_mpeg_video_encoding -
MPEG Video encoding method. This control is specific to multiplexed
MPEG streams. Possible values are:
@@ -1045,7 +1096,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-aspect:
-``V4L2_CID_MPEG_VIDEO_ASPECT (enum v4l2_mpeg_video_aspect)``
+``V4L2_CID_MPEG_VIDEO_ASPECT``
+ (enum)
+
+enum v4l2_mpeg_video_aspect -
Video aspect. Possible values are:
@@ -1087,7 +1141,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-bitrate-mode:
-``V4L2_CID_MPEG_VIDEO_BITRATE_MODE (enum v4l2_mpeg_video_bitrate_mode)``
+``V4L2_CID_MPEG_VIDEO_BITRATE_MODE``
+ (enum)
+
+enum v4l2_mpeg_video_bitrate_mode -
Video bitrate mode. Possible values are:
@@ -1191,7 +1248,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-vui-sar-idc:
-``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (enum v4l2_mpeg_video_h264_vui_sar_idc)``
+``V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC``
+ (enum)
+
+enum v4l2_mpeg_video_h264_vui_sar_idc -
VUI sample aspect ratio indicator for H.264 encoding. The value is
defined in the table E-1 in the standard. Applicable to the H264
encoder.
@@ -1323,7 +1383,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-level:
-``V4L2_CID_MPEG_VIDEO_H264_LEVEL (enum v4l2_mpeg_video_h264_level)``
+``V4L2_CID_MPEG_VIDEO_H264_LEVEL``
+ (enum)
+
+enum v4l2_mpeg_video_h264_level -
The level information for the H264 video elementary stream.
Applicable to the H264 encoder. Possible values are:
@@ -1434,7 +1497,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-mpeg4-level:
-``V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (enum v4l2_mpeg_video_mpeg4_level)``
+``V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL``
+ (enum)
+
+enum v4l2_mpeg_video_mpeg4_level -
The level information for the MPEG4 elementary stream. Applicable to
the MPEG4 encoder. Possible values are:
@@ -1497,7 +1563,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-profile:
-``V4L2_CID_MPEG_VIDEO_H264_PROFILE (enum v4l2_mpeg_video_h264_profile)``
+``V4L2_CID_MPEG_VIDEO_H264_PROFILE``
+ (enum)
+
+enum v4l2_mpeg_video_h264_profile -
The profile information for H264. Applicable to the H264 encoder.
Possible values are:
@@ -1614,7 +1683,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-mpeg4-profile:
-``V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (enum v4l2_mpeg_video_mpeg4_profile)``
+``V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE``
+ (enum)
+
+enum v4l2_mpeg_video_mpeg4_profile -
The profile information for MPEG4. Applicable to the MPEG4 encoder.
Possible values are:
@@ -1663,12 +1735,17 @@ Codec Control IDs
.. _v4l2-mpeg-video-multi-slice-mode:
-``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (enum v4l2_mpeg_video_multi_slice_mode)``
+``V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE``
+ (enum)
+
+enum v4l2_mpeg_video_multi_slice_mode -
Determines how the encoder should handle division of frame into
slices. Applicable to the encoder. Possible values are:
+.. tabularcolumns:: |p{8.7cm}|p{8.8cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -1708,16 +1785,20 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-loop-filter-mode:
-``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (enum v4l2_mpeg_video_h264_loop_filter_mode)``
+``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE``
+ (enum)
+
+enum v4l2_mpeg_video_h264_loop_filter_mode -
Loop filter mode for H264 encoder. Possible values are:
+.. tabularcolumns:: |p{14.0cm}|p{3.5cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED``
@@ -1748,7 +1829,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-entropy-mode:
-``V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (enum v4l2_mpeg_video_h264_entropy_mode)``
+``V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE``
+ (enum)
+
+enum v4l2_mpeg_video_h264_entropy_mode -
Entropy coding mode for H264 - CABAC/CAVALC. Applicable to the H264
encoder. Possible values are:
@@ -1909,13 +1993,18 @@ Codec Control IDs
.. _v4l2-mpeg-video-header-mode:
-``V4L2_CID_MPEG_VIDEO_HEADER_MODE (enum v4l2_mpeg_video_header_mode)``
+``V4L2_CID_MPEG_VIDEO_HEADER_MODE``
+ (enum)
+
+enum v4l2_mpeg_video_header_mode -
Determines whether the header is returned as the first buffer or is
it returned together with the first frame. Applicable to encoders.
Possible values are:
+.. tabularcolumns:: |p{10.3cm}|p{7.2cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -1965,17 +2054,19 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-sei-fp-arrangement-type:
-``V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (enum v4l2_mpeg_video_h264_sei_fp_arrangement_type)``
+``V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE``
+ (enum)
+
+enum v4l2_mpeg_video_h264_sei_fp_arrangement_type -
Frame packing arrangement type for H264 SEI. Applicable to the H264
encoder. Possible values are:
-
+.. tabularcolumns:: |p{12cm}|p{5.5cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD``
@@ -2021,18 +2112,20 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-fmo-map-type:
-``V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (enum v4l2_mpeg_video_h264_fmo_map_type)``
+``V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE`` ````
+ (enum)
+
+enum v4l2_mpeg_video_h264_fmo_map_type -
When using FMO, the map type divides the image in different scan
patterns of macroblocks. Applicable to the H264 encoder. Possible
values are:
-
+.. tabularcolumns:: |p{12.5cm}|p{5.0cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES``
@@ -2084,7 +2177,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-fmo-change-direction:
-``V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (enum v4l2_mpeg_video_h264_fmo_change_dir)``
+``V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION``
+ (enum)
+
+enum v4l2_mpeg_video_h264_fmo_change_dir -
Specifies a direction of the slice group change for raster and wipe
maps. Applicable to the H264 encoder. Possible values are:
@@ -2152,7 +2248,10 @@ Codec Control IDs
.. _v4l2-mpeg-video-h264-hierarchical-coding-type:
-``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (enum v4l2_mpeg_video_h264_hierarchical_coding_type)``
+``V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE``
+ (enum)
+
+enum v4l2_mpeg_video_h264_hierarchical_coding_type -
Specifies the hierarchical coding type. Applicable to the H264
encoder. Possible values are:
@@ -2321,19 +2420,22 @@ MFC 5.1 Control IDs
.. _v4l2-mpeg-mfc51-video-frame-skip-mode:
-``V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (enum v4l2_mpeg_mfc51_video_frame_skip_mode)``
+``V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE``
+ (enum)
+
+enum v4l2_mpeg_mfc51_video_frame_skip_mode -
Indicates in what conditions the encoder should skip frames. If
encoding a frame would cause the encoded stream to be larger then a
chosen data limit then the frame will be skipped. Possible values
are:
+.. tabularcolumns:: |p{9.0cm}|p{8.5cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_DISABLED``
@@ -2370,7 +2472,10 @@ MFC 5.1 Control IDs
.. _v4l2-mpeg-mfc51-video-force-frame-type:
-``V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (enum v4l2_mpeg_mfc51_video_force_frame_type)``
+``V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE``
+ (enum)
+
+enum v4l2_mpeg_mfc51_video_force_frame_type -
Force a frame type for the next queued buffer. Applicable to
encoders. Possible values are:
@@ -2416,7 +2521,10 @@ CX2341x Control IDs
.. _v4l2-mpeg-cx2341x-video-spatial-filter-mode:
-``V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (enum v4l2_mpeg_cx2341x_video_spatial_filter_mode)``
+``V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE``
+ (enum)
+
+enum v4l2_mpeg_cx2341x_video_spatial_filter_mode -
Sets the Spatial Filter mode (default ``MANUAL``). Possible values
are:
@@ -2447,12 +2555,17 @@ CX2341x Control IDs
.. _luma-spatial-filter-type:
-``V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type)``
+``V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE``
+ (enum)
+
+enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type -
Select the algorithm to use for the Luma Spatial Filter (default
``1D_HOR``). Possible values:
+.. tabularcolumns:: |p{14.5cm}|p{3.0cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
@@ -2492,7 +2605,10 @@ CX2341x Control IDs
.. _chroma-spatial-filter-type:
-``V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type)``
+``V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE``
+ (enum)
+
+enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type -
Select the algorithm for the Chroma Spatial Filter (default
``1D_HOR``). Possible values are:
@@ -2519,7 +2635,10 @@ CX2341x Control IDs
.. _v4l2-mpeg-cx2341x-video-temporal-filter-mode:
-``V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (enum v4l2_mpeg_cx2341x_video_temporal_filter_mode)``
+``V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE``
+ (enum)
+
+enum v4l2_mpeg_cx2341x_video_temporal_filter_mode -
Sets the Temporal Filter mode (default ``MANUAL``). Possible values
are:
@@ -2550,7 +2669,10 @@ CX2341x Control IDs
.. _v4l2-mpeg-cx2341x-video-median-filter-type:
-``V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (enum v4l2_mpeg_cx2341x_video_median_filter_type)``
+``V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE``
+ (enum)
+
+enum v4l2_mpeg_cx2341x_video_median_filter_type -
Median Filter Type (default ``OFF``). Possible values are:
@@ -2631,7 +2753,10 @@ VPX Control IDs
.. _v4l2-vpx-num-partitions:
-``V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (enum v4l2_vp8_num_partitions)``
+``V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS``
+ (enum)
+
+enum v4l2_vp8_num_partitions -
The number of token partitions to use in VP8 encoder. Possible
values are:
@@ -2673,17 +2798,19 @@ VPX Control IDs
.. _v4l2-vpx-num-ref-frames:
-``V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (enum v4l2_vp8_num_ref_frames)``
+``V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES``
+ (enum)
+
+enum v4l2_vp8_num_ref_frames -
The number of reference pictures for encoding P frames. Possible
values are:
-
+.. tabularcolumns:: |p{7.9cm}|p{9.6cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME``
@@ -2726,16 +2853,22 @@ VPX Control IDs
.. _v4l2-vpx-golden-frame-sel:
-``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (enum v4l2_vp8_golden_frame_sel)``
+``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL``
+ (enum)
+
+enum v4l2_vp8_golden_frame_sel -
Selects the golden frame for encoding. Possible values are:
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
+.. tabularcolumns:: |p{11.0cm}|p{10.0cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV``
@@ -2748,9 +2881,12 @@ VPX Control IDs
- ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD``
- Use the previous specific frame indicated by
- V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a
+ ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD`` as a
golden frame.
+.. raw:: latex
+
+ \end{adjustbox}
``V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (integer)``
@@ -2791,7 +2927,10 @@ Camera Control IDs
.. _v4l2-exposure-auto-type:
-``V4L2_CID_EXPOSURE_AUTO (enum v4l2_exposure_auto_type)``
+``V4L2_CID_EXPOSURE_AUTO``
+ (enum)
+
+enum v4l2_exposure_auto_type -
Enables automatic adjustments of the exposure time and/or iris
aperture. The effect of manual changes of the exposure time or iris
aperture while these features are enabled is undefined, drivers
@@ -2856,17 +2995,19 @@ Camera Control IDs
.. _v4l2-exposure-metering:
-``V4L2_CID_EXPOSURE_METERING (enum v4l2_exposure_metering)``
+``V4L2_CID_EXPOSURE_METERING``
+ (enum)
+
+enum v4l2_exposure_metering -
Determines how the camera measures the amount of light available for
the frame exposure. Possible values are:
-
+.. tabularcolumns:: |p{8.5cm}|p{9.0cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_EXPOSURE_METERING_AVERAGE``
@@ -2968,13 +3109,12 @@ Camera Control IDs
control may stop updates of the ``V4L2_CID_AUTO_FOCUS_STATUS``
control value.
-
+.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_AUTO_FOCUS_STATUS_IDLE``
@@ -3004,10 +3144,13 @@ Camera Control IDs
.. _v4l2-auto-focus-range:
-``V4L2_CID_AUTO_FOCUS_RANGE (enum v4l2_auto_focus_range)``
- Determines auto focus distance range for which lens may be adjusted.
+``V4L2_CID_AUTO_FOCUS_RANGE``
+ (enum)
+enum v4l2_auto_focus_range -
+ Determines auto focus distance range for which lens may be adjusted.
+.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
.. flat-table::
:header-rows: 0
@@ -3088,20 +3231,22 @@ Camera Control IDs
.. _v4l2-auto-n-preset-white-balance:
-``V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (enum v4l2_auto_n_preset_white_balance)``
+``V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE``
+ (enum)
+
+enum v4l2_auto_n_preset_white_balance -
Sets white balance to automatic, manual or a preset. The presets
determine color temperature of the light as a hint to the camera for
white balance adjustments resulting in most accurate color
representation. The following white balance presets are listed in
order of increasing color temperature.
-
+.. tabularcolumns:: |p{7.0 cm}|p{10.5cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_WHITE_BALANCE_MANUAL``
@@ -3205,7 +3350,10 @@ Camera Control IDs
.. _v4l2-iso-sensitivity-auto-type:
-``V4L2_CID_ISO_SENSITIVITY_AUTO (enum v4l2_iso_sensitivity_type)``
+``V4L2_CID_ISO_SENSITIVITY_AUTO``
+ (enum)
+
+enum v4l2_iso_sensitivity_type -
Enables or disables automatic ISO sensitivity adjustments.
@@ -3231,7 +3379,10 @@ Camera Control IDs
.. _v4l2-scene-mode:
-``V4L2_CID_SCENE_MODE (enum v4l2_scene_mode)``
+``V4L2_CID_SCENE_MODE``
+ (enum)
+
+enum v4l2_scene_mode -
This control allows to select scene programs as the camera automatic
modes optimized for common shooting scenes. Within these modes the
camera determines best exposure, aperture, focusing, light metering,
@@ -3243,13 +3394,12 @@ Camera Control IDs
to ``V4L2_SCENE_MODE_NONE`` to make sure the other possibly related
controls are accessible. The following scene programs are defined:
-
+.. tabularcolumns:: |p{6.0cm}|p{11.5cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_SCENE_MODE_NONE``
@@ -3570,7 +3720,10 @@ FM_TX Control IDs
Configures pilot tone frequency value. Unit is in Hz. The range and
step are driver-specific.
-``V4L2_CID_TUNE_PREEMPHASIS (enum v4l2_preemphasis)``
+``V4L2_CID_TUNE_PREEMPHASIS``
+ (enum)
+
+enum v4l2_preemphasis -
Configures the pre-emphasis value for broadcasting. A pre-emphasis
filter is applied to the broadcast to accentuate the high audio
frequencies. Depending on the region, a time constant of either 50
@@ -3708,13 +3861,12 @@ Flash Control IDs
``V4L2_CID_FLASH_STROBE_SOURCE (menu)``
Defines the source of the flash LED strobe.
-
+.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
-
- .. row 1
- ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE``
@@ -3775,7 +3927,7 @@ Flash Control IDs
an effect is chip dependent. Reading the faults resets the control
and returns the chip to a usable state if possible.
-
+.. tabularcolumns:: |p{8.0cm}|p{9.5cm}|
.. flat-table::
:header-rows: 0
@@ -3886,7 +4038,7 @@ JPEG Control IDs
how Cb and Cr components are downsampled after coverting an input
image from RGB to Y'CbCr color space.
-
+.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 0
@@ -4162,13 +4314,19 @@ Digital Video Control IDs
EDIDs, then the bit for that pad will be 0. This read-only control
is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
-``V4L2_CID_DV_TX_MODE (enum v4l2_dv_tx_mode)``
+``V4L2_CID_DV_TX_MODE``
+ (enum)
+
+enum v4l2_dv_tx_mode -
HDMI transmitters can transmit in DVI-D mode (just video) or in HDMI
mode (video + audio + auxiliary data). This control selects which
mode to use: V4L2_DV_TX_MODE_DVI_D or V4L2_DV_TX_MODE_HDMI.
This control is applicable to HDMI connectors.
-``V4L2_CID_DV_TX_RGB_RANGE (enum v4l2_dv_rgb_range)``
+``V4L2_CID_DV_TX_RGB_RANGE``
+ (enum)
+
+enum v4l2_dv_rgb_range -
Select the quantization range for RGB output. V4L2_DV_RANGE_AUTO
follows the RGB quantization range specified in the standard for the
video interface (ie. :ref:`cea861` for HDMI).
@@ -4180,7 +4338,10 @@ Digital Video Control IDs
the number of bits per component. This control is applicable to VGA,
DVI-A/D, HDMI and DisplayPort connectors.
-``V4L2_CID_DV_TX_IT_CONTENT_TYPE (enum v4l2_dv_it_content_type)``
+``V4L2_CID_DV_TX_IT_CONTENT_TYPE``
+ (enum)
+
+enum v4l2_dv_it_content_type -
Configures the IT Content Type of the transmitted video. This
information is sent over HDMI and DisplayPort connectors as part of
the AVI InfoFrame. The term 'IT Content' is used for content that
@@ -4188,7 +4349,7 @@ Digital Video Control IDs
or an analog source. The enum v4l2_dv_it_content_type defines
the possible content types:
-
+.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 0
@@ -4241,7 +4402,10 @@ Digital Video Control IDs
will be 0. This read-only control is applicable to DVI-D, HDMI and
DisplayPort connectors.
-``V4L2_CID_DV_RX_RGB_RANGE (enum v4l2_dv_rgb_range)``
+``V4L2_CID_DV_RX_RGB_RANGE``
+ (enum)
+
+enum v4l2_dv_rgb_range -
Select the quantization range for RGB input. V4L2_DV_RANGE_AUTO
follows the RGB quantization range specified in the standard for the
video interface (ie. :ref:`cea861` for HDMI).
@@ -4253,7 +4417,10 @@ Digital Video Control IDs
the number of bits per component. This control is applicable to VGA,
DVI-A/D, HDMI and DisplayPort connectors.
-``V4L2_CID_DV_RX_IT_CONTENT_TYPE (enum v4l2_dv_it_content_type)``
+``V4L2_CID_DV_RX_IT_CONTENT_TYPE``
+ (enum)
+
+enum v4l2_dv_it_content_type -
Reads the IT Content Type of the received video. This information is
sent over HDMI and DisplayPort connectors as part of the AVI
InfoFrame. The term 'IT Content' is used for content that originates
@@ -4325,7 +4492,10 @@ FM_RX Control IDs
broadcasts speech. If the transmitter doesn't make this distinction,
then it will be set.
-``V4L2_CID_TUNE_DEEMPHASIS (enum v4l2_deemphasis)``
+``V4L2_CID_TUNE_DEEMPHASIS``
+ (enum)
+
+enum v4l2_deemphasis -
Configures the de-emphasis value for reception. A de-emphasis filter
is applied to the broadcast to accentuate the high audio
frequencies. Depending on the region, a time constant of either 50
@@ -4382,7 +4552,7 @@ Detect Control IDs
``V4L2_CID_DETECT_MD_MODE (menu)``
Sets the motion detection mode.
-
+.. tabularcolumns:: |p{7.5cm}|p{10.0cm}|
.. flat-table::
:header-rows: 0
diff --git a/Documentation/media/uapi/v4l/field-order.rst b/Documentation/media/uapi/v4l/field-order.rst
index 979fedbb2bda..95e9d2a41f1d 100644
--- a/Documentation/media/uapi/v4l/field-order.rst
+++ b/Documentation/media/uapi/v4l/field-order.rst
@@ -57,6 +57,8 @@ should have the value ``V4L2_FIELD_ANY`` (0).
enum v4l2_field
===============
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/func-mmap.rst b/Documentation/media/uapi/v4l/func-mmap.rst
index c156fb7b7422..639fef5b4f78 100644
--- a/Documentation/media/uapi/v4l/func-mmap.rst
+++ b/Documentation/media/uapi/v4l/func-mmap.rst
@@ -78,7 +78,9 @@ Arguments
``MAP_SHARED`` allows applications to share the mapped memory with
other (e. g. child-) processes.
- .. note:: The Linux ``videobuf`` module which is used by some
+ .. note::
+
+ The Linux ``videobuf`` module which is used by some
drivers supports only ``MAP_SHARED``. ``MAP_PRIVATE`` requests
copy-on-write semantics. V4L2 applications should not set the
``MAP_PRIVATE``, ``MAP_DENYWRITE``, ``MAP_EXECUTABLE`` or ``MAP_ANON``
diff --git a/Documentation/media/uapi/v4l/pixfmt-002.rst b/Documentation/media/uapi/v4l/pixfmt-002.rst
index fae9b2d40a85..58e872f66a07 100644
--- a/Documentation/media/uapi/v4l/pixfmt-002.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-002.rst
@@ -4,9 +4,12 @@
Single-planar format structure
******************************
+.. tabularcolumns:: |p{4.0cm}|p{2.5cm}|p{11.0cm}|
.. _v4l2-pix-format:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_pix_format
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/pixfmt-003.rst b/Documentation/media/uapi/v4l/pixfmt-003.rst
index 25c54872fbe1..6ec8ce639764 100644
--- a/Documentation/media/uapi/v4l/pixfmt-003.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-003.rst
@@ -12,6 +12,8 @@ array of :ref:`struct v4l2_plane_pix_format <v4l2-plane-pix-format>` structures,
describing all planes of that format.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-plane-pix-format:
.. flat-table:: struct v4l2_plane_pix_format
@@ -47,6 +49,7 @@ describing all planes of that format.
applications.
+.. tabularcolumns:: |p{4.4cm}|p{5.6cm}|p{7.5cm}|
.. _v4l2-pix-format-mplane:
diff --git a/Documentation/media/uapi/v4l/pixfmt-006.rst b/Documentation/media/uapi/v4l/pixfmt-006.rst
index 987b9a8a9eb4..56b691300158 100644
--- a/Documentation/media/uapi/v4l/pixfmt-006.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-006.rst
@@ -19,10 +19,13 @@ colorspace field of struct :ref:`v4l2_pix_format <v4l2-pix-format>`
or struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>`
needs to be filled in.
-.. note:: The default R'G'B' quantization is full range for all
+.. note::
+
+ The default R'G'B' quantization is full range for all
colorspaces except for BT.2020 which uses limited range R'G'B'
quantization.
+.. tabularcolumns:: |p{6.0cm}|p{11.5cm}|
.. _v4l2-colorspace:
@@ -181,6 +184,8 @@ needs to be filled in.
.. _v4l2-ycbcr-encoding:
+.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
+
.. flat-table:: V4L2 Y'CbCr Encodings
:header-rows: 1
:stub-columns: 0
@@ -250,6 +255,8 @@ needs to be filled in.
.. _v4l2-quantization:
+.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
+
.. flat-table:: V4L2 Quantization Methods
:header-rows: 1
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/pixfmt-007.rst b/Documentation/media/uapi/v4l/pixfmt-007.rst
index 8c946b0c63a0..95d790cbc152 100644
--- a/Documentation/media/uapi/v4l/pixfmt-007.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-007.rst
@@ -19,6 +19,8 @@ are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: SMPTE 170M Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -117,6 +119,8 @@ and the white reference are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: Rec. 709 Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -246,6 +250,8 @@ The chromaticities of the primary colors and the white reference are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: sRGB Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -345,6 +351,8 @@ are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: Adobe RGB Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -429,6 +437,8 @@ of the primary colors and the white reference are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: BT.2020 Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -538,7 +548,9 @@ projectors that use the DCI-P3 colorspace. The default transfer function
is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_709``.
-.. note:: Note that this colorspace does not specify a
+.. note::
+
+ Note that this colorspace does not specify a
Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this
default Y'CbCr encoding was picked because it is the HDTV encoding. The
default Y'CbCr quantization is limited range. The chromaticities of the
@@ -546,6 +558,8 @@ is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: DCI-P3 Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -619,6 +633,8 @@ and the white reference are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: SMPTE 240M Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -707,6 +723,8 @@ reference are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: NTSC 1953 Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -754,7 +772,9 @@ reference are:
- 0.316
-.. note:: This colorspace uses Illuminant C instead of D65 as the white
+.. note::
+
+ This colorspace uses Illuminant C instead of D65 as the white
reference. To correctly convert an image in this colorspace to another
that uses D65 you need to apply a chromatic adaptation algorithm such as
the Bradford method.
@@ -801,6 +821,8 @@ are:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: EBU Tech. 3213 Chromaticities
:header-rows: 1
:stub-columns: 0
@@ -888,7 +910,9 @@ reference are identical to sRGB. The transfer function use is
with full range quantization where Y' is scaled to [0…255] and Cb/Cr are
scaled to [-128…128] and then clipped to [-128…127].
-.. note:: The JPEG standard does not actually store colorspace
+.. note::
+
+ The JPEG standard does not actually store colorspace
information. So if something other than sRGB is used, then the driver
will have to set that information explicitly. Effectively
``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for
diff --git a/Documentation/media/uapi/v4l/pixfmt-013.rst b/Documentation/media/uapi/v4l/pixfmt-013.rst
index 475f6e6fe785..bfef4f4ce6b1 100644
--- a/Documentation/media/uapi/v4l/pixfmt-013.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-013.rst
@@ -7,6 +7,8 @@ Compressed Formats
.. _compressed-formats:
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table:: Compressed Image Formats
:header-rows: 1
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/pixfmt-grey.rst b/Documentation/media/uapi/v4l/pixfmt-grey.rst
index 761d783d4989..fef58ca50f66 100644
--- a/Documentation/media/uapi/v4l/pixfmt-grey.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-grey.rst
@@ -6,8 +6,6 @@
V4L2_PIX_FMT_GREY ('GREY')
**************************
-*man V4L2_PIX_FMT_GREY(2)*
-
Grey-scale image
@@ -20,12 +18,9 @@ which simply contains no Cb or Cr data.
**Byte Order.**
Each cell is one byte.
-
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-m420.rst b/Documentation/media/uapi/v4l/pixfmt-m420.rst
index 4c5b2969c039..f4a21a8a6dcc 100644
--- a/Documentation/media/uapi/v4l/pixfmt-m420.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-m420.rst
@@ -6,8 +6,6 @@
V4L2_PIX_FMT_M420 ('M420')
**************************
-*man V4L2_PIX_FMT_M420(2)*
-
Format with ½ horizontal and vertical chroma resolution, also known as
YUV 4:2:0. Hybrid plane line-interleaved layout.
@@ -32,11 +30,9 @@ the CbCr lines.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv12.rst b/Documentation/media/uapi/v4l/pixfmt-nv12.rst
index cf59b28f75b7..6bbdc01362af 100644
--- a/Documentation/media/uapi/v4l/pixfmt-nv12.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-nv12.rst
@@ -7,7 +7,6 @@
V4L2_PIX_FMT_NV12 ('NV12'), V4L2_PIX_FMT_NV21 ('NV21')
******************************************************
-*man V4L2_PIX_FMT_NV12(2)*
V4L2_PIX_FMT_NV21
Formats with ½ horizontal and vertical chroma resolution, also known as
@@ -36,12 +35,9 @@ many pad bytes after its rows.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv12m.rst b/Documentation/media/uapi/v4l/pixfmt-nv12m.rst
index a4e7eaeccea8..5c2e0648204b 100644
--- a/Documentation/media/uapi/v4l/pixfmt-nv12m.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-nv12m.rst
@@ -8,7 +8,6 @@
V4L2_PIX_FMT_NV12M ('NM12'), V4L2_PIX_FMT_NV21M ('NM21'), V4L2_PIX_FMT_NV12MT_16X16
***********************************************************************************
-*man V4L2_PIX_FMT_NV12M(2)*
V4L2_PIX_FMT_NV21M
V4L2_PIX_FMT_NV12MT_16X16
@@ -50,8 +49,6 @@ Each cell is one byte.
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv12mt.rst b/Documentation/media/uapi/v4l/pixfmt-nv12mt.rst
index 6198941bb814..9f250a1df2f6 100644
--- a/Documentation/media/uapi/v4l/pixfmt-nv12mt.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-nv12mt.rst
@@ -6,8 +6,6 @@
V4L2_PIX_FMT_NV12MT ('TM12')
****************************
-*man V4L2_PIX_FMT_NV12MT(2)*
-
Formats with ½ horizontal and vertical chroma resolution. This format
has two planes - one for luminance and one for chrominance. Chroma
samples are interleaved. The difference to ``V4L2_PIX_FMT_NV12`` is the
@@ -36,7 +34,7 @@ Layout of macroblocks in memory is presented in the following figure.
.. _nv12mt:
.. figure:: pixfmt-nv12mt_files/nv12mt.*
- :alt: nv12mt.gif
+ :alt: nv12mt.png
:align: center
V4L2_PIX_FMT_NV12MT macroblock Z shape memory layout
@@ -53,7 +51,7 @@ interleaved. Height of the buffer is aligned to 32.
.. _nv12mt_ex:
.. figure:: pixfmt-nv12mt_files/nv12mt_example.*
- :alt: nv12mt_example.gif
+ :alt: nv12mt_example.png
:align: center
Example V4L2_PIX_FMT_NV12MT memory layout of macroblocks
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.gif b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.gif
deleted file mode 100644
index ef2d4cf8367b..000000000000
--- a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.png b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.png
new file mode 100644
index 000000000000..41401860fb73
--- /dev/null
+++ b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.png
Binary files differ
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.gif b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.gif
deleted file mode 100644
index df81d68108ee..000000000000
--- a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.png b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.png
new file mode 100644
index 000000000000..7775f5d7cc46
--- /dev/null
+++ b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.png
Binary files differ
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv16.rst b/Documentation/media/uapi/v4l/pixfmt-nv16.rst
index 88aa7617f7cf..e2ea0fcdccc7 100644
--- a/Documentation/media/uapi/v4l/pixfmt-nv16.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-nv16.rst
@@ -7,8 +7,6 @@
V4L2_PIX_FMT_NV16 ('NV16'), V4L2_PIX_FMT_NV61 ('NV61')
******************************************************
-*man V4L2_PIX_FMT_NV16(2)*
-
V4L2_PIX_FMT_NV61
Formats with ½ horizontal chroma resolution, also known as YUV 4:2:2.
One luminance and one chrominance plane with alternating chroma samples
@@ -35,12 +33,9 @@ many pad bytes after its rows.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv16m.rst b/Documentation/media/uapi/v4l/pixfmt-nv16m.rst
index b7ee068f491c..5908b0437697 100644
--- a/Documentation/media/uapi/v4l/pixfmt-nv16m.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-nv16m.rst
@@ -7,8 +7,6 @@
V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')
********************************************************
-*man V4L2_PIX_FMT_NV16M(2)*
-
V4L2_PIX_FMT_NV61M
Variation of ``V4L2_PIX_FMT_NV16`` and ``V4L2_PIX_FMT_NV61`` with planes
non contiguous in memory.
@@ -38,12 +36,9 @@ described in :ref:`planar-apis`.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-nv24.rst b/Documentation/media/uapi/v4l/pixfmt-nv24.rst
index db98f476446e..67f3c53ac48d 100644
--- a/Documentation/media/uapi/v4l/pixfmt-nv24.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-nv24.rst
@@ -7,8 +7,6 @@
V4L2_PIX_FMT_NV24 ('NV24'), V4L2_PIX_FMT_NV42 ('NV42')
******************************************************
-*man V4L2_PIX_FMT_NV24(2)*
-
V4L2_PIX_FMT_NV42
Formats with full horizontal and vertical chroma resolutions, also known
as YUV 4:4:4. One luminance and one chrominance plane with alternating
@@ -35,12 +33,9 @@ twice as many pad bytes after its rows.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-packed-rgb.rst b/Documentation/media/uapi/v4l/pixfmt-packed-rgb.rst
index c7aa2e91ac78..4eba72266587 100644
--- a/Documentation/media/uapi/v4l/pixfmt-packed-rgb.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-packed-rgb.rst
@@ -6,11 +6,6 @@
Packed RGB formats
******************
-*man Packed RGB formats(2)*
-
-Packed RGB formats
-
-
Description
===========
@@ -19,6 +14,11 @@ graphics frame buffers. They occupy 8, 16, 24 or 32 bits per pixel.
These are all packed-pixel formats, meaning all the data for a pixel lie
next to each other in memory.
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{4.5cm}|p{3.3cm}|p{0.7cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{1.7cm}|
.. _rgb-formats:
@@ -36,10 +36,13 @@ next to each other in memory.
-
- :cspan:`7` Byte 0 in memory
+ -
- :cspan:`7` Byte 1
+ -
- :cspan:`7` Byte 2
+ -
- :cspan:`7` Byte 3
- .. row 2
@@ -202,13 +205,13 @@ next to each other in memory.
- b\ :sub:`0`
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`3`
@@ -282,7 +285,7 @@ next to each other in memory.
- b\ :sub:`0`
-
- - -
+ -
- r\ :sub:`4`
@@ -385,7 +388,7 @@ next to each other in memory.
- 'XR15' | (1 << 31)
-
- - -
+ -
- r\ :sub:`4`
@@ -617,34 +620,34 @@ next to each other in memory.
- r\ :sub:`0`
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- .. _V4L2-PIX-FMT-ABGR32:
@@ -778,21 +781,21 @@ next to each other in memory.
- r\ :sub:`0`
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- .. _V4L2-PIX-FMT-ARGB32:
@@ -875,21 +878,21 @@ next to each other in memory.
- 'BX24'
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
-
- r\ :sub:`7`
@@ -942,8 +945,11 @@ next to each other in memory.
- b\ :sub:`0`
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
-Bit 7 is the most significant bit.
+.. note:: Bit 7 is the most significant bit.
The usage and value of the alpha bits (a) in the ARGB and ABGR formats
(collectively referred to as alpha formats) depend on the device type
@@ -973,11 +979,16 @@ devices and drivers must ignore those bits, for both
Each cell is one byte.
+.. raw:: latex
-.. flat-table::
+ \newline\newline\begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{4.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.1cm}|p{1.3cm}|
+
+.. flat-table:: RGB byte order
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1 1 1 1 1
+ :widths: 11 3 3 3 3 3 3 3 3 3 3 3 3
- .. row 1
@@ -1092,6 +1103,9 @@ Each cell is one byte.
- R\ :sub:`33`
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
Formats defined in :ref:`rgb-formats-deprecated` are deprecated and
must not be used by new drivers. They are documented here for reference.
@@ -1099,6 +1113,12 @@ The meaning of their alpha bits (a) is ill-defined and interpreted as in
either the corresponding ARGB or XRGB format, depending on the driver.
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{4.2cm}|p{1.0cm}|p{0.7cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{1.7cm}|
+
.. _rgb-formats-deprecated:
.. flat-table:: Deprecated Packed RGB Image Formats
@@ -1115,10 +1135,13 @@ either the corresponding ARGB or XRGB format, depending on the driver.
-
- :cspan:`7` Byte 0 in memory
+ -
- :cspan:`7` Byte 1
+ -
- :cspan:`7` Byte 2
+ -
- :cspan:`7` Byte 3
- .. row 2
@@ -1462,6 +1485,9 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- b\ :sub:`0`
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
A test utility to determine which RGB formats a driver actually supports
is available from the LinuxTV v4l-dvb repository. See
diff --git a/Documentation/media/uapi/v4l/pixfmt-packed-yuv.rst b/Documentation/media/uapi/v4l/pixfmt-packed-yuv.rst
index 54716455f453..6066f13af5b3 100644
--- a/Documentation/media/uapi/v4l/pixfmt-packed-yuv.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-packed-yuv.rst
@@ -6,18 +6,19 @@
Packed YUV formats
******************
-*man Packed YUV formats(2)*
-
-Packed YUV formats
-
-
Description
===========
Similar to the packed RGB formats these formats store the Y, Cb and Cr
component of each pixel in one 16 or 32 bit word.
+.. raw:: latex
+
+ \newline\newline\begin{adjustbox}{width=\columnwidth}
+.. _yuv-formats:
+
+.. tabularcolumns:: |p{4.5cm}|p{3.3cm}|p{0.7cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{1.7cm}|
.. flat-table:: Packed YUV Image Formats
:header-rows: 2
@@ -309,8 +310,15 @@ component of each pixel in one 16 or 32 bit word.
- Cr\ :sub:`0`
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
+
+.. note::
+
+ #) Bit 7 is the most significant bit;
-Bit 7 is the most significant bit. The value of a = alpha bits is
-undefined when reading from the driver, ignored when writing to the
-driver, except when alpha blending has been negotiated for a
-:ref:`Video Overlay <overlay>` or :ref:`Video Output Overlay <osd>`.
+ #) The value of a = alpha bits is undefined when reading from the driver,
+ ignored when writing to the driver, except when alpha blending has
+ been negotiated for a :ref:`Video Overlay <overlay>` or
+ :ref:`Video Output Overlay <osd>`.
diff --git a/Documentation/media/uapi/v4l/pixfmt-reserved.rst b/Documentation/media/uapi/v4l/pixfmt-reserved.rst
index 9a5704baf9fe..0dd2f7fe096f 100644
--- a/Documentation/media/uapi/v4l/pixfmt-reserved.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-reserved.rst
@@ -17,6 +17,8 @@ you think your format should be listed in a standard format section
please make a proposal on the linux-media mailing list.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _reserved-formats:
.. flat-table:: Reserved Image Formats
@@ -339,6 +341,8 @@ please make a proposal on the linux-media mailing list.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _format-flags:
.. flat-table:: Format Flags
diff --git a/Documentation/media/uapi/v4l/pixfmt-sbggr16.rst b/Documentation/media/uapi/v4l/pixfmt-sbggr16.rst
index 14446ed7f650..801b78ccbc25 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sbggr16.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sbggr16.rst
@@ -6,8 +6,6 @@
V4L2_PIX_FMT_SBGGR16 ('BYR2')
*****************************
-*man V4L2_PIX_FMT_SBGGR16(2)*
-
Bayer RGB format
@@ -19,19 +17,17 @@ This format is similar to
has a depth of 16 bits. The least significant byte is stored at lower
memory addresses (little-endian).
-..note:: The actual sampling precision may be lower than 16 bits,
+.. note::
+
+ The actual sampling precision may be lower than 16 bits,
for example 10 bits per pixel with values in tange 0 to 1023.
**Byte Order.**
Each cell is one byte.
-
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sbggr8.rst b/Documentation/media/uapi/v4l/pixfmt-sbggr8.rst
index db4c523f49a9..e880ba09379c 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sbggr8.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sbggr8.rst
@@ -6,8 +6,6 @@
V4L2_PIX_FMT_SBGGR8 ('BA81')
****************************
-*man V4L2_PIX_FMT_SBGGR8(2)*
-
Bayer RGB format
@@ -25,11 +23,9 @@ scheme repeats to the right and down for every two columns and rows.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sdr-cs08.rst b/Documentation/media/uapi/v4l/pixfmt-sdr-cs08.rst
index 2736275d080f..82b9995155fa 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sdr-cs08.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sdr-cs08.rst
@@ -6,8 +6,6 @@
V4L2_SDR_FMT_CS8 ('CS08')
*************************
-*man V4L2_SDR_FMT_CS8(2)*
-
Complex signed 8-bit IQ sample
@@ -22,12 +20,9 @@ Q value after that.
**Byte Order.**
Each cell is one byte.
-
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sdr-cs14le.rst b/Documentation/media/uapi/v4l/pixfmt-sdr-cs14le.rst
index bfe5804bd84e..f06cbeb15dc2 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sdr-cs14le.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sdr-cs14le.rst
@@ -6,8 +6,6 @@
V4L2_SDR_FMT_CS14LE ('CS14')
****************************
-*man V4L2_SDR_FMT_CS14LE(2)*
-
Complex signed 14-bit little endian IQ sample
@@ -24,12 +22,9 @@ space with unused high bits padded with 0.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sdr-cu08.rst b/Documentation/media/uapi/v4l/pixfmt-sdr-cu08.rst
index 68ad1717f6d7..bd81eb2e0549 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sdr-cu08.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sdr-cu08.rst
@@ -6,8 +6,6 @@
V4L2_SDR_FMT_CU8 ('CU08')
*************************
-*man V4L2_SDR_FMT_CU8(2)*
-
Complex unsigned 8-bit IQ sample
@@ -22,13 +20,9 @@ and Q value after that.
**Byte Order.**
Each cell is one byte.
-
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sdr-cu16le.rst b/Documentation/media/uapi/v4l/pixfmt-sdr-cu16le.rst
index 2a1c0d4924a1..c72587de4a8d 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sdr-cu16le.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sdr-cu16le.rst
@@ -6,7 +6,6 @@
V4L2_SDR_FMT_CU16LE ('CU16')
****************************
-*man V4L2_SDR_FMT_CU16LE(2)*
Complex unsigned 16-bit little endian IQ sample
@@ -23,12 +22,9 @@ comes first and Q value after that.
Each cell is one byte.
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sdr-ru12le.rst b/Documentation/media/uapi/v4l/pixfmt-sdr-ru12le.rst
index 378581b27d4a..b5f0ca0f0c45 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sdr-ru12le.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sdr-ru12le.rst
@@ -6,7 +6,6 @@
V4L2_SDR_FMT_RU12LE ('RU12')
****************************
-*man V4L2_SDR_FMT_RU12LE(2)*
Real unsigned 12-bit little endian sample
@@ -23,10 +22,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sgbrg8.rst b/Documentation/media/uapi/v4l/pixfmt-sgbrg8.rst
index 6345c24d86f3..5cd40d611d68 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sgbrg8.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sgbrg8.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_SGBRG8 ('GBRG')
****************************
-*man V4L2_PIX_FMT_SGBRG8(2)*
Bayer RGB format
@@ -26,10 +25,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-sgrbg8.rst b/Documentation/media/uapi/v4l/pixfmt-sgrbg8.rst
index 51b7b8ef7519..05a09dbac494 100644
--- a/Documentation/media/uapi/v4l/pixfmt-sgrbg8.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-sgrbg8.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_SGRBG8 ('GRBG')
****************************
-*man V4L2_PIX_FMT_SGRBG8(2)*
Bayer RGB format
@@ -26,10 +25,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb10.rst b/Documentation/media/uapi/v4l/pixfmt-srggb10.rst
index 44a49563917c..8af756944fd4 100644
--- a/Documentation/media/uapi/v4l/pixfmt-srggb10.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-srggb10.rst
@@ -9,7 +9,6 @@
V4L2_PIX_FMT_SRGGB10 ('RG10'), V4L2_PIX_FMT_SGRBG10 ('BA10'), V4L2_PIX_FMT_SGBRG10 ('GB10'), V4L2_PIX_FMT_SBGGR10 ('BG10'),
***************************************************************************************************************************
-*man V4L2_PIX_FMT_SRGGB10(2)*
V4L2_PIX_FMT_SGRBG10
V4L2_PIX_FMT_SGBRG10
@@ -33,10 +32,10 @@ Each cell is one byte, high 6 bits in high bytes are 0.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb10alaw8.rst b/Documentation/media/uapi/v4l/pixfmt-srggb10alaw8.rst
index 68bae0cb764c..c44e093514de 100644
--- a/Documentation/media/uapi/v4l/pixfmt-srggb10alaw8.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-srggb10alaw8.rst
@@ -9,8 +9,6 @@
V4L2_PIX_FMT_SBGGR10ALAW8 ('aBA8'), V4L2_PIX_FMT_SGBRG10ALAW8 ('aGA8'), V4L2_PIX_FMT_SGRBG10ALAW8 ('agA8'), V4L2_PIX_FMT_SRGGB10ALAW8 ('aRA8'),
***********************************************************************************************************************************************
-*man V4L2_PIX_FMT_SBGGR10ALAW8(2)*
-
V4L2_PIX_FMT_SGBRG10ALAW8
V4L2_PIX_FMT_SGRBG10ALAW8
V4L2_PIX_FMT_SRGGB10ALAW8
diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst b/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst
index d71368f69087..a5752b9063e3 100644
--- a/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst
@@ -9,7 +9,6 @@
V4L2_PIX_FMT_SRGGB10P ('pRAA'), V4L2_PIX_FMT_SGRBG10P ('pgAA'), V4L2_PIX_FMT_SGBRG10P ('pGAA'), V4L2_PIX_FMT_SBGGR10P ('pBAA'),
*******************************************************************************************************************************
-*man V4L2_PIX_FMT_SRGGB10P(2)*
V4L2_PIX_FMT_SGRBG10P
V4L2_PIX_FMT_SGBRG10P
@@ -34,13 +33,16 @@ of one of these formats:
**Byte Order.**
Each cell is one byte.
+.. raw:: latex
+ \newline\newline\begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{2.0cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{10.9cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1
-
+ :widths: 12 8 8 8 8 68
- .. row 1
@@ -101,3 +103,7 @@ Each cell is one byte.
- G\ :sub:`30low`\ (bits 7--6) R\ :sub:`31low`\ (bits 5--4)
G\ :sub:`32low`\ (bits 3--2) R\ :sub:`33low`\ (bits 1--0)
+
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb12.rst b/Documentation/media/uapi/v4l/pixfmt-srggb12.rst
index f5303ab9e79c..109772fd0f23 100644
--- a/Documentation/media/uapi/v4l/pixfmt-srggb12.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-srggb12.rst
@@ -10,7 +10,6 @@
V4L2_PIX_FMT_SRGGB12 ('RG12'), V4L2_PIX_FMT_SGRBG12 ('BA12'), V4L2_PIX_FMT_SGBRG12 ('GB12'), V4L2_PIX_FMT_SBGGR12 ('BG12'),
***************************************************************************************************************************
-*man V4L2_PIX_FMT_SRGGB12(2)*
V4L2_PIX_FMT_SGRBG12
V4L2_PIX_FMT_SGBRG12
@@ -34,10 +33,10 @@ Each cell is one byte, high 6 bits in high bytes are 0.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb8.rst b/Documentation/media/uapi/v4l/pixfmt-srggb8.rst
index e88de4c48d47..41851bbde2cd 100644
--- a/Documentation/media/uapi/v4l/pixfmt-srggb8.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-srggb8.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_SRGGB8 ('RGGB')
****************************
-*man V4L2_PIX_FMT_SRGGB8(2)*
Bayer RGB format
@@ -26,10 +25,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-uv8.rst b/Documentation/media/uapi/v4l/pixfmt-uv8.rst
index fa8f7ee9fee1..8c4ebbf79ca0 100644
--- a/Documentation/media/uapi/v4l/pixfmt-uv8.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-uv8.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_UV8 ('UV8')
************************
-*man V4L2_PIX_FMT_UV8(2)*
UV plane interleaved
@@ -21,10 +20,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-uyvy.rst b/Documentation/media/uapi/v4l/pixfmt-uyvy.rst
index 87b0081d44ee..ed8ccf52b1db 100644
--- a/Documentation/media/uapi/v4l/pixfmt-uyvy.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-uyvy.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_UYVY ('UYVY')
**************************
-*man V4L2_PIX_FMT_UYVY(2)*
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
memory
@@ -23,10 +22,10 @@ half the horizontal resolution of the Y component.
**Byte Order.**
Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-vyuy.rst b/Documentation/media/uapi/v4l/pixfmt-vyuy.rst
index 5d8f99f173b6..d62c1ac4ed08 100644
--- a/Documentation/media/uapi/v4l/pixfmt-vyuy.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-vyuy.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_VYUY ('VYUY')
**************************
-*man V4L2_PIX_FMT_VYUY(2)*
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
memory
@@ -23,10 +22,10 @@ half the horizontal resolution of the Y component.
**Byte Order.**
Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y10.rst b/Documentation/media/uapi/v4l/pixfmt-y10.rst
index d22f77138289..cb78e365a84c 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y10.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y10.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_Y10 ('Y10 ')
*************************
-*man V4L2_PIX_FMT_Y10(2)*
Grey-scale image
@@ -23,10 +22,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y10b.rst b/Documentation/media/uapi/v4l/pixfmt-y10b.rst
index 5b50cd61e654..e89850bfef58 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y10b.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y10b.rst
@@ -6,8 +6,6 @@
V4L2_PIX_FMT_Y10BPACK ('Y10B')
******************************
-*man V4L2_PIX_FMT_Y10BPACK(2)*
-
Grey-scale image as a bit-packed array
@@ -24,13 +22,9 @@ first from the left.
pixels cross the byte boundary and have a ratio of 5 bytes for each 4
pixels.
-
-
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
-
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y12.rst b/Documentation/media/uapi/v4l/pixfmt-y12.rst
index 7729bcbf3350..0958e87b6d22 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y12.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y12.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_Y12 ('Y12 ')
*************************
-*man V4L2_PIX_FMT_Y12(2)*
Grey-scale image
@@ -23,10 +22,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y12i.rst b/Documentation/media/uapi/v4l/pixfmt-y12i.rst
index 8967e8c33b47..e66d8bcdb410 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y12i.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y12i.rst
@@ -6,8 +6,6 @@
V4L2_PIX_FMT_Y12I ('Y12I')
**************************
-*man V4L2_PIX_FMT_Y12I(2)*
-
Interleaved grey-scale image, e.g. from a stereo-pair
@@ -32,7 +30,6 @@ interleaved pixel.
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y16-be.rst b/Documentation/media/uapi/v4l/pixfmt-y16-be.rst
index 37fa099c16a6..fc23c6b12193 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y16-be.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y16-be.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_Y16_BE ('Y16 ' | (1 << 31))
****************************************
-*man V4L2_PIX_FMT_Y16_BE(2)*
Grey-scale image
@@ -17,7 +16,9 @@ Description
This is a grey-scale image with a depth of 16 bits per pixel. The most
significant byte is stored at lower memory addresses (big-endian).
-.. note:: Tthe actual sampling precision may be lower than 16 bits, for
+.. note::
+
+ The actual sampling precision may be lower than 16 bits, for
example 10 bits per pixel with values in range 0 to 1023.
**Byte Order.**
@@ -25,10 +26,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y16.rst b/Documentation/media/uapi/v4l/pixfmt-y16.rst
index 4c41c042188b..6b4edc4e34e5 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y16.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y16.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_Y16 ('Y16 ')
*************************
-*man V4L2_PIX_FMT_Y16(2)*
Grey-scale image
@@ -17,7 +16,9 @@ Description
This is a grey-scale image with a depth of 16 bits per pixel. The least
significant byte is stored at lower memory addresses (little-endian).
-.. note:: The actual sampling precision may be lower than 16 bits, for
+.. note::
+
+ The actual sampling precision may be lower than 16 bits, for
example 10 bits per pixel with values in range 0 to 1023.
**Byte Order.**
@@ -25,10 +26,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y41p.rst b/Documentation/media/uapi/v4l/pixfmt-y41p.rst
index 4760174a4668..9c3194bbf77e 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y41p.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y41p.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_Y41P ('Y41P')
**************************
-*man V4L2_PIX_FMT_Y41P(2)*
Format with ¼ horizontal chroma resolution, also known as YUV 4:1:1
@@ -30,10 +29,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-y8i.rst b/Documentation/media/uapi/v4l/pixfmt-y8i.rst
index 7fa16ee85ab7..16bdfbbe6915 100644
--- a/Documentation/media/uapi/v4l/pixfmt-y8i.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-y8i.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_Y8I ('Y8I ')
*************************
-*man V4L2_PIX_FMT_Y8I(2)*
Interleaved grey-scale image, e.g. from a stereo-pair
@@ -24,10 +23,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuv410.rst b/Documentation/media/uapi/v4l/pixfmt-yuv410.rst
index 8a5d1a2ee005..54909839b0d1 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuv410.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuv410.rst
@@ -7,7 +7,6 @@
V4L2_PIX_FMT_YVU410 ('YVU9'), V4L2_PIX_FMT_YUV410 ('YUV9')
**********************************************************
-*man V4L2_PIX_FMT_YVU410(2)*
V4L2_PIX_FMT_YUV410
Planar formats with ¼ horizontal and vertical chroma resolution, also
@@ -37,10 +36,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuv411p.rst b/Documentation/media/uapi/v4l/pixfmt-yuv411p.rst
index f85e3f388cbe..913f68fe2536 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuv411p.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuv411p.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_YUV411P ('411P')
*****************************
-*man V4L2_PIX_FMT_YUV411P(2)*
Format with ¼ horizontal chroma resolution, also known as YUV 4:1:1.
Planar layout as opposed to ``V4L2_PIX_FMT_Y41P``
@@ -33,10 +32,10 @@ have ¼ as many pad bytes after their rows. In other words, four C x rows
Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuv420.rst b/Documentation/media/uapi/v4l/pixfmt-yuv420.rst
index b22e64c14f67..a7f17e40b59e 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuv420.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuv420.rst
@@ -7,7 +7,6 @@
V4L2_PIX_FMT_YVU420 ('YV12'), V4L2_PIX_FMT_YUV420 ('YU12')
**********************************************************
-*man V4L2_PIX_FMT_YVU420(2)*
V4L2_PIX_FMT_YUV420
Planar formats with ½ horizontal and vertical chroma resolution, also
@@ -38,10 +37,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuv420m.rst b/Documentation/media/uapi/v4l/pixfmt-yuv420m.rst
index 4dab85090d7d..588784512944 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuv420m.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuv420m.rst
@@ -7,7 +7,6 @@
V4L2_PIX_FMT_YUV420M ('YM12'), V4L2_PIX_FMT_YVU420M ('YM21')
************************************************************
-*man V4L2_PIX_FMT_YUV420M(2)*
V4L2_PIX_FMT_YVU420M
Variation of ``V4L2_PIX_FMT_YUV420`` and ``V4L2_PIX_FMT_YVU420`` with
@@ -45,10 +44,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuv422m.rst b/Documentation/media/uapi/v4l/pixfmt-yuv422m.rst
index ccb67284133a..0c0a462c4dde 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuv422m.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuv422m.rst
@@ -7,7 +7,6 @@
V4L2_PIX_FMT_YUV422M ('YM16'), V4L2_PIX_FMT_YVU422M ('YM61')
************************************************************
-*man V4L2_PIX_FMT_YUV422M(2)*
V4L2_PIX_FMT_YVU422M
Planar formats with ½ horizontal resolution, also known as YUV and YVU
@@ -44,10 +43,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuv422p.rst b/Documentation/media/uapi/v4l/pixfmt-yuv422p.rst
index 9f34762adf18..9618f0d24265 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuv422p.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuv422p.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_YUV422P ('422P')
*****************************
-*man V4L2_PIX_FMT_YUV422P(2)*
Format with ½ horizontal chroma resolution, also known as YUV 4:2:2.
Planar layout as opposed to ``V4L2_PIX_FMT_YUYV``
@@ -34,10 +33,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuv444m.rst b/Documentation/media/uapi/v4l/pixfmt-yuv444m.rst
index 04f34508b934..5985d45efb2c 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuv444m.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuv444m.rst
@@ -7,7 +7,6 @@
V4L2_PIX_FMT_YUV444M ('YM24'), V4L2_PIX_FMT_YVU444M ('YM42')
************************************************************
-*man V4L2_PIX_FMT_YUV444M(2)*
V4L2_PIX_FMT_YVU444M
Planar formats with full horizontal resolution, also known as YUV and
@@ -38,10 +37,10 @@ described in :ref:`planar-apis`.
**Byte Order.**
Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yuyv.rst b/Documentation/media/uapi/v4l/pixfmt-yuyv.rst
index 52917dfa9261..10deab080d51 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yuyv.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yuyv.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_YUYV ('YUYV')
**************************
-*man V4L2_PIX_FMT_YUYV(2)*
Packed format with ½ horizontal chroma resolution, also known as YUV
4:2:2
@@ -26,10 +25,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-yvyu.rst b/Documentation/media/uapi/v4l/pixfmt-yvyu.rst
index e466052b68b2..d126f08c1adc 100644
--- a/Documentation/media/uapi/v4l/pixfmt-yvyu.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-yvyu.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_YVYU ('YVYU')
**************************
-*man V4L2_PIX_FMT_YVYU(2)*
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
memory
@@ -23,10 +22,10 @@ half the horizontal resolution of the Y component.
**Byte Order.**
Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/pixfmt-z16.rst b/Documentation/media/uapi/v4l/pixfmt-z16.rst
index 4ebc561d0480..97fe1483a481 100644
--- a/Documentation/media/uapi/v4l/pixfmt-z16.rst
+++ b/Documentation/media/uapi/v4l/pixfmt-z16.rst
@@ -6,7 +6,6 @@
V4L2_PIX_FMT_Z16 ('Z16 ')
*************************
-*man V4L2_PIX_FMT_Z16(2)*
16-bit depth data with distance values at each pixel
@@ -24,10 +23,10 @@ Each cell is one byte.
+
.. flat-table::
:header-rows: 0
:stub-columns: 0
- :widths: 2 1 1 1 1 1 1 1 1
- .. row 1
diff --git a/Documentation/media/uapi/v4l/standard.rst b/Documentation/media/uapi/v4l/standard.rst
index c4f678f545ec..2320008f6063 100644
--- a/Documentation/media/uapi/v4l/standard.rst
+++ b/Documentation/media/uapi/v4l/standard.rst
@@ -41,7 +41,9 @@ output applications call the :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` and
*received* standard can be sensed with the
:ref:`VIDIOC_QUERYSTD` ioctl.
-..note:: The parameter of all these ioctls is a pointer to a
+.. note::
+
+ The parameter of all these ioctls is a pointer to a
:ref:`v4l2_std_id <v4l2-std-id>` type (a standard set), *not* an
index into the standard enumeration. Drivers must implement all video
standard ioctls when the device has one or more video inputs or outputs.
diff --git a/Documentation/media/uapi/v4l/subdev-formats.rst b/Documentation/media/uapi/v4l/subdev-formats.rst
index 6dbb27b09c34..8b1ba4f53b18 100644
--- a/Documentation/media/uapi/v4l/subdev-formats.rst
+++ b/Documentation/media/uapi/v4l/subdev-formats.rst
@@ -5,6 +5,7 @@
Media Bus Formats
=================
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-mbus-framefmt:
@@ -153,13 +154,25 @@ half of the green value) transferred first will be named
The following tables list existing packed RGB formats.
+.. HACK: ideally, we would be using adjustbox here. However, Sphinx
+.. is a very bad behaviored guy: if the table has more than 30 cols,
+.. it switches to long table, and there's no way to override it.
+
+
+.. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
.. _v4l2-mbus-pixelcode-rgb:
+.. raw:: latex
+
+ \begingroup
+ \tiny
+ \setlength{\tabcolsep}{2pt}
+
.. flat-table:: RGB formats
:header-rows: 2
:stub-columns: 0
-
+ :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
- .. row 1
@@ -247,45 +260,45 @@ The following tables list existing packed RGB formats.
- 0x1016
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`3`
@@ -318,53 +331,53 @@ The following tables list existing packed RGB formats.
- 0x1001
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- 0
@@ -387,53 +400,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`3`
@@ -458,53 +471,53 @@ The following tables list existing packed RGB formats.
- 0x1002
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`3`
@@ -527,53 +540,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- 0
@@ -598,53 +611,53 @@ The following tables list existing packed RGB formats.
- 0x1003
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- 0
@@ -667,53 +680,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`2`
@@ -738,53 +751,53 @@ The following tables list existing packed RGB formats.
- 0x1004
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`2`
@@ -807,53 +820,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- 0
@@ -878,37 +891,37 @@ The following tables list existing packed RGB formats.
- 0x1017
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`4`
@@ -949,53 +962,53 @@ The following tables list existing packed RGB formats.
- 0x1005
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`4`
@@ -1018,53 +1031,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`2`
@@ -1089,53 +1102,53 @@ The following tables list existing packed RGB formats.
- 0x1006
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`2`
@@ -1158,53 +1171,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`4`
@@ -1229,53 +1242,53 @@ The following tables list existing packed RGB formats.
- 0x1007
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`4`
@@ -1298,53 +1311,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`2`
@@ -1369,53 +1382,53 @@ The following tables list existing packed RGB formats.
- 0x1008
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`2`
@@ -1438,53 +1451,53 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`4`
@@ -1509,33 +1522,33 @@ The following tables list existing packed RGB formats.
- 0x1009
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`5`
@@ -1580,21 +1593,21 @@ The following tables list existing packed RGB formats.
- 0x100e
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`7`
@@ -1651,21 +1664,21 @@ The following tables list existing packed RGB formats.
- 0x1015
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- 0
@@ -1722,21 +1735,21 @@ The following tables list existing packed RGB formats.
- 0x1013
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`7`
@@ -1793,21 +1806,21 @@ The following tables list existing packed RGB formats.
- 0x1014
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`7`
@@ -1864,21 +1877,21 @@ The following tables list existing packed RGB formats.
- 0x100a
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`7`
@@ -1935,45 +1948,45 @@ The following tables list existing packed RGB formats.
- 0x100b
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`7`
@@ -2004,45 +2017,45 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`3`
@@ -2075,45 +2088,45 @@ The following tables list existing packed RGB formats.
- 0x100c
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`3`
@@ -2144,45 +2157,45 @@ The following tables list existing packed RGB formats.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`7`
@@ -2350,6 +2363,9 @@ The following tables list existing packed RGB formats.
- b\ :sub:`0`
+.. raw:: latex
+
+ \endgroup
On LVDS buses, usually each sample is transferred serialized in seven
time slots per pixel clock, on three (18-bit) or four (24-bit)
@@ -2359,6 +2375,9 @@ for control signals as defined by SPWG/PSWG/VESA or JEIDA standards. The
JEIDA defined bit mapping will be named
``MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA``, for example.
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
.. _v4l2-mbus-pixelcode-rgb-lvds:
@@ -2402,7 +2421,7 @@ JEIDA defined bit mapping will be named
- 0
-
- - -
+ -
- d
@@ -2417,7 +2436,7 @@ JEIDA defined bit mapping will be named
- 1
-
- - -
+ -
- d
@@ -2432,7 +2451,7 @@ JEIDA defined bit mapping will be named
- 2
-
- - -
+ -
- d
@@ -2447,7 +2466,7 @@ JEIDA defined bit mapping will be named
- 3
-
- - -
+ -
- b\ :sub:`5`
@@ -2462,7 +2481,7 @@ JEIDA defined bit mapping will be named
- 4
-
- - -
+ -
- b\ :sub:`4`
@@ -2477,7 +2496,7 @@ JEIDA defined bit mapping will be named
- 5
-
- - -
+ -
- b\ :sub:`3`
@@ -2492,7 +2511,7 @@ JEIDA defined bit mapping will be named
- 6
-
- - -
+ -
- b\ :sub:`2`
@@ -2714,6 +2733,9 @@ JEIDA defined bit mapping will be named
- r\ :sub:`2`
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
Bayer Formats
@@ -2768,8 +2790,16 @@ The following table lists existing packed Bayer formats. The data
organization is given as an example for the first pixel only.
+.. raw:: latex
+
+ \newline\newline\begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{7.6cm}|p{1.6cm}|p{0.7cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|
+
.. _v4l2-mbus-pixelcode-bayer:
+.. cssclass: longtable
+
.. flat-table:: Bayer Formats
:header-rows: 2
:stub-columns: 0
@@ -2821,13 +2851,13 @@ organization is given as an example for the first pixel only.
- 0x3001
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`7`
@@ -2852,13 +2882,13 @@ organization is given as an example for the first pixel only.
- 0x3013
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`7`
@@ -2883,13 +2913,13 @@ organization is given as an example for the first pixel only.
- 0x3002
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`7`
@@ -2914,13 +2944,13 @@ organization is given as an example for the first pixel only.
- 0x3014
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`7`
@@ -2945,13 +2975,13 @@ organization is given as an example for the first pixel only.
- 0x3015
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`7`
@@ -2976,13 +3006,13 @@ organization is given as an example for the first pixel only.
- 0x3016
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`7`
@@ -3007,13 +3037,13 @@ organization is given as an example for the first pixel only.
- 0x3017
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`7`
@@ -3038,13 +3068,13 @@ organization is given as an example for the first pixel only.
- 0x3018
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`7`
@@ -3069,13 +3099,13 @@ organization is given as an example for the first pixel only.
- 0x300b
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`7`
@@ -3100,13 +3130,13 @@ organization is given as an example for the first pixel only.
- 0x300c
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`7`
@@ -3131,13 +3161,13 @@ organization is given as an example for the first pixel only.
- 0x3009
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- g\ :sub:`7`
@@ -3162,13 +3192,13 @@ organization is given as an example for the first pixel only.
- 0x300d
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- r\ :sub:`7`
@@ -3193,13 +3223,13 @@ organization is given as an example for the first pixel only.
- 0x3003
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- 0
@@ -3222,13 +3252,13 @@ organization is given as an example for the first pixel only.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`7`
@@ -3253,13 +3283,13 @@ organization is given as an example for the first pixel only.
- 0x3004
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`7`
@@ -3282,13 +3312,13 @@ organization is given as an example for the first pixel only.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- 0
@@ -3313,13 +3343,13 @@ organization is given as an example for the first pixel only.
- 0x3005
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`9`
@@ -3342,13 +3372,13 @@ organization is given as an example for the first pixel only.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`1`
@@ -3373,13 +3403,13 @@ organization is given as an example for the first pixel only.
- 0x3006
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`1`
@@ -3402,13 +3432,13 @@ organization is given as an example for the first pixel only.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- b\ :sub:`9`
@@ -3433,9 +3463,9 @@ organization is given as an example for the first pixel only.
- 0x3007
-
- - -
+ -
- - -
+ -
- b\ :sub:`9`
@@ -3464,9 +3494,9 @@ organization is given as an example for the first pixel only.
- 0x300e
-
- - -
+ -
- - -
+ -
- g\ :sub:`9`
@@ -3495,9 +3525,9 @@ organization is given as an example for the first pixel only.
- 0x300a
-
- - -
+ -
- - -
+ -
- g\ :sub:`9`
@@ -3526,9 +3556,9 @@ organization is given as an example for the first pixel only.
- 0x300f
-
- - -
+ -
- - -
+ -
- r\ :sub:`9`
@@ -3674,6 +3704,9 @@ organization is given as an example for the first pixel only.
- r\ :sub:`0`
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
Packed YUV Formats
@@ -3726,17 +3759,31 @@ the following codes.
- a\ :sub:`x` for alpha component bit number x
-- - for non-available bits (for positions higher than the bus width)
+- for non-available bits (for positions higher than the bus width)
- d for dummy bits
+.. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
+
.. _v4l2-mbus-pixelcode-yuv8:
+
+.. HACK: ideally, we would be using adjustbox here. However, this
+.. will never work for this table, as, even with tiny font, it is
+.. to big for a single page. So, we need to manually adjust the
+.. size.
+
+.. raw:: latex
+
+ \begingroup
+ \tiny
+ \setlength{\tabcolsep}{2pt}
+
.. flat-table:: YUV Formats
:header-rows: 2
:stub-columns: 0
-
+ :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
- .. row 1
@@ -3824,53 +3871,53 @@ the following codes.
- 0x2001
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -3895,53 +3942,53 @@ the following codes.
- 0x2015
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -3964,53 +4011,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -4035,53 +4082,53 @@ the following codes.
- 0x2002
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -4104,53 +4151,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4173,53 +4220,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4242,53 +4289,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -4311,53 +4358,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4380,53 +4427,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4451,53 +4498,53 @@ the following codes.
- 0x2003
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -4520,53 +4567,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4589,53 +4636,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4658,53 +4705,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -4727,53 +4774,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4796,53 +4843,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4867,53 +4914,53 @@ the following codes.
- 0x2004
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -4936,53 +4983,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5005,53 +5052,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -5074,53 +5121,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5143,53 +5190,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5212,53 +5259,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -5283,53 +5330,53 @@ the following codes.
- 0x2005
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5352,53 +5399,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5421,53 +5468,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -5490,53 +5537,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5559,53 +5606,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5628,53 +5675,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -5699,53 +5746,53 @@ the following codes.
- 0x2006
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -5768,53 +5815,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5837,53 +5884,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -5906,53 +5953,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -5977,53 +6024,53 @@ the following codes.
- 0x2007
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -6046,53 +6093,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -6115,53 +6162,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -6184,53 +6231,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -6255,53 +6302,53 @@ the following codes.
- 0x2008
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -6324,53 +6371,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -6393,53 +6440,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -6462,53 +6509,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -6533,53 +6580,53 @@ the following codes.
- 0x2009
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -6602,53 +6649,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -6671,53 +6718,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -6740,53 +6787,53 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -6811,49 +6858,49 @@ the following codes.
- 0x200a
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -6882,49 +6929,49 @@ the following codes.
- 0x2018
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`9`
@@ -6951,49 +6998,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7020,49 +7067,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`9`
@@ -7089,49 +7136,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7160,49 +7207,49 @@ the following codes.
- 0x2019
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`9`
@@ -7229,49 +7276,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7298,49 +7345,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`9`
@@ -7367,49 +7414,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7438,49 +7485,49 @@ the following codes.
- 0x200b
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7507,49 +7554,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`9`
@@ -7576,49 +7623,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7645,49 +7692,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`9`
@@ -7716,49 +7763,49 @@ the following codes.
- 0x200c
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7785,49 +7832,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`9`
@@ -7854,49 +7901,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -7923,49 +7970,49 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`9`
@@ -7994,45 +8041,45 @@ the following codes.
- 0x2013
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8065,45 +8112,45 @@ the following codes.
- 0x201c
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`11`
@@ -8134,45 +8181,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8203,45 +8250,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`11`
@@ -8272,45 +8319,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8343,45 +8390,45 @@ the following codes.
- 0x201d
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`11`
@@ -8412,45 +8459,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8481,45 +8528,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`11`
@@ -8550,45 +8597,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8621,45 +8668,45 @@ the following codes.
- 0x201e
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8690,45 +8737,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`11`
@@ -8759,45 +8806,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8828,45 +8875,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`11`
@@ -8899,45 +8946,45 @@ the following codes.
- 0x201f
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -8968,45 +9015,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`11`
@@ -9037,45 +9084,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -9106,45 +9153,45 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`11`
@@ -9177,37 +9224,37 @@ the following codes.
- 0x200f
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -9246,37 +9293,37 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -9317,37 +9364,37 @@ the following codes.
- 0x2010
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -9386,37 +9433,37 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`7`
@@ -9457,37 +9504,37 @@ the following codes.
- 0x2011
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -9526,37 +9573,37 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -9597,37 +9644,37 @@ the following codes.
- 0x2012
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -9666,37 +9713,37 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -9737,37 +9784,37 @@ the following codes.
- 0x2014
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -9806,37 +9853,37 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -9875,37 +9922,37 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -9944,37 +9991,37 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -10015,29 +10062,29 @@ the following codes.
- 0x201a
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`9`
@@ -10084,29 +10131,29 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`9`
@@ -10155,29 +10202,29 @@ the following codes.
- 0x201b
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`9`
@@ -10224,29 +10271,29 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`9`
@@ -10295,29 +10342,29 @@ the following codes.
- 0x200d
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -10364,29 +10411,29 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -10435,29 +10482,29 @@ the following codes.
- 0x200e
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -10504,29 +10551,29 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -10575,21 +10622,21 @@ the following codes.
- 0x201a
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`7`
@@ -10646,21 +10693,21 @@ the following codes.
- 0x2025
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`7`
@@ -10717,21 +10764,21 @@ the following codes.
- 0x2020
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`11`
@@ -10786,21 +10833,21 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`11`
@@ -10857,21 +10904,21 @@ the following codes.
- 0x2021
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- v\ :sub:`11`
@@ -10926,21 +10973,21 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- u\ :sub:`11`
@@ -10997,21 +11044,21 @@ the following codes.
- 0x2022
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -11066,21 +11113,21 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -11137,21 +11184,21 @@ the following codes.
- 0x2023
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -11206,21 +11253,21 @@ the following codes.
-
-
-
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- - -
+ -
- y\ :sub:`11`
@@ -11277,9 +11324,9 @@ the following codes.
- 0x2016
-
- - -
+ -
- - -
+ -
- y\ :sub:`9`
@@ -11413,6 +11460,9 @@ the following codes.
- v\ :sub:`0`
+.. raw:: latex
+
+ \endgroup
HSV/HSL Formats
^^^^^^^^^^^^^^^
@@ -11447,13 +11497,18 @@ following information.
The following table lists existing HSV/HSL formats.
+.. raw:: latex
+
+ \newline\newline\begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{6.2cm}|p{1.6cm}|p{0.7cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|
.. _v4l2-mbus-pixelcode-hsv:
.. flat-table:: HSV/HSL formats
:header-rows: 2
:stub-columns: 0
-
+ :widths: 28 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
- .. row 1
@@ -11605,6 +11660,9 @@ The following table lists existing HSV/HSL formats.
- v\ :sub:`0`
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
JPEG Compressed Formats
@@ -11626,6 +11684,8 @@ The following table lists existing JPEG compressed formats.
.. _v4l2-mbus-pixelcode-jpeg:
+.. tabularcolumns:: |p{5.6cm}|p{1.2cm}|p{10.7cm}|
+
.. flat-table:: JPEG Formats
:header-rows: 1
:stub-columns: 0
@@ -11665,6 +11725,8 @@ formats.
.. _v4l2-mbus-pixelcode-vendor-specific:
+.. tabularcolumns:: |p{6.6cm}|p{1.2cm}|p{9.7cm}|
+
.. flat-table:: Vendor and device specific formats
:header-rows: 1
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/tuner.rst b/Documentation/media/uapi/v4l/tuner.rst
index 37eb4b9b95fb..c3df65c2e320 100644
--- a/Documentation/media/uapi/v4l/tuner.rst
+++ b/Documentation/media/uapi/v4l/tuner.rst
@@ -28,7 +28,9 @@ struct :ref:`v4l2_tuner <v4l2-tuner>` returned by :ref:`VIDIOC_G_TUNER <VIDIOC_G
also contains signal status information applicable when the tuner of the
current video or radio input is queried.
-.. note:: :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` does not switch the
+.. note::
+
+ :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` does not switch the
current tuner, when there is more than one at all. The tuner is solely
determined by the current video input. Drivers must support both ioctls
and set the ``V4L2_CAP_TUNER`` flag in the struct :ref:`v4l2_capability
diff --git a/Documentation/media/uapi/v4l/userp.rst b/Documentation/media/uapi/v4l/userp.rst
index 1d8b14bd4cdc..0371e068c50b 100644
--- a/Documentation/media/uapi/v4l/userp.rst
+++ b/Documentation/media/uapi/v4l/userp.rst
@@ -88,7 +88,9 @@ To start and stop capturing or output applications call the
:ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>` and
:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctl.
-.. note:: ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` removes all buffers from
+.. note::
+
+ ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` removes all buffers from
both queues and unlocks all buffers as a side effect. Since there is no
notion of doing anything "now" on a multitasking system, if an
application needs to synchronize with another event it should examine
diff --git a/Documentation/media/uapi/v4l/v4l2-selection-flags.rst b/Documentation/media/uapi/v4l/v4l2-selection-flags.rst
index 3ce3731faf5f..9ef139f8e21d 100644
--- a/Documentation/media/uapi/v4l/v4l2-selection-flags.rst
+++ b/Documentation/media/uapi/v4l/v4l2-selection-flags.rst
@@ -6,6 +6,7 @@
Selection flags
***************
+.. tabularcolumns:: |p{5.2cm}|p{2.0cm}|p{6.5cm}|p{1.2cm}|p{1.6cm}|
.. _v4l2-selection-flags-table:
diff --git a/Documentation/media/uapi/v4l/v4l2-selection-targets.rst b/Documentation/media/uapi/v4l/v4l2-selection-targets.rst
index 7519099a50cd..a82b58f5ebcf 100644
--- a/Documentation/media/uapi/v4l/v4l2-selection-targets.rst
+++ b/Documentation/media/uapi/v4l/v4l2-selection-targets.rst
@@ -12,6 +12,8 @@ of the two interfaces they are used.
.. _v4l2-selection-targets-table:
+.. tabularcolumns:: |p{5.8cm}|p{1.4cm}|p{6.5cm}|p{1.2cm}|p{1.6cm}|
+
.. flat-table:: Selection target definitions
:header-rows: 1
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-create-bufs.rst b/Documentation/media/uapi/v4l/vidioc-create-bufs.rst
index abdc0b4d83d5..b4b16aebac98 100644
--- a/Documentation/media/uapi/v4l/vidioc-create-bufs.rst
+++ b/Documentation/media/uapi/v4l/vidioc-create-bufs.rst
@@ -75,6 +75,8 @@ than the number requested.
.. _v4l2-create-buffers:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_create_buffers
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-cropcap.rst b/Documentation/media/uapi/v4l/vidioc-cropcap.rst
index 8dcbe6d26219..e3d853356438 100644
--- a/Documentation/media/uapi/v4l/vidioc-cropcap.rst
+++ b/Documentation/media/uapi/v4l/vidioc-cropcap.rst
@@ -54,6 +54,8 @@ overlay devices.
.. _v4l2-cropcap:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_cropcap
:header-rows: 0
:stub-columns: 0
@@ -114,6 +116,8 @@ overlay devices.
.. _v4l2-rect-crop:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_rect
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-dbg-g-chip-info.rst b/Documentation/media/uapi/v4l/vidioc-dbg-g-chip-info.rst
index f7e1b80af29e..4c30b2268c70 100644
--- a/Documentation/media/uapi/v4l/vidioc-dbg-g-chip-info.rst
+++ b/Documentation/media/uapi/v4l/vidioc-dbg-g-chip-info.rst
@@ -78,6 +78,8 @@ is available from the LinuxTV v4l-dvb repository; see
instructions.
+.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
+
.. _name-v4l2-dbg-match:
.. flat-table:: struct v4l2_dbg_match
@@ -122,6 +124,8 @@ instructions.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-dbg-chip-info:
.. flat-table:: struct v4l2_dbg_chip_info
@@ -167,6 +171,8 @@ instructions.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _name-chip-match-types:
.. flat-table:: Chip Match Types
diff --git a/Documentation/media/uapi/v4l/vidioc-dbg-g-register.rst b/Documentation/media/uapi/v4l/vidioc-dbg-g-register.rst
index 09d2880e6170..cb6a878a60ea 100644
--- a/Documentation/media/uapi/v4l/vidioc-dbg-g-register.rst
+++ b/Documentation/media/uapi/v4l/vidioc-dbg-g-register.rst
@@ -86,6 +86,8 @@ It is available from the LinuxTV v4l-dvb repository; see
instructions.
+.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
+
.. _v4l2-dbg-match:
.. flat-table:: struct v4l2_dbg_match
@@ -171,6 +173,8 @@ instructions.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _chip-match-types:
.. flat-table:: Chip Match Types
diff --git a/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst b/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst
index 2a36e91b57b9..63acf4e59530 100644
--- a/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst
+++ b/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst
@@ -56,12 +56,16 @@ These ioctls are optional, not all drivers may support them. They were
introduced in Linux 3.3.
+.. tabularcolumns:: |p{1.1cm}|p{2.4cm}|p{1.2cm}|p{1.6cm}|p{10.6cm}|
+
.. _v4l2-decoder-cmd:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_decoder_cmd
:header-rows: 0
:stub-columns: 0
- :widths: 1 1 2 1 1
+ :widths: 11 24 12 16 106
- .. row 1
@@ -185,12 +189,14 @@ introduced in Linux 3.3.
+.. tabularcolumns:: |p{5.6cm}|p{0.6cm}|p{11.3cm}|
+
.. _decoder-cmds:
.. flat-table:: Decoder Commands
:header-rows: 0
:stub-columns: 0
- :widths: 3 1 4
+ :widths: 56 6 113
- .. row 1
diff --git a/Documentation/media/uapi/v4l/vidioc-dqevent.rst b/Documentation/media/uapi/v4l/vidioc-dqevent.rst
index 73c0d5be62ee..e5be2a5518af 100644
--- a/Documentation/media/uapi/v4l/vidioc-dqevent.rst
+++ b/Documentation/media/uapi/v4l/vidioc-dqevent.rst
@@ -40,8 +40,12 @@ exceptions which the application may get by e.g. using the select system
call.
+.. tabularcolumns:: |p{3.0cm}|p{4.3cm}|p{2.5cm}|p{7.7cm}|
+
.. _v4l2-event:
+.. cssclass: longtable
+
.. flat-table:: struct v4l2_event
:header-rows: 0
:stub-columns: 0
@@ -175,6 +179,10 @@ call.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
+.. cssclass:: longtable
+
.. _event-type:
.. flat-table:: Event Types
@@ -302,6 +310,8 @@ call.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-event-vsync:
.. flat-table:: struct v4l2_event_vsync
@@ -320,6 +330,8 @@ call.
+.. tabularcolumns:: |p{3.5cm}|p{3.0cm}|p{1.8cm}|p{8.5cm}|
+
.. _v4l2-event-ctrl:
.. flat-table:: struct v4l2_event_ctrl
@@ -427,6 +439,8 @@ call.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-event-frame-sync:
.. flat-table:: struct v4l2_event_frame_sync
@@ -445,6 +459,8 @@ call.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-event-src-change:
.. flat-table:: struct v4l2_event_src_change
@@ -464,6 +480,8 @@ call.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-event-motion-det:
.. flat-table:: struct v4l2_event_motion_det
@@ -507,6 +525,8 @@ call.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _ctrl-changes-flags:
.. flat-table:: Control Changes
@@ -546,6 +566,8 @@ call.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _src-changes-flags:
.. flat-table:: Source Changes
diff --git a/Documentation/media/uapi/v4l/vidioc-dv-timings-cap.rst b/Documentation/media/uapi/v4l/vidioc-dv-timings-cap.rst
index 6e05957013bb..7054e36e061f 100644
--- a/Documentation/media/uapi/v4l/vidioc-dv-timings-cap.rst
+++ b/Documentation/media/uapi/v4l/vidioc-dv-timings-cap.rst
@@ -39,7 +39,9 @@ initialize the ``pad`` field to 0, zero the reserved array of struct
``VIDIOC_DV_TIMINGS_CAP`` ioctl on a video node and the driver will fill
in the structure.
-.. note:: Drivers may return different values after
+.. note::
+
+ Drivers may return different values after
switching the video input or output.
When implemented by the driver DV capabilities of subdevices can be
@@ -52,6 +54,8 @@ zero the ``reserved`` array. Attempts to query capabilities on a pad
that doesn't support them will return an ``EINVAL`` error code.
+.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.3cm}|
+
.. _v4l2-bt-timings-cap:
.. flat-table:: struct v4l2_bt_timings_cap
@@ -132,10 +136,12 @@ that doesn't support them will return an ``EINVAL`` error code.
- ``reserved``\ [16]
- - Reserved for future extensions. Drivers must set the array to
- zero.
+ - Reserved for future extensions.
+ Drivers must set the array to zero.
+
+.. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{3.5cm}|p{9.5cm}|
.. _v4l2-dv-timings-cap:
@@ -169,8 +175,9 @@ that doesn't support them will return an ``EINVAL`` error code.
- ``reserved``\ [2]
- - Reserved for future extensions. Drivers and applications must set
- the array to zero.
+ - Reserved for future extensions.
+
+ Drivers and applications must set the array to zero.
- .. row 4
@@ -197,7 +204,7 @@ that doesn't support them will return an ``EINVAL`` error code.
-
-
+.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. _dv-bt-cap-capabilities:
diff --git a/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst b/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst
index 69bd9b4e0e56..795d9215017a 100644
--- a/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst
+++ b/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst
@@ -64,6 +64,8 @@ These ioctls are optional, not all drivers may support them. They were
introduced in Linux 2.6.21.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-encoder-cmd:
.. flat-table:: struct v4l2_encoder_cmd
@@ -101,6 +103,8 @@ introduced in Linux 2.6.21.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _encoder-cmds:
.. flat-table:: Encoder Commands
@@ -161,6 +165,7 @@ introduced in Linux 2.6.21.
flags are defined for this command.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _encoder-flags:
diff --git a/Documentation/media/uapi/v4l/vidioc-enum-dv-timings.rst b/Documentation/media/uapi/v4l/vidioc-enum-dv-timings.rst
index 3ba75d3fb93c..c386045885f2 100644
--- a/Documentation/media/uapi/v4l/vidioc-enum-dv-timings.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enum-dv-timings.rst
@@ -49,7 +49,9 @@ error code when the index is out of bounds. To enumerate all supported
DV timings, applications shall begin at index zero, incrementing by one
until the driver returns ``EINVAL``.
-.. note:: Drivers may enumerate a different set of DV timings after
+.. note::
+
+ Drivers may enumerate a different set of DV timings after
switching the video input or output.
When implemented by the driver DV timings of subdevices can be queried
@@ -64,6 +66,8 @@ return an ``EINVAL`` error code.
.. _v4l2-enum-dv-timings:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_enum_dv_timings
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-enum-fmt.rst b/Documentation/media/uapi/v4l/vidioc-enum-fmt.rst
index 90996f69d6ae..da0b888c01cb 100644
--- a/Documentation/media/uapi/v4l/vidioc-enum-fmt.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enum-fmt.rst
@@ -40,10 +40,14 @@ fill the rest of the structure or return an ``EINVAL`` error code. All
formats are enumerable by beginning at index zero and incrementing by
one until ``EINVAL`` is returned.
-.. note:: After switching input or output the list of enumerated image
+.. note::
+
+ After switching input or output the list of enumerated image
formats may be different.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-fmtdesc:
.. flat-table:: struct v4l2_fmtdesc
@@ -51,7 +55,6 @@ one until ``EINVAL`` is returned.
:stub-columns: 0
:widths: 1 1 2
-
- .. row 1
- __u32
@@ -104,16 +107,18 @@ one until ``EINVAL`` is returned.
- :cspan:`2`
-
.. _v4l2-fourcc:
- .. code-block:: c
- #define v4l2_fourcc(a,b,c,d) (((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))
+ ``#define v4l2_fourcc(a,b,c,d)``
+
+ ``(((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))``
Several image formats are already defined by this specification in
:ref:`pixfmt`.
- .. attention:: These codes are not the same as those used
+ .. attention::
+
+ These codes are not the same as those used
in the Windows world.
- .. row 7
@@ -127,6 +132,8 @@ one until ``EINVAL`` is returned.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _fmtdesc-flags:
.. flat-table:: Image Format Description Flags
diff --git a/Documentation/media/uapi/v4l/vidioc-enum-frameintervals.rst b/Documentation/media/uapi/v4l/vidioc-enum-frameintervals.rst
index ceae6003039e..7541158e16d2 100644
--- a/Documentation/media/uapi/v4l/vidioc-enum-frameintervals.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enum-frameintervals.rst
@@ -73,7 +73,9 @@ the device supports. Only for the ``V4L2_FRMIVAL_TYPE_DISCRETE`` type
does it make sense to increase the index value to receive more frame
intervals.
-.. note:: The order in which the frame intervals are returned has no
+.. note::
+
+ The order in which the frame intervals are returned has no
special meaning. In particular does it not say anything about potential
default frame intervals.
@@ -103,6 +105,8 @@ application should zero out all members except for the *IN* fields.
.. _v4l2-frmival-stepwise:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_frmival_stepwise
:header-rows: 0
:stub-columns: 0
@@ -231,6 +235,8 @@ Enums
.. _v4l2-frmivaltypes:
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table:: enum v4l2_frmivaltypes
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-enum-framesizes.rst b/Documentation/media/uapi/v4l/vidioc-enum-framesizes.rst
index 8b268354d442..1c23da3f26bc 100644
--- a/Documentation/media/uapi/v4l/vidioc-enum-framesizes.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enum-framesizes.rst
@@ -72,7 +72,9 @@ the ``type`` field to determine the type of frame size enumeration the
device supports. Only for the ``V4L2_FRMSIZE_TYPE_DISCRETE`` type does
it make sense to increase the index value to receive more frame sizes.
-.. note:: The order in which the frame sizes are returned has no special
+.. note::
+
+ The order in which the frame sizes are returned has no special
meaning. In particular does it not say anything about potential default
format sizes.
@@ -92,6 +94,8 @@ application should zero out all members except for the *IN* fields.
.. _v4l2-frmsize-discrete:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_frmsize_discrete
:header-rows: 0
:stub-columns: 0
@@ -118,6 +122,8 @@ application should zero out all members except for the *IN* fields.
.. _v4l2-frmsize-stepwise:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_frmsize_stepwise
:header-rows: 0
:stub-columns: 0
@@ -252,6 +258,8 @@ Enums
.. _v4l2-frmsizetypes:
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table:: enum v4l2_frmsizetypes
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-enum-freq-bands.rst b/Documentation/media/uapi/v4l/vidioc-enum-freq-bands.rst
index 00ab5e19cc1d..8fac84d839f4 100644
--- a/Documentation/media/uapi/v4l/vidioc-enum-freq-bands.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enum-freq-bands.rst
@@ -43,6 +43,8 @@ This ioctl is supported if the ``V4L2_TUNER_CAP_FREQ_BANDS`` capability
of the corresponding tuner/modulator is set.
+.. tabularcolumns:: |p{2.9cm}|p{2.9cm}|p{5.8cm}|p{2.9cm}|p{3.0cm}|
+
.. _v4l2-frequency-band:
.. flat-table:: struct v4l2_frequency_band
@@ -129,7 +131,9 @@ of the corresponding tuner/modulator is set.
- :cspan:`2` The supported modulation systems of this frequency
band. See :ref:`band-modulation`.
- .. note:: Currently only one modulation system per frequency band
+ .. note::
+
+ 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
@@ -142,10 +146,13 @@ of the corresponding tuner/modulator is set.
- ``reserved``\ [9]
- - Reserved for future extensions. Applications and drivers must set
- the array to zero.
+ - Reserved for future extensions.
+
+ Applications and drivers must set the array to zero.
+
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _band-modulation:
diff --git a/Documentation/media/uapi/v4l/vidioc-enumaudioout.rst b/Documentation/media/uapi/v4l/vidioc-enumaudioout.rst
index cde1db55834f..3112b43242f2 100644
--- a/Documentation/media/uapi/v4l/vidioc-enumaudioout.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enumaudioout.rst
@@ -41,7 +41,9 @@ structure or return an ``EINVAL`` error code when the index is out of
bounds. To enumerate all audio outputs applications shall begin at index
zero, incrementing by one until the driver returns ``EINVAL``.
-.. note:: Connectors on a TV card to loop back the received audio signal
+.. note::
+
+ Connectors on a TV card to loop back the received audio signal
to a sound card are not audio outputs in this sense.
See :ref:`VIDIOC_G_AUDIOout <VIDIOC_G_AUDOUT>` for a description of struct
diff --git a/Documentation/media/uapi/v4l/vidioc-enuminput.rst b/Documentation/media/uapi/v4l/vidioc-enuminput.rst
index 5060f54e3d18..f8188070335e 100644
--- a/Documentation/media/uapi/v4l/vidioc-enuminput.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enuminput.rst
@@ -41,6 +41,8 @@ index is out of bounds. To enumerate all inputs applications shall begin
at index zero, incrementing by one until the driver returns ``EINVAL``.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-input:
.. flat-table:: struct v4l2_input
@@ -148,6 +150,8 @@ at index zero, incrementing by one until the driver returns ``EINVAL``.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _input-type:
.. flat-table:: Input Types
@@ -175,6 +179,8 @@ at index zero, incrementing by one until the driver returns ``EINVAL``.
+.. tabularcolumns:: |p{4.8cm}|p{2.6cm}|p{10.1cm}|
+
.. _input-status:
.. flat-table:: Input Status Flags
@@ -318,6 +324,8 @@ at index zero, incrementing by one until the driver returns ``EINVAL``.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _input-capabilities:
.. flat-table:: Input capabilities
diff --git a/Documentation/media/uapi/v4l/vidioc-enumoutput.rst b/Documentation/media/uapi/v4l/vidioc-enumoutput.rst
index 82fc9d3b237f..6d50b297b0aa 100644
--- a/Documentation/media/uapi/v4l/vidioc-enumoutput.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enumoutput.rst
@@ -42,6 +42,8 @@ shall begin at index zero, incrementing by one until the driver returns
EINVAL.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-output:
.. flat-table:: struct v4l2_output
@@ -138,6 +140,8 @@ EINVAL.
+.. tabularcolumns:: |p{7.0cm}|p{1.8cm}|p{8.7cm}|
+
.. _output-type:
.. flat-table:: Output Type
@@ -173,6 +177,8 @@ EINVAL.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _output-capabilities:
.. flat-table:: Output capabilities
diff --git a/Documentation/media/uapi/v4l/vidioc-enumstd.rst b/Documentation/media/uapi/v4l/vidioc-enumstd.rst
index 6699b26cdeb4..22b4bcde7a79 100644
--- a/Documentation/media/uapi/v4l/vidioc-enumstd.rst
+++ b/Documentation/media/uapi/v4l/vidioc-enumstd.rst
@@ -46,6 +46,8 @@ or output. [#f1]_
.. _v4l2-standard:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_standard
:header-rows: 0
:stub-columns: 0
@@ -114,6 +116,8 @@ or output. [#f1]_
.. _v4l2-fract:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_fract
:header-rows: 0
:stub-columns: 0
@@ -137,6 +141,7 @@ or output. [#f1]_
-
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-std-id:
@@ -266,10 +271,16 @@ support digital TV. See also the Linux DVB API at
#define V4L2_STD_ALL (V4L2_STD_525_60 |
V4L2_STD_625_50)
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
+
+.. NTSC/M PAL/M /N /B /D /H /I SECAM/B /D /K1 /L
+.. tabularcolumns:: |p{2.7cm}|p{2.6cm}|p{3.0cm}|p{3.2cm}|p{3.2cm}|p{2.2cm}|p{1.2cm}|p{3.2cm}|p{3.0cm}|p{2.0cm}|p{2.0cm}|p{2.0cm}|
.. _video-standards:
-.. flat-table:: Video Standards (based on [])
+.. flat-table:: Video Standards (based on :ref:`itu470`)
:header-rows: 1
:stub-columns: 0
@@ -306,7 +317,7 @@ support digital TV. See also the Linux DVB API at
- :cspan:`1` 525
- - :cspan:`9` 625
+ - :cspan:`8` 625
- .. row 3
@@ -314,7 +325,7 @@ support digital TV. See also the Linux DVB API at
- :cspan:`1` 1001/30000
- - :cspan:`9` 1/25
+ - :cspan:`8` 1/25
- .. row 4
@@ -324,14 +335,17 @@ support digital TV. See also the Linux DVB API at
- 3579611.49 ± 10
- - 4433618.75 ± 5 (3582056.25 ± 5)
+ - 4433618.75 ± 5
+
+ (3582056.25 ± 5)
- :cspan:`3` 4433618.75 ± 5
- 4433618.75 ± 1
- - :cspan:`3` f\ :sub:`OR` = 4406250 ± 2000, f\ :sub:`OB` = 4250000
- ± 2000
+ - :cspan:`2` f\ :sub:`OR` = 4406250 ± 2000,
+
+ f\ :sub:`OB` = 4250000 ± 2000
- .. row 5
@@ -363,27 +377,32 @@ support digital TV. See also the Linux DVB API at
- Sound carrier relative to vision carrier (MHz)
- - + 4.5
+ - 4.5
+
+ - 4.5
+
+ - 4.5
+
+ - 5.5 ± 0.001 [#f4]_ [#f5]_ [#f6]_ [#f7]_
- - + 4.5
+ - 6.5 ± 0.001
- - + 4.5
+ - 5.5
- - + 5.5 ± 0.001 [#f4]_ [#f5]_ [#f6]_ [#f7]_
+ - 5.9996 ± 0.0005
- - + 6.5 ± 0.001
+ - 5.5 ± 0.001
- - + 5.5
+ - 6.5 ± 0.001
- - + 5.9996 ± 0.0005
+ - 6.5
- - + 5.5 ± 0.001
+ - 6.5 [#f8]_
- - + 6.5 ± 0.001
+.. raw:: latex
- - + 6.5
+ \end{adjustbox}\newline\newline
- - + 6.5 [#f8]_
Return Value
diff --git a/Documentation/media/uapi/v4l/vidioc-expbuf.rst b/Documentation/media/uapi/v4l/vidioc-expbuf.rst
index ded708e647fa..67f72ced2a00 100644
--- a/Documentation/media/uapi/v4l/vidioc-expbuf.rst
+++ b/Documentation/media/uapi/v4l/vidioc-expbuf.rst
@@ -118,6 +118,8 @@ Examples
.. _v4l2-exportbuffer:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_exportbuffer
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-audio.rst b/Documentation/media/uapi/v4l/vidioc-g-audio.rst
index cccbcdb8c463..703091ba1391 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-audio.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-audio.rst
@@ -50,6 +50,8 @@ cannot be satisfied. However, this is a write-only ioctl, it does not
return the actual new audio mode.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-audio:
.. flat-table:: struct v4l2_audio
@@ -104,6 +106,8 @@ return the actual new audio mode.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _audio-capability:
.. flat-table:: Audio Capability Flags
@@ -133,6 +137,8 @@ return the actual new audio mode.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _audio-mode:
.. flat-table:: Audio Mode Flags
diff --git a/Documentation/media/uapi/v4l/vidioc-g-audioout.rst b/Documentation/media/uapi/v4l/vidioc-g-audioout.rst
index b1c1bfeb251e..1420ddebefd0 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-audioout.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-audioout.rst
@@ -51,12 +51,16 @@ return the ``EINVAL`` error code when the index is out of bounds. This is a
write-only ioctl, it does not return the current audio output attributes
as ``VIDIOC_G_AUDOUT`` does.
-.. note:: Connectors on a TV card to loop back the received audio signal
+.. note::
+
+ Connectors on a TV card to loop back the received audio signal
to a sound card are not audio outputs in this sense.
.. _v4l2-audioout:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_audioout
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-crop.rst b/Documentation/media/uapi/v4l/vidioc-g-crop.rst
index 6cf76497937c..08df93224a38 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-crop.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-crop.rst
@@ -78,6 +78,8 @@ When cropping is not supported then no parameters are changed and
.. _v4l2-crop:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_crop
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-ctrl.rst b/Documentation/media/uapi/v4l/vidioc-g-ctrl.rst
index ee929f692ebe..e585b04b3f00 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-ctrl.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-ctrl.rst
@@ -56,6 +56,8 @@ These ioctls work only with user controls. For other control classes the
.. _v4l2-control:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_control
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst b/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst
index f7bf21f49092..013f49210de9 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst
@@ -68,6 +68,8 @@ EBUSY
The device is busy and therefore can not change the timings.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-bt-timings:
.. flat-table:: struct v4l2_bt_timings
@@ -221,6 +223,8 @@ EBUSY
+.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{7.0cm}|p{3.5cm}|
+
.. _v4l2-dv-timings:
.. flat-table:: struct v4l2_dv_timings
@@ -263,7 +267,7 @@ EBUSY
-
-
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _dv-timing-types:
@@ -310,11 +314,6 @@ EBUSY
- Description
- - .. row 2
-
- -
- -
-
- .. row 3
- ``V4L2_DV_BT_STD_CEA861``
@@ -340,6 +339,7 @@ EBUSY
- The timings follow the VESA Generalized Timings Formula standard
+.. tabularcolumns:: |p{6.0cm}|p{11.5cm}|
.. _dv-bt-flags:
@@ -354,11 +354,6 @@ EBUSY
- Description
- - .. row 2
-
- -
- -
-
- .. row 3
- ``V4L2_DV_FL_REDUCED_BLANKING``
diff --git a/Documentation/media/uapi/v4l/vidioc-g-edid.rst b/Documentation/media/uapi/v4l/vidioc-g-edid.rst
index 1a982b68a72f..721d17fc829e 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-edid.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-edid.rst
@@ -67,7 +67,9 @@ total number of available EDID blocks and it will return 0 without
copying any data. This is an easy way to discover how many EDID blocks
there are.
-.. note:: If there are no EDID blocks available at all, then
+.. note::
+
+ If there are no EDID blocks available at all, then
the driver will set ``blocks`` to 0 and it returns 0.
To set the EDID blocks of a receiver the application has to fill in the
@@ -90,6 +92,8 @@ EDID is no longer available.
.. _v4l2-edid:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_edid
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-enc-index.rst b/Documentation/media/uapi/v4l/vidioc-g-enc-index.rst
index f0f41ac56b80..64e74786babf 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-enc-index.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-enc-index.rst
@@ -57,12 +57,14 @@ Currently this ioctl is only defined for MPEG-2 program streams and
video elementary streams.
+.. tabularcolumns:: |p{3.5cm}|p{5.6cm}|p{8.4cm}|
+
.. _v4l2-enc-idx:
.. flat-table:: struct v4l2_enc_idx
:header-rows: 0
:stub-columns: 0
- :widths: 1 1 2 1 1
+ :widths: 1 3 8
- .. row 1
@@ -88,7 +90,7 @@ video elementary streams.
- ``reserved``\ [4]
- - :cspan:`2` Reserved for future extensions. Drivers must set the
+ - Reserved for future extensions. Drivers must set the
array to zero.
- .. row 4
@@ -103,6 +105,8 @@ video elementary streams.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-enc-idx-entry:
.. flat-table:: struct v4l2_enc_idx_entry
@@ -159,6 +163,7 @@ video elementary streams.
zero.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _enc-idx-flags:
diff --git a/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst b/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst
index 39e24ad4b825..f0d33298f329 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst
@@ -95,8 +95,12 @@ were set/get. Only low-level errors (e. g. a failed i2c command) can
still cause this situation.
+.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{1.5cm}|p{11.8cm}|
+
.. _v4l2-ext-control:
+.. cssclass: longtable
+
.. flat-table:: struct v4l2_ext_control
:header-rows: 0
:stub-columns: 0
@@ -127,7 +131,9 @@ still cause this situation.
to a value large enough to store the payload result and ``ENOSPC`` is
returned.
- .. note:: For string controls, this ``size`` field should
+ .. note::
+
+ For string controls, this ``size`` field should
not be confused with the length of the string. This field refers
to the size of the memory that contains the string. The actual
*length* of the string may well be much smaller.
@@ -223,9 +229,12 @@ still cause this situation.
``V4L2_CTRL_FLAG_HAS_PAYLOAD`` is set for this control.
+.. tabularcolumns:: |p{4.0cm}|p{2.0cm}|p{2.0cm}|p{8.5cm}|
.. _v4l2-ext-controls:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_ext_controls
:header-rows: 0
:stub-columns: 0
@@ -265,7 +274,9 @@ still cause this situation.
control and ``V4L2_CTRL_WHICH_DEF_VAL`` will return the default
value of the control.
- .. note:: You can only get the default value of the control,
+ .. note::
+
+ You can only get the default value of the control,
you cannot set or try it.
For backwards compatibility you can also use a control class here
@@ -340,8 +351,9 @@ still cause this situation.
- ``reserved``\ [2]
- - Reserved for future extensions. Drivers and applications must set
- the array to zero.
+ - Reserved for future extensions.
+
+ Drivers and applications must set the array to zero.
- .. row 7
@@ -350,9 +362,11 @@ still cause this situation.
- ``controls``
- Pointer to an array of ``count`` v4l2_ext_control structures.
+
Ignored if ``count`` equals zero.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _ctrl-class:
diff --git a/Documentation/media/uapi/v4l/vidioc-g-fbuf.rst b/Documentation/media/uapi/v4l/vidioc-g-fbuf.rst
index d182d9f5a50d..562505c5db0b 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-fbuf.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-fbuf.rst
@@ -76,8 +76,12 @@ hardware, therefore only the superuser can set the parameters for a
destructive video overlay.
+.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
+
.. _v4l2-framebuffer:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_framebuffer
:header-rows: 0
:stub-columns: 0
@@ -280,6 +284,7 @@ destructive video overlay.
- Reserved. Drivers and applications must set this field to zero.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _framebuffer-cap:
@@ -368,9 +373,12 @@ destructive video overlay.
exactly opposite of ``V4L2_FBUF_CAP_CHROMAKEY``
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _framebuffer-flags:
+.. cssclass:: longtable
+
.. flat-table:: Frame Buffer Flags
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-fmt.rst b/Documentation/media/uapi/v4l/vidioc-g-fmt.rst
index ee6f11978fd6..94e42ac3d4d8 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-fmt.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-fmt.rst
@@ -84,6 +84,8 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
.. _v4l2-format:
+.. tabularcolumns:: |p{1.2cm}|p{4.3cm}|p{3.0cm}|p{9.0cm}|
+
.. flat-table:: struct v4l2_format
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-frequency.rst b/Documentation/media/uapi/v4l/vidioc-g-frequency.rst
index a1fd2a870de4..c0468ff3546e 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-frequency.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-frequency.rst
@@ -52,6 +52,8 @@ assumes the closest possible value. However :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_F
write-only ioctl, it does not return the actual new frequency.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-frequency:
.. flat-table:: struct v4l2_frequency
diff --git a/Documentation/media/uapi/v4l/vidioc-g-jpegcomp.rst b/Documentation/media/uapi/v4l/vidioc-g-jpegcomp.rst
index f5bf8b7915ed..a5a997db7a33 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-jpegcomp.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-jpegcomp.rst
@@ -55,6 +55,8 @@ encoded. If you omit them, applications assume you've used standard
encoding. You usually do want to add them.
+.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.3cm}|
+
.. _v4l2-jpegcompression:
.. flat-table:: struct v4l2_jpegcompression
@@ -126,6 +128,7 @@ encoding. You usually do want to add them.
and ignore this field.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _jpeg-markers:
diff --git a/Documentation/media/uapi/v4l/vidioc-g-modulator.rst b/Documentation/media/uapi/v4l/vidioc-g-modulator.rst
index a2e8c73f0678..0b362fc8ec29 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-modulator.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-modulator.rst
@@ -61,6 +61,8 @@ To change the radio frequency the
:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl is available.
+.. tabularcolumns:: |p{2.9cm}|p{2.9cm}|p{5.8cm}|p{2.9cm}|p{3.0cm}|
+
.. _v4l2-modulator:
.. flat-table:: struct v4l2_modulator
@@ -83,8 +85,9 @@ To change the radio frequency the
- ``name``\ [32]
- - Name of the modulator, a NUL-terminated ASCII string. This
- information is intended for the user.
+ - Name of the modulator, a NUL-terminated ASCII string.
+
+ This information is intended for the user.
- .. row 3
@@ -130,7 +133,9 @@ To change the radio frequency the
shall be modulated. It contains a set of flags as defined in
:ref:`modulator-txsubchans`.
- .. note:: The tuner ``rxsubchans`` flags are reused, but the
+ .. note::
+
+ The tuner ``rxsubchans`` flags are reused, but the
semantics are different. Video output devices
are assumed to have an analog or PCM audio input with 1-3
channels. The ``txsubchans`` flags select one or more channels
@@ -151,10 +156,13 @@ To change the radio frequency the
- ``reserved``\ [3]
- - Reserved for future extensions. Drivers and applications must set
- the array to zero.
+ - Reserved for future extensions.
+
+ Drivers and applications must set the array to zero.
+
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _modulator-txsubchans:
diff --git a/Documentation/media/uapi/v4l/vidioc-g-parm.rst b/Documentation/media/uapi/v4l/vidioc-g-parm.rst
index 7116e0decddc..1b044613ab68 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-parm.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-parm.rst
@@ -50,6 +50,8 @@ pointer to a struct :ref:`struct v4l2_streamparm <v4l2-streamparm>` which contai
union holding separate parameters for input and output devices.
+.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
+
.. _v4l2-streamparm:
.. flat-table:: struct v4l2_streamparm
@@ -109,6 +111,8 @@ union holding separate parameters for input and output devices.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-captureparm:
.. flat-table:: struct v4l2_captureparm
@@ -190,6 +194,8 @@ union holding separate parameters for input and output devices.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-outputparm:
.. flat-table:: struct v4l2_outputparm
@@ -278,6 +284,8 @@ union holding separate parameters for input and output devices.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _parm-caps:
.. flat-table:: Streaming Parameters Capabilites
@@ -297,6 +305,8 @@ union holding separate parameters for input and output devices.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _parm-flags:
.. flat-table:: Capture Parameters Flags
diff --git a/Documentation/media/uapi/v4l/vidioc-g-priority.rst b/Documentation/media/uapi/v4l/vidioc-g-priority.rst
index 9f774ce400a4..3f021e6b9d0d 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-priority.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-priority.rst
@@ -47,6 +47,8 @@ with a pointer to this variable.
.. _v4l2-priority:
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. flat-table:: enum v4l2_priority
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-selection.rst b/Documentation/media/uapi/v4l/vidioc-g-selection.rst
index 953931fabd00..8e72f93a358e 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-selection.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-selection.rst
@@ -137,6 +137,8 @@ Selection targets and flags are documented in
.. _v4l2-selection:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_selection
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-g-sliced-vbi-cap.rst b/Documentation/media/uapi/v4l/vidioc-g-sliced-vbi-cap.rst
index f1f661d0200c..87c23f289fb4 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-sliced-vbi-cap.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-sliced-vbi-cap.rst
@@ -40,12 +40,16 @@ output device, applications initialize the ``type`` field of a struct
driver fills in the remaining fields or returns an ``EINVAL`` error code if
the sliced VBI API is unsupported or ``type`` is invalid.
-.. note:: The ``type`` field was added, and the ioctl changed from read-only
+.. note::
+
+ The ``type`` field was added, and the ioctl changed from read-only
to write-read, in Linux 2.6.19.
.. _v4l2-sliced-vbi-cap:
+.. tabularcolumns:: |p{1.2cm}|p{4.2cm}|p{4.1cm}|p{4.0cm}|p{4.0cm}|
+
.. flat-table:: struct v4l2_sliced_vbi_cap
:header-rows: 0
:stub-columns: 0
@@ -59,6 +63,7 @@ the sliced VBI API is unsupported or ``type`` is invalid.
- ``service_set``
- :cspan:`2` A set of all data services supported by the driver.
+
Equal to the union of all elements of the ``service_lines`` array.
- .. row 2
@@ -70,8 +75,7 @@ the sliced VBI API is unsupported or ``type`` is invalid.
- :cspan:`2` Each element of this array contains a set of data
services the hardware can look for or insert into a particular
scan line. Data services are defined in :ref:`vbi-services`.
- Array indices map to ITU-R line numbers (see also :ref:`vbi-525`
- and :ref:`vbi-625`) as follows:
+ Array indices map to ITU-R line numbers\ [#f1]_ as follows:
- .. row 3
@@ -167,9 +171,19 @@ the sliced VBI API is unsupported or ``type`` is invalid.
- ``reserved``\ [3]
- :cspan:`2` This array is reserved for future extensions.
+
Applications and drivers must set it to zero.
+.. [#f1]
+
+ See also :ref:`vbi-525` and :ref:`vbi-625`.
+
+.. raw:: latex
+
+ \begin{adjustbox}{width=\columnwidth}
+
+.. tabularcolumns:: |p{5.0cm}|p{1.4cm}|p{3.0cm}|p{2.5cm}|p{9.0cm}|
.. _vbi-services:
@@ -197,7 +211,9 @@ the sliced VBI API is unsupported or ``type`` is invalid.
- 0x0001
- - :ref:`ets300706`, :ref:`itu653`
+ - :ref:`ets300706`,
+
+ :ref:`itu653`
- PAL/SECAM line 7-22, 320-335 (second field 7-22)
@@ -236,7 +252,9 @@ the sliced VBI API is unsupported or ``type`` is invalid.
- 0x4000
- - :ref:`en300294`, :ref:`itu1119`
+ - :ref:`en300294`,
+
+ :ref:`itu1119`
- PAL/SECAM line 23
@@ -264,6 +282,10 @@ the sliced VBI API is unsupported or ``type`` is invalid.
- :cspan:`2` Set of services applicable to 625 line systems.
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
+
Return Value
============
diff --git a/Documentation/media/uapi/v4l/vidioc-g-tuner.rst b/Documentation/media/uapi/v4l/vidioc-g-tuner.rst
index 614db06b8b4b..e53abcbe9ea1 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-tuner.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-tuner.rst
@@ -60,8 +60,12 @@ To change the radio frequency the
:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl is available.
+ .. tabularcolumns:: |p{1.3cm}|p{3.0cm}|p{6.6cm}|p{6.6cm}|
+
.. _v4l2-tuner:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_tuner
:header-rows: 0
:stub-columns: 0
@@ -83,8 +87,9 @@ To change the radio frequency the
- :cspan:`1`
- Name of the tuner, a NUL-terminated ASCII string. This information
- is intended for the user.
+ Name of the tuner, a NUL-terminated ASCII string.
+
+ This information is intended for the user.
- .. row 3
@@ -230,8 +235,9 @@ To change the radio frequency the
- ``signal``
- - :cspan:`1` The signal strength if known, ranging from 0 to
- 65535. Higher values indicate a better signal.
+ - :cspan:`1` The signal strength if known.
+
+ Ranging from 0 to 65535. Higher values indicate a better signal.
- .. row 16
@@ -239,8 +245,10 @@ To change the radio frequency the
- ``afc``
- - :cspan:`1` Automatic frequency control: When the ``afc`` value
- is negative, the frequency is too low, when positive too high.
+ - :cspan:`1` Automatic frequency control.
+
+ When the ``afc`` value is negative, the frequency is too
+ low, when positive too high.
- .. row 17
@@ -248,17 +256,20 @@ To change the radio frequency the
- ``reserved``\ [4]
- - :cspan:`1` Reserved for future extensions. Drivers and
- applications must set the array to zero.
+ - :cspan:`1` Reserved for future extensions.
+ Drivers and applications must set the array to zero.
+
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _v4l2-tuner-type:
.. flat-table:: enum v4l2_tuner_type
:header-rows: 0
:stub-columns: 0
- :widths: 3 1 4
+ :widths: 3 1 6
- .. row 1
@@ -267,7 +278,7 @@ To change the radio frequency the
- 1
- -
+ - Tuner supports radio
- .. row 2
@@ -275,7 +286,7 @@ To change the radio frequency the
- 2
- -
+ - Tuner supports analog TV
- .. row 3
@@ -283,7 +294,8 @@ To change the radio frequency the
- 4
- -
+ - Tuner controls the A/D and/or D/A block of a
+ Sofware Digital Radio (SDR)
- .. row 4
@@ -291,12 +303,15 @@ To change the radio frequency the
- 5
- -
+ - Tuner controls the RF part of a Sofware Digital Radio (SDR)
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
.. _tuner-capability:
+.. cssclass:: longtable
+
.. flat-table:: Tuner and Modulator Capability Flags
:header-rows: 0
:stub-columns: 0
@@ -391,7 +406,9 @@ To change the radio frequency the
carrier for a monaural secondary language. Only
``V4L2_TUNER_ANALOG_TV`` tuners can have this capability.
- .. note:: The ``V4L2_TUNER_CAP_LANG2`` and ``V4L2_TUNER_CAP_SAP``
+ .. note::
+
+ The ``V4L2_TUNER_CAP_LANG2`` and ``V4L2_TUNER_CAP_SAP``
flags are synonyms. ``V4L2_TUNER_CAP_SAP`` applies when the tuner
supports the ``V4L2_STD_NTSC_M`` video standard.
@@ -451,6 +468,8 @@ To change the radio frequency the
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _tuner-rxsubchans:
.. flat-table:: Tuner Audio Reception Flags
@@ -502,7 +521,9 @@ To change the radio frequency the
- The tuner receives a Second Audio Program.
- .. note:: The ``V4L2_TUNER_SUB_LANG2`` and ``V4L2_TUNER_SUB_SAP``
+ .. note::
+
+ The ``V4L2_TUNER_SUB_LANG2`` and ``V4L2_TUNER_SUB_SAP``
flags are synonyms. The ``V4L2_TUNER_SUB_SAP`` flag applies
when the current video standard is ``V4L2_STD_NTSC_M``.
@@ -516,6 +537,8 @@ To change the radio frequency the
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _tuner-audmode:
.. flat-table:: Tuner Audio Modes
@@ -596,7 +619,9 @@ To change the radio frequency the
``MODE_MONO``. Only ``V4L2_TUNER_ANALOG_TV`` tuners support this
mode.
+.. raw:: latex
+ \begin{adjustbox}{width=\columnwidth}
.. _tuner-matrix:
@@ -694,6 +719,9 @@ To change the radio frequency the
- Lang1/Lang2 (preferred) or Lang1/Lang1
+.. raw:: latex
+
+ \end{adjustbox}\newline\newline
Return Value
============
diff --git a/Documentation/media/uapi/v4l/vidioc-qbuf.rst b/Documentation/media/uapi/v4l/vidioc-qbuf.rst
index 3b927f36fb5b..31c360d7d1a6 100644
--- a/Documentation/media/uapi/v4l/vidioc-qbuf.rst
+++ b/Documentation/media/uapi/v4l/vidioc-qbuf.rst
@@ -137,7 +137,9 @@ EIO
``VIDIOC_DQBUF`` failed due to an internal error. Can also indicate
temporary problems like signal loss.
- .. note:: The driver might dequeue an (empty) buffer despite returning
+ .. note::
+
+ The driver might dequeue an (empty) buffer despite returning
an error, or even stop capturing. Reusing such buffer may be unsafe
though and its details (e.g. ``index``) may not be returned either.
It is recommended that drivers indicate recoverable errors by setting
diff --git a/Documentation/media/uapi/v4l/vidioc-query-dv-timings.rst b/Documentation/media/uapi/v4l/vidioc-query-dv-timings.rst
index 416d8d604af4..6a87f44cdf3f 100644
--- a/Documentation/media/uapi/v4l/vidioc-query-dv-timings.rst
+++ b/Documentation/media/uapi/v4l/vidioc-query-dv-timings.rst
@@ -39,7 +39,9 @@ similar to sensing the video standard. To do so, applications call
:ref:`v4l2_dv_timings <v4l2-dv-timings>`. Once the hardware detects
the timings, it will fill in the timings structure.
-.. note:: Drivers shall *not* switch timings automatically if new
+.. note::
+
+ Drivers shall *not* switch timings automatically if new
timings are detected. Instead, drivers should send the
``V4L2_EVENT_SOURCE_CHANGE`` event (if they support this) and expect
that userspace will take action by calling :ref:`VIDIOC_QUERY_DV_TIMINGS`.
diff --git a/Documentation/media/uapi/v4l/vidioc-querycap.rst b/Documentation/media/uapi/v4l/vidioc-querycap.rst
index b10fed313f99..5b9922e83c58 100644
--- a/Documentation/media/uapi/v4l/vidioc-querycap.rst
+++ b/Documentation/media/uapi/v4l/vidioc-querycap.rst
@@ -41,13 +41,14 @@ filled by the driver. When the driver is not compatible with this
specification the ioctl returns an ``EINVAL`` error code.
+.. tabularcolumns:: |p{1.5cm}|p{2.5cm}|p{13cm}|
+
.. _v4l2-capability:
.. flat-table:: struct v4l2_capability
:header-rows: 0
:stub-columns: 0
- :widths: 1 1 2
-
+ :widths: 3 4 20
- .. row 1
@@ -117,17 +118,13 @@ specification the ioctl returns an ``EINVAL`` error code.
- :cspan:`2`
+ ``#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))``
- .. code-block:: c
-
- #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+ ``__u32 version = KERNEL_VERSION(0, 8, 1);``
- __u32 version = KERNEL_VERSION(0, 8, 1);
+ ``printf ("Version: %u.%u.%u\\n",``
- printf ("Version: %u.%u.%u\\n",
- (version >> 16) & 0xFF,
- (version >> 8) & 0xFF,
- version & 0xFF);
+ ``(version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF);``
- .. row 6
@@ -173,14 +170,17 @@ specification the ioctl returns an ``EINVAL`` error code.
+.. tabularcolumns:: |p{6cm}|p{2.2cm}|p{8.8cm}|
+
.. _device-capabilities:
+.. cssclass:: longtable
+
.. flat-table:: Device Capabilities Flags
:header-rows: 0
:stub-columns: 0
:widths: 3 1 4
-
- .. row 1
- ``V4L2_CAP_VIDEO_CAPTURE``
diff --git a/Documentation/media/uapi/v4l/vidioc-queryctrl.rst b/Documentation/media/uapi/v4l/vidioc-queryctrl.rst
index 8d6e61a7284d..6e4912f2e3a4 100644
--- a/Documentation/media/uapi/v4l/vidioc-queryctrl.rst
+++ b/Documentation/media/uapi/v4l/vidioc-queryctrl.rst
@@ -84,7 +84,9 @@ fills the rest of the structure or returns an ``EINVAL`` error code when the
:ref:`v4l2_queryctrl <v4l2-queryctrl>` ``minimum`` to ``maximum``,
inclusive.
-.. note:: It is possible for ``VIDIOC_QUERYMENU`` to return
+.. note::
+
+ It is possible for ``VIDIOC_QUERYMENU`` to return
an ``EINVAL`` error code for some indices between ``minimum`` and
``maximum``. In that case that particular menu item is not supported by
this driver. Also note that the ``minimum`` value is not necessarily 0.
@@ -92,8 +94,12 @@ inclusive.
See also the examples in :ref:`control`.
+.. tabularcolumns:: |p{1.2cm}|p{3.6cm}|p{12.7cm}|
+
.. _v4l2-queryctrl:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_queryctrl
:header-rows: 0
:stub-columns: 0
@@ -188,7 +194,9 @@ See also the examples in :ref:`control`.
``_BITMASK``, ``_MENU`` or ``_INTEGER_MENU`` control. Not valid
for other types of controls.
- .. note:: Drivers reset controls to their default value only when
+ .. note::
+
+ Drivers reset controls to their default value only when
the driver is first loaded, never afterwards.
- .. row 8
@@ -210,8 +218,12 @@ See also the examples in :ref:`control`.
+.. tabularcolumns:: |p{1.2cm}|p{5.0cm}|p{11.3cm}|
+
.. _v4l2-query-ext-ctrl:
+.. cssclass:: longtable
+
.. flat-table:: struct v4l2_query_ext_ctrl
:header-rows: 0
:stub-columns: 0
@@ -306,7 +318,9 @@ See also the examples in :ref:`control`.
``_BOOLEAN``, ``_BITMASK``, ``_MENU``, ``_INTEGER_MENU``, ``_U8``
or ``_U16`` control. Not valid for other types of controls.
- .. note:: Drivers reset controls to their default value only when
+ .. note::
+
+ Drivers reset controls to their default value only when
the driver is first loaded, never afterwards.
- .. row 8
@@ -370,6 +384,8 @@ See also the examples in :ref:`control`.
+.. tabularcolumns:: |p{1.2cm}|p{0.6cm}|p{1.6cm}|p{13.5cm}|
+
.. _v4l2-querymenu:
.. flat-table:: struct v4l2_querymenu
@@ -438,8 +454,12 @@ See also the examples in :ref:`control`.
+.. tabularcolumns:: |p{5.8cm}|p{1.4cm}|p{1.0cm}|p{1.4cm}|p{6.9cm}|
+
.. _v4l2-ctrl-type:
+.. cssclass:: longtable
+
.. flat-table:: enum v4l2_ctrl_type
:header-rows: 1
:stub-columns: 0
@@ -635,8 +655,12 @@ See also the examples in :ref:`control`.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _control-flags:
+.. cssclass:: longtable
+
.. flat-table:: Control Flags
:header-rows: 0
:stub-columns: 0
@@ -728,7 +752,9 @@ See also the examples in :ref:`control`.
case the hardware calculates the gain value based on the lighting
conditions which can change over time.
- .. note:: Setting a new value for a volatile control will have no
+ .. note::
+
+ Setting a new value for a volatile control will have no
effect and no ``V4L2_EVENT_CTRL_CH_VALUE`` will be sent, unless
the ``V4L2_CTRL_FLAG_EXECUTE_ON_WRITE`` flag (see below) is
also set. Otherwise the new value will just be ignored.
diff --git a/Documentation/media/uapi/v4l/vidioc-querystd.rst b/Documentation/media/uapi/v4l/vidioc-querystd.rst
index b4a4e222c7b0..cb03d249417c 100644
--- a/Documentation/media/uapi/v4l/vidioc-querystd.rst
+++ b/Documentation/media/uapi/v4l/vidioc-querystd.rst
@@ -43,7 +43,9 @@ will return V4L2_STD_UNKNOWN. When detection is not possible or fails,
the set must contain all standards supported by the current video input
or output.
-.. note:: Drivers shall *not* switch the video standard
+.. note::
+
+ Drivers shall *not* switch the video standard
automatically if a new video standard is detected. Instead, drivers
should send the ``V4L2_EVENT_SOURCE_CHANGE`` event (if they support
this) and expect that userspace will take action by calling
diff --git a/Documentation/media/uapi/v4l/vidioc-reqbufs.rst b/Documentation/media/uapi/v4l/vidioc-reqbufs.rst
index 5d0bc6d31c07..8be9343802dc 100644
--- a/Documentation/media/uapi/v4l/vidioc-reqbufs.rst
+++ b/Documentation/media/uapi/v4l/vidioc-reqbufs.rst
@@ -69,6 +69,8 @@ any DMA in progress, an implicit
.. _v4l2-requestbuffers:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_requestbuffers
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-s-hw-freq-seek.rst b/Documentation/media/uapi/v4l/vidioc-s-hw-freq-seek.rst
index 5fd332a5bfee..2bc10ebb12a4 100644
--- a/Documentation/media/uapi/v4l/vidioc-s-hw-freq-seek.rst
+++ b/Documentation/media/uapi/v4l/vidioc-s-hw-freq-seek.rst
@@ -61,6 +61,8 @@ If this ioctl is called from a non-blocking filehandle, then ``EAGAIN``
error code is returned and no seek takes place.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-hw-freq-seek:
.. flat-table:: struct v4l2_hw_freq_seek
diff --git a/Documentation/media/uapi/v4l/vidioc-streamon.rst b/Documentation/media/uapi/v4l/vidioc-streamon.rst
index bb23745ebcaf..7fa4362f9a81 100644
--- a/Documentation/media/uapi/v4l/vidioc-streamon.rst
+++ b/Documentation/media/uapi/v4l/vidioc-streamon.rst
@@ -76,7 +76,9 @@ then 0 is returned. Nothing happens in the case of ``VIDIOC_STREAMON``,
but ``VIDIOC_STREAMOFF`` will return queued buffers to their starting
state as mentioned above.
-.. note:: Applications can be preempted for unknown periods right before
+.. note::
+
+ Applications can be preempted for unknown periods right before
or after the ``VIDIOC_STREAMON`` or ``VIDIOC_STREAMOFF`` calls, there is
no notion of starting or stopping "now". Buffer timestamps can be used
to synchronize with other events.
diff --git a/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-interval.rst b/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-interval.rst
index 0aa6482a91a6..1c853f3f5676 100644
--- a/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-interval.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-interval.rst
@@ -64,6 +64,8 @@ multiple pads of the same sub-device is not defined.
.. _v4l2-subdev-frame-interval-enum:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_subdev_frame_interval_enum
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-size.rst b/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-size.rst
index 7a5811b71b68..e1bcc69f67db 100644
--- a/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-size.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-size.rst
@@ -66,6 +66,8 @@ information about try formats.
.. _v4l2-subdev-frame-size-enum:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_subdev_frame_size_enum
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-subdev-enum-mbus-code.rst b/Documentation/media/uapi/v4l/vidioc-subdev-enum-mbus-code.rst
index bc0531eb56fa..418d543ebbbf 100644
--- a/Documentation/media/uapi/v4l/vidioc-subdev-enum-mbus-code.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subdev-enum-mbus-code.rst
@@ -51,6 +51,8 @@ information about the try formats.
.. _v4l2-subdev-mbus-code-enum:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_subdev_mbus_code_enum
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-subdev-g-crop.rst b/Documentation/media/uapi/v4l/vidioc-subdev-g-crop.rst
index ae802f1594e7..7caa04e1c2a8 100644
--- a/Documentation/media/uapi/v4l/vidioc-subdev-g-crop.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subdev-g-crop.rst
@@ -74,6 +74,8 @@ modified format should be as close as possible to the original request.
.. _v4l2-subdev-crop:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_subdev_crop
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst b/Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst
index 90e2a6635ebc..f5e9b40b22f4 100644
--- a/Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst
@@ -75,6 +75,8 @@ format to match what the hardware can provide. The modified format
should be as close as possible to the original request.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-subdev-format:
.. flat-table:: struct v4l2_subdev_format
@@ -120,6 +122,8 @@ should be as close as possible to the original request.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _v4l2-subdev-format-whence:
.. flat-table:: enum v4l2_subdev_format_whence
diff --git a/Documentation/media/uapi/v4l/vidioc-subdev-g-frame-interval.rst b/Documentation/media/uapi/v4l/vidioc-subdev-g-frame-interval.rst
index d8a1cabbd272..2df2d8635f2b 100644
--- a/Documentation/media/uapi/v4l/vidioc-subdev-g-frame-interval.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subdev-g-frame-interval.rst
@@ -69,6 +69,8 @@ the same sub-device is not defined.
.. _v4l2-subdev-frame-interval:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_subdev_frame_interval
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-subdev-g-selection.rst b/Documentation/media/uapi/v4l/vidioc-subdev-g-selection.rst
index 50838a4a429e..c59a32e0cc20 100644
--- a/Documentation/media/uapi/v4l/vidioc-subdev-g-selection.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subdev-g-selection.rst
@@ -66,6 +66,8 @@ Selection targets and flags are documented in
.. _v4l2-subdev-selection:
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. flat-table:: struct v4l2_subdev_selection
:header-rows: 0
:stub-columns: 0
diff --git a/Documentation/media/uapi/v4l/vidioc-subscribe-event.rst b/Documentation/media/uapi/v4l/vidioc-subscribe-event.rst
index 3f28e8c47960..71079746ddac 100644
--- a/Documentation/media/uapi/v4l/vidioc-subscribe-event.rst
+++ b/Documentation/media/uapi/v4l/vidioc-subscribe-event.rst
@@ -38,6 +38,8 @@ Subscribe or unsubscribe V4L2 event. Subscribed events are dequeued by
using the :ref:`VIDIOC_DQEVENT` ioctl.
+.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
+
.. _v4l2-event-subscription:
.. flat-table:: struct v4l2_event_subscription
@@ -54,7 +56,9 @@ using the :ref:`VIDIOC_DQEVENT` ioctl.
- Type of the event, see :ref:`event-type`.
- .. note:: ``V4L2_EVENT_ALL`` can be used with
+ .. note::
+
+ ``V4L2_EVENT_ALL`` can be used with
:ref:`VIDIOC_UNSUBSCRIBE_EVENT <VIDIOC_SUBSCRIBE_EVENT>` for
unsubscribing all events at once.
@@ -87,6 +91,8 @@ using the :ref:`VIDIOC_DQEVENT` ioctl.
+.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
+
.. _event-flags:
.. flat-table:: Event Flags
diff --git a/Documentation/media/v4l-drivers/bttv.rst b/Documentation/media/v4l-drivers/bttv.rst
index f78c135b40e7..7abc1c9a261b 100644
--- a/Documentation/media/v4l-drivers/bttv.rst
+++ b/Documentation/media/v4l-drivers/bttv.rst
@@ -586,6 +586,7 @@ Cards
-----
.. note::
+
For a more updated list, please check
https://linuxtv.org/wiki/index.php/Hardware_Device_Information
diff --git a/Documentation/media/v4l-drivers/cpia2.rst b/Documentation/media/v4l-drivers/cpia2.rst
index 763705c1f50f..b5125016cfcb 100644
--- a/Documentation/media/v4l-drivers/cpia2.rst
+++ b/Documentation/media/v4l-drivers/cpia2.rst
@@ -55,6 +55,9 @@ may be done automatically by your distribution.
Driver options
~~~~~~~~~~~~~~
+.. tabularcolumns:: |p{13ex}|L|
+
+
============== ========================================================
Option Description
============== ========================================================
diff --git a/Documentation/media/v4l-drivers/si476x.rst b/Documentation/media/v4l-drivers/si476x.rst
index d5c07bb7524d..677512566f15 100644
--- a/Documentation/media/v4l-drivers/si476x.rst
+++ b/Documentation/media/v4l-drivers/si476x.rst
@@ -31,31 +31,33 @@ The drivers exposes following files:
information. The contents of the file is binary data of the
following layout:
+ .. tabularcolumns:: |p{7ex}|p{12ex}|L|
+
============= ============== ====================================
- Offset Name Description
+ Offset Name Description
============= ============== ====================================
- 0x00 blend_int Flag, set when stereo separation has
+ 0x00 blend_int Flag, set when stereo separation has
crossed below the blend threshold
- 0x01 hblend_int Flag, set when HiBlend cutoff
+ 0x01 hblend_int Flag, set when HiBlend cutoff
frequency is lower than threshold
- 0x02 hicut_int Flag, set when HiCut cutoff
+ 0x02 hicut_int Flag, set when HiCut cutoff
frequency is lower than threshold
- 0x03 chbw_int Flag, set when channel filter
+ 0x03 chbw_int Flag, set when channel filter
bandwidth is less than threshold
- 0x04 softmute_int Flag indicating that softmute
+ 0x04 softmute_int Flag indicating that softmute
attenuation has increased above
softmute threshold
0x05 smute 0 - Audio is not soft muted
1 - Audio is soft muted
- 0x06 smattn Soft mute attenuation level in dB
- 0x07 chbw Channel filter bandwidth in kHz
- 0x08 hicut HiCut cutoff frequency in units of
+ 0x06 smattn Soft mute attenuation level in dB
+ 0x07 chbw Channel filter bandwidth in kHz
+ 0x08 hicut HiCut cutoff frequency in units of
100Hz
- 0x09 hiblend HiBlend cutoff frequency in units
+ 0x09 hiblend HiBlend cutoff frequency in units
of 100 Hz
- 0x10 pilot 0 - Stereo pilot is not present
+ 0x10 pilot 0 - Stereo pilot is not present
1 - Stereo pilot is present
- 0x11 stblend Stereo blend in %
+ 0x11 stblend Stereo blend in %
============= ============== ====================================
@@ -63,12 +65,14 @@ The drivers exposes following files:
This file contains statistics about RDS receptions. It's binary data
has the following layout:
+ .. tabularcolumns:: |p{7ex}|p{12ex}|L|
+
============= ============== ====================================
- Offset Name Description
+ Offset Name Description
============= ============== ====================================
- 0x00 expected Number of expected RDS blocks
- 0x02 received Number of received RDS blocks
- 0x04 uncorrectable Number of uncorrectable RDS blocks
+ 0x00 expected Number of expected RDS blocks
+ 0x02 received Number of received RDS blocks
+ 0x04 uncorrectable Number of uncorrectable RDS blocks
============= ============== ====================================
* /sys/kernel/debug/<device-name>/agc
@@ -77,21 +81,23 @@ The drivers exposes following files:
The layout is:
+ .. tabularcolumns:: |p{7ex}|p{12ex}|L|
+
============= ============== ====================================
- Offset Name Description
+ Offset Name Description
============= ============== ====================================
- 0x00 mxhi 0 - FM Mixer PD high threshold is
+ 0x00 mxhi 0 - FM Mixer PD high threshold is
not tripped
1 - FM Mixer PD high threshold is
tripped
- 0x01 mxlo ditto for FM Mixer PD low
- 0x02 lnahi ditto for FM LNA PD high
- 0x03 lnalo ditto for FM LNA PD low
- 0x04 fmagc1 FMAGC1 attenuator resistance
+ 0x01 mxlo ditto for FM Mixer PD low
+ 0x02 lnahi ditto for FM LNA PD high
+ 0x03 lnalo ditto for FM LNA PD low
+ 0x04 fmagc1 FMAGC1 attenuator resistance
(see datasheet for more detail)
- 0x05 fmagc2 ditto for FMAGC2
- 0x06 pgagain PGA gain in dB
- 0x07 fmwblang FM/WB LNA Gain in dB
+ 0x05 fmagc2 ditto for FMAGC2
+ 0x06 pgagain PGA gain in dB
+ 0x07 fmwblang FM/WB LNA Gain in dB
============= ============== ====================================
* /sys/kernel/debug/<device-name>/rsq
@@ -100,48 +106,50 @@ The drivers exposes following files:
The layout is:
+ .. tabularcolumns:: |p{7ex}|p{12ex}|p{60ex}|
+
============= ============== ====================================
- Offset Name Description
+ Offset Name Description
============= ============== ====================================
- 0x00 multhint 0 - multipath value has not crossed
+ 0x00 multhint 0 - multipath value has not crossed
the Multipath high threshold
1 - multipath value has crossed
the Multipath high threshold
- 0x01 multlint ditto for Multipath low threshold
- 0x02 snrhint 0 - received signal's SNR has not
+ 0x01 multlint ditto for Multipath low threshold
+ 0x02 snrhint 0 - received signal's SNR has not
crossed high threshold
1 - received signal's SNR has
crossed high threshold
- 0x03 snrlint ditto for low threshold
- 0x04 rssihint ditto for RSSI high threshold
- 0x05 rssilint ditto for RSSI low threshold
- 0x06 bltf Flag indicating if seek command
+ 0x03 snrlint ditto for low threshold
+ 0x04 rssihint ditto for RSSI high threshold
+ 0x05 rssilint ditto for RSSI low threshold
+ 0x06 bltf Flag indicating if seek command
reached/wrapped seek band limit
- 0x07 snr_ready Indicates that SNR metrics is ready
- 0x08 rssiready ditto for RSSI metrics
- 0x09 injside 0 - Low-side injection is being used
+ 0x07 snr_ready Indicates that SNR metrics is ready
+ 0x08 rssiready ditto for RSSI metrics
+ 0x09 injside 0 - Low-side injection is being used
1 - High-side injection is used
- 0x10 afcrl Flag indicating if AFC rails
- 0x11 valid Flag indicating if channel is valid
- 0x12 readfreq Current tuned frequency
- 0x14 freqoff Signed frequency offset in units of
+ 0x10 afcrl Flag indicating if AFC rails
+ 0x11 valid Flag indicating if channel is valid
+ 0x12 readfreq Current tuned frequency
+ 0x14 freqoff Signed frequency offset in units of
2ppm
- 0x15 rssi Signed value of RSSI in dBuV
- 0x16 snr Signed RF SNR in dB
- 0x17 issi Signed Image Strength Signal
+ 0x15 rssi Signed value of RSSI in dBuV
+ 0x16 snr Signed RF SNR in dB
+ 0x17 issi Signed Image Strength Signal
indicator
- 0x18 lassi Signed Low side adjacent Channel
+ 0x18 lassi Signed Low side adjacent Channel
Strength indicator
- 0x19 hassi ditto fpr High side
- 0x20 mult Multipath indicator
- 0x21 dev Frequency deviation
- 0x24 assi Adjacent channel SSI
- 0x25 usn Ultrasonic noise indicator
- 0x26 pilotdev Pilot deviation in units of 100 Hz
- 0x27 rdsdev ditto for RDS
- 0x28 assidev ditto for ASSI
- 0x29 strongdev Frequency deviation
- 0x30 rdspi RDS PI code
+ 0x19 hassi ditto fpr High side
+ 0x20 mult Multipath indicator
+ 0x21 dev Frequency deviation
+ 0x24 assi Adjacent channel SSI
+ 0x25 usn Ultrasonic noise indicator
+ 0x26 pilotdev Pilot deviation in units of 100 Hz
+ 0x27 rdsdev ditto for RDS
+ 0x28 assidev ditto for ASSI
+ 0x29 strongdev Frequency deviation
+ 0x30 rdspi RDS PI code
============= ============== ====================================
* /sys/kernel/debug/<device-name>/rsq_primary
diff --git a/Documentation/media/v4l-drivers/zr364xx.rst b/Documentation/media/v4l-drivers/zr364xx.rst
index d8d1171887cd..f5280e366826 100644
--- a/Documentation/media/v4l-drivers/zr364xx.rst
+++ b/Documentation/media/v4l-drivers/zr364xx.rst
@@ -5,7 +5,7 @@ site: http://royale.zerezo.com/zr364xx/
-.. note:
+.. note::
This documentation is outdated
diff --git a/MAINTAINERS b/MAINTAINERS
index 810723537aa5..7e09a5169a5f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7733,6 +7733,14 @@ T: git git://git.monstr.eu/linux-2.6-microblaze.git
S: Supported
F: arch/microblaze/
+MICROCHIP / ATMEL ISC DRIVER
+M: Songjun Wu <[email protected]>
+S: Supported
+F: drivers/media/platform/atmel/atmel-isc.c
+F: drivers/media/platform/atmel/atmel-isc-regs.h
+F: devicetree/bindings/media/atmel-isc.txt
+
MICROSOFT SURFACE PRO 3 BUTTON DRIVER
M: Chen Yu <[email protected]>
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index f25344bc7912..b23db1779808 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -111,6 +111,7 @@ source "drivers/media/platform/s5p-tv/Kconfig"
source "drivers/media/platform/am437x/Kconfig"
source "drivers/media/platform/xilinx/Kconfig"
source "drivers/media/platform/rcar-vin/Kconfig"
+source "drivers/media/platform/atmel/Kconfig"
config VIDEO_TI_CAL
tristate "TI CAL (Camera Adaptation Layer) driver"
diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
index 21771c1a13fb..37b6c75f0b15 100644
--- a/drivers/media/platform/Makefile
+++ b/drivers/media/platform/Makefile
@@ -58,6 +58,8 @@ obj-$(CONFIG_VIDEO_XILINX) += xilinx/
obj-$(CONFIG_VIDEO_RCAR_VIN) += rcar-vin/
+obj-$(CONFIG_VIDEO_ATMEL_ISC) += atmel/
+
ccflags-y += -I$(srctree)/drivers/media/i2c
obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/
diff --git a/drivers/media/platform/atmel/Kconfig b/drivers/media/platform/atmel/Kconfig
new file mode 100644
index 000000000000..867dca22a473
--- /dev/null
+++ b/drivers/media/platform/atmel/Kconfig
@@ -0,0 +1,9 @@
+config VIDEO_ATMEL_ISC
+ tristate "ATMEL Image Sensor Controller (ISC) support"
+ depends on VIDEO_V4L2 && COMMON_CLK && VIDEO_V4L2_SUBDEV_API && HAS_DMA
+ depends on ARCH_AT91 || COMPILE_TEST
+ select VIDEOBUF2_DMA_CONTIG
+ select REGMAP_MMIO
+ help
+ This module makes the ATMEL Image Sensor Controller available
+ as a v4l2 device. \ No newline at end of file
diff --git a/drivers/media/platform/atmel/Makefile b/drivers/media/platform/atmel/Makefile
new file mode 100644
index 000000000000..9d7c999d434d
--- /dev/null
+++ b/drivers/media/platform/atmel/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_VIDEO_ATMEL_ISC) += atmel-isc.o
diff --git a/drivers/media/platform/atmel/atmel-isc-regs.h b/drivers/media/platform/atmel/atmel-isc-regs.h
new file mode 100644
index 000000000000..00c449717cde
--- /dev/null
+++ b/drivers/media/platform/atmel/atmel-isc-regs.h
@@ -0,0 +1,165 @@
+#ifndef __ATMEL_ISC_REGS_H
+#define __ATMEL_ISC_REGS_H
+
+#include <linux/bitops.h>
+
+/* ISC Control Enable Register 0 */
+#define ISC_CTRLEN 0x00000000
+
+/* ISC Control Disable Register 0 */
+#define ISC_CTRLDIS 0x00000004
+
+/* ISC Control Status Register 0 */
+#define ISC_CTRLSR 0x00000008
+
+#define ISC_CTRL_CAPTURE BIT(0)
+#define ISC_CTRL_UPPRO BIT(1)
+#define ISC_CTRL_HISREQ BIT(2)
+#define ISC_CTRL_HISCLR BIT(3)
+
+/* ISC Parallel Front End Configuration 0 Register */
+#define ISC_PFE_CFG0 0x0000000c
+
+#define ISC_PFE_CFG0_HPOL_LOW BIT(0)
+#define ISC_PFE_CFG0_VPOL_LOW BIT(1)
+#define ISC_PFE_CFG0_PPOL_LOW BIT(2)
+
+#define ISC_PFE_CFG0_MODE_PROGRESSIVE (0x0 << 4)
+#define ISC_PFE_CFG0_MODE_MASK GENMASK(6, 4)
+
+#define ISC_PFE_CFG0_BPS_EIGHT (0x4 << 28)
+#define ISC_PFG_CFG0_BPS_NINE (0x3 << 28)
+#define ISC_PFG_CFG0_BPS_TEN (0x2 << 28)
+#define ISC_PFG_CFG0_BPS_ELEVEN (0x1 << 28)
+#define ISC_PFG_CFG0_BPS_TWELVE (0x0 << 28)
+#define ISC_PFE_CFG0_BPS_MASK GENMASK(30, 28)
+
+/* ISC Clock Enable Register */
+#define ISC_CLKEN 0x00000018
+
+/* ISC Clock Disable Register */
+#define ISC_CLKDIS 0x0000001c
+
+/* ISC Clock Status Register */
+#define ISC_CLKSR 0x00000020
+
+#define ISC_CLK(n) BIT(n)
+
+/* ISC Clock Configuration Register */
+#define ISC_CLKCFG 0x00000024
+#define ISC_CLKCFG_DIV_SHIFT(n) ((n)*16)
+#define ISC_CLKCFG_DIV_MASK(n) GENMASK(((n)*16 + 7), (n)*16)
+#define ISC_CLKCFG_SEL_SHIFT(n) ((n)*16 + 8)
+#define ISC_CLKCFG_SEL_MASK(n) GENMASK(((n)*17 + 8), ((n)*16 + 8))
+
+/* ISC Interrupt Enable Register */
+#define ISC_INTEN 0x00000028
+
+/* ISC Interrupt Disable Register */
+#define ISC_INTDIS 0x0000002c
+
+/* ISC Interrupt Mask Register */
+#define ISC_INTMASK 0x00000030
+
+/* ISC Interrupt Status Register */
+#define ISC_INTSR 0x00000034
+
+#define ISC_INT_DDONE BIT(8)
+
+/* ISC White Balance Control Register */
+#define ISC_WB_CTRL 0x00000058
+
+/* ISC White Balance Configuration Register */
+#define ISC_WB_CFG 0x0000005c
+
+/* ISC Color Filter Array Control Register */
+#define ISC_CFA_CTRL 0x00000070
+
+/* ISC Color Filter Array Configuration Register */
+#define ISC_CFA_CFG 0x00000074
+
+#define ISC_BAY_CFG_GRGR 0x0
+#define ISC_BAY_CFG_RGRG 0x1
+#define ISC_BAY_CFG_GBGB 0x2
+#define ISC_BAY_CFG_BGBG 0x3
+#define ISC_BAY_CFG_MASK GENMASK(1, 0)
+
+/* ISC Color Correction Control Register */
+#define ISC_CC_CTRL 0x00000078
+
+/* ISC Gamma Correction Control Register */
+#define ISC_GAM_CTRL 0x00000094
+
+/* Color Space Conversion Control Register */
+#define ISC_CSC_CTRL 0x00000398
+
+/* Contrast And Brightness Control Register */
+#define ISC_CBC_CTRL 0x000003b4
+
+/* Subsampling 4:4:4 to 4:2:2 Control Register */
+#define ISC_SUB422_CTRL 0x000003c4
+
+/* Subsampling 4:2:2 to 4:2:0 Control Register */
+#define ISC_SUB420_CTRL 0x000003cc
+
+/* Rounding, Limiting and Packing Configuration Register */
+#define ISC_RLP_CFG 0x000003d0
+
+#define ISC_RLP_CFG_MODE_DAT8 0x0
+#define ISC_RLP_CFG_MODE_DAT9 0x1
+#define ISC_RLP_CFG_MODE_DAT10 0x2
+#define ISC_RLP_CFG_MODE_DAT11 0x3
+#define ISC_RLP_CFG_MODE_DAT12 0x4
+#define ISC_RLP_CFG_MODE_DATY8 0x5
+#define ISC_RLP_CFG_MODE_DATY10 0x6
+#define ISC_RLP_CFG_MODE_ARGB444 0x7
+#define ISC_RLP_CFG_MODE_ARGB555 0x8
+#define ISC_RLP_CFG_MODE_RGB565 0x9
+#define ISC_RLP_CFG_MODE_ARGB32 0xa
+#define ISC_RLP_CFG_MODE_YYCC 0xb
+#define ISC_RLP_CFG_MODE_YYCC_LIMITED 0xc
+#define ISC_RLP_CFG_MODE_MASK GENMASK(3, 0)
+
+/* DMA Configuration Register */
+#define ISC_DCFG 0x000003e0
+#define ISC_DCFG_IMODE_PACKED8 0x0
+#define ISC_DCFG_IMODE_PACKED16 0x1
+#define ISC_DCFG_IMODE_PACKED32 0x2
+#define ISC_DCFG_IMODE_YC422SP 0x3
+#define ISC_DCFG_IMODE_YC422P 0x4
+#define ISC_DCFG_IMODE_YC420SP 0x5
+#define ISC_DCFG_IMODE_YC420P 0x6
+#define ISC_DCFG_IMODE_MASK GENMASK(2, 0)
+
+#define ISC_DCFG_YMBSIZE_SINGLE (0x0 << 4)
+#define ISC_DCFG_YMBSIZE_BEATS4 (0x1 << 4)
+#define ISC_DCFG_YMBSIZE_BEATS8 (0x2 << 4)
+#define ISC_DCFG_YMBSIZE_BEATS16 (0x3 << 4)
+#define ISC_DCFG_YMBSIZE_MASK GENMASK(5, 4)
+
+#define ISC_DCFG_CMBSIZE_SINGLE (0x0 << 8)
+#define ISC_DCFG_CMBSIZE_BEATS4 (0x1 << 8)
+#define ISC_DCFG_CMBSIZE_BEATS8 (0x2 << 8)
+#define ISC_DCFG_CMBSIZE_BEATS16 (0x3 << 8)
+#define ISC_DCFG_CMBSIZE_MASK GENMASK(9, 8)
+
+/* DMA Control Register */
+#define ISC_DCTRL 0x000003e4
+
+#define ISC_DCTRL_DVIEW_PACKED (0x0 << 1)
+#define ISC_DCTRL_DVIEW_SEMIPLANAR (0x1 << 1)
+#define ISC_DCTRL_DVIEW_PLANAR (0x2 << 1)
+#define ISC_DCTRL_DVIEW_MASK GENMASK(2, 1)
+
+#define ISC_DCTRL_IE_IS (0x0 << 4)
+
+/* DMA Descriptor Address Register */
+#define ISC_DNDA 0x000003e8
+
+/* DMA Address 0 Register */
+#define ISC_DAD0 0x000003ec
+
+/* DMA Stride 0 Register */
+#define ISC_DST0 0x000003f0
+
+#endif
diff --git a/drivers/media/platform/atmel/atmel-isc.c b/drivers/media/platform/atmel/atmel-isc.c
new file mode 100644
index 000000000000..f0c2512d27f0
--- /dev/null
+++ b/drivers/media/platform/atmel/atmel-isc.c
@@ -0,0 +1,1514 @@
+/*
+ * Atmel Image Sensor Controller (ISC) driver
+ *
+ * Copyright (C) 2016 Atmel
+ *
+ * Author: Songjun Wu <[email protected]>
+ *
+ * This program is free software; you may redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * Sensor-->PFE-->WB-->CFA-->CC-->GAM-->CSC-->CBC-->SUB-->RLP-->DMA
+ *
+ * ISC video pipeline integrates the following submodules:
+ * PFE: Parallel Front End to sample the camera sensor input stream
+ * WB: Programmable white balance in the Bayer domain
+ * CFA: Color filter array interpolation module
+ * CC: Programmable color correction
+ * GAM: Gamma correction
+ * CSC: Programmable color space conversion
+ * CBC: Contrast and Brightness control
+ * SUB: This module performs YCbCr444 to YCbCr420 chrominance subsampling
+ * RLP: This module performs rounding, range limiting
+ * and packing of the incoming data
+ */
+
+#include <linux/clk.h>
+#include <linux/clkdev.h>
+#include <linux/clk-provider.h>
+#include <linux/delay.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
+#include <linux/regmap.h>
+#include <linux/videodev2.h>
+
+#include <media/v4l2-device.h>
+#include <media/v4l2-image-sizes.h>
+#include <media/v4l2-ioctl.h>
+#include <media/v4l2-of.h>
+#include <media/v4l2-subdev.h>
+#include <media/videobuf2-dma-contig.h>
+
+#include "atmel-isc-regs.h"
+
+#define ATMEL_ISC_NAME "atmel_isc"
+
+#define ISC_MAX_SUPPORT_WIDTH 2592
+#define ISC_MAX_SUPPORT_HEIGHT 1944
+
+#define ISC_CLK_MAX_DIV 255
+
+enum isc_clk_id {
+ ISC_ISPCK = 0,
+ ISC_MCK = 1,
+};
+
+struct isc_clk {
+ struct clk_hw hw;
+ struct clk *clk;
+ struct regmap *regmap;
+ u8 id;
+ u8 parent_id;
+ u32 div;
+ struct device *dev;
+};
+
+#define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
+
+struct isc_buffer {
+ struct vb2_v4l2_buffer vb;
+ struct list_head list;
+};
+
+struct isc_subdev_entity {
+ struct v4l2_subdev *sd;
+ struct v4l2_async_subdev *asd;
+ struct v4l2_async_notifier notifier;
+ struct v4l2_subdev_pad_config *config;
+
+ u32 pfe_cfg0;
+
+ struct list_head list;
+};
+
+/*
+ * struct isc_format - ISC media bus format information
+ * @fourcc: Fourcc code for this format
+ * @mbus_code: V4L2 media bus format code.
+ * @bpp: Bytes per pixel (when stored in memory)
+ * @reg_bps: reg value for bits per sample
+ * (when transferred over a bus)
+ * @support: Indicates format supported by subdev
+ */
+struct isc_format {
+ u32 fourcc;
+ u32 mbus_code;
+ u8 bpp;
+
+ u32 reg_bps;
+ u32 reg_rlp_mode;
+ u32 reg_dcfg_imode;
+ u32 reg_dctrl_dview;
+
+ bool support;
+};
+
+#define ISC_PIPE_LINE_NODE_NUM 11
+
+struct isc_device {
+ struct regmap *regmap;
+ struct clk *hclock;
+ struct clk *ispck;
+ struct isc_clk isc_clks[2];
+
+ struct device *dev;
+ struct v4l2_device v4l2_dev;
+ struct video_device video_dev;
+
+ struct vb2_queue vb2_vidq;
+ spinlock_t dma_queue_lock;
+ struct list_head dma_queue;
+ struct isc_buffer *cur_frm;
+ unsigned int sequence;
+ bool stop;
+ struct completion comp;
+
+ struct v4l2_format fmt;
+ struct isc_format **user_formats;
+ unsigned int num_user_formats;
+ const struct isc_format *current_fmt;
+
+ struct mutex lock;
+
+ struct regmap_field *pipeline[ISC_PIPE_LINE_NODE_NUM];
+
+ struct isc_subdev_entity *current_subdev;
+ struct list_head subdev_entities;
+};
+
+static struct isc_format isc_formats[] = {
+ { V4L2_PIX_FMT_SBGGR8, MEDIA_BUS_FMT_SBGGR8_1X8,
+ 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_RLP_CFG_MODE_DAT8,
+ ISC_DCFG_IMODE_PACKED8, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SGBRG8, MEDIA_BUS_FMT_SGBRG8_1X8,
+ 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_RLP_CFG_MODE_DAT8,
+ ISC_DCFG_IMODE_PACKED8, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SGRBG8, MEDIA_BUS_FMT_SGRBG8_1X8,
+ 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_RLP_CFG_MODE_DAT8,
+ ISC_DCFG_IMODE_PACKED8, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SRGGB8, MEDIA_BUS_FMT_SRGGB8_1X8,
+ 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_RLP_CFG_MODE_DAT8,
+ ISC_DCFG_IMODE_PACKED8, ISC_DCTRL_DVIEW_PACKED, false },
+
+ { V4L2_PIX_FMT_SBGGR10, MEDIA_BUS_FMT_SBGGR10_1X10,
+ 2, ISC_PFG_CFG0_BPS_TEN, ISC_RLP_CFG_MODE_DAT10,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SGBRG10, MEDIA_BUS_FMT_SGBRG10_1X10,
+ 2, ISC_PFG_CFG0_BPS_TEN, ISC_RLP_CFG_MODE_DAT10,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SGRBG10, MEDIA_BUS_FMT_SGRBG10_1X10,
+ 2, ISC_PFG_CFG0_BPS_TEN, ISC_RLP_CFG_MODE_DAT10,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SRGGB10, MEDIA_BUS_FMT_SRGGB10_1X10,
+ 2, ISC_PFG_CFG0_BPS_TEN, ISC_RLP_CFG_MODE_DAT10,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+
+ { V4L2_PIX_FMT_SBGGR12, MEDIA_BUS_FMT_SBGGR12_1X12,
+ 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_RLP_CFG_MODE_DAT12,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SGBRG12, MEDIA_BUS_FMT_SGBRG12_1X12,
+ 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_RLP_CFG_MODE_DAT12,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SGRBG12, MEDIA_BUS_FMT_SGRBG12_1X12,
+ 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_RLP_CFG_MODE_DAT12,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+ { V4L2_PIX_FMT_SRGGB12, MEDIA_BUS_FMT_SRGGB12_1X12,
+ 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_RLP_CFG_MODE_DAT12,
+ ISC_DCFG_IMODE_PACKED16, ISC_DCTRL_DVIEW_PACKED, false },
+
+ { V4L2_PIX_FMT_YUYV, MEDIA_BUS_FMT_YUYV8_2X8,
+ 2, ISC_PFE_CFG0_BPS_EIGHT, ISC_RLP_CFG_MODE_DAT8,
+ ISC_DCFG_IMODE_PACKED8, ISC_DCTRL_DVIEW_PACKED, false },
+};
+
+static int isc_clk_enable(struct clk_hw *hw)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+ u32 id = isc_clk->id;
+ struct regmap *regmap = isc_clk->regmap;
+
+ dev_dbg(isc_clk->dev, "ISC CLK: %s, div = %d, parent id = %d\n",
+ __func__, isc_clk->div, isc_clk->parent_id);
+
+ regmap_update_bits(regmap, ISC_CLKCFG,
+ ISC_CLKCFG_DIV_MASK(id) | ISC_CLKCFG_SEL_MASK(id),
+ (isc_clk->div << ISC_CLKCFG_DIV_SHIFT(id)) |
+ (isc_clk->parent_id << ISC_CLKCFG_SEL_SHIFT(id)));
+
+ regmap_write(regmap, ISC_CLKEN, ISC_CLK(id));
+
+ return 0;
+}
+
+static void isc_clk_disable(struct clk_hw *hw)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+ u32 id = isc_clk->id;
+
+ regmap_write(isc_clk->regmap, ISC_CLKDIS, ISC_CLK(id));
+}
+
+static int isc_clk_is_enabled(struct clk_hw *hw)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+ u32 status;
+
+ regmap_read(isc_clk->regmap, ISC_CLKSR, &status);
+
+ return status & ISC_CLK(isc_clk->id) ? 1 : 0;
+}
+
+static unsigned long
+isc_clk_recalc_rate(struct clk_hw *hw, unsigned long parent_rate)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+
+ return DIV_ROUND_CLOSEST(parent_rate, isc_clk->div + 1);
+}
+
+static int isc_clk_determine_rate(struct clk_hw *hw,
+ struct clk_rate_request *req)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+ long best_rate = -EINVAL;
+ int best_diff = -1;
+ unsigned int i, div;
+
+ for (i = 0; i < clk_hw_get_num_parents(hw); i++) {
+ struct clk_hw *parent;
+ unsigned long parent_rate;
+
+ parent = clk_hw_get_parent_by_index(hw, i);
+ if (!parent)
+ continue;
+
+ parent_rate = clk_hw_get_rate(parent);
+ if (!parent_rate)
+ continue;
+
+ for (div = 1; div < ISC_CLK_MAX_DIV + 2; div++) {
+ unsigned long rate;
+ int diff;
+
+ rate = DIV_ROUND_CLOSEST(parent_rate, div);
+ diff = abs(req->rate - rate);
+
+ if (best_diff < 0 || best_diff > diff) {
+ best_rate = rate;
+ best_diff = diff;
+ req->best_parent_rate = parent_rate;
+ req->best_parent_hw = parent;
+ }
+
+ if (!best_diff || rate < req->rate)
+ break;
+ }
+
+ if (!best_diff)
+ break;
+ }
+
+ dev_dbg(isc_clk->dev,
+ "ISC CLK: %s, best_rate = %ld, parent clk: %s @ %ld\n",
+ __func__, best_rate,
+ __clk_get_name((req->best_parent_hw)->clk),
+ req->best_parent_rate);
+
+ if (best_rate < 0)
+ return best_rate;
+
+ req->rate = best_rate;
+
+ return 0;
+}
+
+static int isc_clk_set_parent(struct clk_hw *hw, u8 index)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+
+ if (index >= clk_hw_get_num_parents(hw))
+ return -EINVAL;
+
+ isc_clk->parent_id = index;
+
+ return 0;
+}
+
+static u8 isc_clk_get_parent(struct clk_hw *hw)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+
+ return isc_clk->parent_id;
+}
+
+static int isc_clk_set_rate(struct clk_hw *hw,
+ unsigned long rate,
+ unsigned long parent_rate)
+{
+ struct isc_clk *isc_clk = to_isc_clk(hw);
+ u32 div;
+
+ if (!rate)
+ return -EINVAL;
+
+ div = DIV_ROUND_CLOSEST(parent_rate, rate);
+ if (div > (ISC_CLK_MAX_DIV + 1) || !div)
+ return -EINVAL;
+
+ isc_clk->div = div - 1;
+
+ return 0;
+}
+
+static const struct clk_ops isc_clk_ops = {
+ .enable = isc_clk_enable,
+ .disable = isc_clk_disable,
+ .is_enabled = isc_clk_is_enabled,
+ .recalc_rate = isc_clk_recalc_rate,
+ .determine_rate = isc_clk_determine_rate,
+ .set_parent = isc_clk_set_parent,
+ .get_parent = isc_clk_get_parent,
+ .set_rate = isc_clk_set_rate,
+};
+
+static int isc_clk_register(struct isc_device *isc, unsigned int id)
+{
+ struct regmap *regmap = isc->regmap;
+ struct device_node *np = isc->dev->of_node;
+ struct isc_clk *isc_clk;
+ struct clk_init_data init;
+ const char *clk_name = np->name;
+ const char *parent_names[3];
+ int num_parents;
+
+ num_parents = of_clk_get_parent_count(np);
+ if (num_parents < 1 || num_parents > 3)
+ return -EINVAL;
+
+ if (num_parents > 2 && id == ISC_ISPCK)
+ num_parents = 2;
+
+ of_clk_parent_fill(np, parent_names, num_parents);
+
+ if (id == ISC_MCK)
+ of_property_read_string(np, "clock-output-names", &clk_name);
+ else
+ clk_name = "isc-ispck";
+
+ init.parent_names = parent_names;
+ init.num_parents = num_parents;
+ init.name = clk_name;
+ init.ops = &isc_clk_ops;
+ init.flags = CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE;
+
+ isc_clk = &isc->isc_clks[id];
+ isc_clk->hw.init = &init;
+ isc_clk->regmap = regmap;
+ isc_clk->id = id;
+ isc_clk->dev = isc->dev;
+
+ isc_clk->clk = clk_register(isc->dev, &isc_clk->hw);
+ if (IS_ERR(isc_clk->clk)) {
+ dev_err(isc->dev, "%s: clock register fail\n", clk_name);
+ return PTR_ERR(isc_clk->clk);
+ } else if (id == ISC_MCK)
+ of_clk_add_provider(np, of_clk_src_simple_get, isc_clk->clk);
+
+ return 0;
+}
+
+static int isc_clk_init(struct isc_device *isc)
+{
+ unsigned int i;
+ int ret;
+
+ for (i = 0; i < ARRAY_SIZE(isc->isc_clks); i++)
+ isc->isc_clks[i].clk = ERR_PTR(-EINVAL);
+
+ for (i = 0; i < ARRAY_SIZE(isc->isc_clks); i++) {
+ ret = isc_clk_register(isc, i);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
+static void isc_clk_cleanup(struct isc_device *isc)
+{
+ unsigned int i;
+
+ of_clk_del_provider(isc->dev->of_node);
+
+ for (i = 0; i < ARRAY_SIZE(isc->isc_clks); i++) {
+ struct isc_clk *isc_clk = &isc->isc_clks[i];
+
+ if (!IS_ERR(isc_clk->clk))
+ clk_unregister(isc_clk->clk);
+ }
+}
+
+static int isc_queue_setup(struct vb2_queue *vq,
+ unsigned int *nbuffers, unsigned int *nplanes,
+ unsigned int sizes[], struct device *alloc_devs[])
+{
+ struct isc_device *isc = vb2_get_drv_priv(vq);
+ unsigned int size = isc->fmt.fmt.pix.sizeimage;
+
+ if (*nplanes)
+ return sizes[0] < size ? -EINVAL : 0;
+
+ *nplanes = 1;
+ sizes[0] = size;
+
+ return 0;
+}
+
+static int isc_buffer_prepare(struct vb2_buffer *vb)
+{
+ struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
+ struct isc_device *isc = vb2_get_drv_priv(vb->vb2_queue);
+ unsigned long size = isc->fmt.fmt.pix.sizeimage;
+
+ if (vb2_plane_size(vb, 0) < size) {
+ v4l2_err(&isc->v4l2_dev, "buffer too small (%lu < %lu)\n",
+ vb2_plane_size(vb, 0), size);
+ return -EINVAL;
+ }
+
+ vb2_set_plane_payload(vb, 0, size);
+
+ vbuf->field = isc->fmt.fmt.pix.field;
+
+ return 0;
+}
+
+static inline void isc_start_dma(struct regmap *regmap,
+ struct isc_buffer *frm, u32 dview)
+{
+ dma_addr_t addr;
+
+ addr = vb2_dma_contig_plane_dma_addr(&frm->vb.vb2_buf, 0);
+
+ regmap_write(regmap, ISC_DCTRL, dview | ISC_DCTRL_IE_IS);
+ regmap_write(regmap, ISC_DAD0, addr);
+ regmap_write(regmap, ISC_CTRLEN, ISC_CTRL_CAPTURE);
+}
+
+static void isc_set_pipeline(struct isc_device *isc, u32 pipeline)
+{
+ u32 val;
+ unsigned int i;
+
+ for (i = 0; i < ISC_PIPE_LINE_NODE_NUM; i++) {
+ val = pipeline & BIT(i) ? 1 : 0;
+ regmap_field_write(isc->pipeline[i], val);
+ }
+}
+
+static int isc_configure(struct isc_device *isc)
+{
+ struct regmap *regmap = isc->regmap;
+ const struct isc_format *current_fmt = isc->current_fmt;
+ struct isc_subdev_entity *subdev = isc->current_subdev;
+ u32 val, mask;
+ int counter = 10;
+
+ val = current_fmt->reg_bps | subdev->pfe_cfg0 |
+ ISC_PFE_CFG0_MODE_PROGRESSIVE;
+ mask = ISC_PFE_CFG0_BPS_MASK | ISC_PFE_CFG0_HPOL_LOW |
+ ISC_PFE_CFG0_VPOL_LOW | ISC_PFE_CFG0_PPOL_LOW |
+ ISC_PFE_CFG0_MODE_MASK;
+
+ regmap_update_bits(regmap, ISC_PFE_CFG0, mask, val);
+
+ regmap_update_bits(regmap, ISC_RLP_CFG, ISC_RLP_CFG_MODE_MASK,
+ current_fmt->reg_rlp_mode);
+
+ regmap_update_bits(regmap, ISC_DCFG, ISC_DCFG_IMODE_MASK,
+ current_fmt->reg_dcfg_imode);
+
+ /* Disable the pipeline */
+ isc_set_pipeline(isc, 0x0);
+
+ /* Update profile */
+ regmap_write(regmap, ISC_CTRLEN, ISC_CTRL_UPPRO);
+
+ regmap_read(regmap, ISC_CTRLSR, &val);
+ while ((val & ISC_CTRL_UPPRO) && counter--) {
+ usleep_range(1000, 2000);
+ regmap_read(regmap, ISC_CTRLSR, &val);
+ }
+
+ if (counter < 0)
+ return -ETIMEDOUT;
+
+ return 0;
+}
+
+static int isc_start_streaming(struct vb2_queue *vq, unsigned int count)
+{
+ struct isc_device *isc = vb2_get_drv_priv(vq);
+ struct regmap *regmap = isc->regmap;
+ struct isc_buffer *buf;
+ unsigned long flags;
+ int ret;
+ u32 val;
+
+ /* Enable stream on the sub device */
+ ret = v4l2_subdev_call(isc->current_subdev->sd, video, s_stream, 1);
+ if (ret && ret != -ENOIOCTLCMD) {
+ v4l2_err(&isc->v4l2_dev, "stream on failed in subdev\n");
+ goto err_start_stream;
+ }
+
+ pm_runtime_get_sync(isc->dev);
+
+ /* Disable all the interrupts */
+ regmap_write(isc->regmap, ISC_INTDIS, (u32)~0UL);
+
+ /* Clean the interrupt status register */
+ regmap_read(regmap, ISC_INTSR, &val);
+
+ ret = isc_configure(isc);
+ if (unlikely(ret))
+ goto err_configure;
+
+ /* Enable DMA interrupt */
+ regmap_write(regmap, ISC_INTEN, ISC_INT_DDONE);
+
+ spin_lock_irqsave(&isc->dma_queue_lock, flags);
+
+ isc->sequence = 0;
+ isc->stop = false;
+ reinit_completion(&isc->comp);
+
+ isc->cur_frm = list_first_entry(&isc->dma_queue,
+ struct isc_buffer, list);
+ list_del(&isc->cur_frm->list);
+
+ isc_start_dma(regmap, isc->cur_frm, isc->current_fmt->reg_dctrl_dview);
+
+ spin_unlock_irqrestore(&isc->dma_queue_lock, flags);
+
+ return 0;
+
+err_configure:
+ pm_runtime_put_sync(isc->dev);
+
+ v4l2_subdev_call(isc->current_subdev->sd, video, s_stream, 0);
+
+err_start_stream:
+ spin_lock_irqsave(&isc->dma_queue_lock, flags);
+ list_for_each_entry(buf, &isc->dma_queue, list)
+ vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_QUEUED);
+ INIT_LIST_HEAD(&isc->dma_queue);
+ spin_unlock_irqrestore(&isc->dma_queue_lock, flags);
+
+ return ret;
+}
+
+static void isc_stop_streaming(struct vb2_queue *vq)
+{
+ struct isc_device *isc = vb2_get_drv_priv(vq);
+ unsigned long flags;
+ struct isc_buffer *buf;
+ int ret;
+
+ isc->stop = true;
+
+ /* Wait until the end of the current frame */
+ if (isc->cur_frm && !wait_for_completion_timeout(&isc->comp, 5 * HZ))
+ v4l2_err(&isc->v4l2_dev,
+ "Timeout waiting for end of the capture\n");
+
+ /* Disable DMA interrupt */
+ regmap_write(isc->regmap, ISC_INTDIS, ISC_INT_DDONE);
+
+ pm_runtime_put_sync(isc->dev);
+
+ /* Disable stream on the sub device */
+ ret = v4l2_subdev_call(isc->current_subdev->sd, video, s_stream, 0);
+ if (ret && ret != -ENOIOCTLCMD)
+ v4l2_err(&isc->v4l2_dev, "stream off failed in subdev\n");
+
+ /* Release all active buffers */
+ spin_lock_irqsave(&isc->dma_queue_lock, flags);
+ if (unlikely(isc->cur_frm)) {
+ vb2_buffer_done(&isc->cur_frm->vb.vb2_buf,
+ VB2_BUF_STATE_ERROR);
+ isc->cur_frm = NULL;
+ }
+ list_for_each_entry(buf, &isc->dma_queue, list)
+ vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
+ INIT_LIST_HEAD(&isc->dma_queue);
+ spin_unlock_irqrestore(&isc->dma_queue_lock, flags);
+}
+
+static void isc_buffer_queue(struct vb2_buffer *vb)
+{
+ struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
+ struct isc_buffer *buf = container_of(vbuf, struct isc_buffer, vb);
+ struct isc_device *isc = vb2_get_drv_priv(vb->vb2_queue);
+ unsigned long flags;
+
+ spin_lock_irqsave(&isc->dma_queue_lock, flags);
+ list_add_tail(&buf->list, &isc->dma_queue);
+ spin_unlock_irqrestore(&isc->dma_queue_lock, flags);
+}
+
+static struct vb2_ops isc_vb2_ops = {
+ .queue_setup = isc_queue_setup,
+ .wait_prepare = vb2_ops_wait_prepare,
+ .wait_finish = vb2_ops_wait_finish,
+ .buf_prepare = isc_buffer_prepare,
+ .start_streaming = isc_start_streaming,
+ .stop_streaming = isc_stop_streaming,
+ .buf_queue = isc_buffer_queue,
+};
+
+static int isc_querycap(struct file *file, void *priv,
+ struct v4l2_capability *cap)
+{
+ struct isc_device *isc = video_drvdata(file);
+
+ strcpy(cap->driver, ATMEL_ISC_NAME);
+ strcpy(cap->card, "Atmel Image Sensor Controller");
+ snprintf(cap->bus_info, sizeof(cap->bus_info),
+ "platform:%s", isc->v4l2_dev.name);
+
+ return 0;
+}
+
+static int isc_enum_fmt_vid_cap(struct file *file, void *priv,
+ struct v4l2_fmtdesc *f)
+{
+ struct isc_device *isc = video_drvdata(file);
+ u32 index = f->index;
+
+ if (index >= isc->num_user_formats)
+ return -EINVAL;
+
+ f->pixelformat = isc->user_formats[index]->fourcc;
+
+ return 0;
+}
+
+static int isc_g_fmt_vid_cap(struct file *file, void *priv,
+ struct v4l2_format *fmt)
+{
+ struct isc_device *isc = video_drvdata(file);
+
+ *fmt = isc->fmt;
+
+ return 0;
+}
+
+static struct isc_format *find_format_by_fourcc(struct isc_device *isc,
+ unsigned int fourcc)
+{
+ unsigned int num_formats = isc->num_user_formats;
+ struct isc_format *fmt;
+ unsigned int i;
+
+ for (i = 0; i < num_formats; i++) {
+ fmt = isc->user_formats[i];
+ if (fmt->fourcc == fourcc)
+ return fmt;
+ }
+
+ return NULL;
+}
+
+static int isc_try_fmt(struct isc_device *isc, struct v4l2_format *f,
+ struct isc_format **current_fmt)
+{
+ struct isc_format *isc_fmt;
+ struct v4l2_pix_format *pixfmt = &f->fmt.pix;
+ struct v4l2_subdev_format format = {
+ .which = V4L2_SUBDEV_FORMAT_TRY,
+ };
+ int ret;
+
+ if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ return -EINVAL;
+
+ isc_fmt = find_format_by_fourcc(isc, pixfmt->pixelformat);
+ if (!isc_fmt) {
+ v4l2_warn(&isc->v4l2_dev, "Format 0x%x not found\n",
+ pixfmt->pixelformat);
+ isc_fmt = isc->user_formats[isc->num_user_formats - 1];
+ pixfmt->pixelformat = isc_fmt->fourcc;
+ }
+
+ /* Limit to Atmel ISC hardware capabilities */
+ if (pixfmt->width > ISC_MAX_SUPPORT_WIDTH)
+ pixfmt->width = ISC_MAX_SUPPORT_WIDTH;
+ if (pixfmt->height > ISC_MAX_SUPPORT_HEIGHT)
+ pixfmt->height = ISC_MAX_SUPPORT_HEIGHT;
+
+ v4l2_fill_mbus_format(&format.format, pixfmt, isc_fmt->mbus_code);
+ ret = v4l2_subdev_call(isc->current_subdev->sd, pad, set_fmt,
+ isc->current_subdev->config, &format);
+ if (ret < 0)
+ return ret;
+
+ v4l2_fill_pix_format(pixfmt, &format.format);
+
+ pixfmt->field = V4L2_FIELD_NONE;
+ pixfmt->bytesperline = pixfmt->width * isc_fmt->bpp;
+ pixfmt->sizeimage = pixfmt->bytesperline * pixfmt->height;
+
+ if (current_fmt)
+ *current_fmt = isc_fmt;
+
+ return 0;
+}
+
+static int isc_set_fmt(struct isc_device *isc, struct v4l2_format *f)
+{
+ struct v4l2_subdev_format format = {
+ .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+ };
+ struct isc_format *current_fmt;
+ int ret;
+
+ ret = isc_try_fmt(isc, f, &current_fmt);
+ if (ret)
+ return ret;
+
+ v4l2_fill_mbus_format(&format.format, &f->fmt.pix,
+ current_fmt->mbus_code);
+ ret = v4l2_subdev_call(isc->current_subdev->sd, pad,
+ set_fmt, NULL, &format);
+ if (ret < 0)
+ return ret;
+
+ isc->fmt = *f;
+ isc->current_fmt = current_fmt;
+
+ return 0;
+}
+
+static int isc_s_fmt_vid_cap(struct file *file, void *priv,
+ struct v4l2_format *f)
+{
+ struct isc_device *isc = video_drvdata(file);
+
+ if (vb2_is_streaming(&isc->vb2_vidq))
+ return -EBUSY;
+
+ return isc_set_fmt(isc, f);
+}
+
+static int isc_try_fmt_vid_cap(struct file *file, void *priv,
+ struct v4l2_format *f)
+{
+ struct isc_device *isc = video_drvdata(file);
+
+ return isc_try_fmt(isc, f, NULL);
+}
+
+static int isc_enum_input(struct file *file, void *priv,
+ struct v4l2_input *inp)
+{
+ if (inp->index != 0)
+ return -EINVAL;
+
+ inp->type = V4L2_INPUT_TYPE_CAMERA;
+ inp->std = 0;
+ strcpy(inp->name, "Camera");
+
+ return 0;
+}
+
+static int isc_g_input(struct file *file, void *priv, unsigned int *i)
+{
+ *i = 0;
+
+ return 0;
+}
+
+static int isc_s_input(struct file *file, void *priv, unsigned int i)
+{
+ if (i > 0)
+ return -EINVAL;
+
+ return 0;
+}
+
+static int isc_g_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
+{
+ struct isc_device *isc = video_drvdata(file);
+
+ if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ return -EINVAL;
+
+ return v4l2_subdev_call(isc->current_subdev->sd, video, g_parm, a);
+}
+
+static int isc_s_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
+{
+ struct isc_device *isc = video_drvdata(file);
+
+ if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ return -EINVAL;
+
+ return v4l2_subdev_call(isc->current_subdev->sd, video, s_parm, a);
+}
+
+static int isc_enum_framesizes(struct file *file, void *fh,
+ struct v4l2_frmsizeenum *fsize)
+{
+ struct isc_device *isc = video_drvdata(file);
+ const struct isc_format *isc_fmt;
+ struct v4l2_subdev_frame_size_enum fse = {
+ .index = fsize->index,
+ .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+ };
+ int ret;
+
+ isc_fmt = find_format_by_fourcc(isc, fsize->pixel_format);
+ if (!isc_fmt)
+ return -EINVAL;
+
+ fse.code = isc_fmt->mbus_code;
+
+ ret = v4l2_subdev_call(isc->current_subdev->sd, pad, enum_frame_size,
+ NULL, &fse);
+ if (ret)
+ return ret;
+
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = fse.max_width;
+ fsize->discrete.height = fse.max_height;
+
+ return 0;
+}
+
+static int isc_enum_frameintervals(struct file *file, void *fh,
+ struct v4l2_frmivalenum *fival)
+{
+ struct isc_device *isc = video_drvdata(file);
+ const struct isc_format *isc_fmt;
+ struct v4l2_subdev_frame_interval_enum fie = {
+ .index = fival->index,
+ .width = fival->width,
+ .height = fival->height,
+ .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+ };
+ int ret;
+
+ isc_fmt = find_format_by_fourcc(isc, fival->pixel_format);
+ if (!isc_fmt)
+ return -EINVAL;
+
+ fie.code = isc_fmt->mbus_code;
+
+ ret = v4l2_subdev_call(isc->current_subdev->sd, pad,
+ enum_frame_interval, NULL, &fie);
+ if (ret)
+ return ret;
+
+ fival->type = V4L2_FRMIVAL_TYPE_DISCRETE;
+ fival->discrete = fie.interval;
+
+ return 0;
+}
+
+static const struct v4l2_ioctl_ops isc_ioctl_ops = {
+ .vidioc_querycap = isc_querycap,
+ .vidioc_enum_fmt_vid_cap = isc_enum_fmt_vid_cap,
+ .vidioc_g_fmt_vid_cap = isc_g_fmt_vid_cap,
+ .vidioc_s_fmt_vid_cap = isc_s_fmt_vid_cap,
+ .vidioc_try_fmt_vid_cap = isc_try_fmt_vid_cap,
+
+ .vidioc_enum_input = isc_enum_input,
+ .vidioc_g_input = isc_g_input,
+ .vidioc_s_input = isc_s_input,
+
+ .vidioc_reqbufs = vb2_ioctl_reqbufs,
+ .vidioc_querybuf = vb2_ioctl_querybuf,
+ .vidioc_qbuf = vb2_ioctl_qbuf,
+ .vidioc_expbuf = vb2_ioctl_expbuf,
+ .vidioc_dqbuf = vb2_ioctl_dqbuf,
+ .vidioc_create_bufs = vb2_ioctl_create_bufs,
+ .vidioc_prepare_buf = vb2_ioctl_prepare_buf,
+ .vidioc_streamon = vb2_ioctl_streamon,
+ .vidioc_streamoff = vb2_ioctl_streamoff,
+
+ .vidioc_g_parm = isc_g_parm,
+ .vidioc_s_parm = isc_s_parm,
+ .vidioc_enum_framesizes = isc_enum_framesizes,
+ .vidioc_enum_frameintervals = isc_enum_frameintervals,
+};
+
+static int isc_open(struct file *file)
+{
+ struct isc_device *isc = video_drvdata(file);
+ struct v4l2_subdev *sd = isc->current_subdev->sd;
+ int ret;
+
+ if (mutex_lock_interruptible(&isc->lock))
+ return -ERESTARTSYS;
+
+ ret = v4l2_fh_open(file);
+ if (ret < 0)
+ goto unlock;
+
+ if (!v4l2_fh_is_singular_file(file))
+ goto unlock;
+
+ ret = v4l2_subdev_call(sd, core, s_power, 1);
+ if (ret < 0 && ret != -ENOIOCTLCMD)
+ v4l2_fh_release(file);
+ else
+ ret = 0;
+
+unlock:
+ mutex_unlock(&isc->lock);
+ return ret;
+}
+
+static int isc_release(struct file *file)
+{
+ struct isc_device *isc = video_drvdata(file);
+ struct v4l2_subdev *sd = isc->current_subdev->sd;
+ bool fh_singular;
+ int ret;
+
+ mutex_lock(&isc->lock);
+
+ fh_singular = v4l2_fh_is_singular_file(file);
+
+ ret = _vb2_fop_release(file, NULL);
+
+ if (fh_singular)
+ v4l2_subdev_call(sd, core, s_power, 0);
+
+ mutex_unlock(&isc->lock);
+
+ return ret;
+}
+
+static const struct v4l2_file_operations isc_fops = {
+ .owner = THIS_MODULE,
+ .open = isc_open,
+ .release = isc_release,
+ .unlocked_ioctl = video_ioctl2,
+ .read = vb2_fop_read,
+ .mmap = vb2_fop_mmap,
+ .poll = vb2_fop_poll,
+};
+
+static irqreturn_t isc_interrupt(int irq, void *dev_id)
+{
+ struct isc_device *isc = (struct isc_device *)dev_id;
+ struct regmap *regmap = isc->regmap;
+ u32 isc_intsr, isc_intmask, pending;
+ irqreturn_t ret = IRQ_NONE;
+
+ spin_lock(&isc->dma_queue_lock);
+
+ regmap_read(regmap, ISC_INTSR, &isc_intsr);
+ regmap_read(regmap, ISC_INTMASK, &isc_intmask);
+
+ pending = isc_intsr & isc_intmask;
+
+ if (likely(pending & ISC_INT_DDONE)) {
+ if (isc->cur_frm) {
+ struct vb2_v4l2_buffer *vbuf = &isc->cur_frm->vb;
+ struct vb2_buffer *vb = &vbuf->vb2_buf;
+
+ vb->timestamp = ktime_get_ns();
+ vbuf->sequence = isc->sequence++;
+ vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
+ isc->cur_frm = NULL;
+ }
+
+ if (!list_empty(&isc->dma_queue) && !isc->stop) {
+ isc->cur_frm = list_first_entry(&isc->dma_queue,
+ struct isc_buffer, list);
+ list_del(&isc->cur_frm->list);
+
+ isc_start_dma(regmap, isc->cur_frm,
+ isc->current_fmt->reg_dctrl_dview);
+ }
+
+ if (isc->stop)
+ complete(&isc->comp);
+
+ ret = IRQ_HANDLED;
+ }
+
+ spin_unlock(&isc->dma_queue_lock);
+
+ return ret;
+}
+
+static int isc_async_bound(struct v4l2_async_notifier *notifier,
+ struct v4l2_subdev *subdev,
+ struct v4l2_async_subdev *asd)
+{
+ struct isc_device *isc = container_of(notifier->v4l2_dev,
+ struct isc_device, v4l2_dev);
+ struct isc_subdev_entity *subdev_entity =
+ container_of(notifier, struct isc_subdev_entity, notifier);
+
+ if (video_is_registered(&isc->video_dev)) {
+ v4l2_err(&isc->v4l2_dev, "only supports one sub-device.\n");
+ return -EBUSY;
+ }
+
+ subdev_entity->sd = subdev;
+
+ return 0;
+}
+
+static void isc_async_unbind(struct v4l2_async_notifier *notifier,
+ struct v4l2_subdev *subdev,
+ struct v4l2_async_subdev *asd)
+{
+ struct isc_device *isc = container_of(notifier->v4l2_dev,
+ struct isc_device, v4l2_dev);
+
+ video_unregister_device(&isc->video_dev);
+ if (isc->current_subdev->config)
+ v4l2_subdev_free_pad_config(isc->current_subdev->config);
+}
+
+static struct isc_format *find_format_by_code(unsigned int code, int *index)
+{
+ struct isc_format *fmt = &isc_formats[0];
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(isc_formats); i++) {
+ if (fmt->mbus_code == code) {
+ *index = i;
+ return fmt;
+ }
+
+ fmt++;
+ }
+
+ return NULL;
+}
+
+static int isc_formats_init(struct isc_device *isc)
+{
+ struct isc_format *fmt;
+ struct v4l2_subdev *subdev = isc->current_subdev->sd;
+ int num_fmts = 0, i, j;
+ struct v4l2_subdev_mbus_code_enum mbus_code = {
+ .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+ };
+
+ fmt = &isc_formats[0];
+ for (i = 0; i < ARRAY_SIZE(isc_formats); i++) {
+ fmt->support = false;
+ fmt++;
+ }
+
+ while (!v4l2_subdev_call(subdev, pad, enum_mbus_code,
+ NULL, &mbus_code)) {
+ mbus_code.index++;
+ fmt = find_format_by_code(mbus_code.code, &i);
+ if (!fmt)
+ continue;
+
+ fmt->support = true;
+ num_fmts++;
+ }
+
+ if (!num_fmts)
+ return -ENXIO;
+
+ isc->num_user_formats = num_fmts;
+ isc->user_formats = devm_kcalloc(isc->dev,
+ num_fmts, sizeof(struct isc_format *),
+ GFP_KERNEL);
+ if (!isc->user_formats) {
+ v4l2_err(&isc->v4l2_dev, "could not allocate memory\n");
+ return -ENOMEM;
+ }
+
+ fmt = &isc_formats[0];
+ for (i = 0, j = 0; i < ARRAY_SIZE(isc_formats); i++) {
+ if (fmt->support)
+ isc->user_formats[j++] = fmt;
+
+ fmt++;
+ }
+
+ return 0;
+}
+
+static int isc_set_default_fmt(struct isc_device *isc)
+{
+ struct v4l2_format f = {
+ .type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
+ .fmt.pix = {
+ .width = VGA_WIDTH,
+ .height = VGA_HEIGHT,
+ .field = V4L2_FIELD_NONE,
+ .pixelformat = isc->user_formats[0]->fourcc,
+ },
+ };
+
+ return isc_set_fmt(isc, &f);
+}
+
+static int isc_async_complete(struct v4l2_async_notifier *notifier)
+{
+ struct isc_device *isc = container_of(notifier->v4l2_dev,
+ struct isc_device, v4l2_dev);
+ struct isc_subdev_entity *sd_entity;
+ struct video_device *vdev = &isc->video_dev;
+ struct vb2_queue *q = &isc->vb2_vidq;
+ int ret;
+
+ isc->current_subdev = container_of(notifier,
+ struct isc_subdev_entity, notifier);
+ sd_entity = isc->current_subdev;
+
+ mutex_init(&isc->lock);
+ init_completion(&isc->comp);
+
+ /* Initialize videobuf2 queue */
+ q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ;
+ q->drv_priv = isc;
+ q->buf_struct_size = sizeof(struct isc_buffer);
+ q->ops = &isc_vb2_ops;
+ q->mem_ops = &vb2_dma_contig_memops;
+ q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
+ q->lock = &isc->lock;
+ q->min_buffers_needed = 1;
+ q->dev = isc->dev;
+
+ ret = vb2_queue_init(q);
+ if (ret < 0) {
+ v4l2_err(&isc->v4l2_dev,
+ "vb2_queue_init() failed: %d\n", ret);
+ return ret;
+ }
+
+ /* Init video dma queues */
+ INIT_LIST_HEAD(&isc->dma_queue);
+ spin_lock_init(&isc->dma_queue_lock);
+
+ sd_entity->config = v4l2_subdev_alloc_pad_config(sd_entity->sd);
+ if (sd_entity->config == NULL)
+ return -ENOMEM;
+
+ ret = isc_formats_init(isc);
+ if (ret < 0) {
+ v4l2_err(&isc->v4l2_dev,
+ "Init format failed: %d\n", ret);
+ return ret;
+ }
+
+ ret = v4l2_subdev_call(sd_entity->sd, core, s_power, 1);
+ if (ret < 0 && ret != -ENOIOCTLCMD)
+ return ret;
+
+ ret = isc_set_default_fmt(isc);
+ if (ret) {
+ v4l2_err(&isc->v4l2_dev, "Could not set default format\n");
+ return ret;
+ }
+
+ ret = v4l2_subdev_call(sd_entity->sd, core, s_power, 0);
+ if (ret < 0 && ret != -ENOIOCTLCMD)
+ return ret;
+
+ /* Register video device */
+ strlcpy(vdev->name, ATMEL_ISC_NAME, sizeof(vdev->name));
+ vdev->release = video_device_release_empty;
+ vdev->fops = &isc_fops;
+ vdev->ioctl_ops = &isc_ioctl_ops;
+ vdev->v4l2_dev = &isc->v4l2_dev;
+ vdev->vfl_dir = VFL_DIR_RX;
+ vdev->queue = q;
+ vdev->lock = &isc->lock;
+ vdev->ctrl_handler = isc->current_subdev->sd->ctrl_handler;
+ vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE;
+ video_set_drvdata(vdev, isc);
+
+ ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
+ if (ret < 0) {
+ v4l2_err(&isc->v4l2_dev,
+ "video_register_device failed: %d\n", ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+static void isc_subdev_cleanup(struct isc_device *isc)
+{
+ struct isc_subdev_entity *subdev_entity;
+
+ list_for_each_entry(subdev_entity, &isc->subdev_entities, list)
+ v4l2_async_notifier_unregister(&subdev_entity->notifier);
+
+ INIT_LIST_HEAD(&isc->subdev_entities);
+}
+
+static int isc_pipeline_init(struct isc_device *isc)
+{
+ struct device *dev = isc->dev;
+ struct regmap *regmap = isc->regmap;
+ struct regmap_field *regs;
+ unsigned int i;
+
+ /* WB-->CFA-->CC-->GAM-->CSC-->CBC-->SUB422-->SUB420 */
+ const struct reg_field regfields[ISC_PIPE_LINE_NODE_NUM] = {
+ REG_FIELD(ISC_WB_CTRL, 0, 0),
+ REG_FIELD(ISC_CFA_CTRL, 0, 0),
+ REG_FIELD(ISC_CC_CTRL, 0, 0),
+ REG_FIELD(ISC_GAM_CTRL, 0, 0),
+ REG_FIELD(ISC_GAM_CTRL, 1, 1),
+ REG_FIELD(ISC_GAM_CTRL, 2, 2),
+ REG_FIELD(ISC_GAM_CTRL, 3, 3),
+ REG_FIELD(ISC_CSC_CTRL, 0, 0),
+ REG_FIELD(ISC_CBC_CTRL, 0, 0),
+ REG_FIELD(ISC_SUB422_CTRL, 0, 0),
+ REG_FIELD(ISC_SUB420_CTRL, 0, 0),
+ };
+
+ for (i = 0; i < ISC_PIPE_LINE_NODE_NUM; i++) {
+ regs = devm_regmap_field_alloc(dev, regmap, regfields[i]);
+ if (IS_ERR(regs))
+ return PTR_ERR(regs);
+
+ isc->pipeline[i] = regs;
+ }
+
+ return 0;
+}
+
+static int isc_parse_dt(struct device *dev, struct isc_device *isc)
+{
+ struct device_node *np = dev->of_node;
+ struct device_node *epn = NULL, *rem;
+ struct v4l2_of_endpoint v4l2_epn;
+ struct isc_subdev_entity *subdev_entity;
+ unsigned int flags;
+ int ret;
+
+ INIT_LIST_HEAD(&isc->subdev_entities);
+
+ for (; ;) {
+ epn = of_graph_get_next_endpoint(np, epn);
+ if (!epn)
+ break;
+
+ rem = of_graph_get_remote_port_parent(epn);
+ if (!rem) {
+ dev_notice(dev, "Remote device at %s not found\n",
+ of_node_full_name(epn));
+ continue;
+ }
+
+ ret = v4l2_of_parse_endpoint(epn, &v4l2_epn);
+ if (ret) {
+ of_node_put(rem);
+ ret = -EINVAL;
+ dev_err(dev, "Could not parse the endpoint\n");
+ break;
+ }
+
+ subdev_entity = devm_kzalloc(dev,
+ sizeof(*subdev_entity), GFP_KERNEL);
+ if (subdev_entity == NULL) {
+ of_node_put(rem);
+ ret = -ENOMEM;
+ break;
+ }
+
+ subdev_entity->asd = devm_kzalloc(dev,
+ sizeof(*subdev_entity->asd), GFP_KERNEL);
+ if (subdev_entity->asd == NULL) {
+ of_node_put(rem);
+ ret = -ENOMEM;
+ break;
+ }
+
+ flags = v4l2_epn.bus.parallel.flags;
+
+ if (flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
+ subdev_entity->pfe_cfg0 = ISC_PFE_CFG0_HPOL_LOW;
+
+ if (flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
+ subdev_entity->pfe_cfg0 |= ISC_PFE_CFG0_VPOL_LOW;
+
+ if (flags & V4L2_MBUS_PCLK_SAMPLE_FALLING)
+ subdev_entity->pfe_cfg0 |= ISC_PFE_CFG0_PPOL_LOW;
+
+ subdev_entity->asd->match_type = V4L2_ASYNC_MATCH_OF;
+ subdev_entity->asd->match.of.node = rem;
+ list_add_tail(&subdev_entity->list, &isc->subdev_entities);
+ }
+
+ of_node_put(epn);
+ return ret;
+}
+
+/* regmap configuration */
+#define ATMEL_ISC_REG_MAX 0xbfc
+static const struct regmap_config isc_regmap_config = {
+ .reg_bits = 32,
+ .reg_stride = 4,
+ .val_bits = 32,
+ .max_register = ATMEL_ISC_REG_MAX,
+};
+
+static int atmel_isc_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct isc_device *isc;
+ struct resource *res;
+ void __iomem *io_base;
+ struct isc_subdev_entity *subdev_entity;
+ int irq;
+ int ret;
+
+ isc = devm_kzalloc(dev, sizeof(*isc), GFP_KERNEL);
+ if (!isc)
+ return -ENOMEM;
+
+ platform_set_drvdata(pdev, isc);
+ isc->dev = dev;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ io_base = devm_ioremap_resource(dev, res);
+ if (IS_ERR(io_base))
+ return PTR_ERR(io_base);
+
+ isc->regmap = devm_regmap_init_mmio(dev, io_base, &isc_regmap_config);
+ if (IS_ERR(isc->regmap)) {
+ ret = PTR_ERR(isc->regmap);
+ dev_err(dev, "failed to init register map: %d\n", ret);
+ return ret;
+ }
+
+ irq = platform_get_irq(pdev, 0);
+ if (IS_ERR_VALUE(irq)) {
+ ret = irq;
+ dev_err(dev, "failed to get irq: %d\n", ret);
+ return ret;
+ }
+
+ ret = devm_request_irq(dev, irq, isc_interrupt, 0,
+ ATMEL_ISC_NAME, isc);
+ if (ret < 0) {
+ dev_err(dev, "can't register ISR for IRQ %u (ret=%i)\n",
+ irq, ret);
+ return ret;
+ }
+
+ ret = isc_pipeline_init(isc);
+ if (ret)
+ return ret;
+
+ isc->hclock = devm_clk_get(dev, "hclock");
+ if (IS_ERR(isc->hclock)) {
+ ret = PTR_ERR(isc->hclock);
+ dev_err(dev, "failed to get hclock: %d\n", ret);
+ return ret;
+ }
+
+ ret = isc_clk_init(isc);
+ if (ret) {
+ dev_err(dev, "failed to init isc clock: %d\n", ret);
+ goto clean_isc_clk;
+ }
+
+ isc->ispck = isc->isc_clks[ISC_ISPCK].clk;
+
+ /* ispck should be greater or equal to hclock */
+ ret = clk_set_rate(isc->ispck, clk_get_rate(isc->hclock));
+ if (ret) {
+ dev_err(dev, "failed to set ispck rate: %d\n", ret);
+ goto clean_isc_clk;
+ }
+
+ ret = v4l2_device_register(dev, &isc->v4l2_dev);
+ if (ret) {
+ dev_err(dev, "unable to register v4l2 device.\n");
+ goto clean_isc_clk;
+ }
+
+ ret = isc_parse_dt(dev, isc);
+ if (ret) {
+ dev_err(dev, "fail to parse device tree\n");
+ goto unregister_v4l2_device;
+ }
+
+ if (list_empty(&isc->subdev_entities)) {
+ dev_err(dev, "no subdev found\n");
+ goto unregister_v4l2_device;
+ }
+
+ list_for_each_entry(subdev_entity, &isc->subdev_entities, list) {
+ subdev_entity->notifier.subdevs = &subdev_entity->asd;
+ subdev_entity->notifier.num_subdevs = 1;
+ subdev_entity->notifier.bound = isc_async_bound;
+ subdev_entity->notifier.unbind = isc_async_unbind;
+ subdev_entity->notifier.complete = isc_async_complete;
+
+ ret = v4l2_async_notifier_register(&isc->v4l2_dev,
+ &subdev_entity->notifier);
+ if (ret) {
+ dev_err(dev, "fail to register async notifier\n");
+ goto cleanup_subdev;
+ }
+
+ if (video_is_registered(&isc->video_dev))
+ break;
+ }
+
+ pm_runtime_enable(dev);
+
+ return 0;
+
+cleanup_subdev:
+ isc_subdev_cleanup(isc);
+
+unregister_v4l2_device:
+ v4l2_device_unregister(&isc->v4l2_dev);
+
+clean_isc_clk:
+ isc_clk_cleanup(isc);
+
+ return ret;
+}
+
+static int atmel_isc_remove(struct platform_device *pdev)
+{
+ struct isc_device *isc = platform_get_drvdata(pdev);
+
+ pm_runtime_disable(&pdev->dev);
+
+ isc_subdev_cleanup(isc);
+
+ v4l2_device_unregister(&isc->v4l2_dev);
+
+ isc_clk_cleanup(isc);
+
+ return 0;
+}
+
+static int isc_runtime_suspend(struct device *dev)
+{
+ struct isc_device *isc = dev_get_drvdata(dev);
+
+ clk_disable_unprepare(isc->ispck);
+ clk_disable_unprepare(isc->hclock);
+
+ return 0;
+}
+
+static int isc_runtime_resume(struct device *dev)
+{
+ struct isc_device *isc = dev_get_drvdata(dev);
+ int ret;
+
+ ret = clk_prepare_enable(isc->hclock);
+ if (ret)
+ return ret;
+
+ return clk_prepare_enable(isc->ispck);
+}
+
+static const struct dev_pm_ops atmel_isc_dev_pm_ops = {
+ SET_RUNTIME_PM_OPS(isc_runtime_suspend, isc_runtime_resume, NULL)
+};
+
+static const struct of_device_id atmel_isc_of_match[] = {
+ { .compatible = "atmel,sama5d2-isc" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, atmel_isc_of_match);
+
+static struct platform_driver atmel_isc_driver = {
+ .probe = atmel_isc_probe,
+ .remove = atmel_isc_remove,
+ .driver = {
+ .name = ATMEL_ISC_NAME,
+ .pm = &atmel_isc_dev_pm_ops,
+ .of_match_table = of_match_ptr(atmel_isc_of_match),
+ },
+};
+
+module_platform_driver(atmel_isc_driver);
+
+MODULE_AUTHOR("Songjun Wu <[email protected]>");
+MODULE_DESCRIPTION("The V4L2 driver for Atmel-ISC");
+MODULE_LICENSE("GPL v2");
+MODULE_SUPPORTED_DEVICE("video");
diff --git a/drivers/media/usb/cx231xx/cx231xx-core.c b/drivers/media/usb/cx231xx/cx231xx-core.c
index 630f4fc5155f..3e304bac3a70 100644
--- a/drivers/media/usb/cx231xx/cx231xx-core.c
+++ b/drivers/media/usb/cx231xx/cx231xx-core.c
@@ -799,7 +799,7 @@ static void cx231xx_isoc_irq_callback(struct urb *urb)
case -ESHUTDOWN:
return;
default: /* error */
- cx231xx_isocdbg("urb completition error %d.\n", urb->status);
+ cx231xx_isocdbg("urb completion error %d.\n", urb->status);
break;
}
@@ -842,8 +842,11 @@ static void cx231xx_bulk_irq_callback(struct urb *urb)
case -ENOENT:
case -ESHUTDOWN:
return;
+ case -EPIPE: /* stall */
+ cx231xx_isocdbg("urb completion error - device is stalled.\n");
+ return;
default: /* error */
- cx231xx_isocdbg("urb completition error %d.\n", urb->status);
+ cx231xx_isocdbg("urb completion error %d.\n", urb->status);
break;
}
@@ -867,6 +870,7 @@ void cx231xx_uninit_isoc(struct cx231xx *dev)
struct cx231xx_dmaqueue *dma_q = &dev->video_mode.vidq;
struct urb *urb;
int i;
+ bool broken_pipe = false;
cx231xx_isocdbg("cx231xx: called cx231xx_uninit_isoc\n");
@@ -886,12 +890,19 @@ void cx231xx_uninit_isoc(struct cx231xx *dev)
transfer_buffer[i],
urb->transfer_dma);
}
+ if (urb->status == -EPIPE) {
+ broken_pipe = true;
+ }
usb_free_urb(urb);
dev->video_mode.isoc_ctl.urb[i] = NULL;
}
dev->video_mode.isoc_ctl.transfer_buffer[i] = NULL;
}
+ if (broken_pipe) {
+ cx231xx_isocdbg("Reset endpoint to recover broken pipe.");
+ usb_reset_endpoint(dev->udev, dev->video_mode.end_point_addr);
+ }
kfree(dev->video_mode.isoc_ctl.urb);
kfree(dev->video_mode.isoc_ctl.transfer_buffer);
kfree(dma_q->p_left_data);
@@ -918,6 +929,7 @@ void cx231xx_uninit_bulk(struct cx231xx *dev)
struct cx231xx_dmaqueue *dma_q = &dev->video_mode.vidq;
struct urb *urb;
int i;
+ bool broken_pipe = false;
cx231xx_isocdbg("cx231xx: called cx231xx_uninit_bulk\n");
@@ -937,12 +949,19 @@ void cx231xx_uninit_bulk(struct cx231xx *dev)
transfer_buffer[i],
urb->transfer_dma);
}
+ if (urb->status == -EPIPE) {
+ broken_pipe = true;
+ }
usb_free_urb(urb);
dev->video_mode.bulk_ctl.urb[i] = NULL;
}
dev->video_mode.bulk_ctl.transfer_buffer[i] = NULL;
}
+ if (broken_pipe) {
+ cx231xx_isocdbg("Reset endpoint to recover broken pipe.");
+ usb_reset_endpoint(dev->udev, dev->video_mode.end_point_addr);
+ }
kfree(dev->video_mode.bulk_ctl.urb);
kfree(dev->video_mode.bulk_ctl.transfer_buffer);
kfree(dma_q->p_left_data);