Merge remote-tracking branch 'docs-next/docs-next' into devel/docs-next
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 23 Aug 2016 00:20:18 +0000 (21:20 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 23 Aug 2016 00:20:18 +0000 (21:20 -0300)
* docs-next/docs-next: (51 commits)
  docs-rst: add package adjustbox
  docs-rst: Fix an warning when in interactive mode
  docs-rst: Use better colors for note/warning/attention boxes
  docs-rst: conf.py: adjust the size of .. note:: tag
  docs-rst: add support for LaTeX output
  doc-rst: migrate ioctl CEC_DQEVENT to c-domain
  doc-rst: Revert "kernel-doc: fix handling of address_space tags"
  doc-rst: moved *duplicate* warnings to nitpicky mode
  doc-rst:c-domain: ref-name of a function declaration
  doc-rst: add boilerplate to customize c-domain
  docs: Sphinxify gdb-kernel-debugging.txt and move to dev-tools
  docs: sphinxify kmemcheck.txt and move to dev-tools
  docs: sphinxify kmemleak.txt and move it to dev-tools
  docs: sphinxify ubsan.txt and move it to dev-tools
  docs: sphinxify kasan.txt and move to dev-tools
  docs: sphinixfy gcov.txt and move to dev-tools
  docs: sphinxify kcov.txt and move to dev-tools
  docs: sphinxify sparse.txt and move to dev-tools
  docs: sphinxify coccinelle.txt and add it to dev-tools
  docs: create a new dev-tools directory
  ...

188 files changed:
Documentation/cec.txt [deleted file]
Documentation/devicetree/bindings/media/atmel-isc.txt [new file with mode: 0644]
Documentation/media/kapi/cec-core.rst [new file with mode: 0644]
Documentation/media/kapi/v4l2-dev.rst
Documentation/media/media_api_files/typical_media_device.pdf
Documentation/media/media_kapi.rst
Documentation/media/uapi/cec/cec-func-close.rst
Documentation/media/uapi/cec/cec-func-ioctl.rst
Documentation/media/uapi/cec/cec-func-open.rst
Documentation/media/uapi/cec/cec-func-poll.rst
Documentation/media/uapi/cec/cec-intro.rst
Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst
Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst
Documentation/media/uapi/cec/cec-ioc-adap-g-phys-addr.rst
Documentation/media/uapi/cec/cec-ioc-dqevent.rst
Documentation/media/uapi/cec/cec-ioc-g-mode.rst
Documentation/media/uapi/cec/cec-ioc-receive.rst
Documentation/media/uapi/dvb/audio-fopen.rst
Documentation/media/uapi/dvb/ca-fopen.rst
Documentation/media/uapi/dvb/dmx-fread.rst
Documentation/media/uapi/dvb/dmx-fwrite.rst
Documentation/media/uapi/dvb/dmx-set-pes-filter.rst
Documentation/media/uapi/dvb/dmx-start.rst
Documentation/media/uapi/dvb/dmx_types.rst
Documentation/media/uapi/dvb/dvb-fe-read-status.rst
Documentation/media/uapi/dvb/dvbapi.rst
Documentation/media/uapi/dvb/dvbproperty.rst
Documentation/media/uapi/dvb/examples.rst
Documentation/media/uapi/dvb/fe-diseqc-recv-slave-reply.rst
Documentation/media/uapi/dvb/fe-diseqc-send-master-cmd.rst
Documentation/media/uapi/dvb/fe-get-info.rst
Documentation/media/uapi/dvb/fe-read-status.rst
Documentation/media/uapi/dvb/fe-type-t.rst
Documentation/media/uapi/dvb/fe_property_parameters.rst
Documentation/media/uapi/dvb/frontend.rst
Documentation/media/uapi/dvb/video-fopen.rst
Documentation/media/uapi/gen-errors.rst
Documentation/media/uapi/mediactl/media-ioc-device-info.rst
Documentation/media/uapi/mediactl/media-ioc-enum-entities.rst
Documentation/media/uapi/mediactl/media-ioc-enum-links.rst
Documentation/media/uapi/mediactl/media-ioc-g-topology.rst
Documentation/media/uapi/mediactl/media-types.rst
Documentation/media/uapi/rc/lirc-set-wideband-receiver.rst
Documentation/media/uapi/rc/rc-tables.rst
Documentation/media/uapi/v4l/audio.rst
Documentation/media/uapi/v4l/buffer.rst
Documentation/media/uapi/v4l/control.rst
Documentation/media/uapi/v4l/crop.rst
Documentation/media/uapi/v4l/dev-codec.rst
Documentation/media/uapi/v4l/dev-osd.rst
Documentation/media/uapi/v4l/dev-output.rst
Documentation/media/uapi/v4l/dev-overlay.rst
Documentation/media/uapi/v4l/dev-raw-vbi.rst
Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdf
Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdf
Documentation/media/uapi/v4l/dev-rds.rst
Documentation/media/uapi/v4l/dev-sdr.rst
Documentation/media/uapi/v4l/dev-sliced-vbi.rst
Documentation/media/uapi/v4l/dev-subdev.rst
Documentation/media/uapi/v4l/diff-v4l.rst
Documentation/media/uapi/v4l/extended-controls.rst
Documentation/media/uapi/v4l/field-order.rst
Documentation/media/uapi/v4l/func-mmap.rst
Documentation/media/uapi/v4l/pixfmt-002.rst
Documentation/media/uapi/v4l/pixfmt-003.rst
Documentation/media/uapi/v4l/pixfmt-006.rst
Documentation/media/uapi/v4l/pixfmt-007.rst
Documentation/media/uapi/v4l/pixfmt-013.rst
Documentation/media/uapi/v4l/pixfmt-grey.rst
Documentation/media/uapi/v4l/pixfmt-m420.rst
Documentation/media/uapi/v4l/pixfmt-nv12.rst
Documentation/media/uapi/v4l/pixfmt-nv12m.rst
Documentation/media/uapi/v4l/pixfmt-nv12mt.rst
Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.gif [deleted file]
Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.png [new file with mode: 0644]
Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.gif [deleted file]
Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.png [new file with mode: 0644]
Documentation/media/uapi/v4l/pixfmt-nv16.rst
Documentation/media/uapi/v4l/pixfmt-nv16m.rst
Documentation/media/uapi/v4l/pixfmt-nv24.rst
Documentation/media/uapi/v4l/pixfmt-packed-rgb.rst
Documentation/media/uapi/v4l/pixfmt-packed-yuv.rst
Documentation/media/uapi/v4l/pixfmt-reserved.rst
Documentation/media/uapi/v4l/pixfmt-sbggr16.rst
Documentation/media/uapi/v4l/pixfmt-sbggr8.rst
Documentation/media/uapi/v4l/pixfmt-sdr-cs08.rst
Documentation/media/uapi/v4l/pixfmt-sdr-cs14le.rst
Documentation/media/uapi/v4l/pixfmt-sdr-cu08.rst
Documentation/media/uapi/v4l/pixfmt-sdr-cu16le.rst
Documentation/media/uapi/v4l/pixfmt-sdr-ru12le.rst
Documentation/media/uapi/v4l/pixfmt-sgbrg8.rst
Documentation/media/uapi/v4l/pixfmt-sgrbg8.rst
Documentation/media/uapi/v4l/pixfmt-srggb10.rst
Documentation/media/uapi/v4l/pixfmt-srggb10alaw8.rst
Documentation/media/uapi/v4l/pixfmt-srggb10p.rst
Documentation/media/uapi/v4l/pixfmt-srggb12.rst
Documentation/media/uapi/v4l/pixfmt-srggb8.rst
Documentation/media/uapi/v4l/pixfmt-uv8.rst
Documentation/media/uapi/v4l/pixfmt-uyvy.rst
Documentation/media/uapi/v4l/pixfmt-vyuy.rst
Documentation/media/uapi/v4l/pixfmt-y10.rst
Documentation/media/uapi/v4l/pixfmt-y10b.rst
Documentation/media/uapi/v4l/pixfmt-y12.rst
Documentation/media/uapi/v4l/pixfmt-y12i.rst
Documentation/media/uapi/v4l/pixfmt-y16-be.rst
Documentation/media/uapi/v4l/pixfmt-y16.rst
Documentation/media/uapi/v4l/pixfmt-y41p.rst
Documentation/media/uapi/v4l/pixfmt-y8i.rst
Documentation/media/uapi/v4l/pixfmt-yuv410.rst
Documentation/media/uapi/v4l/pixfmt-yuv411p.rst
Documentation/media/uapi/v4l/pixfmt-yuv420.rst
Documentation/media/uapi/v4l/pixfmt-yuv420m.rst
Documentation/media/uapi/v4l/pixfmt-yuv422m.rst
Documentation/media/uapi/v4l/pixfmt-yuv422p.rst
Documentation/media/uapi/v4l/pixfmt-yuv444m.rst
Documentation/media/uapi/v4l/pixfmt-yuyv.rst
Documentation/media/uapi/v4l/pixfmt-yvyu.rst
Documentation/media/uapi/v4l/pixfmt-z16.rst
Documentation/media/uapi/v4l/standard.rst
Documentation/media/uapi/v4l/subdev-formats.rst
Documentation/media/uapi/v4l/tuner.rst
Documentation/media/uapi/v4l/userp.rst
Documentation/media/uapi/v4l/v4l2-selection-flags.rst
Documentation/media/uapi/v4l/v4l2-selection-targets.rst
Documentation/media/uapi/v4l/vidioc-create-bufs.rst
Documentation/media/uapi/v4l/vidioc-cropcap.rst
Documentation/media/uapi/v4l/vidioc-dbg-g-chip-info.rst
Documentation/media/uapi/v4l/vidioc-dbg-g-register.rst
Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst
Documentation/media/uapi/v4l/vidioc-dqevent.rst
Documentation/media/uapi/v4l/vidioc-dv-timings-cap.rst
Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst
Documentation/media/uapi/v4l/vidioc-enum-dv-timings.rst
Documentation/media/uapi/v4l/vidioc-enum-fmt.rst
Documentation/media/uapi/v4l/vidioc-enum-frameintervals.rst
Documentation/media/uapi/v4l/vidioc-enum-framesizes.rst
Documentation/media/uapi/v4l/vidioc-enum-freq-bands.rst
Documentation/media/uapi/v4l/vidioc-enumaudioout.rst
Documentation/media/uapi/v4l/vidioc-enuminput.rst
Documentation/media/uapi/v4l/vidioc-enumoutput.rst
Documentation/media/uapi/v4l/vidioc-enumstd.rst
Documentation/media/uapi/v4l/vidioc-expbuf.rst
Documentation/media/uapi/v4l/vidioc-g-audio.rst
Documentation/media/uapi/v4l/vidioc-g-audioout.rst
Documentation/media/uapi/v4l/vidioc-g-crop.rst
Documentation/media/uapi/v4l/vidioc-g-ctrl.rst
Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst
Documentation/media/uapi/v4l/vidioc-g-edid.rst
Documentation/media/uapi/v4l/vidioc-g-enc-index.rst
Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst
Documentation/media/uapi/v4l/vidioc-g-fbuf.rst
Documentation/media/uapi/v4l/vidioc-g-fmt.rst
Documentation/media/uapi/v4l/vidioc-g-frequency.rst
Documentation/media/uapi/v4l/vidioc-g-jpegcomp.rst
Documentation/media/uapi/v4l/vidioc-g-modulator.rst
Documentation/media/uapi/v4l/vidioc-g-parm.rst
Documentation/media/uapi/v4l/vidioc-g-priority.rst
Documentation/media/uapi/v4l/vidioc-g-selection.rst
Documentation/media/uapi/v4l/vidioc-g-sliced-vbi-cap.rst
Documentation/media/uapi/v4l/vidioc-g-tuner.rst
Documentation/media/uapi/v4l/vidioc-qbuf.rst
Documentation/media/uapi/v4l/vidioc-query-dv-timings.rst
Documentation/media/uapi/v4l/vidioc-querycap.rst
Documentation/media/uapi/v4l/vidioc-queryctrl.rst
Documentation/media/uapi/v4l/vidioc-querystd.rst
Documentation/media/uapi/v4l/vidioc-reqbufs.rst
Documentation/media/uapi/v4l/vidioc-s-hw-freq-seek.rst
Documentation/media/uapi/v4l/vidioc-streamon.rst
Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-interval.rst
Documentation/media/uapi/v4l/vidioc-subdev-enum-frame-size.rst
Documentation/media/uapi/v4l/vidioc-subdev-enum-mbus-code.rst
Documentation/media/uapi/v4l/vidioc-subdev-g-crop.rst
Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst
Documentation/media/uapi/v4l/vidioc-subdev-g-frame-interval.rst
Documentation/media/uapi/v4l/vidioc-subdev-g-selection.rst
Documentation/media/uapi/v4l/vidioc-subscribe-event.rst
Documentation/media/v4l-drivers/bttv.rst
Documentation/media/v4l-drivers/cpia2.rst
Documentation/media/v4l-drivers/si476x.rst
Documentation/media/v4l-drivers/zr364xx.rst
MAINTAINERS
drivers/media/platform/Kconfig
drivers/media/platform/Makefile
drivers/media/platform/atmel/Kconfig [new file with mode: 0644]
drivers/media/platform/atmel/Makefile [new file with mode: 0644]
drivers/media/platform/atmel/atmel-isc-regs.h [new file with mode: 0644]
drivers/media/platform/atmel/atmel-isc.c [new file with mode: 0644]
drivers/media/usb/cx231xx/cx231xx-core.c

diff --git a/Documentation/cec.txt b/Documentation/cec.txt
deleted file mode 100644 (file)
index 75155fe..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-CEC Kernel Support
-==================
-
-The CEC framework provides a unified kernel interface for use with HDMI CEC
-hardware. It is designed to handle a multiple types of hardware (receivers,
-transmitters, USB dongles). The framework also gives the option to decide
-what to do in the kernel driver and what should be handled by userspace
-applications. In addition it integrates the remote control passthrough
-feature into the kernel's remote control framework.
-
-
-The CEC Protocol
-----------------
-
-The CEC protocol enables consumer electronic devices to communicate with each
-other through the HDMI connection. The protocol uses logical addresses in the
-communication. The logical address is strictly connected with the functionality
-provided by the device. The TV acting as the communication hub is always
-assigned address 0. The physical address is determined by the physical
-connection between devices.
-
-The CEC framework described here is up to date with the CEC 2.0 specification.
-It is documented in the HDMI 1.4 specification with the new 2.0 bits documented
-in the HDMI 2.0 specification. But for most of the features the freely available
-HDMI 1.3a specification is sufficient:
-
-http://www.microprocessor.org/HDMISpecification13a.pdf
-
-
-The Kernel Interface
-====================
-
-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,
-              void *priv, const char *name, u32 caps, u8 available_las,
-              struct device *parent);
-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.
-
-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.
-
-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
-       adapter can handle. Must be 1 <= available_las <= CEC_MAX_LOG_ADDRS.
-
-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);
-
-To unregister the devices call:
-
-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
-cec_unregister_adapter() to clean up, never cec_delete_adapter(). The
-unregister function will delete the adapter automatically once the last user
-of that /dev/cecX device has closed its file handle.
-
-
-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);
-
-       /* High-level callbacks */
-       ...
-};
-
-The three low-level ops deal with various aspects of controlling the CEC adapter
-hardware:
-
-
-To enable/disable the hardware:
-
-       int (*adap_enable)(struct cec_adapter *adap, bool enable);
-
-This callback enables or disables the CEC hardware. Enabling the CEC hardware
-means powering it up in a state where no logical addresses are claimed. This
-op assumes that the physical address (adap->phys_addr) is valid when enable is
-true and will not change while the CEC adapter remains enabled. The initial
-state of the CEC adapter after calling cec_allocate_adapter() is disabled.
-
-Note that adap_enable must return 0 if enable is false.
-
-
-To enable/disable the 'monitor all' mode:
-
-       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
-that not for us. Not all hardware supports this and this function is only
-called if the CEC_CAP_MONITOR_ALL capability is set. This callback is optional
-(some hardware may always be in 'monitor all' mode).
-
-Note that adap_monitor_all_enable must return 0 if enable is false.
-
-
-To program a new logical address:
-
-       int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
-
-If logical_addr == CEC_LOG_ADDR_INVALID then all programmed logical addresses
-are to be erased. Otherwise the given logical address should be programmed.
-If the maximum number of available logical addresses is exceeded, then it
-should return -ENXIO. Once a logical address is programmed the CEC hardware
-can receive directed messages to that address.
-
-Note that adap_log_addr must return 0 if logical_addr is CEC_LOG_ADDR_INVALID.
-
-
-To transmit a new message:
-
-       int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
-                            u32 signal_free_time, struct cec_msg *msg);
-
-This transmits a new message. The attempts argument is the suggested number of
-attempts for the transmit.
-
-The signal_free_time is the number of data bit periods that the adapter should
-wait when the line is free before attempting to send a message. This value
-depends on whether this transmit is a retry, a message from a new initiator or
-a new message for the same initiator. Most hardware will handle this
-automatically, but in some cases this information is needed.
-
-The CEC_FREE_TIME_TO_USEC macro can be used to convert signal_free_time to
-microseconds (one data bit period is 2.4 ms).
-
-
-To log the current CEC hardware status:
-
-       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.
-The status is available through debugfs: cat /sys/kernel/debug/cec/cecX/status
-
-
-Your adapter driver will also have to react to events (typically interrupt
-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,
-                      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.
-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
-0 if the hardware provides no feedback of which errors occurred and how many
-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);
-
-Speaks for itself.
-
-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 */
-       ...
-
-       /* 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
-
-       int (*received)(struct cec_adapter *adap, struct cec_msg *msg);
-
-If the driver wants to process a CEC message, then it can implement this
-callback. If it doesn't want to handle this message, then it should return
--ENOMSG, otherwise the CEC framework assumes it processed this message and
-it will not no anything with it.
-
-
-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);
-
-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);
-
-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
-the physical address has become valid, then the CEC framework will start
-claiming the logical addresses. If block is true, then this function won't
-return until this process has finished.
-
-When the physical address is set to a valid value the CEC adapter will
-be enabled (see the adap_enable op). When it is set to CEC_PHYS_ADDR_INVALID,
-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);
-
-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
-claimed, otherwise just queue it and return. To unconfigure all logical
-addresses call this function with log_addrs set to NULL or with
-log_addrs->num_log_addrs set to 0. The block argument is ignored when
-unconfiguring. This function will just return if the physical address is
-invalid. Once the physical address becomes valid, then the framework will
-attempt to claim these logical addresses.
diff --git a/Documentation/devicetree/bindings/media/atmel-isc.txt b/Documentation/devicetree/bindings/media/atmel-isc.txt
new file mode 100644 (file)
index 0000000..bbe0e87
--- /dev/null
@@ -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/media/kapi/cec-core.rst b/Documentation/media/kapi/cec-core.rst
new file mode 100644 (file)
index 0000000..88c33b5
--- /dev/null
@@ -0,0 +1,308 @@
+CEC Kernel Support
+==================
+
+The CEC framework provides a unified kernel interface for use with HDMI CEC
+hardware. It is designed to handle a multiple types of hardware (receivers,
+transmitters, USB dongles). The framework also gives the option to decide
+what to do in the kernel driver and what should be handled by userspace
+applications. In addition it integrates the remote control passthrough
+feature into the kernel's remote control framework.
+
+
+The CEC Protocol
+----------------
+
+The CEC protocol enables consumer electronic devices to communicate with each
+other through the HDMI connection. The protocol uses logical addresses in the
+communication. The logical address is strictly connected with the functionality
+provided by the device. The TV acting as the communication hub is always
+assigned address 0. The physical address is determined by the physical
+connection between devices.
+
+The CEC framework described here is up to date with the CEC 2.0 specification.
+It is documented in the HDMI 1.4 specification with the new 2.0 bits documented
+in the HDMI 2.0 specification. But for most of the features the freely available
+HDMI 1.3a specification is sufficient:
+
+http://www.microprocessor.org/HDMISpecification13a.pdf
+
+
+The Kernel Interface
+====================
+
+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():
+
+.. 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);
+
+.. 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.
+
+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.
+
+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
+       adapter can handle. Must be 1 <= available_las <= CEC_MAX_LOG_ADDRS.
+
+parent:
+       the parent device.
+
+
+To register the /dev/cecX device node and the remote control device (if
+CEC_CAP_RC is set) you call:
+
+.. c:function::
+       int cec_register_adapter(struct cec_adapter \*adap);
+
+To unregister the devices call:
+
+.. 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
+cec_unregister_adapter() to clean up, never cec_delete_adapter(). The
+unregister function will delete the adapter automatically once the last user
+of that /dev/cecX device has closed its file handle.
+
+
+Implementing the Low-Level CEC Adapter
+--------------------------------------
+
+The following low-level adapter operations have to be implemented in
+your driver:
+
+.. 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 */
+               ...
+       };
+
+The three low-level ops deal with various aspects of controlling the CEC adapter
+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
+means powering it up in a state where no logical addresses are claimed. This
+op assumes that the physical address (adap->phys_addr) is valid when enable is
+true and will not change while the CEC adapter remains enabled. The initial
+state of the CEC adapter after calling cec_allocate_adapter() is disabled.
+
+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
+that not for us. Not all hardware supports this and this function is only
+called if the CEC_CAP_MONITOR_ALL capability is set. This callback is optional
+(some hardware may always be in 'monitor all' mode).
+
+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
+are to be erased. Otherwise the given logical address should be programmed.
+If the maximum number of available logical addresses is exceeded, then it
+should return -ENXIO. Once a logical address is programmed the CEC hardware
+can receive directed messages to that address.
+
+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);
+
+This transmits a new message. The attempts argument is the suggested number of
+attempts for the transmit.
+
+The signal_free_time is the number of data bit periods that the adapter should
+wait when the line is free before attempting to send a message. This value
+depends on whether this transmit is a retry, a message from a new initiator or
+a new message for the same initiator. Most hardware will handle this
+automatically, but in some cases this information is needed.
+
+The CEC_FREE_TIME_TO_USEC macro can be used to convert signal_free_time to
+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.
+The status is available through debugfs: cat /sys/kernel/debug/cec/cecX/status
+
+
+Your adapter driver will also have to react to events (typically interrupt
+driven) by calling into the framework in the following situations:
+
+When a transmit finished (successfully or otherwise):
+
+.. 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.
+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
+0 if the hardware provides no feedback of which errors occurred and how many
+times, or fill in the correct values as reported by the hardware.
+
+When a CEC message was received:
+
+.. c:function::
+       void cec_received_msg(struct cec_adapter *adap, struct cec_msg *msg);
+
+Speaks for itself.
+
+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:
+
+.. code-block:: none
+
+       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
+callback. If it doesn't want to handle this message, then it should return
+-ENOMSG, otherwise the CEC framework assumes it processed this message and
+it will not no anything with it.
+
+
+CEC framework functions
+-----------------------
+
+CEC Adapter drivers can call the following CEC framework functions:
+
+.. 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.
+
+.. 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
+the physical address has become valid, then the CEC framework will start
+claiming the logical addresses. If block is true, then this function won't
+return until this process has finished.
+
+When the physical address is set to a valid value the CEC adapter will
+be enabled (see the adap_enable op). When it is set to CEC_PHYS_ADDR_INVALID,
+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.
+
+.. 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
+claimed, otherwise just queue it and return. To unconfigure all logical
+addresses call this function with log_addrs set to NULL or with
+log_addrs->num_log_addrs set to 0. The block argument is ignored when
+unconfiguring. This function will just return if the physical address is
+invalid. Once the physical address becomes valid, then the framework will
+attempt to claim these logical addresses.
index cdfcf0b..429883b 100644 (file)
@@ -262,6 +262,7 @@ file operations.
 
 It is a bitmask and the following bits can be set:
 
+.. tabularcolumns:: |p{5ex}|L|
 
 ===== ================================================================
 Mask  Description
index eb30458..d000d80 100644 (file)
Binary files a/Documentation/media/media_api_files/typical_media_device.pdf and b/Documentation/media/media_api_files/typical_media_device.pdf differ
index b71e8e8..f282ca2 100644 (file)
@@ -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
index bb94e43..bdbb9e5 100644 (file)
@@ -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
index d0279e6..170bdd5 100644 (file)
@@ -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
index 7c0f981..3d55e9f 100644 (file)
@@ -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
index fcab65f..5d1e052 100644 (file)
@@ -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
index afa76f2..4a19ea5 100644 (file)
@@ -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
index eaedc63..89ba813 100644 (file)
@@ -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:
 
index 04ee900..42f8e85 100644 (file)
@@ -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
index b955d04..c50aa3e 100644 (file)
@@ -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
index 4e12e6c..ca9ef59 100644 (file)
@@ -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:
 
index f0084d8..b75ed70 100644 (file)
@@ -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:
 
index ae5a39a..821562b 100644 (file)
@@ -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:
 
index ec3b23a..3ef4fd6 100644 (file)
@@ -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
index f284461..9960fc7 100644 (file)
@@ -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
index d25b19e..266c9ca 100644 (file)
@@ -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
index 9efd81a..3d76470 100644 (file)
@@ -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
index addc321..d71db77 100644 (file)
@@ -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
index 9835d1e..959b5ee 100644 (file)
@@ -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
index 7a8900a..efd5640 100644 (file)
@@ -12,6 +12,7 @@ Demux Data Types
 Output for the demux
 ====================
 
+.. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
 
 .. _dmx-output:
 
index fcffaa7..76c2061 100644 (file)
@@ -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.
index 48e61ab..3768013 100644 (file)
@@ -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**
index cd0511b..a5a859a 100644 (file)
@@ -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
index bf0a861..1a94966 100644 (file)
@@ -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.
index 7bd02ac..7b32566 100644 (file)
@@ -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
index 58a5e6a..865914b 100644 (file)
@@ -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
index bb6c32e..87ff3f6 100644 (file)
@@ -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:
 
index 624ed9d..def8160 100644 (file)
@@ -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:
 
index 8ca762b..fa377fe 100644 (file)
@@ -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
index f776d62..304ac1a 100644 (file)
@@ -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:
 
index 48c5cd4..e051a90 100644 (file)
@@ -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
index 9e54715..9addca9 100644 (file)
@@ -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
index d6b0cfd..6e983b9 100644 (file)
@@ -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
index 467d82c..567f551 100644 (file)
@@ -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
index 12d4b25..a51c4cc 100644 (file)
@@ -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
index 87443b1..f4334f5 100644 (file)
@@ -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
index 2e382cc..c836d64 100644 (file)
@@ -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:
 
index c77717b..20f9930 100644 (file)
@@ -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:
 
index cffb01f..b9d582f 100644 (file)
@@ -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.
index 0bb16c4..c8ae947 100644 (file)
@@ -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
index 4dd1134..b8059fb 100644 (file)
@@ -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.
index 5deb4a4..7bab30b 100644 (file)
@@ -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
index 10ab53d..e881cd1 100644 (file)
@@ -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
 
index 0913822..4622884 100644 (file)
@@ -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
index dfb2032..d9f2184 100644 (file)
@@ -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
index fadda13..4e1ee79 100644 (file)
@@ -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.
 
index 4f1123a..dfb8207 100644 (file)
@@ -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
index 92b4471..50e2d52 100644 (file)
@@ -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:
index d5a4b35..3cf4486 100644 (file)
@@ -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`.
index 9e72c25..0bae283 100644 (file)
Binary files a/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdf and b/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_525.pdf differ
index 765235e..bf29b95 100644 (file)
Binary files a/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdf and b/Documentation/media/uapi/v4l/dev-raw-vbi_files/vbi_625.pdf differ
index cd6ad63..841761a 100644 (file)
@@ -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
index fc4053f..3b6aa2a 100644 (file)
@@ -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
index ec52a82..86d2d69 100644 (file)
@@ -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`.
index 5a112eb..1045b3c 100644 (file)
@@ -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
index e1e034d..93263e4 100644 (file)
@@ -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
index 71071d7..9c6aff3 100644 (file)
@@ -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
index 979fedb..95e9d2a 100644 (file)
@@ -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
index c156fb7..639fef5 100644 (file)
@@ -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``
index fae9b2d..58e872f 100644 (file)
@@ -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
index 25c5487..6ec8ce6 100644 (file)
@@ -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:
 
index 987b9a8..56b6913 100644 (file)
@@ -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
index 8c946b0..95d790c 100644 (file)
@@ -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
index 475f6e6..bfef4f4 100644 (file)
@@ -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
index 761d783..fef58ca 100644 (file)
@@ -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
index 4c5b296..f4a21a8 100644 (file)
@@ -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
index cf59b28..6bbdc01 100644 (file)
@@ -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
 
index a4e7eae..5c2e064 100644 (file)
@@ -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
 
index 6198941..9f250a1 100644 (file)
@@ -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 (file)
index ef2d4cf..0000000
Binary files a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.gif and /dev/null 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 (file)
index 0000000..4140186
Binary files /dev/null and b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt.png 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 (file)
index df81d68..0000000
Binary files a/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.gif and /dev/null 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 (file)
index 0000000..7775f5d
Binary files /dev/null and b/Documentation/media/uapi/v4l/pixfmt-nv12mt_files/nv12mt_example.png differ
index 88aa761..e2ea0fc 100644 (file)
@@ -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
 
index b7ee068..5908b04 100644 (file)
@@ -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
 
index db98f47..67f3c53 100644 (file)
@@ -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
 
index c7aa2e9..4eba722 100644 (file)
@@ -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
index 5471645..6066f13 100644 (file)
@@ -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>`.
index 9a5704b..0dd2f7f 100644 (file)
@@ -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
index 14446ed..801b78c 100644 (file)
@@ -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
 
index db4c523..e880ba0 100644 (file)
@@ -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
index 2736275..82b9995 100644 (file)
@@ -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
index bfe5804..f06cbeb 100644 (file)
@@ -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
 
index 68ad171..bd81eb2 100644 (file)
@@ -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
 
index 2a1c0d4..c72587d 100644 (file)
@@ -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
 
index 378581b..b5f0ca0 100644 (file)
@@ -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
index 6345c24..5cd40d6 100644 (file)
@@ -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
index 51b7b8e..05a09db 100644 (file)
@@ -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
index 44a4956..8af7569 100644 (file)
@@ -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
index 68bae0c..c44e093 100644 (file)
@@ -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
index d71368f..a5752b9 100644 (file)
@@ -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
index f5303ab..109772f 100644 (file)
@@ -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
index e88de4c..41851bb 100644 (file)
@@ -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
index fa8f7ee..8c4ebbf 100644 (file)
@@ -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
index 87b0081..ed8ccf5 100644 (file)
@@ -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
index 5d8f99f..d62c1ac 100644 (file)
@@ -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
index d22f771..cb78e36 100644 (file)
@@ -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
index 5b50cd6..e89850b 100644 (file)
@@ -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
 
index 7729bcb..0958e87 100644 (file)
@@ -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
index 8967e8c..e66d8bc 100644 (file)
@@ -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
index 37fa099..fc23c6b 100644 (file)
@@ -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
index 4c41c04..6b4edc4 100644 (file)
@@ -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
index 4760174..9c3194b 100644 (file)
@@ -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
index 7fa16ee..16bdfbb 100644 (file)
@@ -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
index 8a5d1a2..5490983 100644 (file)
@@ -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
index f85e3f3..913f68f 100644 (file)
@@ -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
index b22e64c..a7f17e4 100644 (file)
@@ -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
index 4dab850..5887845 100644 (file)
@@ -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
index ccb6728..0c0a462 100644 (file)
@@ -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
index 9f34762..9618f0d 100644 (file)
@@ -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
index 04f3450..5985d45 100644 (file)
@@ -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
index 52917df..10deab0 100644 (file)
@@ -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
index e466052..d126f08 100644 (file)
@@ -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
index 4ebc561..97fe148 100644 (file)
@@ -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
index c4f678f..2320008 100644 (file)
@@ -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.
index 6dbb27b..8b1ba4f 100644 (file)
@@ -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
index 37eb4b9..c3df65c 100644 (file)
@@ -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
index 1d8b14b..0371e06 100644 (file)
@@ -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
index 3ce3731..9ef139f 100644 (file)
@@ -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:
 
index 7519099..a82b58f 100644 (file)
@@ -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
index abdc0b4..b4b16ae 100644 (file)
@@ -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
index 8dcbe6d..e3d8533 100644 (file)
@@ -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
index f7e1b80..4c30b22 100644 (file)
@@ -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
index 09d2880..cb6a878 100644 (file)
@@ -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
index 2a36e91..63acf4e 100644 (file)
@@ -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
index 73c0d5b..e5be2a5 100644 (file)
@@ -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
index 6e05957..7054e36 100644 (file)
@@ -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:
 
index 69bd9b4..795d921 100644 (file)
@@ -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:
 
index 3ba75d3..c386045 100644 (file)
@@ -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
index 90996f6..da0b888 100644 (file)
@@ -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
index ceae600..7541158 100644 (file)
@@ -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
index 8b26835..1c23da3 100644 (file)
@@ -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
index 00ab5e1..8fac84d 100644 (file)
@@ -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:
 
index cde1db5..3112b43 100644 (file)
@@ -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
index 5060f54..f818807 100644 (file)
@@ -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
index 82fc9d3..6d50b29 100644 (file)
@@ -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
index 6699b26..22b4bcd 100644 (file)
@@ -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
index ded708e..67f72ce 100644 (file)
@@ -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
index cccbcdb..703091b 100644 (file)
@@ -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
index b1c1bfe..1420dde 100644 (file)
@@ -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
index 6cf7649..08df932 100644 (file)
@@ -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
index ee929f6..e585b04 100644 (file)
@@ -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
index f7bf21f..013f492 100644 (file)
@@ -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``
index 1a982b6..721d17f 100644 (file)
@@ -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
index f0f41ac..64e7478 100644 (file)
@@ -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:
 
index 39e24ad..f0d3329 100644 (file)
@@ -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:
 
index d182d9f..562505c 100644 (file)
@@ -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
index ee6f119..94e42ac 100644 (file)
@@ -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
index a1fd2a8..c0468ff 100644 (file)
@@ -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
index f5bf8b7..a5a997d 100644 (file)
@@ -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:
 
index a2e8c73..0b362fc 100644 (file)
@@ -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:
 
index 7116e0d..1b04461 100644 (file)
@@ -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
index 9f774ce..3f021e6 100644 (file)
@@ -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
index 953931f..8e72f93 100644 (file)
@@ -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
index f1f661d..87c23f2 100644 (file)
@@ -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
 ============
index 614db06..e53abcb 100644 (file)
@@ -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
 ============
index 3b927f3..31c360d 100644 (file)
@@ -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
index 416d8d6..6a87f44 100644 (file)
@@ -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`.
index b10fed3..5b9922e 100644 (file)
@@ -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``
index 8d6e61a..6e4912f 100644 (file)
@@ -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.
index b4a4e22..cb03d24 100644 (file)
@@ -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
index 5d0bc6d..8be9343 100644 (file)
@@ -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
index 5fd332a..2bc10eb 100644 (file)
@@ -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
index bb23745..7fa4362 100644 (file)
@@ -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.
index 0aa6482..1c853f3 100644 (file)
@@ -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
index 7a5811b..e1bcc69 100644 (file)
@@ -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
index bc0531e..418d543 100644 (file)
@@ -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
index ae802f1..7caa04e 100644 (file)
@@ -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
index 90e2a66..f5e9b40 100644 (file)
@@ -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
index d8a1cab..2df2d86 100644 (file)
@@ -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
index 50838a4..c59a32e 100644 (file)
@@ -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
index 3f28e8c..7107974 100644 (file)
@@ -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
index f78c135..7abc1c9 100644 (file)
@@ -586,6 +586,7 @@ Cards
 -----
 
 .. note::
+
    For a more updated list, please check
    https://linuxtv.org/wiki/index.php/Hardware_Device_Information
 
index 763705c..b512501 100644 (file)
@@ -55,6 +55,9 @@ may be done automatically by your distribution.
 Driver options
 ~~~~~~~~~~~~~~
 
+.. tabularcolumns:: |p{13ex}|L|
+
+
 ==============  ========================================================
 Option         Description
 ==============  ========================================================
index d5c07bb..6775125 100644 (file)
@@ -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
index d8d1171..f5280e3 100644 (file)
@@ -5,7 +5,7 @@ site: http://royale.zerezo.com/zr364xx/
 
 mail: royale@zerezo.com
 
-.. note:
+.. note::
 
    This documentation is outdated
 
index 8107235..7e09a51 100644 (file)
@@ -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 <songjun.wu@microchip.com>
+L:     linux-media@vger.kernel.org
+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 <yu.c.chen@intel.com>
 L:     platform-driver-x86@vger.kernel.org
index f25344b..b23db17 100644 (file)
@@ -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"
index 21771c1..37b6c75 100644 (file)
@@ -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 (file)
index 0000000..867dca2
--- /dev/null
@@ -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 (file)
index 0000000..9d7c999
--- /dev/null
@@ -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 (file)
index 0000000..00c4497
--- /dev/null
@@ -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 (file)
index 0000000..f0c2512
--- /dev/null
@@ -0,0 +1,1514 @@
+/*
+ * Atmel Image Sensor Controller (ISC) driver
+ *
+ * Copyright (C) 2016 Atmel
+ *
+ * Author: Songjun Wu <songjun.wu@microchip.com>
+ *
+ * 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 <songjun.wu@microchip.com>");
+MODULE_DESCRIPTION("The V4L2 driver for Atmel-ISC");
+MODULE_LICENSE("GPL v2");
+MODULE_SUPPORTED_DEVICE("video");
index 630f4fc..3e304ba 100644 (file)
@@ -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);