diff options
author | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 09:08:05 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 09:08:18 -0400 |
commit | e060c38434b2caa78efe7cedaff4191040b65a15 (patch) | |
tree | 407361230bf6733f63d8e788e4b5e6566ee04818 /Documentation | |
parent | 10e4ac572eeffe5317019bd7330b6058a400dfc2 (diff) | |
parent | cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941 (diff) |
Merge branch 'master' into for-next
Fast-forward merge with Linus to be able to merge patches
based on more recent version of the tree.
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/00-INDEX | 2 | ||||
-rw-r--r-- | Documentation/ABI/testing/pstore | 6 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-class-scsi_host | 13 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-platform-ideapad-laptop | 17 | ||||
-rw-r--r-- | Documentation/CodingStyle | 23 | ||||
-rw-r--r-- | Documentation/DMA-API-HOWTO.txt | 12 | ||||
-rw-r--r-- | Documentation/DocBook/.gitignore | 5 | ||||
-rw-r--r-- | Documentation/DocBook/Makefile | 31 | ||||
-rw-r--r-- | Documentation/DocBook/dvb/dvbproperty.xml | 590 | ||||
-rw-r--r-- | Documentation/DocBook/dvb/dvbstb.png | bin | 22655 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/dvb/frontend.h.xml | 428 | ||||
-rw-r--r-- | Documentation/DocBook/media-entities.tmpl | 464 | ||||
-rw-r--r-- | Documentation/DocBook/media-indices.tmpl | 89 | ||||
-rw-r--r-- | Documentation/DocBook/media/Makefile | 386 | ||||
-rw-r--r-- | Documentation/DocBook/media/bayer.png.b64 | 171 | ||||
-rw-r--r-- | Documentation/DocBook/media/crop.gif.b64 | 105 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/.gitignore (renamed from Documentation/DocBook/dvb/.gitignore) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/audio.xml (renamed from Documentation/DocBook/dvb/audio.xml) | 488 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/ca.xml (renamed from Documentation/DocBook/dvb/ca.xml) | 112 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/demux.xml (renamed from Documentation/DocBook/dvb/demux.xml) | 327 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/dvbapi.xml (renamed from Documentation/DocBook/dvb/dvbapi.xml) | 20 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/dvbproperty.xml | 859 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/dvbstb.pdf (renamed from Documentation/DocBook/dvb/dvbstb.pdf) | bin | 1881 -> 1881 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/dvb/examples.xml (renamed from Documentation/DocBook/dvb/examples.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/frontend.xml (renamed from Documentation/DocBook/dvb/frontend.xml) | 776 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/intro.xml (renamed from Documentation/DocBook/dvb/intro.xml) | 23 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/kdapi.xml (renamed from Documentation/DocBook/dvb/kdapi.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/net.xml (renamed from Documentation/DocBook/dvb/net.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/video.xml (renamed from Documentation/DocBook/dvb/video.xml) | 638 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvbstb.png.b64 | 398 | ||||
-rw-r--r-- | Documentation/DocBook/media/fieldseq_bt.gif.b64 | 447 | ||||
-rw-r--r-- | Documentation/DocBook/media/fieldseq_tb.gif.b64 | 445 | ||||
-rw-r--r-- | Documentation/DocBook/media/nv12mt.gif.b64 | 37 | ||||
-rw-r--r-- | Documentation/DocBook/media/nv12mt_example.gif.b64 | 121 | ||||
-rw-r--r-- | Documentation/DocBook/media/pipeline.png.b64 | 213 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/.gitignore (renamed from Documentation/DocBook/v4l/.gitignore) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/biblio.xml (renamed from Documentation/DocBook/v4l/biblio.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/capture.c.xml (renamed from Documentation/DocBook/v4l/capture.c.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/common.xml (renamed from Documentation/DocBook/v4l/common.xml) | 10 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/compat.xml (renamed from Documentation/DocBook/v4l/compat.xml) | 30 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/controls.xml (renamed from Documentation/DocBook/v4l/controls.xml) | 1267 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/crop.pdf (renamed from Documentation/DocBook/v4l/crop.pdf) | bin | 5846 -> 5846 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-capture.xml (renamed from Documentation/DocBook/v4l/dev-capture.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-codec.xml (renamed from Documentation/DocBook/v4l/dev-codec.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-effect.xml (renamed from Documentation/DocBook/v4l/dev-effect.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-event.xml | 51 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-osd.xml (renamed from Documentation/DocBook/v4l/dev-osd.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-output.xml (renamed from Documentation/DocBook/v4l/dev-output.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-overlay.xml (renamed from Documentation/DocBook/v4l/dev-overlay.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-radio.xml (renamed from Documentation/DocBook/v4l/dev-radio.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-raw-vbi.xml (renamed from Documentation/DocBook/v4l/dev-raw-vbi.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-rds.xml (renamed from Documentation/DocBook/v4l/dev-rds.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-sliced-vbi.xml (renamed from Documentation/DocBook/v4l/dev-sliced-vbi.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-subdev.xml (renamed from Documentation/DocBook/v4l/dev-subdev.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/dev-teletext.xml (renamed from Documentation/DocBook/v4l/dev-teletext.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/driver.xml (renamed from Documentation/DocBook/v4l/driver.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/fdl-appendix.xml (renamed from Documentation/DocBook/v4l/fdl-appendix.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/fieldseq_bt.pdf (renamed from Documentation/DocBook/v4l/fieldseq_bt.pdf) | bin | 9185 -> 9185 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/v4l/fieldseq_tb.pdf (renamed from Documentation/DocBook/v4l/fieldseq_tb.pdf) | bin | 9173 -> 9173 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-close.xml (renamed from Documentation/DocBook/v4l/func-close.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-ioctl.xml | 79 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-mmap.xml (renamed from Documentation/DocBook/v4l/func-mmap.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-munmap.xml (renamed from Documentation/DocBook/v4l/func-munmap.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-open.xml (renamed from Documentation/DocBook/v4l/func-open.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-poll.xml (renamed from Documentation/DocBook/v4l/func-poll.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-read.xml (renamed from Documentation/DocBook/v4l/func-read.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-select.xml (renamed from Documentation/DocBook/v4l/func-select.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/func-write.xml (renamed from Documentation/DocBook/v4l/func-write.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/gen-errors.xml | 78 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/io.xml (renamed from Documentation/DocBook/v4l/io.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/keytable.c.xml (renamed from Documentation/DocBook/v4l/keytable.c.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/libv4l.xml (renamed from Documentation/DocBook/v4l/libv4l.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/lirc_device_interface.xml (renamed from Documentation/DocBook/v4l/lirc_device_interface.xml) | 4 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-controller.xml (renamed from Documentation/DocBook/v4l/media-controller.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-func-close.xml (renamed from Documentation/DocBook/v4l/media-func-close.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-func-ioctl.xml (renamed from Documentation/DocBook/v4l/media-func-ioctl.xml) | 47 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-func-open.xml (renamed from Documentation/DocBook/v4l/media-func-open.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-ioc-device-info.xml (renamed from Documentation/DocBook/v4l/media-ioc-device-info.xml) | 3 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml (renamed from Documentation/DocBook/v4l/media-ioc-enum-entities.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-ioc-enum-links.xml (renamed from Documentation/DocBook/v4l/media-ioc-enum-links.xml) | 2 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/media-ioc-setup-link.xml (renamed from Documentation/DocBook/v4l/media-ioc-setup-link.xml) | 9 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pipeline.pdf (renamed from Documentation/DocBook/v4l/pipeline.pdf) | bin | 20276 -> 20276 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-grey.xml (renamed from Documentation/DocBook/v4l/pixfmt-grey.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-m420.xml (renamed from Documentation/DocBook/v4l/pixfmt-m420.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-nv12.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv12.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-nv12m.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv12m.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv12mt.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-nv16.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv16.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml (renamed from Documentation/DocBook/v4l/pixfmt-packed-rgb.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml (renamed from Documentation/DocBook/v4l/pixfmt-packed-yuv.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml (renamed from Documentation/DocBook/v4l/pixfmt-sbggr16.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml (renamed from Documentation/DocBook/v4l/pixfmt-sbggr8.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml (renamed from Documentation/DocBook/v4l/pixfmt-sgbrg8.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml (renamed from Documentation/DocBook/v4l/pixfmt-sgrbg8.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-srggb10.xml (renamed from Documentation/DocBook/v4l/pixfmt-srggb10.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-srggb12.xml (renamed from Documentation/DocBook/v4l/pixfmt-srggb12.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-srggb8.xml (renamed from Documentation/DocBook/v4l/pixfmt-srggb8.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-uyvy.xml (renamed from Documentation/DocBook/v4l/pixfmt-uyvy.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-vyuy.xml (renamed from Documentation/DocBook/v4l/pixfmt-vyuy.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-y10.xml (renamed from Documentation/DocBook/v4l/pixfmt-y10.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-y10b.xml (renamed from Documentation/DocBook/v4l/pixfmt-y10b.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-y12.xml (renamed from Documentation/DocBook/v4l/pixfmt-y12.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-y16.xml (renamed from Documentation/DocBook/v4l/pixfmt-y16.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-y41p.xml (renamed from Documentation/DocBook/v4l/pixfmt-y41p.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-yuv410.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv410.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv411p.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-yuv420.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv420.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv420m.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv422p.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-yuyv.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuyv.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-yvyu.xml (renamed from Documentation/DocBook/v4l/pixfmt-yvyu.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt.xml (renamed from Documentation/DocBook/v4l/pixfmt.xml) | 60 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/planar-apis.xml (renamed from Documentation/DocBook/v4l/planar-apis.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/remote_controllers.xml (renamed from Documentation/DocBook/v4l/remote_controllers.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/subdev-formats.xml (renamed from Documentation/DocBook/v4l/subdev-formats.xml) | 5 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/v4l2.xml (renamed from Documentation/DocBook/v4l/v4l2.xml) | 13 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/v4l2grab.c.xml (renamed from Documentation/DocBook/v4l/v4l2grab.c.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vbi_525.pdf (renamed from Documentation/DocBook/v4l/vbi_525.pdf) | bin | 3395 -> 3395 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/v4l/vbi_625.pdf (renamed from Documentation/DocBook/v4l/vbi_625.pdf) | bin | 3683 -> 3683 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/v4l/vbi_hsync.pdf (renamed from Documentation/DocBook/v4l/vbi_hsync.pdf) | bin | 7405 -> 7405 bytes | |||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-cropcap.xml (renamed from Documentation/DocBook/v4l/vidioc-cropcap.xml) | 13 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml (renamed from Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml) | 11 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml (renamed from Documentation/DocBook/v4l/vidioc-dbg-g-register.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-dqevent.xml (renamed from Documentation/DocBook/v4l/vidioc-dqevent.xml) | 27 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml (renamed from Documentation/DocBook/v4l/vidioc-encoder-cmd.xml) | 11 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-fmt.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml) | 11 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-framesizes.xml) | 11 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enumaudio.xml (renamed from Documentation/DocBook/v4l/vidioc-enumaudio.xml) | 12 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml (renamed from Documentation/DocBook/v4l/vidioc-enumaudioout.xml) | 12 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enuminput.xml (renamed from Documentation/DocBook/v4l/vidioc-enuminput.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enumoutput.xml (renamed from Documentation/DocBook/v4l/vidioc-enumoutput.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-enumstd.xml (renamed from Documentation/DocBook/v4l/vidioc-enumstd.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-audio.xml (renamed from Documentation/DocBook/v4l/vidioc-g-audio.xml) | 18 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-audioout.xml (renamed from Documentation/DocBook/v4l/vidioc-g-audioout.xml) | 18 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-crop.xml (renamed from Documentation/DocBook/v4l/vidioc-g-crop.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml (renamed from Documentation/DocBook/v4l/vidioc-g-ctrl.xml) | 7 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml (renamed from Documentation/DocBook/v4l/vidioc-g-dv-preset.xml) | 12 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml (renamed from Documentation/DocBook/v4l/vidioc-g-dv-timings.xml) | 11 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml (renamed from Documentation/DocBook/v4l/vidioc-g-enc-index.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml (renamed from Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml) | 14 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml (renamed from Documentation/DocBook/v4l/vidioc-g-fbuf.xml) | 19 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-fmt.xml (renamed from Documentation/DocBook/v4l/vidioc-g-fmt.xml) | 20 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-frequency.xml (renamed from Documentation/DocBook/v4l/vidioc-g-frequency.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-input.xml (renamed from Documentation/DocBook/v4l/vidioc-g-input.xml) | 19 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml (renamed from Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-modulator.xml (renamed from Documentation/DocBook/v4l/vidioc-g-modulator.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-output.xml (renamed from Documentation/DocBook/v4l/vidioc-g-output.xml) | 18 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-parm.xml (renamed from Documentation/DocBook/v4l/vidioc-g-parm.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-priority.xml (renamed from Documentation/DocBook/v4l/vidioc-g-priority.xml) | 3 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml (renamed from Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml) | 11 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-std.xml (renamed from Documentation/DocBook/v4l/vidioc-g-std.xml) | 9 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-g-tuner.xml (renamed from Documentation/DocBook/v4l/vidioc-g-tuner.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-log-status.xml (renamed from Documentation/DocBook/v4l/vidioc-log-status.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-overlay.xml (renamed from Documentation/DocBook/v4l/vidioc-overlay.xml) | 11 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-qbuf.xml (renamed from Documentation/DocBook/v4l/vidioc-qbuf.xml) | 17 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml (renamed from Documentation/DocBook/v4l/vidioc-query-dv-preset.xml) | 22 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-querybuf.xml (renamed from Documentation/DocBook/v4l/vidioc-querybuf.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-querycap.xml (renamed from Documentation/DocBook/v4l/vidioc-querycap.xml) | 34 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-queryctrl.xml (renamed from Documentation/DocBook/v4l/vidioc-queryctrl.xml) | 12 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-querystd.xml (renamed from Documentation/DocBook/v4l/vidioc-querystd.xml) | 23 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-reqbufs.xml (renamed from Documentation/DocBook/v4l/vidioc-reqbufs.xml) | 16 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml (renamed from Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-streamon.xml (renamed from Documentation/DocBook/v4l/vidioc-streamon.xml) | 14 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml) | 3 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml) | 0 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml | 297 | ||||
-rw-r--r-- | Documentation/DocBook/media/vbi_525.gif.b64 | 84 | ||||
-rw-r--r-- | Documentation/DocBook/media/vbi_625.gif.b64 | 90 | ||||
-rw-r--r-- | Documentation/DocBook/media/vbi_hsync.gif.b64 | 43 | ||||
-rw-r--r-- | Documentation/DocBook/media_api.tmpl (renamed from Documentation/DocBook/media.tmpl) | 8 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/bayer.pdf | bin | 12116 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/bayer.png | bin | 9725 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/crop.gif | bin | 5967 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/dev-event.xml | 31 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/fieldseq_bt.gif | bin | 25430 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/fieldseq_tb.gif | bin | 25323 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/func-ioctl.xml | 145 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/nv12mt.gif | bin | 2108 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/nv12mt_example.gif | bin | 6858 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/pipeline.png | bin | 12130 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/vbi_525.gif | bin | 4741 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/vbi_625.gif | bin | 5095 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/vbi_hsync.gif | bin | 2400 -> 0 bytes | |||
-rw-r--r-- | Documentation/DocBook/v4l/videodev2.h.xml | 1946 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/vidioc-subscribe-event.xml | 133 | ||||
-rw-r--r-- | Documentation/PCI/MSI-HOWTO.txt | 89 | ||||
-rw-r--r-- | Documentation/SubmittingDrivers | 2 | ||||
-rw-r--r-- | Documentation/SubmittingPatches | 2 | ||||
-rw-r--r-- | Documentation/acpi/apei/einj.txt | 11 | ||||
-rw-r--r-- | Documentation/block/cfq-iosched.txt | 71 | ||||
-rw-r--r-- | Documentation/device-mapper/dm-crypt.txt | 21 | ||||
-rw-r--r-- | Documentation/device-mapper/dm-flakey.txt | 48 | ||||
-rw-r--r-- | Documentation/device-mapper/dm-raid.txt | 138 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/arm-boards | 20 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/sirf.txt | 3 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/xilinx.txt | 7 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | 17 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/gpio/gpio_keys.txt | 36 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/i2c/arm-versatile.txt | 10 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/input/fsl-mma8450.txt | 11 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt | 34 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/mtd/arm-versatile.txt | 8 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/net/fsl-fec.txt | 24 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/net/smsc-lan91c111.txt | 10 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/rtc/olpc-xo1-rtc.txt | 5 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt | 19 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt | 14 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/watchdog/samsung-wdt.txt | 11 | ||||
-rw-r--r-- | Documentation/dmaengine.txt | 234 | ||||
-rwxr-xr-x[-rw-r--r--] | Documentation/dvb/get_dvb_firmware | 33 | ||||
-rw-r--r-- | Documentation/email-clients.txt | 12 | ||||
-rw-r--r-- | Documentation/fault-injection/fault-injection.txt | 3 | ||||
-rw-r--r-- | Documentation/fb/modedb.txt | 21 | ||||
-rw-r--r-- | Documentation/feature-removal-schedule.txt | 70 | ||||
-rw-r--r-- | Documentation/filesystems/befs.txt | 2 | ||||
-rw-r--r-- | Documentation/filesystems/ext3.txt | 13 | ||||
-rw-r--r-- | Documentation/filesystems/ext4.txt | 23 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/Exporting | 9 | ||||
-rw-r--r-- | Documentation/frv/booting.txt | 13 | ||||
-rw-r--r-- | Documentation/hwmon/adm1275 | 8 | ||||
-rw-r--r-- | Documentation/hwmon/coretemp | 7 | ||||
-rw-r--r-- | Documentation/hwmon/lm25066 | 90 | ||||
-rw-r--r-- | Documentation/hwmon/lm90 | 9 | ||||
-rw-r--r-- | Documentation/hwmon/lm95245 | 33 | ||||
-rw-r--r-- | Documentation/hwmon/max16064 | 4 | ||||
-rw-r--r-- | Documentation/hwmon/max16065 | 7 | ||||
-rw-r--r-- | Documentation/hwmon/max1668 | 60 | ||||
-rw-r--r-- | Documentation/hwmon/max34440 | 6 | ||||
-rw-r--r-- | Documentation/hwmon/max8688 | 6 | ||||
-rw-r--r-- | Documentation/hwmon/ntc_thermistor | 93 | ||||
-rw-r--r-- | Documentation/hwmon/pmbus | 7 | ||||
-rw-r--r-- | Documentation/hwmon/sysfs-interface | 46 | ||||
-rw-r--r-- | Documentation/ioctl/ioctl-number.txt | 3 | ||||
-rw-r--r-- | Documentation/kernel-docs.txt | 11 | ||||
-rw-r--r-- | Documentation/kernel-parameters.txt | 106 | ||||
-rw-r--r-- | Documentation/m68k/kernel-options.txt | 14 | ||||
-rw-r--r-- | Documentation/md.txt | 29 | ||||
-rw-r--r-- | Documentation/media-framework.txt | 2 | ||||
-rw-r--r-- | Documentation/networking/00-INDEX | 116 | ||||
-rw-r--r-- | Documentation/networking/bonding.txt | 31 | ||||
-rw-r--r-- | Documentation/networking/ip-sysctl.txt | 2 | ||||
-rw-r--r-- | Documentation/networking/scaling.txt | 378 | ||||
-rw-r--r-- | Documentation/power/runtime_pm.txt | 13 | ||||
-rw-r--r-- | Documentation/ramoops.txt | 76 | ||||
-rw-r--r-- | Documentation/scsi/ChangeLog.megaraid_sas | 8 | ||||
-rw-r--r-- | Documentation/security/keys-ecryptfs.txt | 68 | ||||
-rw-r--r-- | Documentation/security/keys-trusted-encrypted.txt | 52 | ||||
-rw-r--r-- | Documentation/sysctl/kernel.txt | 22 | ||||
-rw-r--r-- | Documentation/video4linux/API.html | 2 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx23885 | 2 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx88 | 1 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.em28xx | 2 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.saa7134 | 4 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.tuner | 2 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.usbvision | 2 | ||||
-rw-r--r-- | Documentation/video4linux/README.davinci-vpbe | 93 | ||||
-rw-r--r-- | Documentation/video4linux/v4l2-controls.txt | 69 | ||||
-rw-r--r-- | Documentation/video4linux/v4l2-framework.txt | 59 | ||||
-rw-r--r-- | Documentation/virtual/00-INDEX | 3 | ||||
-rw-r--r-- | Documentation/virtual/lguest/lguest.c | 3 | ||||
-rw-r--r-- | Documentation/virtual/virtio-spec.txt | 2200 | ||||
-rw-r--r-- | Documentation/watchdog/00-INDEX | 2 | ||||
-rw-r--r-- | Documentation/watchdog/watchdog-kernel-api.txt | 162 |
269 files changed, 10784 insertions, 6412 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 1f89424c36a6..65bbd2622396 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -272,6 +272,8 @@ printk-formats.txt | |||
272 | - how to get printk format specifiers right | 272 | - how to get printk format specifiers right |
273 | prio_tree.txt | 273 | prio_tree.txt |
274 | - info on radix-priority-search-tree use for indexing vmas. | 274 | - info on radix-priority-search-tree use for indexing vmas. |
275 | ramoops.txt | ||
276 | - documentation of the ramoops oops/panic logging module. | ||
275 | rbtree.txt | 277 | rbtree.txt |
276 | - info on what red-black trees are and what they are for. | 278 | - info on what red-black trees are and what they are for. |
277 | robust-futex-ABI.txt | 279 | robust-futex-ABI.txt |
diff --git a/Documentation/ABI/testing/pstore b/Documentation/ABI/testing/pstore index ddf451ee2a08..ff1df4e3b059 100644 --- a/Documentation/ABI/testing/pstore +++ b/Documentation/ABI/testing/pstore | |||
@@ -39,3 +39,9 @@ Description: Generic interface to platform dependent persistent storage. | |||
39 | multiple) files based on the record size of the underlying | 39 | multiple) files based on the record size of the underlying |
40 | persistent storage until at least this amount is reached. | 40 | persistent storage until at least this amount is reached. |
41 | Default is 10 Kbytes. | 41 | Default is 10 Kbytes. |
42 | |||
43 | Pstore only supports one backend at a time. If multiple | ||
44 | backends are available, the preferred backend may be | ||
45 | set by passing the pstore.backend= argument to the kernel at | ||
46 | boot time. | ||
47 | |||
diff --git a/Documentation/ABI/testing/sysfs-class-scsi_host b/Documentation/ABI/testing/sysfs-class-scsi_host new file mode 100644 index 000000000000..29a4f892e433 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-scsi_host | |||
@@ -0,0 +1,13 @@ | |||
1 | What: /sys/class/scsi_host/hostX/isci_id | ||
2 | Date: June 2011 | ||
3 | Contact: Dave Jiang <dave.jiang@intel.com> | ||
4 | Description: | ||
5 | This file contains the enumerated host ID for the Intel | ||
6 | SCU controller. The Intel(R) C600 Series Chipset SATA/SAS | ||
7 | Storage Control Unit embeds up to two 4-port controllers in | ||
8 | a single PCI device. The controllers are enumerated in order | ||
9 | which usually means the lowest number scsi_host corresponds | ||
10 | with the first controller, but this association is not | ||
11 | guaranteed. The 'isci_id' attribute unambiguously identifies | ||
12 | the controller index: '0' for the first controller, | ||
13 | '1' for the second. | ||
diff --git a/Documentation/ABI/testing/sysfs-platform-ideapad-laptop b/Documentation/ABI/testing/sysfs-platform-ideapad-laptop index 807fca2ae2a4..ff53183c3848 100644 --- a/Documentation/ABI/testing/sysfs-platform-ideapad-laptop +++ b/Documentation/ABI/testing/sysfs-platform-ideapad-laptop | |||
@@ -4,3 +4,20 @@ KernelVersion: 2.6.37 | |||
4 | Contact: "Ike Panhc <ike.pan@canonical.com>" | 4 | Contact: "Ike Panhc <ike.pan@canonical.com>" |
5 | Description: | 5 | Description: |
6 | Control the power of camera module. 1 means on, 0 means off. | 6 | Control the power of camera module. 1 means on, 0 means off. |
7 | |||
8 | What: /sys/devices/platform/ideapad/cfg | ||
9 | Date: Jun 2011 | ||
10 | KernelVersion: 3.1 | ||
11 | Contact: "Ike Panhc <ike.pan@canonical.com>" | ||
12 | Description: | ||
13 | Ideapad capability bits. | ||
14 | Bit 8-10: 1 - Intel graphic only | ||
15 | 2 - ATI graphic only | ||
16 | 3 - Nvidia graphic only | ||
17 | 4 - Intel and ATI graphic | ||
18 | 5 - Intel and Nvidia graphic | ||
19 | Bit 16: Bluetooth exist (1 for exist) | ||
20 | Bit 17: 3G exist (1 for exist) | ||
21 | Bit 18: Wifi exist (1 for exist) | ||
22 | Bit 19: Camera exist (1 for exist) | ||
23 | |||
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle index fa6e25b94a54..c940239d9678 100644 --- a/Documentation/CodingStyle +++ b/Documentation/CodingStyle | |||
@@ -80,22 +80,13 @@ available tools. | |||
80 | The limit on the length of lines is 80 columns and this is a strongly | 80 | The limit on the length of lines is 80 columns and this is a strongly |
81 | preferred limit. | 81 | preferred limit. |
82 | 82 | ||
83 | Statements longer than 80 columns will be broken into sensible chunks. | 83 | Statements longer than 80 columns will be broken into sensible chunks, unless |
84 | Descendants are always substantially shorter than the parent and are placed | 84 | exceeding 80 columns significantly increases readability and does not hide |
85 | substantially to the right. The same applies to function headers with a long | 85 | information. Descendants are always substantially shorter than the parent and |
86 | argument list. Long strings are as well broken into shorter strings. The | 86 | are placed substantially to the right. The same applies to function headers |
87 | only exception to this is where exceeding 80 columns significantly increases | 87 | with a long argument list. However, never break user-visible strings such as |
88 | readability and does not hide information. | 88 | printk messages, because that breaks the ability to grep for them. |
89 | 89 | ||
90 | void fun(int a, int b, int c) | ||
91 | { | ||
92 | if (condition) | ||
93 | printk(KERN_WARNING "Warning this is a long printk with " | ||
94 | "3 parameters a: %u b: %u " | ||
95 | "c: %u \n", a, b, c); | ||
96 | else | ||
97 | next_statement; | ||
98 | } | ||
99 | 90 | ||
100 | Chapter 3: Placing Braces and Spaces | 91 | Chapter 3: Placing Braces and Spaces |
101 | 92 | ||
diff --git a/Documentation/DMA-API-HOWTO.txt b/Documentation/DMA-API-HOWTO.txt index d568bc235bc0..a0b6250add79 100644 --- a/Documentation/DMA-API-HOWTO.txt +++ b/Documentation/DMA-API-HOWTO.txt | |||
@@ -613,13 +613,13 @@ to use the dma_sync_*() interfaces. | |||
613 | pass_to_upper_layers(cp->rx_buf); | 613 | pass_to_upper_layers(cp->rx_buf); |
614 | make_and_setup_new_rx_buf(cp); | 614 | make_and_setup_new_rx_buf(cp); |
615 | } else { | 615 | } else { |
616 | /* Just sync the buffer and give it back | 616 | /* CPU should not write to |
617 | * to the card. | 617 | * DMA_FROM_DEVICE-mapped area, |
618 | * so dma_sync_single_for_device() is | ||
619 | * not needed here. It would be required | ||
620 | * for DMA_BIDIRECTIONAL mapping if | ||
621 | * the memory was modified. | ||
618 | */ | 622 | */ |
619 | dma_sync_single_for_device(&cp->dev, | ||
620 | cp->rx_dma, | ||
621 | cp->rx_len, | ||
622 | DMA_FROM_DEVICE); | ||
623 | give_rx_buf_to_card(cp); | 623 | give_rx_buf_to_card(cp); |
624 | } | 624 | } |
625 | } | 625 | } |
diff --git a/Documentation/DocBook/.gitignore b/Documentation/DocBook/.gitignore index 679034cbd686..720f245ceb1f 100644 --- a/Documentation/DocBook/.gitignore +++ b/Documentation/DocBook/.gitignore | |||
@@ -8,4 +8,7 @@ | |||
8 | *.dvi | 8 | *.dvi |
9 | *.log | 9 | *.log |
10 | *.out | 10 | *.out |
11 | media/ | 11 | *.png |
12 | *.gif | ||
13 | media-indices.tmpl | ||
14 | media-entities.tmpl | ||
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 3cebfa0d1611..66725a3d30dc 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -14,7 +14,9 @@ DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \ | |||
14 | genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ | 14 | genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ |
15 | 80211.xml debugobjects.xml sh.xml regulator.xml \ | 15 | 80211.xml debugobjects.xml sh.xml regulator.xml \ |
16 | alsa-driver-api.xml writing-an-alsa-driver.xml \ | 16 | alsa-driver-api.xml writing-an-alsa-driver.xml \ |
17 | tracepoint.xml media.xml drm.xml | 17 | tracepoint.xml drm.xml media_api.xml |
18 | |||
19 | include $(srctree)/Documentation/DocBook/media/Makefile | ||
18 | 20 | ||
19 | ### | 21 | ### |
20 | # The build process is as follows (targets): | 22 | # The build process is as follows (targets): |
@@ -32,7 +34,7 @@ PS_METHOD = $(prefer-db2x) | |||
32 | 34 | ||
33 | ### | 35 | ### |
34 | # The targets that may be used. | 36 | # The targets that may be used. |
35 | PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs xmldoclinks | 37 | PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs |
36 | 38 | ||
37 | BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) | 39 | BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) |
38 | xmldocs: $(BOOKS) | 40 | xmldocs: $(BOOKS) |
@@ -45,27 +47,14 @@ PDF := $(patsubst %.xml, %.pdf, $(BOOKS)) | |||
45 | pdfdocs: $(PDF) | 47 | pdfdocs: $(PDF) |
46 | 48 | ||
47 | HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS))) | 49 | HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS))) |
48 | htmldocs: $(HTML) xmldoclinks | 50 | htmldocs: $(HTML) |
49 | $(call build_main_index) | 51 | $(call build_main_index) |
50 | $(call build_images) | 52 | $(call build_images) |
53 | $(call install_media_images) | ||
51 | 54 | ||
52 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) | 55 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) |
53 | mandocs: $(MAN) | 56 | mandocs: $(MAN) |
54 | 57 | ||
55 | build_images = mkdir -p $(objtree)/Documentation/DocBook/media/ && \ | ||
56 | cp $(srctree)/Documentation/DocBook/dvb/*.png \ | ||
57 | $(srctree)/Documentation/DocBook/v4l/*.gif \ | ||
58 | $(objtree)/Documentation/DocBook/media/ | ||
59 | |||
60 | xmldoclinks: | ||
61 | ifneq ($(objtree),$(srctree)) | ||
62 | for dep in dvb media-entities.tmpl media-indices.tmpl v4l; do \ | ||
63 | rm -f $(objtree)/Documentation/DocBook/$$dep \ | ||
64 | && ln -s $(srctree)/Documentation/DocBook/$$dep $(objtree)/Documentation/DocBook/ \ | ||
65 | || exit; \ | ||
66 | done | ||
67 | endif | ||
68 | |||
69 | installmandocs: mandocs | 58 | installmandocs: mandocs |
70 | mkdir -p /usr/local/man/man9/ | 59 | mkdir -p /usr/local/man/man9/ |
71 | install Documentation/DocBook/man/*.9.gz /usr/local/man/man9/ | 60 | install Documentation/DocBook/man/*.9.gz /usr/local/man/man9/ |
@@ -97,11 +86,11 @@ define rule_docproc | |||
97 | ) > $(dir $@).$(notdir $@).cmd | 86 | ) > $(dir $@).$(notdir $@).cmd |
98 | endef | 87 | endef |
99 | 88 | ||
100 | %.xml: %.tmpl xmldoclinks FORCE | 89 | %.xml: %.tmpl FORCE |
101 | $(call if_changed_rule,docproc) | 90 | $(call if_changed_rule,docproc) |
102 | 91 | ||
103 | ### | 92 | ### |
104 | #Read in all saved dependency files | 93 | #Read in all saved dependency files |
105 | cmd_files := $(wildcard $(foreach f,$(BOOKS),$(dir $(f)).$(notdir $(f)).cmd)) | 94 | cmd_files := $(wildcard $(foreach f,$(BOOKS),$(dir $(f)).$(notdir $(f)).cmd)) |
106 | 95 | ||
107 | ifneq ($(cmd_files),) | 96 | ifneq ($(cmd_files),) |
@@ -150,7 +139,7 @@ quiet_cmd_db2pdf = PDF $@ | |||
150 | 139 | ||
151 | index = index.html | 140 | index = index.html |
152 | main_idx = Documentation/DocBook/$(index) | 141 | main_idx = Documentation/DocBook/$(index) |
153 | build_main_index = rm -rf $(main_idx) && \ | 142 | build_main_index = rm -rf $(main_idx); \ |
154 | echo '<h1>Linux Kernel HTML Documentation</h1>' >> $(main_idx) && \ | 143 | echo '<h1>Linux Kernel HTML Documentation</h1>' >> $(main_idx) && \ |
155 | echo '<h2>Kernel Version: $(KERNELVERSION)</h2>' >> $(main_idx) && \ | 144 | echo '<h2>Kernel Version: $(KERNELVERSION)</h2>' >> $(main_idx) && \ |
156 | cat $(HTML) >> $(main_idx) | 145 | cat $(HTML) >> $(main_idx) |
@@ -242,7 +231,7 @@ clean-files := $(DOCBOOKS) \ | |||
242 | 231 | ||
243 | clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man | 232 | clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man |
244 | 233 | ||
245 | cleandocs: | 234 | cleandocs: cleanmediadocs |
246 | $(Q)rm -f $(call objectify, $(clean-files)) | 235 | $(Q)rm -f $(call objectify, $(clean-files)) |
247 | $(Q)rm -rf $(call objectify, $(clean-dirs)) | 236 | $(Q)rm -rf $(call objectify, $(clean-dirs)) |
248 | 237 | ||
diff --git a/Documentation/DocBook/dvb/dvbproperty.xml b/Documentation/DocBook/dvb/dvbproperty.xml deleted file mode 100644 index b5365f61d69b..000000000000 --- a/Documentation/DocBook/dvb/dvbproperty.xml +++ /dev/null | |||
@@ -1,590 +0,0 @@ | |||
1 | <section id="FE_GET_SET_PROPERTY"> | ||
2 | <title>FE_GET_PROPERTY/FE_SET_PROPERTY</title> | ||
3 | |||
4 | <programlisting> | ||
5 | /* Reserved fields should be set to 0 */ | ||
6 | struct dtv_property { | ||
7 | __u32 cmd; | ||
8 | union { | ||
9 | __u32 data; | ||
10 | struct { | ||
11 | __u8 data[32]; | ||
12 | __u32 len; | ||
13 | __u32 reserved1[3]; | ||
14 | void *reserved2; | ||
15 | } buffer; | ||
16 | } u; | ||
17 | int result; | ||
18 | } __attribute__ ((packed)); | ||
19 | |||
20 | /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ | ||
21 | #define DTV_IOCTL_MAX_MSGS 64 | ||
22 | |||
23 | struct dtv_properties { | ||
24 | __u32 num; | ||
25 | struct dtv_property *props; | ||
26 | }; | ||
27 | </programlisting> | ||
28 | |||
29 | <section id="FE_GET_PROPERTY"> | ||
30 | <title>FE_GET_PROPERTY</title> | ||
31 | <para>DESCRIPTION | ||
32 | </para> | ||
33 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
34 | align="char"> | ||
35 | <para>This ioctl call returns one or more frontend properties. This call only | ||
36 | requires read-only access to the device.</para> | ||
37 | </entry> | ||
38 | </row></tbody></tgroup></informaltable> | ||
39 | <para>SYNOPSIS | ||
40 | </para> | ||
41 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
42 | align="char"> | ||
43 | <para>int ioctl(int fd, int request = <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>, | ||
44 | dtv_properties ⋆props);</para> | ||
45 | </entry> | ||
46 | </row></tbody></tgroup></informaltable> | ||
47 | <para>PARAMETERS | ||
48 | </para> | ||
49 | <informaltable><tgroup cols="2"><tbody><row><entry align="char"> | ||
50 | <para>int fd</para> | ||
51 | </entry><entry | ||
52 | align="char"> | ||
53 | <para>File descriptor returned by a previous call to open().</para> | ||
54 | </entry> | ||
55 | </row><row><entry | ||
56 | align="char"> | ||
57 | <para>int num</para> | ||
58 | </entry><entry | ||
59 | align="char"> | ||
60 | <para>Equals <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> for this command.</para> | ||
61 | </entry> | ||
62 | </row><row><entry | ||
63 | align="char"> | ||
64 | <para>struct dtv_property *props</para> | ||
65 | </entry><entry | ||
66 | align="char"> | ||
67 | <para>Points to the location where the front-end property commands are stored.</para> | ||
68 | </entry> | ||
69 | </row></tbody></tgroup></informaltable> | ||
70 | <para>ERRORS</para> | ||
71 | <informaltable><tgroup cols="2"><tbody><row> | ||
72 | <entry align="char"><para>EINVAL</para></entry> | ||
73 | <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry> | ||
74 | </row><row> | ||
75 | <entry align="char"><para>ENOMEM</para></entry> | ||
76 | <entry align="char"><para>Out of memory.</para></entry> | ||
77 | </row><row> | ||
78 | <entry align="char"><para>EFAULT</para></entry> | ||
79 | <entry align="char"><para>Failure while copying data from/to userspace.</para></entry> | ||
80 | </row><row> | ||
81 | <entry align="char"><para>EOPNOTSUPP</para></entry> | ||
82 | <entry align="char"><para>Property type not supported.</para></entry> | ||
83 | </row></tbody></tgroup></informaltable> | ||
84 | </section> | ||
85 | |||
86 | <section id="FE_SET_PROPERTY"> | ||
87 | <title>FE_SET_PROPERTY</title> | ||
88 | <para>DESCRIPTION | ||
89 | </para> | ||
90 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
91 | align="char"> | ||
92 | <para>This ioctl call sets one or more frontend properties. This call only | ||
93 | requires read-only access to the device.</para> | ||
94 | </entry> | ||
95 | </row></tbody></tgroup></informaltable> | ||
96 | <para>SYNOPSIS | ||
97 | </para> | ||
98 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
99 | align="char"> | ||
100 | <para>int ioctl(int fd, int request = <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>, | ||
101 | dtv_properties ⋆props);</para> | ||
102 | </entry> | ||
103 | </row></tbody></tgroup></informaltable> | ||
104 | <para>PARAMETERS | ||
105 | </para> | ||
106 | <informaltable><tgroup cols="2"><tbody><row><entry align="char"> | ||
107 | <para>int fd</para> | ||
108 | </entry><entry | ||
109 | align="char"> | ||
110 | <para>File descriptor returned by a previous call to open().</para> | ||
111 | </entry> | ||
112 | </row><row><entry | ||
113 | align="char"> | ||
114 | <para>int num</para> | ||
115 | </entry><entry | ||
116 | align="char"> | ||
117 | <para>Equals <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link> for this command.</para> | ||
118 | </entry> | ||
119 | </row><row><entry | ||
120 | align="char"> | ||
121 | <para>struct dtv_property *props</para> | ||
122 | </entry><entry | ||
123 | align="char"> | ||
124 | <para>Points to the location where the front-end property commands are stored.</para> | ||
125 | </entry> | ||
126 | </row></tbody></tgroup></informaltable> | ||
127 | <para>ERRORS | ||
128 | </para> | ||
129 | <informaltable><tgroup cols="2"><tbody><row> | ||
130 | <entry align="char"><para>EINVAL</para></entry> | ||
131 | <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry> | ||
132 | </row><row> | ||
133 | <entry align="char"><para>ENOMEM</para></entry> | ||
134 | <entry align="char"><para>Out of memory.</para></entry> | ||
135 | </row><row> | ||
136 | <entry align="char"><para>EFAULT</para></entry> | ||
137 | <entry align="char"><para>Failure while copying data from/to userspace.</para></entry> | ||
138 | </row><row> | ||
139 | <entry align="char"><para>EOPNOTSUPP</para></entry> | ||
140 | <entry align="char"><para>Property type not supported.</para></entry> | ||
141 | </row></tbody></tgroup></informaltable> | ||
142 | </section> | ||
143 | |||
144 | <section> | ||
145 | <title>Property types</title> | ||
146 | <para> | ||
147 | On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>, | ||
148 | the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to | ||
149 | get/set up to 64 properties. The actual meaning of each property is described on the next sections. | ||
150 | </para> | ||
151 | |||
152 | <para>The available frontend property types are:</para> | ||
153 | <programlisting> | ||
154 | #define DTV_UNDEFINED 0 | ||
155 | #define DTV_TUNE 1 | ||
156 | #define DTV_CLEAR 2 | ||
157 | #define DTV_FREQUENCY 3 | ||
158 | #define DTV_MODULATION 4 | ||
159 | #define DTV_BANDWIDTH_HZ 5 | ||
160 | #define DTV_INVERSION 6 | ||
161 | #define DTV_DISEQC_MASTER 7 | ||
162 | #define DTV_SYMBOL_RATE 8 | ||
163 | #define DTV_INNER_FEC 9 | ||
164 | #define DTV_VOLTAGE 10 | ||
165 | #define DTV_TONE 11 | ||
166 | #define DTV_PILOT 12 | ||
167 | #define DTV_ROLLOFF 13 | ||
168 | #define DTV_DISEQC_SLAVE_REPLY 14 | ||
169 | #define DTV_FE_CAPABILITY_COUNT 15 | ||
170 | #define DTV_FE_CAPABILITY 16 | ||
171 | #define DTV_DELIVERY_SYSTEM 17 | ||
172 | #define DTV_ISDBT_PARTIAL_RECEPTION 18 | ||
173 | #define DTV_ISDBT_SOUND_BROADCASTING 19 | ||
174 | #define DTV_ISDBT_SB_SUBCHANNEL_ID 20 | ||
175 | #define DTV_ISDBT_SB_SEGMENT_IDX 21 | ||
176 | #define DTV_ISDBT_SB_SEGMENT_COUNT 22 | ||
177 | #define DTV_ISDBT_LAYERA_FEC 23 | ||
178 | #define DTV_ISDBT_LAYERA_MODULATION 24 | ||
179 | #define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25 | ||
180 | #define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26 | ||
181 | #define DTV_ISDBT_LAYERB_FEC 27 | ||
182 | #define DTV_ISDBT_LAYERB_MODULATION 28 | ||
183 | #define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29 | ||
184 | #define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30 | ||
185 | #define DTV_ISDBT_LAYERC_FEC 31 | ||
186 | #define DTV_ISDBT_LAYERC_MODULATION 32 | ||
187 | #define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33 | ||
188 | #define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34 | ||
189 | #define DTV_API_VERSION 35 | ||
190 | #define DTV_CODE_RATE_HP 36 | ||
191 | #define DTV_CODE_RATE_LP 37 | ||
192 | #define DTV_GUARD_INTERVAL 38 | ||
193 | #define DTV_TRANSMISSION_MODE 39 | ||
194 | #define DTV_HIERARCHY 40 | ||
195 | #define DTV_ISDBT_LAYER_ENABLED 41 | ||
196 | #define DTV_ISDBS_TS_ID 42 | ||
197 | </programlisting> | ||
198 | </section> | ||
199 | |||
200 | <section id="fe_property_common"> | ||
201 | <title>Parameters that are common to all Digital TV standards</title> | ||
202 | <section id="DTV_FREQUENCY"> | ||
203 | <title><constant>DTV_FREQUENCY</constant></title> | ||
204 | |||
205 | <para>Central frequency of the channel, in HZ.</para> | ||
206 | |||
207 | <para>Notes:</para> | ||
208 | <para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz. | ||
209 | E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of | ||
210 | the channel which is 6MHz.</para> | ||
211 | |||
212 | <para>2)As in ISDB-Tsb the channel consists of only one or three segments the | ||
213 | frequency step is 429kHz, 3*429 respectively. As for ISDB-T the | ||
214 | central frequency of the channel is expected.</para> | ||
215 | </section> | ||
216 | |||
217 | <section id="DTV_BANDWIDTH_HZ"> | ||
218 | <title><constant>DTV_BANDWIDTH_HZ</constant></title> | ||
219 | |||
220 | <para>Bandwidth for the channel, in HZ.</para> | ||
221 | |||
222 | <para>Possible values: | ||
223 | <constant>1712000</constant>, | ||
224 | <constant>5000000</constant>, | ||
225 | <constant>6000000</constant>, | ||
226 | <constant>7000000</constant>, | ||
227 | <constant>8000000</constant>, | ||
228 | <constant>10000000</constant>. | ||
229 | </para> | ||
230 | |||
231 | <para>Notes:</para> | ||
232 | |||
233 | <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para> | ||
234 | <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para> | ||
235 | <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth | ||
236 | for DVB-C depends on the symbol rate</para> | ||
237 | <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from | ||
238 | other parameters (DTV_ISDBT_SB_SEGMENT_IDX, | ||
239 | DTV_ISDBT_SB_SEGMENT_COUNT).</para> | ||
240 | <para>5) DVB-T supports 6, 7 and 8MHz.</para> | ||
241 | <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para> | ||
242 | </section> | ||
243 | |||
244 | <section id="DTV_DELIVERY_SYSTEM"> | ||
245 | <title><constant>DTV_DELIVERY_SYSTEM</constant></title> | ||
246 | |||
247 | <para>Specifies the type of Delivery system</para> | ||
248 | |||
249 | <para>Possible values: </para> | ||
250 | <programlisting> | ||
251 | typedef enum fe_delivery_system { | ||
252 | SYS_UNDEFINED, | ||
253 | SYS_DVBC_ANNEX_AC, | ||
254 | SYS_DVBC_ANNEX_B, | ||
255 | SYS_DVBT, | ||
256 | SYS_DSS, | ||
257 | SYS_DVBS, | ||
258 | SYS_DVBS2, | ||
259 | SYS_DVBH, | ||
260 | SYS_ISDBT, | ||
261 | SYS_ISDBS, | ||
262 | SYS_ISDBC, | ||
263 | SYS_ATSC, | ||
264 | SYS_ATSCMH, | ||
265 | SYS_DMBTH, | ||
266 | SYS_CMMB, | ||
267 | SYS_DAB, | ||
268 | SYS_DVBT2, | ||
269 | } fe_delivery_system_t; | ||
270 | </programlisting> | ||
271 | |||
272 | </section> | ||
273 | |||
274 | <section id="DTV_TRANSMISSION_MODE"> | ||
275 | <title><constant>DTV_TRANSMISSION_MODE</constant></title> | ||
276 | |||
277 | <para>Specifies the number of carriers used by the standard</para> | ||
278 | |||
279 | <para>Possible values are:</para> | ||
280 | <programlisting> | ||
281 | typedef enum fe_transmit_mode { | ||
282 | TRANSMISSION_MODE_2K, | ||
283 | TRANSMISSION_MODE_8K, | ||
284 | TRANSMISSION_MODE_AUTO, | ||
285 | TRANSMISSION_MODE_4K, | ||
286 | TRANSMISSION_MODE_1K, | ||
287 | TRANSMISSION_MODE_16K, | ||
288 | TRANSMISSION_MODE_32K, | ||
289 | } fe_transmit_mode_t; | ||
290 | </programlisting> | ||
291 | |||
292 | <para>Notes:</para> | ||
293 | <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called | ||
294 | 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para> | ||
295 | |||
296 | <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the | ||
297 | hardware will try to find the correct FFT-size (if capable) and will | ||
298 | use TMCC to fill in the missing parameters.</para> | ||
299 | <para>3) DVB-T specifies 2K and 8K as valid sizes.</para> | ||
300 | <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para> | ||
301 | </section> | ||
302 | |||
303 | <section id="DTV_GUARD_INTERVAL"> | ||
304 | <title><constant>DTV_GUARD_INTERVAL</constant></title> | ||
305 | |||
306 | <para>Possible values are:</para> | ||
307 | <programlisting> | ||
308 | typedef enum fe_guard_interval { | ||
309 | GUARD_INTERVAL_1_32, | ||
310 | GUARD_INTERVAL_1_16, | ||
311 | GUARD_INTERVAL_1_8, | ||
312 | GUARD_INTERVAL_1_4, | ||
313 | GUARD_INTERVAL_AUTO, | ||
314 | GUARD_INTERVAL_1_128, | ||
315 | GUARD_INTERVAL_19_128, | ||
316 | GUARD_INTERVAL_19_256, | ||
317 | } fe_guard_interval_t; | ||
318 | </programlisting> | ||
319 | |||
320 | <para>Notes:</para> | ||
321 | <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will | ||
322 | try to find the correct guard interval (if capable) and will use TMCC to fill | ||
323 | in the missing parameters.</para> | ||
324 | <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para> | ||
325 | </section> | ||
326 | </section> | ||
327 | |||
328 | <section id="isdbt"> | ||
329 | <title>ISDB-T frontend</title> | ||
330 | <para>This section describes shortly what are the possible parameters in the Linux | ||
331 | DVB-API called "S2API" and now DVB API 5 in order to tune an ISDB-T/ISDB-Tsb | ||
332 | demodulator:</para> | ||
333 | |||
334 | <para>This ISDB-T/ISDB-Tsb API extension should reflect all information | ||
335 | needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible | ||
336 | that some very sophisticated devices won't need certain parameters to | ||
337 | tune.</para> | ||
338 | |||
339 | <para>The information given here should help application writers to know how | ||
340 | to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.</para> | ||
341 | |||
342 | <para>The details given here about ISDB-T and ISDB-Tsb are just enough to | ||
343 | basically show the dependencies between the needed parameter values, | ||
344 | but surely some information is left out. For more detailed information | ||
345 | see the following documents:</para> | ||
346 | |||
347 | <para>ARIB STD-B31 - "Transmission System for Digital Terrestrial | ||
348 | Television Broadcasting" and</para> | ||
349 | <para>ARIB TR-B14 - "Operational Guidelines for Digital Terrestrial | ||
350 | Television Broadcasting".</para> | ||
351 | |||
352 | <para>In order to read this document one has to have some knowledge the | ||
353 | channel structure in ISDB-T and ISDB-Tsb. I.e. it has to be known to | ||
354 | the reader that an ISDB-T channel consists of 13 segments, that it can | ||
355 | have up to 3 layer sharing those segments, and things like that.</para> | ||
356 | |||
357 | <para>Parameters used by ISDB-T and ISDB-Tsb.</para> | ||
358 | |||
359 | <section id="isdbt-new-parms"> | ||
360 | <title>ISDB-T only parameters</title> | ||
361 | |||
362 | <section id="isdbt-part-rec"> | ||
363 | <title><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></title> | ||
364 | |||
365 | <para><constant>If DTV_ISDBT_SOUND_BROADCASTING</constant> is '0' this bit-field represents whether | ||
366 | the channel is in partial reception mode or not.</para> | ||
367 | |||
368 | <para>If '1' <constant>DTV_ISDBT_LAYERA_*</constant> values are assigned to the center segment and | ||
369 | <constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant> has to be '1'.</para> | ||
370 | |||
371 | <para>If in addition <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1' | ||
372 | <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> represents whether this ISDB-Tsb channel | ||
373 | is consisting of one segment and layer or three segments and two layers.</para> | ||
374 | |||
375 | <para>Possible values: 0, 1, -1 (AUTO)</para> | ||
376 | </section> | ||
377 | |||
378 | <section id="isdbt-sound-bcast"> | ||
379 | <title><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></title> | ||
380 | |||
381 | <para>This field represents whether the other DTV_ISDBT_*-parameters are | ||
382 | referring to an ISDB-T and an ISDB-Tsb channel. (See also | ||
383 | <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>).</para> | ||
384 | |||
385 | <para>Possible values: 0, 1, -1 (AUTO)</para> | ||
386 | </section> | ||
387 | |||
388 | <section id="isdbt-sb-ch-id"> | ||
389 | <title><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></title> | ||
390 | |||
391 | <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para> | ||
392 | |||
393 | <para>(Note of the author: This might not be the correct description of the | ||
394 | <constant>SUBCHANNEL-ID</constant> in all details, but it is my understanding of the technical | ||
395 | background needed to program a device)</para> | ||
396 | |||
397 | <para>An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a | ||
398 | set of connected ISDB-Tsb channels. In this set of channels every | ||
399 | channel can be received independently. The number of connected | ||
400 | ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum | ||
401 | bandwidth available.</para> | ||
402 | |||
403 | <para>Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The | ||
404 | broadcaster has several possibilities to put those channels in the | ||
405 | air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8 | ||
406 | segments from position 1-8 to 5-13 or anything in between.</para> | ||
407 | |||
408 | <para>The underlying layer of segments are subchannels: each segment is | ||
409 | consisting of several subchannels with a predefined IDs. A sub-channel | ||
410 | is used to help the demodulator to synchronize on the channel.</para> | ||
411 | |||
412 | <para>An ISDB-T channel is always centered over all sub-channels. As for | ||
413 | the example above, in ISDB-Tsb it is no longer as simple as that.</para> | ||
414 | |||
415 | <para><constant>The DTV_ISDBT_SB_SUBCHANNEL_ID</constant> parameter is used to give the | ||
416 | sub-channel ID of the segment to be demodulated.</para> | ||
417 | |||
418 | <para>Possible values: 0 .. 41, -1 (AUTO)</para> | ||
419 | </section> | ||
420 | |||
421 | <section id="isdbt-sb-seg-idx"> | ||
422 | |||
423 | <title><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></title> | ||
424 | |||
425 | <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para> | ||
426 | |||
427 | <para><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant> gives the index of the segment to be | ||
428 | demodulated for an ISDB-Tsb channel where several of them are | ||
429 | transmitted in the connected manner.</para> | ||
430 | |||
431 | <para>Possible values: 0 .. <constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> - 1</para> | ||
432 | |||
433 | <para>Note: This value cannot be determined by an automatic channel search.</para> | ||
434 | </section> | ||
435 | |||
436 | <section id="isdbt-sb-seg-cnt"> | ||
437 | <title><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></title> | ||
438 | |||
439 | <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para> | ||
440 | |||
441 | <para><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> gives the total count of connected ISDB-Tsb | ||
442 | channels.</para> | ||
443 | |||
444 | <para>Possible values: 1 .. 13</para> | ||
445 | |||
446 | <para>Note: This value cannot be determined by an automatic channel search.</para> | ||
447 | </section> | ||
448 | |||
449 | <section id="isdb-hierq-layers"> | ||
450 | <title>Hierarchical layers</title> | ||
451 | |||
452 | <para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in | ||
453 | ISDB-T hierarchical layers can be decoded simultaneously. For that | ||
454 | reason a ISDB-T demodulator has 3 viterbi and 3 reed-solomon-decoders.</para> | ||
455 | |||
456 | <para>ISDB-T has 3 hierarchical layers which each can use a part of the | ||
457 | available segments. The total number of segments over all layers has | ||
458 | to 13 in ISDB-T.</para> | ||
459 | |||
460 | <section id="isdbt-layer-ena"> | ||
461 | <title><constant>DTV_ISDBT_LAYER_ENABLED</constant></title> | ||
462 | |||
463 | <para>Hierarchical reception in ISDB-T is achieved by enabling or disabling | ||
464 | layers in the decoding process. Setting all bits of | ||
465 | <constant>DTV_ISDBT_LAYER_ENABLED</constant> to '1' forces all layers (if applicable) to be | ||
466 | demodulated. This is the default.</para> | ||
467 | |||
468 | <para>If the channel is in the partial reception mode | ||
469 | (<constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> = 1) the central segment can be decoded | ||
470 | independently of the other 12 segments. In that mode layer A has to | ||
471 | have a <constant>SEGMENT_COUNT</constant> of 1.</para> | ||
472 | |||
473 | <para>In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb | ||
474 | according to <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>. <constant>SEGMENT_COUNT</constant> must be filled | ||
475 | accordingly.</para> | ||
476 | |||
477 | <para>Possible values: 0x1, 0x2, 0x4 (|-able)</para> | ||
478 | |||
479 | <para><constant>DTV_ISDBT_LAYER_ENABLED[0:0]</constant> - layer A</para> | ||
480 | <para><constant>DTV_ISDBT_LAYER_ENABLED[1:1]</constant> - layer B</para> | ||
481 | <para><constant>DTV_ISDBT_LAYER_ENABLED[2:2]</constant> - layer C</para> | ||
482 | <para><constant>DTV_ISDBT_LAYER_ENABLED[31:3]</constant> unused</para> | ||
483 | </section> | ||
484 | |||
485 | <section id="isdbt-layer-fec"> | ||
486 | <title><constant>DTV_ISDBT_LAYER*_FEC</constant></title> | ||
487 | |||
488 | <para>Possible values: <constant>FEC_AUTO</constant>, <constant>FEC_1_2</constant>, <constant>FEC_2_3</constant>, <constant>FEC_3_4</constant>, <constant>FEC_5_6</constant>, <constant>FEC_7_8</constant></para> | ||
489 | </section> | ||
490 | |||
491 | <section id="isdbt-layer-mod"> | ||
492 | <title><constant>DTV_ISDBT_LAYER*_MODULATION</constant></title> | ||
493 | |||
494 | <para>Possible values: <constant>QAM_AUTO</constant>, QP<constant>SK, QAM_16</constant>, <constant>QAM_64</constant>, <constant>DQPSK</constant></para> | ||
495 | |||
496 | <para>Note: If layer C is <constant>DQPSK</constant> layer B has to be <constant>DQPSK</constant>. If layer B is <constant>DQPSK</constant> | ||
497 | and <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>=0 layer has to be <constant>DQPSK</constant>.</para> | ||
498 | </section> | ||
499 | |||
500 | <section id="isdbt-layer-seg-cnt"> | ||
501 | <title><constant>DTV_ISDBT_LAYER*_SEGMENT_COUNT</constant></title> | ||
502 | |||
503 | <para>Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)</para> | ||
504 | |||
505 | <para>Note: Truth table for <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> and | ||
506 | <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> and <constant>LAYER</constant>*_SEGMENT_COUNT</para> | ||
507 | |||
508 | <informaltable id="isdbt-layer_seg-cnt-table"> | ||
509 | <tgroup cols="6"> | ||
510 | |||
511 | <tbody> | ||
512 | <row> | ||
513 | <entry>PR</entry> | ||
514 | <entry>SB</entry> | ||
515 | <entry>Layer A width</entry> | ||
516 | <entry>Layer B width</entry> | ||
517 | <entry>Layer C width</entry> | ||
518 | <entry>total width</entry> | ||
519 | </row> | ||
520 | |||
521 | <row> | ||
522 | <entry>0</entry> | ||
523 | <entry>0</entry> | ||
524 | <entry>1 .. 13</entry> | ||
525 | <entry>1 .. 13</entry> | ||
526 | <entry>1 .. 13</entry> | ||
527 | <entry>13</entry> | ||
528 | </row> | ||
529 | |||
530 | <row> | ||
531 | <entry>1</entry> | ||
532 | <entry>0</entry> | ||
533 | <entry>1</entry> | ||
534 | <entry>1 .. 13</entry> | ||
535 | <entry>1 .. 13</entry> | ||
536 | <entry>13</entry> | ||
537 | </row> | ||
538 | |||
539 | <row> | ||
540 | <entry>0</entry> | ||
541 | <entry>1</entry> | ||
542 | <entry>1</entry> | ||
543 | <entry>0</entry> | ||
544 | <entry>0</entry> | ||
545 | <entry>1</entry> | ||
546 | </row> | ||
547 | |||
548 | <row> | ||
549 | <entry>1</entry> | ||
550 | <entry>1</entry> | ||
551 | <entry>1</entry> | ||
552 | <entry>2</entry> | ||
553 | <entry>0</entry> | ||
554 | <entry>13</entry> | ||
555 | </row> | ||
556 | </tbody> | ||
557 | |||
558 | </tgroup> | ||
559 | </informaltable> | ||
560 | |||
561 | </section> | ||
562 | |||
563 | <section id="isdbt_layer_t_interl"> | ||
564 | <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title> | ||
565 | |||
566 | <para>Possible values: 0, 1, 2, 3, -1 (AUTO)</para> | ||
567 | |||
568 | <para>Note: The real inter-leaver depth-names depend on the mode (fft-size); the values | ||
569 | here are referring to what can be found in the TMCC-structure - | ||
570 | independent of the mode.</para> | ||
571 | </section> | ||
572 | </section> | ||
573 | </section> | ||
574 | <section id="dvbt2-params"> | ||
575 | <title>DVB-T2 parameters</title> | ||
576 | |||
577 | <para>This section covers parameters that apply only to the DVB-T2 delivery method. DVB-T2 | ||
578 | support is currently in the early stages development so expect this section to grow | ||
579 | and become more detailed with time.</para> | ||
580 | |||
581 | <section id="dvbt2-plp-id"> | ||
582 | <title><constant>DTV_DVBT2_PLP_ID</constant></title> | ||
583 | |||
584 | <para>DVB-T2 supports Physical Layer Pipes (PLP) to allow transmission of | ||
585 | many data types via a single multiplex. The API will soon support this | ||
586 | at which point this section will be expanded.</para> | ||
587 | </section> | ||
588 | </section> | ||
589 | </section> | ||
590 | </section> | ||
diff --git a/Documentation/DocBook/dvb/dvbstb.png b/Documentation/DocBook/dvb/dvbstb.png deleted file mode 100644 index 9b8f372e7afd..000000000000 --- a/Documentation/DocBook/dvb/dvbstb.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/dvb/frontend.h.xml b/Documentation/DocBook/dvb/frontend.h.xml deleted file mode 100644 index d792f789ad3b..000000000000 --- a/Documentation/DocBook/dvb/frontend.h.xml +++ /dev/null | |||
@@ -1,428 +0,0 @@ | |||
1 | <programlisting> | ||
2 | /* | ||
3 | * frontend.h | ||
4 | * | ||
5 | * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> | ||
6 | * Ralph Metzler <ralph@convergence.de> | ||
7 | * Holger Waechtler <holger@convergence.de> | ||
8 | * Andre Draszik <ad@convergence.de> | ||
9 | * for convergence integrated media GmbH | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU Lesser General Public License | ||
13 | * as published by the Free Software Foundation; either version 2.1 | ||
14 | * of the License, or (at your option) any later version. | ||
15 | * | ||
16 | * This program is distributed in the hope that it will be useful, | ||
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
19 | * GNU General Public License for more details. | ||
20 | * | ||
21 | * You should have received a copy of the GNU Lesser General Public License | ||
22 | * along with this program; if not, write to the Free Software | ||
23 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
24 | * | ||
25 | */ | ||
26 | |||
27 | #ifndef _DVBFRONTEND_H_ | ||
28 | #define _DVBFRONTEND_H_ | ||
29 | |||
30 | #include <linux/types.h> | ||
31 | |||
32 | typedef enum fe_type { | ||
33 | FE_QPSK, | ||
34 | FE_QAM, | ||
35 | FE_OFDM, | ||
36 | FE_ATSC | ||
37 | } fe_type_t; | ||
38 | |||
39 | |||
40 | typedef enum fe_caps { | ||
41 | FE_IS_STUPID = 0, | ||
42 | FE_CAN_INVERSION_AUTO = 0x1, | ||
43 | FE_CAN_FEC_1_2 = 0x2, | ||
44 | FE_CAN_FEC_2_3 = 0x4, | ||
45 | FE_CAN_FEC_3_4 = 0x8, | ||
46 | FE_CAN_FEC_4_5 = 0x10, | ||
47 | FE_CAN_FEC_5_6 = 0x20, | ||
48 | FE_CAN_FEC_6_7 = 0x40, | ||
49 | FE_CAN_FEC_7_8 = 0x80, | ||
50 | FE_CAN_FEC_8_9 = 0x100, | ||
51 | FE_CAN_FEC_AUTO = 0x200, | ||
52 | FE_CAN_QPSK = 0x400, | ||
53 | FE_CAN_QAM_16 = 0x800, | ||
54 | FE_CAN_QAM_32 = 0x1000, | ||
55 | FE_CAN_QAM_64 = 0x2000, | ||
56 | FE_CAN_QAM_128 = 0x4000, | ||
57 | FE_CAN_QAM_256 = 0x8000, | ||
58 | FE_CAN_QAM_AUTO = 0x10000, | ||
59 | FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, | ||
60 | FE_CAN_BANDWIDTH_AUTO = 0x40000, | ||
61 | FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, | ||
62 | FE_CAN_HIERARCHY_AUTO = 0x100000, | ||
63 | FE_CAN_8VSB = 0x200000, | ||
64 | FE_CAN_16VSB = 0x400000, | ||
65 | FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */ | ||
66 | FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */ | ||
67 | FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ | ||
68 | FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ | ||
69 | FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */ | ||
70 | FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */ | ||
71 | } fe_caps_t; | ||
72 | |||
73 | |||
74 | struct dvb_frontend_info { | ||
75 | char name[128]; | ||
76 | fe_type_t type; | ||
77 | __u32 frequency_min; | ||
78 | __u32 frequency_max; | ||
79 | __u32 frequency_stepsize; | ||
80 | __u32 frequency_tolerance; | ||
81 | __u32 symbol_rate_min; | ||
82 | __u32 symbol_rate_max; | ||
83 | __u32 symbol_rate_tolerance; /* ppm */ | ||
84 | __u32 notifier_delay; /* DEPRECATED */ | ||
85 | fe_caps_t caps; | ||
86 | }; | ||
87 | |||
88 | |||
89 | /** | ||
90 | * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for | ||
91 | * the meaning of this struct... | ||
92 | */ | ||
93 | struct dvb_diseqc_master_cmd { | ||
94 | __u8 msg [6]; /* { framing, address, command, data [3] } */ | ||
95 | __u8 msg_len; /* valid values are 3...6 */ | ||
96 | }; | ||
97 | |||
98 | |||
99 | struct dvb_diseqc_slave_reply { | ||
100 | __u8 msg [4]; /* { framing, data [3] } */ | ||
101 | __u8 msg_len; /* valid values are 0...4, 0 means no msg */ | ||
102 | int timeout; /* return from ioctl after timeout ms with */ | ||
103 | }; /* errorcode when no message was received */ | ||
104 | |||
105 | |||
106 | typedef enum fe_sec_voltage { | ||
107 | SEC_VOLTAGE_13, | ||
108 | SEC_VOLTAGE_18, | ||
109 | SEC_VOLTAGE_OFF | ||
110 | } fe_sec_voltage_t; | ||
111 | |||
112 | |||
113 | typedef enum fe_sec_tone_mode { | ||
114 | SEC_TONE_ON, | ||
115 | SEC_TONE_OFF | ||
116 | } fe_sec_tone_mode_t; | ||
117 | |||
118 | |||
119 | typedef enum fe_sec_mini_cmd { | ||
120 | SEC_MINI_A, | ||
121 | SEC_MINI_B | ||
122 | } fe_sec_mini_cmd_t; | ||
123 | |||
124 | |||
125 | typedef enum fe_status { | ||
126 | FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ | ||
127 | FE_HAS_CARRIER = 0x02, /* found a DVB signal */ | ||
128 | FE_HAS_VITERBI = 0x04, /* FEC is stable */ | ||
129 | FE_HAS_SYNC = 0x08, /* found sync bytes */ | ||
130 | FE_HAS_LOCK = 0x10, /* everything's working... */ | ||
131 | FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ | ||
132 | FE_REINIT = 0x40 /* frontend was reinitialized, */ | ||
133 | } fe_status_t; /* application is recommended to reset */ | ||
134 | /* DiSEqC, tone and parameters */ | ||
135 | |||
136 | typedef enum fe_spectral_inversion { | ||
137 | INVERSION_OFF, | ||
138 | INVERSION_ON, | ||
139 | INVERSION_AUTO | ||
140 | } fe_spectral_inversion_t; | ||
141 | |||
142 | |||
143 | typedef enum fe_code_rate { | ||
144 | FEC_NONE = 0, | ||
145 | FEC_1_2, | ||
146 | FEC_2_3, | ||
147 | FEC_3_4, | ||
148 | FEC_4_5, | ||
149 | FEC_5_6, | ||
150 | FEC_6_7, | ||
151 | FEC_7_8, | ||
152 | FEC_8_9, | ||
153 | FEC_AUTO, | ||
154 | FEC_3_5, | ||
155 | FEC_9_10, | ||
156 | } fe_code_rate_t; | ||
157 | |||
158 | |||
159 | typedef enum fe_modulation { | ||
160 | QPSK, | ||
161 | QAM_16, | ||
162 | QAM_32, | ||
163 | QAM_64, | ||
164 | QAM_128, | ||
165 | QAM_256, | ||
166 | QAM_AUTO, | ||
167 | VSB_8, | ||
168 | VSB_16, | ||
169 | PSK_8, | ||
170 | APSK_16, | ||
171 | APSK_32, | ||
172 | DQPSK, | ||
173 | } fe_modulation_t; | ||
174 | |||
175 | typedef enum fe_transmit_mode { | ||
176 | TRANSMISSION_MODE_2K, | ||
177 | TRANSMISSION_MODE_8K, | ||
178 | TRANSMISSION_MODE_AUTO, | ||
179 | TRANSMISSION_MODE_4K, | ||
180 | TRANSMISSION_MODE_1K, | ||
181 | TRANSMISSION_MODE_16K, | ||
182 | TRANSMISSION_MODE_32K, | ||
183 | } fe_transmit_mode_t; | ||
184 | |||
185 | typedef enum fe_bandwidth { | ||
186 | BANDWIDTH_8_MHZ, | ||
187 | BANDWIDTH_7_MHZ, | ||
188 | BANDWIDTH_6_MHZ, | ||
189 | BANDWIDTH_AUTO, | ||
190 | BANDWIDTH_5_MHZ, | ||
191 | BANDWIDTH_10_MHZ, | ||
192 | BANDWIDTH_1_712_MHZ, | ||
193 | } fe_bandwidth_t; | ||
194 | |||
195 | |||
196 | typedef enum fe_guard_interval { | ||
197 | GUARD_INTERVAL_1_32, | ||
198 | GUARD_INTERVAL_1_16, | ||
199 | GUARD_INTERVAL_1_8, | ||
200 | GUARD_INTERVAL_1_4, | ||
201 | GUARD_INTERVAL_AUTO, | ||
202 | GUARD_INTERVAL_1_128, | ||
203 | GUARD_INTERVAL_19_128, | ||
204 | GUARD_INTERVAL_19_256, | ||
205 | } fe_guard_interval_t; | ||
206 | |||
207 | |||
208 | typedef enum fe_hierarchy { | ||
209 | HIERARCHY_NONE, | ||
210 | HIERARCHY_1, | ||
211 | HIERARCHY_2, | ||
212 | HIERARCHY_4, | ||
213 | HIERARCHY_AUTO | ||
214 | } fe_hierarchy_t; | ||
215 | |||
216 | |||
217 | struct dvb_qpsk_parameters { | ||
218 | __u32 symbol_rate; /* symbol rate in Symbols per second */ | ||
219 | fe_code_rate_t fec_inner; /* forward error correction (see above) */ | ||
220 | }; | ||
221 | |||
222 | struct dvb_qam_parameters { | ||
223 | __u32 symbol_rate; /* symbol rate in Symbols per second */ | ||
224 | fe_code_rate_t fec_inner; /* forward error correction (see above) */ | ||
225 | fe_modulation_t modulation; /* modulation type (see above) */ | ||
226 | }; | ||
227 | |||
228 | struct dvb_vsb_parameters { | ||
229 | fe_modulation_t modulation; /* modulation type (see above) */ | ||
230 | }; | ||
231 | |||
232 | struct dvb_ofdm_parameters { | ||
233 | fe_bandwidth_t bandwidth; | ||
234 | fe_code_rate_t code_rate_HP; /* high priority stream code rate */ | ||
235 | fe_code_rate_t code_rate_LP; /* low priority stream code rate */ | ||
236 | fe_modulation_t constellation; /* modulation type (see above) */ | ||
237 | fe_transmit_mode_t transmission_mode; | ||
238 | fe_guard_interval_t guard_interval; | ||
239 | fe_hierarchy_t hierarchy_information; | ||
240 | }; | ||
241 | |||
242 | |||
243 | struct dvb_frontend_parameters { | ||
244 | __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */ | ||
245 | /* intermediate frequency in kHz for QPSK */ | ||
246 | fe_spectral_inversion_t inversion; | ||
247 | union { | ||
248 | struct dvb_qpsk_parameters qpsk; | ||
249 | struct dvb_qam_parameters qam; | ||
250 | struct dvb_ofdm_parameters ofdm; | ||
251 | struct dvb_vsb_parameters vsb; | ||
252 | } u; | ||
253 | }; | ||
254 | |||
255 | |||
256 | struct dvb_frontend_event { | ||
257 | fe_status_t status; | ||
258 | struct dvb_frontend_parameters parameters; | ||
259 | }; | ||
260 | |||
261 | /* S2API Commands */ | ||
262 | #define DTV_UNDEFINED 0 | ||
263 | #define DTV_TUNE 1 | ||
264 | #define DTV_CLEAR 2 | ||
265 | #define DTV_FREQUENCY 3 | ||
266 | #define DTV_MODULATION 4 | ||
267 | #define DTV_BANDWIDTH_HZ 5 | ||
268 | #define DTV_INVERSION 6 | ||
269 | #define DTV_DISEQC_MASTER 7 | ||
270 | #define DTV_SYMBOL_RATE 8 | ||
271 | #define DTV_INNER_FEC 9 | ||
272 | #define DTV_VOLTAGE 10 | ||
273 | #define DTV_TONE 11 | ||
274 | #define DTV_PILOT 12 | ||
275 | #define DTV_ROLLOFF 13 | ||
276 | #define DTV_DISEQC_SLAVE_REPLY 14 | ||
277 | |||
278 | /* Basic enumeration set for querying unlimited capabilities */ | ||
279 | #define DTV_FE_CAPABILITY_COUNT 15 | ||
280 | #define DTV_FE_CAPABILITY 16 | ||
281 | #define DTV_DELIVERY_SYSTEM 17 | ||
282 | |||
283 | /* ISDB-T and ISDB-Tsb */ | ||
284 | #define DTV_ISDBT_PARTIAL_RECEPTION 18 | ||
285 | #define DTV_ISDBT_SOUND_BROADCASTING 19 | ||
286 | |||
287 | #define DTV_ISDBT_SB_SUBCHANNEL_ID 20 | ||
288 | #define DTV_ISDBT_SB_SEGMENT_IDX 21 | ||
289 | #define DTV_ISDBT_SB_SEGMENT_COUNT 22 | ||
290 | |||
291 | #define DTV_ISDBT_LAYERA_FEC 23 | ||
292 | #define DTV_ISDBT_LAYERA_MODULATION 24 | ||
293 | #define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25 | ||
294 | #define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26 | ||
295 | |||
296 | #define DTV_ISDBT_LAYERB_FEC 27 | ||
297 | #define DTV_ISDBT_LAYERB_MODULATION 28 | ||
298 | #define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29 | ||
299 | #define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30 | ||
300 | |||
301 | #define DTV_ISDBT_LAYERC_FEC 31 | ||
302 | #define DTV_ISDBT_LAYERC_MODULATION 32 | ||
303 | #define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33 | ||
304 | #define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34 | ||
305 | |||
306 | #define DTV_API_VERSION 35 | ||
307 | |||
308 | #define DTV_CODE_RATE_HP 36 | ||
309 | #define DTV_CODE_RATE_LP 37 | ||
310 | #define DTV_GUARD_INTERVAL 38 | ||
311 | #define DTV_TRANSMISSION_MODE 39 | ||
312 | #define DTV_HIERARCHY 40 | ||
313 | |||
314 | #define DTV_ISDBT_LAYER_ENABLED 41 | ||
315 | |||
316 | #define DTV_ISDBS_TS_ID 42 | ||
317 | |||
318 | #define DTV_DVBT2_PLP_ID 43 | ||
319 | |||
320 | #define DTV_MAX_COMMAND DTV_DVBT2_PLP_ID | ||
321 | |||
322 | typedef enum fe_pilot { | ||
323 | PILOT_ON, | ||
324 | PILOT_OFF, | ||
325 | PILOT_AUTO, | ||
326 | } fe_pilot_t; | ||
327 | |||
328 | typedef enum fe_rolloff { | ||
329 | ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */ | ||
330 | ROLLOFF_20, | ||
331 | ROLLOFF_25, | ||
332 | ROLLOFF_AUTO, | ||
333 | } fe_rolloff_t; | ||
334 | |||
335 | typedef enum fe_delivery_system { | ||
336 | SYS_UNDEFINED, | ||
337 | SYS_DVBC_ANNEX_AC, | ||
338 | SYS_DVBC_ANNEX_B, | ||
339 | SYS_DVBT, | ||
340 | SYS_DSS, | ||
341 | SYS_DVBS, | ||
342 | SYS_DVBS2, | ||
343 | SYS_DVBH, | ||
344 | SYS_ISDBT, | ||
345 | SYS_ISDBS, | ||
346 | SYS_ISDBC, | ||
347 | SYS_ATSC, | ||
348 | SYS_ATSCMH, | ||
349 | SYS_DMBTH, | ||
350 | SYS_CMMB, | ||
351 | SYS_DAB, | ||
352 | SYS_DVBT2, | ||
353 | } fe_delivery_system_t; | ||
354 | |||
355 | struct dtv_cmds_h { | ||
356 | char *name; /* A display name for debugging purposes */ | ||
357 | |||
358 | __u32 cmd; /* A unique ID */ | ||
359 | |||
360 | /* Flags */ | ||
361 | __u32 set:1; /* Either a set or get property */ | ||
362 | __u32 buffer:1; /* Does this property use the buffer? */ | ||
363 | __u32 reserved:30; /* Align */ | ||
364 | }; | ||
365 | |||
366 | struct dtv_property { | ||
367 | __u32 cmd; | ||
368 | __u32 reserved[3]; | ||
369 | union { | ||
370 | __u32 data; | ||
371 | struct { | ||
372 | __u8 data[32]; | ||
373 | __u32 len; | ||
374 | __u32 reserved1[3]; | ||
375 | void *reserved2; | ||
376 | } buffer; | ||
377 | } u; | ||
378 | int result; | ||
379 | } __attribute__ ((packed)); | ||
380 | |||
381 | /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ | ||
382 | #define DTV_IOCTL_MAX_MSGS 64 | ||
383 | |||
384 | struct dtv_properties { | ||
385 | __u32 num; | ||
386 | struct dtv_property *props; | ||
387 | }; | ||
388 | |||
389 | #define <link linkend="FE_GET_PROPERTY">FE_SET_PROPERTY</link> _IOW('o', 82, struct dtv_properties) | ||
390 | #define <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> _IOR('o', 83, struct dtv_properties) | ||
391 | |||
392 | |||
393 | /** | ||
394 | * When set, this flag will disable any zigzagging or other "normal" tuning | ||
395 | * behaviour. Additionally, there will be no automatic monitoring of the lock | ||
396 | * status, and hence no frontend events will be generated. If a frontend device | ||
397 | * is closed, this flag will be automatically turned off when the device is | ||
398 | * reopened read-write. | ||
399 | */ | ||
400 | #define FE_TUNE_MODE_ONESHOT 0x01 | ||
401 | |||
402 | |||
403 | #define <link linkend="FE_GET_INFO">FE_GET_INFO</link> _IOR('o', 61, struct dvb_frontend_info) | ||
404 | |||
405 | #define <link linkend="FE_DISEQC_RESET_OVERLOAD">FE_DISEQC_RESET_OVERLOAD</link> _IO('o', 62) | ||
406 | #define <link linkend="FE_DISEQC_SEND_MASTER_CMD">FE_DISEQC_SEND_MASTER_CMD</link> _IOW('o', 63, struct dvb_diseqc_master_cmd) | ||
407 | #define <link linkend="FE_DISEQC_RECV_SLAVE_REPLY">FE_DISEQC_RECV_SLAVE_REPLY</link> _IOR('o', 64, struct dvb_diseqc_slave_reply) | ||
408 | #define <link linkend="FE_DISEQC_SEND_BURST">FE_DISEQC_SEND_BURST</link> _IO('o', 65) /* fe_sec_mini_cmd_t */ | ||
409 | |||
410 | #define <link linkend="FE_SET_TONE">FE_SET_TONE</link> _IO('o', 66) /* fe_sec_tone_mode_t */ | ||
411 | #define <link linkend="FE_SET_VOLTAGE">FE_SET_VOLTAGE</link> _IO('o', 67) /* fe_sec_voltage_t */ | ||
412 | #define <link linkend="FE_ENABLE_HIGH_LNB_VOLTAGE">FE_ENABLE_HIGH_LNB_VOLTAGE</link> _IO('o', 68) /* int */ | ||
413 | |||
414 | #define <link linkend="FE_READ_STATUS">FE_READ_STATUS</link> _IOR('o', 69, fe_status_t) | ||
415 | #define <link linkend="FE_READ_BER">FE_READ_BER</link> _IOR('o', 70, __u32) | ||
416 | #define <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link> _IOR('o', 71, __u16) | ||
417 | #define <link linkend="FE_READ_SNR">FE_READ_SNR</link> _IOR('o', 72, __u16) | ||
418 | #define <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link> _IOR('o', 73, __u32) | ||
419 | |||
420 | #define <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> _IOW('o', 76, struct dvb_frontend_parameters) | ||
421 | #define <link linkend="FE_GET_FRONTEND">FE_GET_FRONTEND</link> _IOR('o', 77, struct dvb_frontend_parameters) | ||
422 | #define <link linkend="FE_SET_FRONTEND_TUNE_MODE">FE_SET_FRONTEND_TUNE_MODE</link> _IO('o', 81) /* unsigned int */ | ||
423 | #define <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> _IOR('o', 78, struct dvb_frontend_event) | ||
424 | |||
425 | #define <link linkend="FE_DISHNETWORK_SEND_LEGACY_CMD">FE_DISHNETWORK_SEND_LEGACY_CMD</link> _IO('o', 80) /* unsigned int */ | ||
426 | |||
427 | #endif /*_DVBFRONTEND_H_*/ | ||
428 | </programlisting> | ||
diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl deleted file mode 100644 index e5fe09430fd9..000000000000 --- a/Documentation/DocBook/media-entities.tmpl +++ /dev/null | |||
@@ -1,464 +0,0 @@ | |||
1 | <!-- Generated file! Do not edit. --> | ||
2 | |||
3 | <!-- Functions --> | ||
4 | <!ENTITY func-close "<link linkend='func-close'><function>close()</function></link>"> | ||
5 | <!ENTITY func-ioctl "<link linkend='func-ioctl'><function>ioctl()</function></link>"> | ||
6 | <!ENTITY func-mmap "<link linkend='func-mmap'><function>mmap()</function></link>"> | ||
7 | <!ENTITY func-munmap "<link linkend='func-munmap'><function>munmap()</function></link>"> | ||
8 | <!ENTITY func-open "<link linkend='func-open'><function>open()</function></link>"> | ||
9 | <!ENTITY func-poll "<link linkend='func-poll'><function>poll()</function></link>"> | ||
10 | <!ENTITY func-read "<link linkend='func-read'><function>read()</function></link>"> | ||
11 | <!ENTITY func-select "<link linkend='func-select'><function>select()</function></link>"> | ||
12 | <!ENTITY func-write "<link linkend='func-write'><function>write()</function></link>"> | ||
13 | |||
14 | <!ENTITY media-func-close "<link linkend='media-func-close'><function>close()</function></link>"> | ||
15 | <!ENTITY media-func-ioctl "<link linkend='media-func-ioctl'><function>ioctl()</function></link>"> | ||
16 | <!ENTITY media-func-open "<link linkend='media-func-open'><function>open()</function></link>"> | ||
17 | |||
18 | <!-- Ioctls --> | ||
19 | <!ENTITY VIDIOC-CROPCAP "<link linkend='vidioc-cropcap'><constant>VIDIOC_CROPCAP</constant></link>"> | ||
20 | <!ENTITY VIDIOC-DBG-G-CHIP-IDENT "<link linkend='vidioc-dbg-g-chip-ident'><constant>VIDIOC_DBG_G_CHIP_IDENT</constant></link>"> | ||
21 | <!ENTITY VIDIOC-DBG-G-REGISTER "<link linkend='vidioc-dbg-g-register'><constant>VIDIOC_DBG_G_REGISTER</constant></link>"> | ||
22 | <!ENTITY VIDIOC-DBG-S-REGISTER "<link linkend='vidioc-dbg-g-register'><constant>VIDIOC_DBG_S_REGISTER</constant></link>"> | ||
23 | <!ENTITY VIDIOC-DQBUF "<link linkend='vidioc-qbuf'><constant>VIDIOC_DQBUF</constant></link>"> | ||
24 | <!ENTITY VIDIOC-DQEVENT "<link linkend='vidioc-dqevent'><constant>VIDIOC_DQEVENT</constant></link>"> | ||
25 | <!ENTITY VIDIOC-ENCODER-CMD "<link linkend='vidioc-encoder-cmd'><constant>VIDIOC_ENCODER_CMD</constant></link>"> | ||
26 | <!ENTITY VIDIOC-ENUMAUDIO "<link linkend='vidioc-enumaudio'><constant>VIDIOC_ENUMAUDIO</constant></link>"> | ||
27 | <!ENTITY VIDIOC-ENUMAUDOUT "<link linkend='vidioc-enumaudioout'><constant>VIDIOC_ENUMAUDOUT</constant></link>"> | ||
28 | <!ENTITY VIDIOC-ENUMINPUT "<link linkend='vidioc-enuminput'><constant>VIDIOC_ENUMINPUT</constant></link>"> | ||
29 | <!ENTITY VIDIOC-ENUMOUTPUT "<link linkend='vidioc-enumoutput'><constant>VIDIOC_ENUMOUTPUT</constant></link>"> | ||
30 | <!ENTITY VIDIOC-ENUMSTD "<link linkend='vidioc-enumstd'><constant>VIDIOC_ENUMSTD</constant></link>"> | ||
31 | <!ENTITY VIDIOC-ENUM-DV-PRESETS "<link linkend='vidioc-enum-dv-presets'><constant>VIDIOC_ENUM_DV_PRESETS</constant></link>"> | ||
32 | <!ENTITY VIDIOC-ENUM-FMT "<link linkend='vidioc-enum-fmt'><constant>VIDIOC_ENUM_FMT</constant></link>"> | ||
33 | <!ENTITY VIDIOC-ENUM-FRAMEINTERVALS "<link linkend='vidioc-enum-frameintervals'><constant>VIDIOC_ENUM_FRAMEINTERVALS</constant></link>"> | ||
34 | <!ENTITY VIDIOC-ENUM-FRAMESIZES "<link linkend='vidioc-enum-framesizes'><constant>VIDIOC_ENUM_FRAMESIZES</constant></link>"> | ||
35 | <!ENTITY VIDIOC-G-AUDIO "<link linkend='vidioc-g-audio'><constant>VIDIOC_G_AUDIO</constant></link>"> | ||
36 | <!ENTITY VIDIOC-G-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_G_AUDOUT</constant></link>"> | ||
37 | <!ENTITY VIDIOC-G-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_G_CROP</constant></link>"> | ||
38 | <!ENTITY VIDIOC-G-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_G_CTRL</constant></link>"> | ||
39 | <!ENTITY VIDIOC-G-DV-PRESET "<link linkend='vidioc-g-dv-preset'><constant>VIDIOC_G_DV_PRESET</constant></link>"> | ||
40 | <!ENTITY VIDIOC-G-DV-TIMINGS "<link linkend='vidioc-g-dv-timings'><constant>VIDIOC_G_DV_TIMINGS</constant></link>"> | ||
41 | <!ENTITY VIDIOC-G-ENC-INDEX "<link linkend='vidioc-g-enc-index'><constant>VIDIOC_G_ENC_INDEX</constant></link>"> | ||
42 | <!ENTITY VIDIOC-G-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_G_EXT_CTRLS</constant></link>"> | ||
43 | <!ENTITY VIDIOC-G-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_G_FBUF</constant></link>"> | ||
44 | <!ENTITY VIDIOC-G-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_G_FMT</constant></link>"> | ||
45 | <!ENTITY VIDIOC-G-FREQUENCY "<link linkend='vidioc-g-frequency'><constant>VIDIOC_G_FREQUENCY</constant></link>"> | ||
46 | <!ENTITY VIDIOC-G-INPUT "<link linkend='vidioc-g-input'><constant>VIDIOC_G_INPUT</constant></link>"> | ||
47 | <!ENTITY VIDIOC-G-JPEGCOMP "<link linkend='vidioc-g-jpegcomp'><constant>VIDIOC_G_JPEGCOMP</constant></link>"> | ||
48 | <!ENTITY VIDIOC-G-MPEGCOMP "<link linkend=''><constant>VIDIOC_G_MPEGCOMP</constant></link>"> | ||
49 | <!ENTITY VIDIOC-G-MODULATOR "<link linkend='vidioc-g-modulator'><constant>VIDIOC_G_MODULATOR</constant></link>"> | ||
50 | <!ENTITY VIDIOC-G-OUTPUT "<link linkend='vidioc-g-output'><constant>VIDIOC_G_OUTPUT</constant></link>"> | ||
51 | <!ENTITY VIDIOC-G-PARM "<link linkend='vidioc-g-parm'><constant>VIDIOC_G_PARM</constant></link>"> | ||
52 | <!ENTITY VIDIOC-G-PRIORITY "<link linkend='vidioc-g-priority'><constant>VIDIOC_G_PRIORITY</constant></link>"> | ||
53 | <!ENTITY VIDIOC-G-SLICED-VBI-CAP "<link linkend='vidioc-g-sliced-vbi-cap'><constant>VIDIOC_G_SLICED_VBI_CAP</constant></link>"> | ||
54 | <!ENTITY VIDIOC-G-STD "<link linkend='vidioc-g-std'><constant>VIDIOC_G_STD</constant></link>"> | ||
55 | <!ENTITY VIDIOC-G-TUNER "<link linkend='vidioc-g-tuner'><constant>VIDIOC_G_TUNER</constant></link>"> | ||
56 | <!ENTITY VIDIOC-LOG-STATUS "<link linkend='vidioc-log-status'><constant>VIDIOC_LOG_STATUS</constant></link>"> | ||
57 | <!ENTITY VIDIOC-OVERLAY "<link linkend='vidioc-overlay'><constant>VIDIOC_OVERLAY</constant></link>"> | ||
58 | <!ENTITY VIDIOC-QBUF "<link linkend='vidioc-qbuf'><constant>VIDIOC_QBUF</constant></link>"> | ||
59 | <!ENTITY VIDIOC-QUERYBUF "<link linkend='vidioc-querybuf'><constant>VIDIOC_QUERYBUF</constant></link>"> | ||
60 | <!ENTITY VIDIOC-QUERYCAP "<link linkend='vidioc-querycap'><constant>VIDIOC_QUERYCAP</constant></link>"> | ||
61 | <!ENTITY VIDIOC-QUERYCTRL "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYCTRL</constant></link>"> | ||
62 | <!ENTITY VIDIOC-QUERYMENU "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYMENU</constant></link>"> | ||
63 | <!ENTITY VIDIOC-QUERYSTD "<link linkend='vidioc-querystd'><constant>VIDIOC_QUERYSTD</constant></link>"> | ||
64 | <!ENTITY VIDIOC-QUERY-DV-PRESET "<link linkend='vidioc-query-dv-preset'><constant>VIDIOC_QUERY_DV_PRESET</constant></link>"> | ||
65 | <!ENTITY VIDIOC-REQBUFS "<link linkend='vidioc-reqbufs'><constant>VIDIOC_REQBUFS</constant></link>"> | ||
66 | <!ENTITY VIDIOC-STREAMOFF "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMOFF</constant></link>"> | ||
67 | <!ENTITY VIDIOC-STREAMON "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMON</constant></link>"> | ||
68 | <!ENTITY VIDIOC-SUBSCRIBE-EVENT "<link linkend='vidioc-subscribe-event'><constant>VIDIOC_SUBSCRIBE_EVENT</constant></link>"> | ||
69 | <!ENTITY VIDIOC-S-AUDIO "<link linkend='vidioc-g-audio'><constant>VIDIOC_S_AUDIO</constant></link>"> | ||
70 | <!ENTITY VIDIOC-S-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_S_AUDOUT</constant></link>"> | ||
71 | <!ENTITY VIDIOC-S-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_S_CROP</constant></link>"> | ||
72 | <!ENTITY VIDIOC-S-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_S_CTRL</constant></link>"> | ||
73 | <!ENTITY VIDIOC-S-DV-PRESET "<link linkend='vidioc-g-dv-preset'><constant>VIDIOC_S_DV_PRESET</constant></link>"> | ||
74 | <!ENTITY VIDIOC-S-DV-TIMINGS "<link linkend='vidioc-g-dv-timings'><constant>VIDIOC_S_DV_TIMINGS</constant></link>"> | ||
75 | <!ENTITY VIDIOC-S-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_S_EXT_CTRLS</constant></link>"> | ||
76 | <!ENTITY VIDIOC-S-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_S_FBUF</constant></link>"> | ||
77 | <!ENTITY VIDIOC-S-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_S_FMT</constant></link>"> | ||
78 | <!ENTITY VIDIOC-S-FREQUENCY "<link linkend='vidioc-g-frequency'><constant>VIDIOC_S_FREQUENCY</constant></link>"> | ||
79 | <!ENTITY VIDIOC-S-HW-FREQ-SEEK "<link linkend='vidioc-s-hw-freq-seek'><constant>VIDIOC_S_HW_FREQ_SEEK</constant></link>"> | ||
80 | <!ENTITY VIDIOC-S-INPUT "<link linkend='vidioc-g-input'><constant>VIDIOC_S_INPUT</constant></link>"> | ||
81 | <!ENTITY VIDIOC-S-JPEGCOMP "<link linkend='vidioc-g-jpegcomp'><constant>VIDIOC_S_JPEGCOMP</constant></link>"> | ||
82 | <!ENTITY VIDIOC-S-MPEGCOMP "<link linkend=''><constant>VIDIOC_S_MPEGCOMP</constant></link>"> | ||
83 | <!ENTITY VIDIOC-S-MODULATOR "<link linkend='vidioc-g-modulator'><constant>VIDIOC_S_MODULATOR</constant></link>"> | ||
84 | <!ENTITY VIDIOC-S-OUTPUT "<link linkend='vidioc-g-output'><constant>VIDIOC_S_OUTPUT</constant></link>"> | ||
85 | <!ENTITY VIDIOC-S-PARM "<link linkend='vidioc-g-parm'><constant>VIDIOC_S_PARM</constant></link>"> | ||
86 | <!ENTITY VIDIOC-S-PRIORITY "<link linkend='vidioc-g-priority'><constant>VIDIOC_S_PRIORITY</constant></link>"> | ||
87 | <!ENTITY VIDIOC-S-STD "<link linkend='vidioc-g-std'><constant>VIDIOC_S_STD</constant></link>"> | ||
88 | <!ENTITY VIDIOC-S-TUNER "<link linkend='vidioc-g-tuner'><constant>VIDIOC_S_TUNER</constant></link>"> | ||
89 | <!ENTITY VIDIOC-SUBDEV-ENUM-FRAME-SIZE "<link linkend='vidioc-subdev-enum-frame-size'><constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant></link>"> | ||
90 | <!ENTITY VIDIOC-SUBDEV-ENUM-MBUS-CODE "<link linkend='vidioc-subdev-enum-mbus-code'><constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant></link>"> | ||
91 | <!ENTITY VIDIOC-SUBDEV-G-CROP "<link linkend='vidioc-subdev-g-crop'><constant>VIDIOC_SUBDEV_G_CROP</constant></link>"> | ||
92 | <!ENTITY VIDIOC-SUBDEV-G-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_G_FMT</constant></link>"> | ||
93 | <!ENTITY VIDIOC-SUBDEV-G-FRAME-INTERVAL "<link linkend='vidioc-subdev-g-frame-interval'><constant>VIDIOC_SUBDEV_G_FRAME_INTERVAL</constant></link>"> | ||
94 | <!ENTITY VIDIOC-SUBDEV-S-CROP "<link linkend='vidioc-subdev-g-crop'><constant>VIDIOC_SUBDEV_S_CROP</constant></link>"> | ||
95 | <!ENTITY VIDIOC-SUBDEV-S-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_S_FMT</constant></link>"> | ||
96 | <!ENTITY VIDIOC-SUBDEV-S-FRAME-INTERVAL "<link linkend='vidioc-subdev-g-frame-interval'><constant>VIDIOC_SUBDEV_S_FRAME_INTERVAL</constant></link>"> | ||
97 | <!ENTITY VIDIOC-TRY-ENCODER-CMD "<link linkend='vidioc-encoder-cmd'><constant>VIDIOC_TRY_ENCODER_CMD</constant></link>"> | ||
98 | <!ENTITY VIDIOC-TRY-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_TRY_EXT_CTRLS</constant></link>"> | ||
99 | <!ENTITY VIDIOC-TRY-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_TRY_FMT</constant></link>"> | ||
100 | <!ENTITY VIDIOC-UNSUBSCRIBE-EVENT "<link linkend='vidioc-subscribe-event'><constant>VIDIOC_UNSUBSCRIBE_EVENT</constant></link>"> | ||
101 | |||
102 | <!ENTITY MEDIA-IOC-DEVICE-INFO "<link linkend='media-ioc-device-info'><constant>MEDIA_IOC_DEVICE_INFO</constant></link>"> | ||
103 | <!ENTITY MEDIA-IOC-ENUM-ENTITIES "<link linkend='media-ioc-enum-entities'><constant>MEDIA_IOC_ENUM_ENTITIES</constant></link>"> | ||
104 | <!ENTITY MEDIA-IOC-ENUM-LINKS "<link linkend='media-ioc-enum-links'><constant>MEDIA_IOC_ENUM_LINKS</constant></link>"> | ||
105 | <!ENTITY MEDIA-IOC-SETUP-LINK "<link linkend='media-ioc-setup-link'><constant>MEDIA_IOC_SETUP_LINK</constant></link>"> | ||
106 | |||
107 | <!-- Types --> | ||
108 | <!ENTITY v4l2-std-id "<link linkend='v4l2-std-id'>v4l2_std_id</link>"> | ||
109 | |||
110 | <!-- Enums --> | ||
111 | <!ENTITY v4l2-buf-type "enum <link linkend='v4l2-buf-type'>v4l2_buf_type</link>"> | ||
112 | <!ENTITY v4l2-colorspace "enum <link linkend='v4l2-colorspace'>v4l2_colorspace</link>"> | ||
113 | <!ENTITY v4l2-ctrl-type "enum <link linkend='v4l2-ctrl-type'>v4l2_ctrl_type</link>"> | ||
114 | <!ENTITY v4l2-exposure-auto-type "enum <link linkend='v4l2-exposure-auto-type'>v4l2_exposure_auto_type</link>"> | ||
115 | <!ENTITY v4l2-field "enum <link linkend='v4l2-field'>v4l2_field</link>"> | ||
116 | <!ENTITY v4l2-frmivaltypes "enum <link linkend='v4l2-frmivaltypes'>v4l2_frmivaltypes</link>"> | ||
117 | <!ENTITY v4l2-frmsizetypes "enum <link linkend='v4l2-frmsizetypes'>v4l2_frmsizetypes</link>"> | ||
118 | <!ENTITY v4l2-mbus-pixelcode "enum <link linkend='v4l2-mbus-pixelcode'>v4l2_mbus_pixelcode</link>"> | ||
119 | <!ENTITY v4l2-memory "enum <link linkend='v4l2-memory'>v4l2_memory</link>"> | ||
120 | <!ENTITY v4l2-mpeg-audio-ac3-bitrate "enum <link linkend='v4l2-mpeg-audio-ac3-bitrate'>v4l2_mpeg_audio_ac3_bitrate</link>"> | ||
121 | <!ENTITY v4l2-mpeg-audio-crc "enum <link linkend='v4l2-mpeg-audio-crc'>v4l2_mpeg_audio_crc</link>"> | ||
122 | <!ENTITY v4l2-mpeg-audio-emphasis "enum <link linkend='v4l2-mpeg-audio-emphasis'>v4l2_mpeg_audio_emphasis</link>"> | ||
123 | <!ENTITY v4l2-mpeg-audio-encoding "enum <link linkend='v4l2-mpeg-audio-encoding'>v4l2_mpeg_audio_encoding</link>"> | ||
124 | <!ENTITY v4l2-mpeg-audio-l1-bitrate "enum <link linkend='v4l2-mpeg-audio-l1-bitrate'>v4l2_mpeg_audio_l1_bitrate</link>"> | ||
125 | <!ENTITY v4l2-mpeg-audio-l2-bitrate "enum <link linkend='v4l2-mpeg-audio-l2-bitrate'>v4l2_mpeg_audio_l2_bitrate</link>"> | ||
126 | <!ENTITY v4l2-mpeg-audio-l3-bitrate "enum <link linkend='v4l2-mpeg-audio-l3-bitrate'>v4l2_mpeg_audio_l3_bitrate</link>"> | ||
127 | <!ENTITY v4l2-mpeg-audio-mode "enum <link linkend='v4l2-mpeg-audio-mode'>v4l2_mpeg_audio_mode</link>"> | ||
128 | <!ENTITY v4l2-mpeg-audio-mode-extension "enum <link linkend='v4l2-mpeg-audio-mode-extension'>v4l2_mpeg_audio_mode_extension</link>"> | ||
129 | <!ENTITY v4l2-mpeg-audio-sampling-freq "enum <link linkend='v4l2-mpeg-audio-sampling-freq'>v4l2_mpeg_audio_sampling_freq</link>"> | ||
130 | <!ENTITY chroma-spatial-filter-type "enum <link linkend='chroma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</link>"> | ||
131 | <!ENTITY luma-spatial-filter-type "enum <link linkend='luma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</link>"> | ||
132 | <!ENTITY v4l2-mpeg-cx2341x-video-median-filter-type "enum <link linkend='v4l2-mpeg-cx2341x-video-median-filter-type'>v4l2_mpeg_cx2341x_video_median_filter_type</link>"> | ||
133 | <!ENTITY v4l2-mpeg-cx2341x-video-spatial-filter-mode "enum <link linkend='v4l2-mpeg-cx2341x-video-spatial-filter-mode'>v4l2_mpeg_cx2341x_video_spatial_filter_mode</link>"> | ||
134 | <!ENTITY v4l2-mpeg-cx2341x-video-temporal-filter-mode "enum <link linkend='v4l2-mpeg-cx2341x-video-temporal-filter-mode'>v4l2_mpeg_cx2341x_video_temporal_filter_mode</link>"> | ||
135 | <!ENTITY v4l2-mpeg-stream-type "enum <link linkend='v4l2-mpeg-stream-type'>v4l2_mpeg_stream_type</link>"> | ||
136 | <!ENTITY v4l2-mpeg-stream-vbi-fmt "enum <link linkend='v4l2-mpeg-stream-vbi-fmt'>v4l2_mpeg_stream_vbi_fmt</link>"> | ||
137 | <!ENTITY v4l2-mpeg-video-aspect "enum <link linkend='v4l2-mpeg-video-aspect'>v4l2_mpeg_video_aspect</link>"> | ||
138 | <!ENTITY v4l2-mpeg-video-bitrate-mode "enum <link linkend='v4l2-mpeg-video-bitrate-mode'>v4l2_mpeg_video_bitrate_mode</link>"> | ||
139 | <!ENTITY v4l2-mpeg-video-encoding "enum <link linkend='v4l2-mpeg-video-encoding'>v4l2_mpeg_video_encoding</link>"> | ||
140 | <!ENTITY v4l2-power-line-frequency "enum <link linkend='v4l2-power-line-frequency'>v4l2_power_line_frequency</link>"> | ||
141 | <!ENTITY v4l2-priority "enum <link linkend='v4l2-priority'>v4l2_priority</link>"> | ||
142 | <!ENTITY v4l2-subdev-format-whence "enum <link linkend='v4l2-subdev-format-whence'>v4l2_subdev_format_whence</link>"> | ||
143 | <!ENTITY v4l2-tuner-type "enum <link linkend='v4l2-tuner-type'>v4l2_tuner_type</link>"> | ||
144 | <!ENTITY v4l2-preemphasis "enum <link linkend='v4l2-preemphasis'>v4l2_preemphasis</link>"> | ||
145 | |||
146 | <!-- Structures --> | ||
147 | <!ENTITY v4l2-audio "struct <link linkend='v4l2-audio'>v4l2_audio</link>"> | ||
148 | <!ENTITY v4l2-audioout "struct <link linkend='v4l2-audioout'>v4l2_audioout</link>"> | ||
149 | <!ENTITY v4l2-bt-timings "struct <link linkend='v4l2-bt-timings'>v4l2_bt_timings</link>"> | ||
150 | <!ENTITY v4l2-buffer "struct <link linkend='v4l2-buffer'>v4l2_buffer</link>"> | ||
151 | <!ENTITY v4l2-plane "struct <link linkend='v4l2-plane'>v4l2_plane</link>"> | ||
152 | <!ENTITY v4l2-capability "struct <link linkend='v4l2-capability'>v4l2_capability</link>"> | ||
153 | <!ENTITY v4l2-captureparm "struct <link linkend='v4l2-captureparm'>v4l2_captureparm</link>"> | ||
154 | <!ENTITY v4l2-clip "struct <link linkend='v4l2-clip'>v4l2_clip</link>"> | ||
155 | <!ENTITY v4l2-control "struct <link linkend='v4l2-control'>v4l2_control</link>"> | ||
156 | <!ENTITY v4l2-crop "struct <link linkend='v4l2-crop'>v4l2_crop</link>"> | ||
157 | <!ENTITY v4l2-cropcap "struct <link linkend='v4l2-cropcap'>v4l2_cropcap</link>"> | ||
158 | <!ENTITY v4l2-dbg-chip-ident "struct <link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link>"> | ||
159 | <!ENTITY v4l2-dbg-match "struct <link linkend='v4l2-dbg-match'>v4l2_dbg_match</link>"> | ||
160 | <!ENTITY v4l2-dbg-register "struct <link linkend='v4l2-dbg-register'>v4l2_dbg_register</link>"> | ||
161 | <!ENTITY v4l2-dv-enum-preset "struct <link linkend='v4l2-dv-enum-preset'>v4l2_dv_enum_preset</link>"> | ||
162 | <!ENTITY v4l2-dv-preset "struct <link linkend='v4l2-dv-preset'>v4l2_dv_preset</link>"> | ||
163 | <!ENTITY v4l2-dv-timings "struct <link linkend='v4l2-dv-timings'>v4l2_dv_timings</link>"> | ||
164 | <!ENTITY v4l2-enc-idx "struct <link linkend='v4l2-enc-idx'>v4l2_enc_idx</link>"> | ||
165 | <!ENTITY v4l2-enc-idx-entry "struct <link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link>"> | ||
166 | <!ENTITY v4l2-encoder-cmd "struct <link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link>"> | ||
167 | <!ENTITY v4l2-event "struct <link linkend='v4l2-event'>v4l2_event</link>"> | ||
168 | <!ENTITY v4l2-event-subscription "struct <link linkend='v4l2-event-subscription'>v4l2_event_subscription</link>"> | ||
169 | <!ENTITY v4l2-event-vsync "struct <link linkend='v4l2-event-vsync'>v4l2_event_vsync</link>"> | ||
170 | <!ENTITY v4l2-ext-control "struct <link linkend='v4l2-ext-control'>v4l2_ext_control</link>"> | ||
171 | <!ENTITY v4l2-ext-controls "struct <link linkend='v4l2-ext-controls'>v4l2_ext_controls</link>"> | ||
172 | <!ENTITY v4l2-fmtdesc "struct <link linkend='v4l2-fmtdesc'>v4l2_fmtdesc</link>"> | ||
173 | <!ENTITY v4l2-format "struct <link linkend='v4l2-format'>v4l2_format</link>"> | ||
174 | <!ENTITY v4l2-fract "struct <link linkend='v4l2-fract'>v4l2_fract</link>"> | ||
175 | <!ENTITY v4l2-framebuffer "struct <link linkend='v4l2-framebuffer'>v4l2_framebuffer</link>"> | ||
176 | <!ENTITY v4l2-frequency "struct <link linkend='v4l2-frequency'>v4l2_frequency</link>"> | ||
177 | <!ENTITY v4l2-frmival-stepwise "struct <link linkend='v4l2-frmival-stepwise'>v4l2_frmival_stepwise</link>"> | ||
178 | <!ENTITY v4l2-frmivalenum "struct <link linkend='v4l2-frmivalenum'>v4l2_frmivalenum</link>"> | ||
179 | <!ENTITY v4l2-frmsize-discrete "struct <link linkend='v4l2-frmsize-discrete'>v4l2_frmsize_discrete</link>"> | ||
180 | <!ENTITY v4l2-frmsize-stepwise "struct <link linkend='v4l2-frmsize-stepwise'>v4l2_frmsize_stepwise</link>"> | ||
181 | <!ENTITY v4l2-frmsizeenum "struct <link linkend='v4l2-frmsizeenum'>v4l2_frmsizeenum</link>"> | ||
182 | <!ENTITY v4l2-hw-freq-seek "struct <link linkend='v4l2-hw-freq-seek'>v4l2_hw_freq_seek</link>"> | ||
183 | <!ENTITY v4l2-input "struct <link linkend='v4l2-input'>v4l2_input</link>"> | ||
184 | <!ENTITY v4l2-jpegcompression "struct <link linkend='v4l2-jpegcompression'>v4l2_jpegcompression</link>"> | ||
185 | <!ENTITY v4l2-mbus-framefmt "struct <link linkend='v4l2-mbus-framefmt'>v4l2_mbus_framefmt</link>"> | ||
186 | <!ENTITY v4l2-modulator "struct <link linkend='v4l2-modulator'>v4l2_modulator</link>"> | ||
187 | <!ENTITY v4l2-mpeg-vbi-fmt-ivtv "struct <link linkend='v4l2-mpeg-vbi-fmt-ivtv'>v4l2_mpeg_vbi_fmt_ivtv</link>"> | ||
188 | <!ENTITY v4l2-output "struct <link linkend='v4l2-output'>v4l2_output</link>"> | ||
189 | <!ENTITY v4l2-outputparm "struct <link linkend='v4l2-outputparm'>v4l2_outputparm</link>"> | ||
190 | <!ENTITY v4l2-pix-format "struct <link linkend='v4l2-pix-format'>v4l2_pix_format</link>"> | ||
191 | <!ENTITY v4l2-pix-format-mplane "struct <link linkend='v4l2-pix-format-mplane'>v4l2_pix_format_mplane</link>"> | ||
192 | <!ENTITY v4l2-plane-pix-format "struct <link linkend='v4l2-plane-pix-format'>v4l2_plane_pix_format</link>"> | ||
193 | <!ENTITY v4l2-queryctrl "struct <link linkend='v4l2-queryctrl'>v4l2_queryctrl</link>"> | ||
194 | <!ENTITY v4l2-querymenu "struct <link linkend='v4l2-querymenu'>v4l2_querymenu</link>"> | ||
195 | <!ENTITY v4l2-rect "struct <link linkend='v4l2-rect'>v4l2_rect</link>"> | ||
196 | <!ENTITY v4l2-requestbuffers "struct <link linkend='v4l2-requestbuffers'>v4l2_requestbuffers</link>"> | ||
197 | <!ENTITY v4l2-sliced-vbi-cap "struct <link linkend='v4l2-sliced-vbi-cap'>v4l2_sliced_vbi_cap</link>"> | ||
198 | <!ENTITY v4l2-sliced-vbi-data "struct <link linkend='v4l2-sliced-vbi-data'>v4l2_sliced_vbi_data</link>"> | ||
199 | <!ENTITY v4l2-sliced-vbi-format "struct <link linkend='v4l2-sliced-vbi-format'>v4l2_sliced_vbi_format</link>"> | ||
200 | <!ENTITY v4l2-subdev-frame-interval "struct <link linkend='v4l2-subdev-frame-interval'>v4l2_subdev_frame_interval</link>"> | ||
201 | <!ENTITY v4l2-subdev-frame-interval-enum "struct <link linkend='v4l2-subdev-frame-interval-enum'>v4l2_subdev_frame_interval_enum</link>"> | ||
202 | <!ENTITY v4l2-subdev-frame-size-enum "struct <link linkend='v4l2-subdev-frame-size-enum'>v4l2_subdev_frame_size_enum</link>"> | ||
203 | <!ENTITY v4l2-subdev-crop "struct <link linkend='v4l2-subdev-crop'>v4l2_subdev_crop</link>"> | ||
204 | <!ENTITY v4l2-subdev-format "struct <link linkend='v4l2-subdev-format'>v4l2_subdev_format</link>"> | ||
205 | <!ENTITY v4l2-subdev-mbus-code-enum "struct <link linkend='v4l2-subdev-mbus-code-enum'>v4l2_subdev_mbus_code_enum</link>"> | ||
206 | <!ENTITY v4l2-standard "struct <link linkend='v4l2-standard'>v4l2_standard</link>"> | ||
207 | <!ENTITY v4l2-streamparm "struct <link linkend='v4l2-streamparm'>v4l2_streamparm</link>"> | ||
208 | <!ENTITY v4l2-timecode "struct <link linkend='v4l2-timecode'>v4l2_timecode</link>"> | ||
209 | <!ENTITY v4l2-tuner "struct <link linkend='v4l2-tuner'>v4l2_tuner</link>"> | ||
210 | <!ENTITY v4l2-vbi-format "struct <link linkend='v4l2-vbi-format'>v4l2_vbi_format</link>"> | ||
211 | <!ENTITY v4l2-window "struct <link linkend='v4l2-window'>v4l2_window</link>"> | ||
212 | |||
213 | <!ENTITY media-device-info "struct <link linkend='media-device-info'>media_device_info</link>"> | ||
214 | <!ENTITY media-entity-desc "struct <link linkend='media-entity-desc'>media_entity_desc</link>"> | ||
215 | <!ENTITY media-links-enum "struct <link linkend='media-links-enum'>media_links_enum</link>"> | ||
216 | <!ENTITY media-pad-desc "struct <link linkend='media-pad-desc'>media_pad_desc</link>"> | ||
217 | <!ENTITY media-link-desc "struct <link linkend='media-link-desc'>media_link_desc</link>"> | ||
218 | |||
219 | <!-- Error Codes --> | ||
220 | <!ENTITY EACCES "<errorcode>EACCES</errorcode> error code"> | ||
221 | <!ENTITY EAGAIN "<errorcode>EAGAIN</errorcode> error code"> | ||
222 | <!ENTITY EBADF "<errorcode>EBADF</errorcode> error code"> | ||
223 | <!ENTITY EBUSY "<errorcode>EBUSY</errorcode> error code"> | ||
224 | <!ENTITY EFAULT "<errorcode>EFAULT</errorcode> error code"> | ||
225 | <!ENTITY EIO "<errorcode>EIO</errorcode> error code"> | ||
226 | <!ENTITY EINTR "<errorcode>EINTR</errorcode> error code"> | ||
227 | <!ENTITY EINVAL "<errorcode>EINVAL</errorcode> error code"> | ||
228 | <!ENTITY ENFILE "<errorcode>ENFILE</errorcode> error code"> | ||
229 | <!ENTITY ENOMEM "<errorcode>ENOMEM</errorcode> error code"> | ||
230 | <!ENTITY ENOSPC "<errorcode>ENOSPC</errorcode> error code"> | ||
231 | <!ENTITY ENOTTY "<errorcode>ENOTTY</errorcode> error code"> | ||
232 | <!ENTITY ENXIO "<errorcode>ENXIO</errorcode> error code"> | ||
233 | <!ENTITY EMFILE "<errorcode>EMFILE</errorcode> error code"> | ||
234 | <!ENTITY EPERM "<errorcode>EPERM</errorcode> error code"> | ||
235 | <!ENTITY EPIPE "<errorcode>EPIPE</errorcode> error code"> | ||
236 | <!ENTITY ERANGE "<errorcode>ERANGE</errorcode> error code"> | ||
237 | |||
238 | <!-- Subsections --> | ||
239 | <!ENTITY sub-biblio SYSTEM "v4l/biblio.xml"> | ||
240 | <!ENTITY sub-common SYSTEM "v4l/common.xml"> | ||
241 | <!ENTITY sub-planar-apis SYSTEM "v4l/planar-apis.xml"> | ||
242 | <!ENTITY sub-compat SYSTEM "v4l/compat.xml"> | ||
243 | <!ENTITY sub-controls SYSTEM "v4l/controls.xml"> | ||
244 | <!ENTITY sub-dev-capture SYSTEM "v4l/dev-capture.xml"> | ||
245 | <!ENTITY sub-dev-codec SYSTEM "v4l/dev-codec.xml"> | ||
246 | <!ENTITY sub-dev-event SYSTEM "v4l/dev-event.xml"> | ||
247 | <!ENTITY sub-dev-effect SYSTEM "v4l/dev-effect.xml"> | ||
248 | <!ENTITY sub-dev-osd SYSTEM "v4l/dev-osd.xml"> | ||
249 | <!ENTITY sub-dev-output SYSTEM "v4l/dev-output.xml"> | ||
250 | <!ENTITY sub-dev-overlay SYSTEM "v4l/dev-overlay.xml"> | ||
251 | <!ENTITY sub-dev-radio SYSTEM "v4l/dev-radio.xml"> | ||
252 | <!ENTITY sub-dev-raw-vbi SYSTEM "v4l/dev-raw-vbi.xml"> | ||
253 | <!ENTITY sub-dev-rds SYSTEM "v4l/dev-rds.xml"> | ||
254 | <!ENTITY sub-dev-sliced-vbi SYSTEM "v4l/dev-sliced-vbi.xml"> | ||
255 | <!ENTITY sub-dev-subdev SYSTEM "v4l/dev-subdev.xml"> | ||
256 | <!ENTITY sub-dev-teletext SYSTEM "v4l/dev-teletext.xml"> | ||
257 | <!ENTITY sub-driver SYSTEM "v4l/driver.xml"> | ||
258 | <!ENTITY sub-libv4l SYSTEM "v4l/libv4l.xml"> | ||
259 | <!ENTITY sub-lirc_device_interface SYSTEM "v4l/lirc_device_interface.xml"> | ||
260 | <!ENTITY sub-remote_controllers SYSTEM "v4l/remote_controllers.xml"> | ||
261 | <!ENTITY sub-fdl-appendix SYSTEM "v4l/fdl-appendix.xml"> | ||
262 | <!ENTITY sub-close SYSTEM "v4l/func-close.xml"> | ||
263 | <!ENTITY sub-ioctl SYSTEM "v4l/func-ioctl.xml"> | ||
264 | <!ENTITY sub-mmap SYSTEM "v4l/func-mmap.xml"> | ||
265 | <!ENTITY sub-munmap SYSTEM "v4l/func-munmap.xml"> | ||
266 | <!ENTITY sub-open SYSTEM "v4l/func-open.xml"> | ||
267 | <!ENTITY sub-poll SYSTEM "v4l/func-poll.xml"> | ||
268 | <!ENTITY sub-read SYSTEM "v4l/func-read.xml"> | ||
269 | <!ENTITY sub-select SYSTEM "v4l/func-select.xml"> | ||
270 | <!ENTITY sub-write SYSTEM "v4l/func-write.xml"> | ||
271 | <!ENTITY sub-io SYSTEM "v4l/io.xml"> | ||
272 | <!ENTITY sub-grey SYSTEM "v4l/pixfmt-grey.xml"> | ||
273 | <!ENTITY sub-m420 SYSTEM "v4l/pixfmt-m420.xml"> | ||
274 | <!ENTITY sub-nv12 SYSTEM "v4l/pixfmt-nv12.xml"> | ||
275 | <!ENTITY sub-nv12m SYSTEM "v4l/pixfmt-nv12m.xml"> | ||
276 | <!ENTITY sub-nv12mt SYSTEM "v4l/pixfmt-nv12mt.xml"> | ||
277 | <!ENTITY sub-nv16 SYSTEM "v4l/pixfmt-nv16.xml"> | ||
278 | <!ENTITY sub-packed-rgb SYSTEM "v4l/pixfmt-packed-rgb.xml"> | ||
279 | <!ENTITY sub-packed-yuv SYSTEM "v4l/pixfmt-packed-yuv.xml"> | ||
280 | <!ENTITY sub-sbggr16 SYSTEM "v4l/pixfmt-sbggr16.xml"> | ||
281 | <!ENTITY sub-sbggr8 SYSTEM "v4l/pixfmt-sbggr8.xml"> | ||
282 | <!ENTITY sub-sgbrg8 SYSTEM "v4l/pixfmt-sgbrg8.xml"> | ||
283 | <!ENTITY sub-sgrbg8 SYSTEM "v4l/pixfmt-sgrbg8.xml"> | ||
284 | <!ENTITY sub-uyvy SYSTEM "v4l/pixfmt-uyvy.xml"> | ||
285 | <!ENTITY sub-vyuy SYSTEM "v4l/pixfmt-vyuy.xml"> | ||
286 | <!ENTITY sub-y16 SYSTEM "v4l/pixfmt-y16.xml"> | ||
287 | <!ENTITY sub-y41p SYSTEM "v4l/pixfmt-y41p.xml"> | ||
288 | <!ENTITY sub-yuv410 SYSTEM "v4l/pixfmt-yuv410.xml"> | ||
289 | <!ENTITY sub-yuv411p SYSTEM "v4l/pixfmt-yuv411p.xml"> | ||
290 | <!ENTITY sub-yuv420 SYSTEM "v4l/pixfmt-yuv420.xml"> | ||
291 | <!ENTITY sub-yuv420m SYSTEM "v4l/pixfmt-yuv420m.xml"> | ||
292 | <!ENTITY sub-yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml"> | ||
293 | <!ENTITY sub-yuyv SYSTEM "v4l/pixfmt-yuyv.xml"> | ||
294 | <!ENTITY sub-yvyu SYSTEM "v4l/pixfmt-yvyu.xml"> | ||
295 | <!ENTITY sub-srggb10 SYSTEM "v4l/pixfmt-srggb10.xml"> | ||
296 | <!ENTITY sub-srggb12 SYSTEM "v4l/pixfmt-srggb12.xml"> | ||
297 | <!ENTITY sub-srggb8 SYSTEM "v4l/pixfmt-srggb8.xml"> | ||
298 | <!ENTITY sub-y10 SYSTEM "v4l/pixfmt-y10.xml"> | ||
299 | <!ENTITY sub-y12 SYSTEM "v4l/pixfmt-y12.xml"> | ||
300 | <!ENTITY sub-y10b SYSTEM "v4l/pixfmt-y10b.xml"> | ||
301 | <!ENTITY sub-pixfmt SYSTEM "v4l/pixfmt.xml"> | ||
302 | <!ENTITY sub-cropcap SYSTEM "v4l/vidioc-cropcap.xml"> | ||
303 | <!ENTITY sub-dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> | ||
304 | <!ENTITY sub-encoder-cmd SYSTEM "v4l/vidioc-encoder-cmd.xml"> | ||
305 | <!ENTITY sub-enum-fmt SYSTEM "v4l/vidioc-enum-fmt.xml"> | ||
306 | <!ENTITY sub-enum-frameintervals SYSTEM "v4l/vidioc-enum-frameintervals.xml"> | ||
307 | <!ENTITY sub-enum-framesizes SYSTEM "v4l/vidioc-enum-framesizes.xml"> | ||
308 | <!ENTITY sub-enumaudio SYSTEM "v4l/vidioc-enumaudio.xml"> | ||
309 | <!ENTITY sub-enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml"> | ||
310 | <!ENTITY sub-enuminput SYSTEM "v4l/vidioc-enuminput.xml"> | ||
311 | <!ENTITY sub-enumoutput SYSTEM "v4l/vidioc-enumoutput.xml"> | ||
312 | <!ENTITY sub-enum-dv-presets SYSTEM "v4l/vidioc-enum-dv-presets.xml"> | ||
313 | <!ENTITY sub-g-dv-preset SYSTEM "v4l/vidioc-g-dv-preset.xml"> | ||
314 | <!ENTITY sub-query-dv-preset SYSTEM "v4l/vidioc-query-dv-preset.xml"> | ||
315 | <!ENTITY sub-g-dv-timings SYSTEM "v4l/vidioc-g-dv-timings.xml"> | ||
316 | <!ENTITY sub-enumstd SYSTEM "v4l/vidioc-enumstd.xml"> | ||
317 | <!ENTITY sub-g-audio SYSTEM "v4l/vidioc-g-audio.xml"> | ||
318 | <!ENTITY sub-g-audioout SYSTEM "v4l/vidioc-g-audioout.xml"> | ||
319 | <!ENTITY sub-dbg-g-chip-ident SYSTEM "v4l/vidioc-dbg-g-chip-ident.xml"> | ||
320 | <!ENTITY sub-g-crop SYSTEM "v4l/vidioc-g-crop.xml"> | ||
321 | <!ENTITY sub-g-ctrl SYSTEM "v4l/vidioc-g-ctrl.xml"> | ||
322 | <!ENTITY sub-g-enc-index SYSTEM "v4l/vidioc-g-enc-index.xml"> | ||
323 | <!ENTITY sub-g-ext-ctrls SYSTEM "v4l/vidioc-g-ext-ctrls.xml"> | ||
324 | <!ENTITY sub-g-fbuf SYSTEM "v4l/vidioc-g-fbuf.xml"> | ||
325 | <!ENTITY sub-g-fmt SYSTEM "v4l/vidioc-g-fmt.xml"> | ||
326 | <!ENTITY sub-g-frequency SYSTEM "v4l/vidioc-g-frequency.xml"> | ||
327 | <!ENTITY sub-g-input SYSTEM "v4l/vidioc-g-input.xml"> | ||
328 | <!ENTITY sub-g-jpegcomp SYSTEM "v4l/vidioc-g-jpegcomp.xml"> | ||
329 | <!ENTITY sub-g-modulator SYSTEM "v4l/vidioc-g-modulator.xml"> | ||
330 | <!ENTITY sub-g-output SYSTEM "v4l/vidioc-g-output.xml"> | ||
331 | <!ENTITY sub-g-parm SYSTEM "v4l/vidioc-g-parm.xml"> | ||
332 | <!ENTITY sub-g-priority SYSTEM "v4l/vidioc-g-priority.xml"> | ||
333 | <!ENTITY sub-g-sliced-vbi-cap SYSTEM "v4l/vidioc-g-sliced-vbi-cap.xml"> | ||
334 | <!ENTITY sub-g-std SYSTEM "v4l/vidioc-g-std.xml"> | ||
335 | <!ENTITY sub-g-tuner SYSTEM "v4l/vidioc-g-tuner.xml"> | ||
336 | <!ENTITY sub-log-status SYSTEM "v4l/vidioc-log-status.xml"> | ||
337 | <!ENTITY sub-overlay SYSTEM "v4l/vidioc-overlay.xml"> | ||
338 | <!ENTITY sub-qbuf SYSTEM "v4l/vidioc-qbuf.xml"> | ||
339 | <!ENTITY sub-querybuf SYSTEM "v4l/vidioc-querybuf.xml"> | ||
340 | <!ENTITY sub-querycap SYSTEM "v4l/vidioc-querycap.xml"> | ||
341 | <!ENTITY sub-queryctrl SYSTEM "v4l/vidioc-queryctrl.xml"> | ||
342 | <!ENTITY sub-querystd SYSTEM "v4l/vidioc-querystd.xml"> | ||
343 | <!ENTITY sub-reqbufs SYSTEM "v4l/vidioc-reqbufs.xml"> | ||
344 | <!ENTITY sub-s-hw-freq-seek SYSTEM "v4l/vidioc-s-hw-freq-seek.xml"> | ||
345 | <!ENTITY sub-streamon SYSTEM "v4l/vidioc-streamon.xml"> | ||
346 | <!ENTITY sub-subdev-enum-frame-interval SYSTEM "v4l/vidioc-subdev-enum-frame-interval.xml"> | ||
347 | <!ENTITY sub-subdev-enum-frame-size SYSTEM "v4l/vidioc-subdev-enum-frame-size.xml"> | ||
348 | <!ENTITY sub-subdev-enum-mbus-code SYSTEM "v4l/vidioc-subdev-enum-mbus-code.xml"> | ||
349 | <!ENTITY sub-subdev-formats SYSTEM "v4l/subdev-formats.xml"> | ||
350 | <!ENTITY sub-subdev-g-crop SYSTEM "v4l/vidioc-subdev-g-crop.xml"> | ||
351 | <!ENTITY sub-subdev-g-fmt SYSTEM "v4l/vidioc-subdev-g-fmt.xml"> | ||
352 | <!ENTITY sub-subdev-g-frame-interval SYSTEM "v4l/vidioc-subdev-g-frame-interval.xml"> | ||
353 | <!ENTITY sub-capture-c SYSTEM "v4l/capture.c.xml"> | ||
354 | <!ENTITY sub-keytable-c SYSTEM "v4l/keytable.c.xml"> | ||
355 | <!ENTITY sub-v4l2grab-c SYSTEM "v4l/v4l2grab.c.xml"> | ||
356 | <!ENTITY sub-videodev2-h SYSTEM "v4l/videodev2.h.xml"> | ||
357 | <!ENTITY sub-v4l2 SYSTEM "v4l/v4l2.xml"> | ||
358 | <!ENTITY sub-dqevent SYSTEM "v4l/vidioc-dqevent.xml"> | ||
359 | <!ENTITY sub-subscribe-event SYSTEM "v4l/vidioc-subscribe-event.xml"> | ||
360 | <!ENTITY sub-intro SYSTEM "dvb/intro.xml"> | ||
361 | <!ENTITY sub-frontend SYSTEM "dvb/frontend.xml"> | ||
362 | <!ENTITY sub-dvbproperty SYSTEM "dvb/dvbproperty.xml"> | ||
363 | <!ENTITY sub-demux SYSTEM "dvb/demux.xml"> | ||
364 | <!ENTITY sub-video SYSTEM "dvb/video.xml"> | ||
365 | <!ENTITY sub-audio SYSTEM "dvb/audio.xml"> | ||
366 | <!ENTITY sub-ca SYSTEM "dvb/ca.xml"> | ||
367 | <!ENTITY sub-net SYSTEM "dvb/net.xml"> | ||
368 | <!ENTITY sub-kdapi SYSTEM "dvb/kdapi.xml"> | ||
369 | <!ENTITY sub-examples SYSTEM "dvb/examples.xml"> | ||
370 | <!ENTITY sub-frontend-h SYSTEM "dvb/frontend.h.xml"> | ||
371 | <!ENTITY sub-dvbapi SYSTEM "dvb/dvbapi.xml"> | ||
372 | <!ENTITY sub-media SYSTEM "media.xml"> | ||
373 | <!ENTITY sub-media-entities SYSTEM "media-entities.tmpl"> | ||
374 | <!ENTITY sub-media-indices SYSTEM "media-indices.tmpl"> | ||
375 | |||
376 | <!ENTITY sub-media-controller SYSTEM "v4l/media-controller.xml"> | ||
377 | <!ENTITY sub-media-func-open SYSTEM "v4l/media-func-open.xml"> | ||
378 | <!ENTITY sub-media-func-close SYSTEM "v4l/media-func-close.xml"> | ||
379 | <!ENTITY sub-media-func-ioctl SYSTEM "v4l/media-func-ioctl.xml"> | ||
380 | <!ENTITY sub-media-ioc-device-info SYSTEM "v4l/media-ioc-device-info.xml"> | ||
381 | <!ENTITY sub-media-ioc-enum-entities SYSTEM "v4l/media-ioc-enum-entities.xml"> | ||
382 | <!ENTITY sub-media-ioc-enum-links SYSTEM "v4l/media-ioc-enum-links.xml"> | ||
383 | <!ENTITY sub-media-ioc-setup-link SYSTEM "v4l/media-ioc-setup-link.xml"> | ||
384 | |||
385 | <!-- Function Reference --> | ||
386 | <!ENTITY close SYSTEM "v4l/func-close.xml"> | ||
387 | <!ENTITY ioctl SYSTEM "v4l/func-ioctl.xml"> | ||
388 | <!ENTITY mmap SYSTEM "v4l/func-mmap.xml"> | ||
389 | <!ENTITY munmap SYSTEM "v4l/func-munmap.xml"> | ||
390 | <!ENTITY open SYSTEM "v4l/func-open.xml"> | ||
391 | <!ENTITY poll SYSTEM "v4l/func-poll.xml"> | ||
392 | <!ENTITY read SYSTEM "v4l/func-read.xml"> | ||
393 | <!ENTITY select SYSTEM "v4l/func-select.xml"> | ||
394 | <!ENTITY write SYSTEM "v4l/func-write.xml"> | ||
395 | <!ENTITY grey SYSTEM "v4l/pixfmt-grey.xml"> | ||
396 | <!ENTITY nv12 SYSTEM "v4l/pixfmt-nv12.xml"> | ||
397 | <!ENTITY nv12m SYSTEM "v4l/pixfmt-nv12m.xml"> | ||
398 | <!ENTITY nv16 SYSTEM "v4l/pixfmt-nv16.xml"> | ||
399 | <!ENTITY packed-rgb SYSTEM "v4l/pixfmt-packed-rgb.xml"> | ||
400 | <!ENTITY packed-yuv SYSTEM "v4l/pixfmt-packed-yuv.xml"> | ||
401 | <!ENTITY sbggr16 SYSTEM "v4l/pixfmt-sbggr16.xml"> | ||
402 | <!ENTITY sbggr8 SYSTEM "v4l/pixfmt-sbggr8.xml"> | ||
403 | <!ENTITY sgbrg8 SYSTEM "v4l/pixfmt-sgbrg8.xml"> | ||
404 | <!ENTITY sgrbg8 SYSTEM "v4l/pixfmt-sgrbg8.xml"> | ||
405 | <!ENTITY uyvy SYSTEM "v4l/pixfmt-uyvy.xml"> | ||
406 | <!ENTITY vyuy SYSTEM "v4l/pixfmt-vyuy.xml"> | ||
407 | <!ENTITY y16 SYSTEM "v4l/pixfmt-y16.xml"> | ||
408 | <!ENTITY y41p SYSTEM "v4l/pixfmt-y41p.xml"> | ||
409 | <!ENTITY yuv410 SYSTEM "v4l/pixfmt-yuv410.xml"> | ||
410 | <!ENTITY yuv411p SYSTEM "v4l/pixfmt-yuv411p.xml"> | ||
411 | <!ENTITY yuv420 SYSTEM "v4l/pixfmt-yuv420.xml"> | ||
412 | <!ENTITY yuv420m SYSTEM "v4l/pixfmt-yuv420m.xml"> | ||
413 | <!ENTITY yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml"> | ||
414 | <!ENTITY yuyv SYSTEM "v4l/pixfmt-yuyv.xml"> | ||
415 | <!ENTITY yvyu SYSTEM "v4l/pixfmt-yvyu.xml"> | ||
416 | <!ENTITY srggb10 SYSTEM "v4l/pixfmt-srggb10.xml"> | ||
417 | <!ENTITY srggb8 SYSTEM "v4l/pixfmt-srggb8.xml"> | ||
418 | <!ENTITY y10 SYSTEM "v4l/pixfmt-y10.xml"> | ||
419 | <!ENTITY cropcap SYSTEM "v4l/vidioc-cropcap.xml"> | ||
420 | <!ENTITY dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> | ||
421 | <!ENTITY encoder-cmd SYSTEM "v4l/vidioc-encoder-cmd.xml"> | ||
422 | <!ENTITY enum-fmt SYSTEM "v4l/vidioc-enum-fmt.xml"> | ||
423 | <!ENTITY enum-frameintervals SYSTEM "v4l/vidioc-enum-frameintervals.xml"> | ||
424 | <!ENTITY enum-framesizes SYSTEM "v4l/vidioc-enum-framesizes.xml"> | ||
425 | <!ENTITY enumaudio SYSTEM "v4l/vidioc-enumaudio.xml"> | ||
426 | <!ENTITY enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml"> | ||
427 | <!ENTITY enuminput SYSTEM "v4l/vidioc-enuminput.xml"> | ||
428 | <!ENTITY enumoutput SYSTEM "v4l/vidioc-enumoutput.xml"> | ||
429 | <!ENTITY enum-dv-presets SYSTEM "v4l/vidioc-enum-dv-presets.xml"> | ||
430 | <!ENTITY g-dv-preset SYSTEM "v4l/vidioc-g-dv-preset.xml"> | ||
431 | <!ENTITY query-dv-preset SYSTEM "v4l/vidioc-query-dv-preset.xml"> | ||
432 | <!ENTITY g-dv-timings SYSTEM "v4l/vidioc-g-dv-timings.xml"> | ||
433 | <!ENTITY enumstd SYSTEM "v4l/vidioc-enumstd.xml"> | ||
434 | <!ENTITY g-audio SYSTEM "v4l/vidioc-g-audio.xml"> | ||
435 | <!ENTITY g-audioout SYSTEM "v4l/vidioc-g-audioout.xml"> | ||
436 | <!ENTITY dbg-g-chip-ident SYSTEM "v4l/vidioc-dbg-g-chip-ident.xml"> | ||
437 | <!ENTITY g-crop SYSTEM "v4l/vidioc-g-crop.xml"> | ||
438 | <!ENTITY g-ctrl SYSTEM "v4l/vidioc-g-ctrl.xml"> | ||
439 | <!ENTITY g-enc-index SYSTEM "v4l/vidioc-g-enc-index.xml"> | ||
440 | <!ENTITY g-ext-ctrls SYSTEM "v4l/vidioc-g-ext-ctrls.xml"> | ||
441 | <!ENTITY g-fbuf SYSTEM "v4l/vidioc-g-fbuf.xml"> | ||
442 | <!ENTITY g-fmt SYSTEM "v4l/vidioc-g-fmt.xml"> | ||
443 | <!ENTITY g-frequency SYSTEM "v4l/vidioc-g-frequency.xml"> | ||
444 | <!ENTITY g-input SYSTEM "v4l/vidioc-g-input.xml"> | ||
445 | <!ENTITY g-jpegcomp SYSTEM "v4l/vidioc-g-jpegcomp.xml"> | ||
446 | <!ENTITY g-modulator SYSTEM "v4l/vidioc-g-modulator.xml"> | ||
447 | <!ENTITY g-output SYSTEM "v4l/vidioc-g-output.xml"> | ||
448 | <!ENTITY g-parm SYSTEM "v4l/vidioc-g-parm.xml"> | ||
449 | <!ENTITY g-priority SYSTEM "v4l/vidioc-g-priority.xml"> | ||
450 | <!ENTITY g-sliced-vbi-cap SYSTEM "v4l/vidioc-g-sliced-vbi-cap.xml"> | ||
451 | <!ENTITY g-std SYSTEM "v4l/vidioc-g-std.xml"> | ||
452 | <!ENTITY g-tuner SYSTEM "v4l/vidioc-g-tuner.xml"> | ||
453 | <!ENTITY log-status SYSTEM "v4l/vidioc-log-status.xml"> | ||
454 | <!ENTITY overlay SYSTEM "v4l/vidioc-overlay.xml"> | ||
455 | <!ENTITY qbuf SYSTEM "v4l/vidioc-qbuf.xml"> | ||
456 | <!ENTITY querybuf SYSTEM "v4l/vidioc-querybuf.xml"> | ||
457 | <!ENTITY querycap SYSTEM "v4l/vidioc-querycap.xml"> | ||
458 | <!ENTITY queryctrl SYSTEM "v4l/vidioc-queryctrl.xml"> | ||
459 | <!ENTITY querystd SYSTEM "v4l/vidioc-querystd.xml"> | ||
460 | <!ENTITY reqbufs SYSTEM "v4l/vidioc-reqbufs.xml"> | ||
461 | <!ENTITY s-hw-freq-seek SYSTEM "v4l/vidioc-s-hw-freq-seek.xml"> | ||
462 | <!ENTITY streamon SYSTEM "v4l/vidioc-streamon.xml"> | ||
463 | <!ENTITY dqevent SYSTEM "v4l/vidioc-dqevent.xml"> | ||
464 | <!ENTITY subscribe_event SYSTEM "v4l/vidioc-subscribe-event.xml"> | ||
diff --git a/Documentation/DocBook/media-indices.tmpl b/Documentation/DocBook/media-indices.tmpl deleted file mode 100644 index 78d6031de001..000000000000 --- a/Documentation/DocBook/media-indices.tmpl +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | <!-- Generated file! Do not edit. --> | ||
2 | |||
3 | <index><title>List of Types</title> | ||
4 | <indexentry><primaryie><link linkend='v4l2-std-id'>v4l2_std_id</link></primaryie></indexentry> | ||
5 | <indexentry><primaryie>enum <link linkend='v4l2-buf-type'>v4l2_buf_type</link></primaryie></indexentry> | ||
6 | <indexentry><primaryie>enum <link linkend='v4l2-colorspace'>v4l2_colorspace</link></primaryie></indexentry> | ||
7 | <indexentry><primaryie>enum <link linkend='v4l2-ctrl-type'>v4l2_ctrl_type</link></primaryie></indexentry> | ||
8 | <indexentry><primaryie>enum <link linkend='v4l2-exposure-auto-type'>v4l2_exposure_auto_type</link></primaryie></indexentry> | ||
9 | <indexentry><primaryie>enum <link linkend='v4l2-field'>v4l2_field</link></primaryie></indexentry> | ||
10 | <indexentry><primaryie>enum <link linkend='v4l2-frmivaltypes'>v4l2_frmivaltypes</link></primaryie></indexentry> | ||
11 | <indexentry><primaryie>enum <link linkend='v4l2-frmsizetypes'>v4l2_frmsizetypes</link></primaryie></indexentry> | ||
12 | <indexentry><primaryie>enum <link linkend='v4l2-memory'>v4l2_memory</link></primaryie></indexentry> | ||
13 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-ac3-bitrate'>v4l2_mpeg_audio_ac3_bitrate</link></primaryie></indexentry> | ||
14 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-crc'>v4l2_mpeg_audio_crc</link></primaryie></indexentry> | ||
15 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-emphasis'>v4l2_mpeg_audio_emphasis</link></primaryie></indexentry> | ||
16 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-encoding'>v4l2_mpeg_audio_encoding</link></primaryie></indexentry> | ||
17 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-l1-bitrate'>v4l2_mpeg_audio_l1_bitrate</link></primaryie></indexentry> | ||
18 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-l2-bitrate'>v4l2_mpeg_audio_l2_bitrate</link></primaryie></indexentry> | ||
19 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-l3-bitrate'>v4l2_mpeg_audio_l3_bitrate</link></primaryie></indexentry> | ||
20 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-mode'>v4l2_mpeg_audio_mode</link></primaryie></indexentry> | ||
21 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-mode-extension'>v4l2_mpeg_audio_mode_extension</link></primaryie></indexentry> | ||
22 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-audio-sampling-freq'>v4l2_mpeg_audio_sampling_freq</link></primaryie></indexentry> | ||
23 | <indexentry><primaryie>enum <link linkend='chroma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</link></primaryie></indexentry> | ||
24 | <indexentry><primaryie>enum <link linkend='luma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</link></primaryie></indexentry> | ||
25 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-cx2341x-video-median-filter-type'>v4l2_mpeg_cx2341x_video_median_filter_type</link></primaryie></indexentry> | ||
26 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-cx2341x-video-spatial-filter-mode'>v4l2_mpeg_cx2341x_video_spatial_filter_mode</link></primaryie></indexentry> | ||
27 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-cx2341x-video-temporal-filter-mode'>v4l2_mpeg_cx2341x_video_temporal_filter_mode</link></primaryie></indexentry> | ||
28 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-stream-type'>v4l2_mpeg_stream_type</link></primaryie></indexentry> | ||
29 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-stream-vbi-fmt'>v4l2_mpeg_stream_vbi_fmt</link></primaryie></indexentry> | ||
30 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-video-aspect'>v4l2_mpeg_video_aspect</link></primaryie></indexentry> | ||
31 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-video-bitrate-mode'>v4l2_mpeg_video_bitrate_mode</link></primaryie></indexentry> | ||
32 | <indexentry><primaryie>enum <link linkend='v4l2-mpeg-video-encoding'>v4l2_mpeg_video_encoding</link></primaryie></indexentry> | ||
33 | <indexentry><primaryie>enum <link linkend='v4l2-power-line-frequency'>v4l2_power_line_frequency</link></primaryie></indexentry> | ||
34 | <indexentry><primaryie>enum <link linkend='v4l2-priority'>v4l2_priority</link></primaryie></indexentry> | ||
35 | <indexentry><primaryie>enum <link linkend='v4l2-tuner-type'>v4l2_tuner_type</link></primaryie></indexentry> | ||
36 | <indexentry><primaryie>enum <link linkend='v4l2-preemphasis'>v4l2_preemphasis</link></primaryie></indexentry> | ||
37 | <indexentry><primaryie>struct <link linkend='v4l2-audio'>v4l2_audio</link></primaryie></indexentry> | ||
38 | <indexentry><primaryie>struct <link linkend='v4l2-audioout'>v4l2_audioout</link></primaryie></indexentry> | ||
39 | <indexentry><primaryie>struct <link linkend='v4l2-bt-timings'>v4l2_bt_timings</link></primaryie></indexentry> | ||
40 | <indexentry><primaryie>struct <link linkend='v4l2-buffer'>v4l2_buffer</link></primaryie></indexentry> | ||
41 | <indexentry><primaryie>struct <link linkend='v4l2-capability'>v4l2_capability</link></primaryie></indexentry> | ||
42 | <indexentry><primaryie>struct <link linkend='v4l2-captureparm'>v4l2_captureparm</link></primaryie></indexentry> | ||
43 | <indexentry><primaryie>struct <link linkend='v4l2-clip'>v4l2_clip</link></primaryie></indexentry> | ||
44 | <indexentry><primaryie>struct <link linkend='v4l2-control'>v4l2_control</link></primaryie></indexentry> | ||
45 | <indexentry><primaryie>struct <link linkend='v4l2-crop'>v4l2_crop</link></primaryie></indexentry> | ||
46 | <indexentry><primaryie>struct <link linkend='v4l2-cropcap'>v4l2_cropcap</link></primaryie></indexentry> | ||
47 | <indexentry><primaryie>struct <link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link></primaryie></indexentry> | ||
48 | <indexentry><primaryie>struct <link linkend='v4l2-dbg-match'>v4l2_dbg_match</link></primaryie></indexentry> | ||
49 | <indexentry><primaryie>struct <link linkend='v4l2-dbg-register'>v4l2_dbg_register</link></primaryie></indexentry> | ||
50 | <indexentry><primaryie>struct <link linkend='v4l2-dv-enum-preset'>v4l2_dv_enum_preset</link></primaryie></indexentry> | ||
51 | <indexentry><primaryie>struct <link linkend='v4l2-dv-preset'>v4l2_dv_preset</link></primaryie></indexentry> | ||
52 | <indexentry><primaryie>struct <link linkend='v4l2-dv-timings'>v4l2_dv_timings</link></primaryie></indexentry> | ||
53 | <indexentry><primaryie>struct <link linkend='v4l2-enc-idx'>v4l2_enc_idx</link></primaryie></indexentry> | ||
54 | <indexentry><primaryie>struct <link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link></primaryie></indexentry> | ||
55 | <indexentry><primaryie>struct <link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link></primaryie></indexentry> | ||
56 | <indexentry><primaryie>struct <link linkend='v4l2-ext-control'>v4l2_ext_control</link></primaryie></indexentry> | ||
57 | <indexentry><primaryie>struct <link linkend='v4l2-ext-controls'>v4l2_ext_controls</link></primaryie></indexentry> | ||
58 | <indexentry><primaryie>struct <link linkend='v4l2-fmtdesc'>v4l2_fmtdesc</link></primaryie></indexentry> | ||
59 | <indexentry><primaryie>struct <link linkend='v4l2-format'>v4l2_format</link></primaryie></indexentry> | ||
60 | <indexentry><primaryie>struct <link linkend='v4l2-fract'>v4l2_fract</link></primaryie></indexentry> | ||
61 | <indexentry><primaryie>struct <link linkend='v4l2-framebuffer'>v4l2_framebuffer</link></primaryie></indexentry> | ||
62 | <indexentry><primaryie>struct <link linkend='v4l2-frequency'>v4l2_frequency</link></primaryie></indexentry> | ||
63 | <indexentry><primaryie>struct <link linkend='v4l2-frmival-stepwise'>v4l2_frmival_stepwise</link></primaryie></indexentry> | ||
64 | <indexentry><primaryie>struct <link linkend='v4l2-frmivalenum'>v4l2_frmivalenum</link></primaryie></indexentry> | ||
65 | <indexentry><primaryie>struct <link linkend='v4l2-frmsize-discrete'>v4l2_frmsize_discrete</link></primaryie></indexentry> | ||
66 | <indexentry><primaryie>struct <link linkend='v4l2-frmsize-stepwise'>v4l2_frmsize_stepwise</link></primaryie></indexentry> | ||
67 | <indexentry><primaryie>struct <link linkend='v4l2-frmsizeenum'>v4l2_frmsizeenum</link></primaryie></indexentry> | ||
68 | <indexentry><primaryie>struct <link linkend='v4l2-hw-freq-seek'>v4l2_hw_freq_seek</link></primaryie></indexentry> | ||
69 | <indexentry><primaryie>struct <link linkend='v4l2-input'>v4l2_input</link></primaryie></indexentry> | ||
70 | <indexentry><primaryie>struct <link linkend='v4l2-jpegcompression'>v4l2_jpegcompression</link></primaryie></indexentry> | ||
71 | <indexentry><primaryie>struct <link linkend='v4l2-modulator'>v4l2_modulator</link></primaryie></indexentry> | ||
72 | <indexentry><primaryie>struct <link linkend='v4l2-mpeg-vbi-fmt-ivtv'>v4l2_mpeg_vbi_fmt_ivtv</link></primaryie></indexentry> | ||
73 | <indexentry><primaryie>struct <link linkend='v4l2-output'>v4l2_output</link></primaryie></indexentry> | ||
74 | <indexentry><primaryie>struct <link linkend='v4l2-outputparm'>v4l2_outputparm</link></primaryie></indexentry> | ||
75 | <indexentry><primaryie>struct <link linkend='v4l2-pix-format'>v4l2_pix_format</link></primaryie></indexentry> | ||
76 | <indexentry><primaryie>struct <link linkend='v4l2-queryctrl'>v4l2_queryctrl</link></primaryie></indexentry> | ||
77 | <indexentry><primaryie>struct <link linkend='v4l2-querymenu'>v4l2_querymenu</link></primaryie></indexentry> | ||
78 | <indexentry><primaryie>struct <link linkend='v4l2-rect'>v4l2_rect</link></primaryie></indexentry> | ||
79 | <indexentry><primaryie>struct <link linkend='v4l2-requestbuffers'>v4l2_requestbuffers</link></primaryie></indexentry> | ||
80 | <indexentry><primaryie>struct <link linkend='v4l2-sliced-vbi-cap'>v4l2_sliced_vbi_cap</link></primaryie></indexentry> | ||
81 | <indexentry><primaryie>struct <link linkend='v4l2-sliced-vbi-data'>v4l2_sliced_vbi_data</link></primaryie></indexentry> | ||
82 | <indexentry><primaryie>struct <link linkend='v4l2-sliced-vbi-format'>v4l2_sliced_vbi_format</link></primaryie></indexentry> | ||
83 | <indexentry><primaryie>struct <link linkend='v4l2-standard'>v4l2_standard</link></primaryie></indexentry> | ||
84 | <indexentry><primaryie>struct <link linkend='v4l2-streamparm'>v4l2_streamparm</link></primaryie></indexentry> | ||
85 | <indexentry><primaryie>struct <link linkend='v4l2-timecode'>v4l2_timecode</link></primaryie></indexentry> | ||
86 | <indexentry><primaryie>struct <link linkend='v4l2-tuner'>v4l2_tuner</link></primaryie></indexentry> | ||
87 | <indexentry><primaryie>struct <link linkend='v4l2-vbi-format'>v4l2_vbi_format</link></primaryie></indexentry> | ||
88 | <indexentry><primaryie>struct <link linkend='v4l2-window'>v4l2_window</link></primaryie></indexentry> | ||
89 | </index> | ||
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile new file mode 100644 index 000000000000..6628b4b9cac4 --- /dev/null +++ b/Documentation/DocBook/media/Makefile | |||
@@ -0,0 +1,386 @@ | |||
1 | ### | ||
2 | # Media build rules - Auto-generates media contents/indexes and *.h xml's | ||
3 | # | ||
4 | |||
5 | SHELL=/bin/bash | ||
6 | |||
7 | MEDIA_OBJ_DIR=$(objtree)/Documentation/DocBook/ | ||
8 | MEDIA_SRC_DIR=$(srctree)/Documentation/DocBook/media | ||
9 | |||
10 | MEDIA_TEMP = media-entities.tmpl \ | ||
11 | media-indices.tmpl \ | ||
12 | videodev2.h.xml \ | ||
13 | v4l2.xml \ | ||
14 | audio.h.xml \ | ||
15 | ca.h.xml \ | ||
16 | dmx.h.xml \ | ||
17 | frontend.h.xml \ | ||
18 | net.h.xml \ | ||
19 | video.h.xml \ | ||
20 | |||
21 | IMGFILES := $(patsubst %.b64,%, $(notdir $(shell ls $(MEDIA_SRC_DIR)/*.b64))) | ||
22 | OBJIMGFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(IMGFILES)) | ||
23 | GENFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(MEDIA_TEMP)) | ||
24 | |||
25 | PHONY += cleanmediadocs | ||
26 | |||
27 | cleanmediadocs: | ||
28 | -@rm `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(OBJIMGFILES) 2>/dev/null | ||
29 | |||
30 | $(obj)/media_api.xml: $(GENFILES) FORCE | ||
31 | |||
32 | #$(MEDIA_OBJ_DIR)/media_api.html: $(MEDIA_OBJ_DIR)/media_api.xml | ||
33 | #$(MEDIA_OBJ_DIR)/media_api.pdf: $(MEDIA_OBJ_DIR)/media_api.xml | ||
34 | #$(MEDIA_OBJ_DIR)/media_api.ps: $(MEDIA_OBJ_DIR)/media_api.xml | ||
35 | |||
36 | V4L_SGMLS = \ | ||
37 | $(shell ls $(MEDIA_SRC_DIR)/v4l/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)') \ | ||
38 | capture.c.xml \ | ||
39 | keytable.c.xml \ | ||
40 | v4l2grab.c.xml | ||
41 | |||
42 | DVB_SGMLS = \ | ||
43 | $(shell ls $(MEDIA_SRC_DIR)/dvb/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)') | ||
44 | |||
45 | MEDIA_SGMLS = $(addprefix ./,$(V4L_SGMLS)) $(addprefix ./,$(DVB_SGMLS)) $(addprefix ./,$(MEDIA_TEMP)) | ||
46 | |||
47 | FUNCS = \ | ||
48 | close \ | ||
49 | ioctl \ | ||
50 | mmap \ | ||
51 | munmap \ | ||
52 | open \ | ||
53 | poll \ | ||
54 | read \ | ||
55 | select \ | ||
56 | write \ | ||
57 | |||
58 | IOCTLS = \ | ||
59 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/videodev2.h) \ | ||
60 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/audio.h) \ | ||
61 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/ca.h) \ | ||
62 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/dmx.h) \ | ||
63 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/frontend.h) \ | ||
64 | $(shell perl -ne 'print "$$1 " if /\#define\s+([A-Z][^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/net.h) \ | ||
65 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/video.h) \ | ||
66 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/media.h) \ | ||
67 | $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/v4l2-subdev.h) \ | ||
68 | VIDIOC_SUBDEV_G_FRAME_INTERVAL \ | ||
69 | VIDIOC_SUBDEV_S_FRAME_INTERVAL \ | ||
70 | VIDIOC_SUBDEV_ENUM_MBUS_CODE \ | ||
71 | VIDIOC_SUBDEV_ENUM_FRAME_SIZE \ | ||
72 | VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \ | ||
73 | |||
74 | TYPES = \ | ||
75 | $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \ | ||
76 | $(shell perl -ne 'print "$$1 " if /^}\s+([a-z0-9_]+_t)/' $(srctree)/include/linux/dvb/frontend.h) | ||
77 | |||
78 | ENUMS = \ | ||
79 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \ | ||
80 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/audio.h) \ | ||
81 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/ca.h) \ | ||
82 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/dmx.h) \ | ||
83 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/frontend.h) \ | ||
84 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/net.h) \ | ||
85 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/video.h) \ | ||
86 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \ | ||
87 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h) \ | ||
88 | $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h) | ||
89 | |||
90 | STRUCTS = \ | ||
91 | $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \ | ||
92 | $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s\{]+)\s*/)' $(srctree)/include/linux/dvb/audio.h) \ | ||
93 | $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/ca.h) \ | ||
94 | $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/dmx.h) \ | ||
95 | $(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/frontend.h) \ | ||
96 | $(shell perl -ne 'print "$$1 " if (/^struct\s+([A-Z][^\s]+)\s+/)' $(srctree)/include/linux/dvb/net.h) \ | ||
97 | $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/video.h) \ | ||
98 | $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \ | ||
99 | $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h) \ | ||
100 | $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h) | ||
101 | |||
102 | ERRORS = \ | ||
103 | E2BIG \ | ||
104 | EACCES \ | ||
105 | EAGAIN \ | ||
106 | EBADF \ | ||
107 | EBADFD \ | ||
108 | EBADR \ | ||
109 | EBADRQC \ | ||
110 | EBUSY \ | ||
111 | ECHILD \ | ||
112 | ECONNRESET \ | ||
113 | EDEADLK \ | ||
114 | EDOM \ | ||
115 | EEXIST \ | ||
116 | EFAULT \ | ||
117 | EFBIG \ | ||
118 | EILSEQ \ | ||
119 | EINIT \ | ||
120 | EINPROGRESS \ | ||
121 | EINTR \ | ||
122 | EINVAL \ | ||
123 | EIO \ | ||
124 | EMFILE \ | ||
125 | ENFILE \ | ||
126 | ENOBUFS \ | ||
127 | ENODATA \ | ||
128 | ENODEV \ | ||
129 | ENOENT \ | ||
130 | ENOIOCTLCMD \ | ||
131 | ENOMEM \ | ||
132 | ENOSPC \ | ||
133 | ENOSR \ | ||
134 | ENOSYS \ | ||
135 | ENOTSUP \ | ||
136 | ENOTSUPP \ | ||
137 | ENOTTY \ | ||
138 | ENXIO \ | ||
139 | EOPNOTSUPP \ | ||
140 | EOVERFLOW \ | ||
141 | EPERM \ | ||
142 | EPIPE \ | ||
143 | EPROTO \ | ||
144 | ERANGE \ | ||
145 | EREMOTE \ | ||
146 | EREMOTEIO \ | ||
147 | ERESTART \ | ||
148 | ERESTARTSYS \ | ||
149 | ESHUTDOWN \ | ||
150 | ESPIPE \ | ||
151 | ETIME \ | ||
152 | ETIMEDOUT \ | ||
153 | EUSERS \ | ||
154 | EWOULDBLOCK \ | ||
155 | EXDEV \ | ||
156 | |||
157 | ESCAPE = \ | ||
158 | -e "s/&/\\&/g" \ | ||
159 | -e "s/</\\</g" \ | ||
160 | -e "s/>/\\>/g" | ||
161 | |||
162 | FILENAME = \ | ||
163 | -e s,"^[^\/]*/",, \ | ||
164 | -e s/"\\.xml"// \ | ||
165 | -e s/"\\.tmpl"// \ | ||
166 | -e s/\\\./-/g \ | ||
167 | -e s/"^func-"// \ | ||
168 | -e s/"^pixfmt-"// \ | ||
169 | -e s/"^vidioc-"// | ||
170 | |||
171 | # Generate references to these structs in videodev2.h.xml. | ||
172 | DOCUMENTED = \ | ||
173 | -e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \ | ||
174 | -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \ | ||
175 | -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\) /<link linkend=\"\1\">\1<\/link> /g" \ | ||
176 | -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \ | ||
177 | -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g" | ||
178 | |||
179 | DVB_DOCUMENTED = \ | ||
180 | -e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g" \ | ||
181 | -e "s,\(struct\s\+\)\([a-z0-9_]\+\)\(\s\+{\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \ | ||
182 | -e "s,\(}\s\+\)\([a-z0-9_]\+_t\+\),\1\<link linkend=\"\2\">\2\<\/link\>,g" \ | ||
183 | -e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+[0-9]\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \ | ||
184 | -e "s,<link\s\+linkend=\".*\">\(DTV_IOCTL_MAX_MSGS\|dtv_cmds_h\|__.*_old\)<\/link>,\1,g" \ | ||
185 | -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \ | ||
186 | -e "s,\(audio-mixer\|audio-karaoke\|audio-status\|ca-slot-info\|ca-descr-info\|ca-caps\|ca-msg\|ca-descr\|ca-pid\|dmx-filter\|dmx-caps\|video-system\|video-highlight\|video-spu\|video-spu-palette\|video-navi-pack\)-t,\1,g" \ | ||
187 | -e "s,DTV-ISDBT-LAYER[A-C],DTV-ISDBT-LAYER,g" \ | ||
188 | -e "s,\(define\s\+\)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \ | ||
189 | -e "s,<link\s\+linkend=\".*\">\(__.*_OLD\)<\/link>,\1,g" \ | ||
190 | |||
191 | # | ||
192 | # Media targets and dependencies | ||
193 | # | ||
194 | |||
195 | install_media_images = \ | ||
196 | $(Q)cp $(OBJIMGFILES) $(MEDIA_OBJ_DIR)/media_api | ||
197 | |||
198 | $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 | ||
199 | $(Q)base64 -d $< >$@ | ||
200 | |||
201 | $(MEDIA_OBJ_DIR)/v4l2.xml: $(OBJIMGFILES) | ||
202 | @$($(quiet)gen_xml) | ||
203 | @(ln -sf $(MEDIA_SRC_DIR)/v4l/*xml $(MEDIA_OBJ_DIR)/) | ||
204 | @(ln -sf $(MEDIA_SRC_DIR)/dvb/*xml $(MEDIA_OBJ_DIR)/) | ||
205 | |||
206 | $(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml | ||
207 | @$($(quiet)gen_xml) | ||
208 | @( \ | ||
209 | echo "<programlisting>") > $@ | ||
210 | @( \ | ||
211 | expand --tabs=8 < $< | \ | ||
212 | sed $(ESCAPE) $(DOCUMENTED) | \ | ||
213 | sed 's/i\.e\./&ie;/') >> $@ | ||
214 | @( \ | ||
215 | echo "</programlisting>") >> $@ | ||
216 | |||
217 | $(MEDIA_OBJ_DIR)/audio.h.xml: $(srctree)/include/linux/dvb/audio.h $(MEDIA_OBJ_DIR)/v4l2.xml | ||
218 | @$($(quiet)gen_xml) | ||
219 | @( \ | ||
220 | echo "<programlisting>") > $@ | ||
221 | @( \ | ||
222 | expand --tabs=8 < $< | \ | ||
223 | sed $(ESCAPE) $(DVB_DOCUMENTED) | \ | ||
224 | sed 's/i\.e\./&ie;/') >> $@ | ||
225 | @( \ | ||
226 | echo "</programlisting>") >> $@ | ||
227 | |||
228 | $(MEDIA_OBJ_DIR)/ca.h.xml: $(srctree)/include/linux/dvb/ca.h $(MEDIA_OBJ_DIR)/v4l2.xml | ||
229 | @$($(quiet)gen_xml) | ||
230 | @( \ | ||
231 | echo "<programlisting>") > $@ | ||
232 | @( \ | ||
233 | expand --tabs=8 < $< | \ | ||
234 | sed $(ESCAPE) $(DVB_DOCUMENTED) | \ | ||
235 | sed 's/i\.e\./&ie;/') >> $@ | ||
236 | @( \ | ||
237 | echo "</programlisting>") >> $@ | ||
238 | |||
239 | $(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/linux/dvb/dmx.h $(MEDIA_OBJ_DIR)/v4l2.xml | ||
240 | @$($(quiet)gen_xml) | ||
241 | @( \ | ||
242 | echo "<programlisting>") > $@ | ||
243 | @( \ | ||
244 | expand --tabs=8 < $< | \ | ||
245 | sed $(ESCAPE) $(DVB_DOCUMENTED) | \ | ||
246 | sed 's/i\.e\./&ie;/') >> $@ | ||
247 | @( \ | ||
248 | echo "</programlisting>") >> $@ | ||
249 | |||
250 | $(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml | ||
251 | @$($(quiet)gen_xml) | ||
252 | @( \ | ||
253 | echo "<programlisting>") > $@ | ||
254 | @( \ | ||
255 | expand --tabs=8 < $< | \ | ||
256 | sed $(ESCAPE) $(DVB_DOCUMENTED) | \ | ||
257 | sed 's/i\.e\./&ie;/') >> $@ | ||
258 | @( \ | ||
259 | echo "</programlisting>") >> $@ | ||
260 | |||
261 | $(MEDIA_OBJ_DIR)/net.h.xml: $(srctree)/include/linux/dvb/net.h $(MEDIA_OBJ_DIR)/v4l2.xml | ||
262 | @$($(quiet)gen_xml) | ||
263 | @( \ | ||
264 | echo "<programlisting>") > $@ | ||
265 | @( \ | ||
266 | expand --tabs=8 < $< | \ | ||
267 | sed $(ESCAPE) $(DVB_DOCUMENTED) | \ | ||
268 | sed 's/i\.e\./&ie;/') >> $@ | ||
269 | @( \ | ||
270 | echo "</programlisting>") >> $@ | ||
271 | |||
272 | $(MEDIA_OBJ_DIR)/video.h.xml: $(srctree)/include/linux/dvb/video.h $(MEDIA_OBJ_DIR)/v4l2.xml | ||
273 | @$($(quiet)gen_xml) | ||
274 | @( \ | ||
275 | echo "<programlisting>") > $@ | ||
276 | @( \ | ||
277 | expand --tabs=8 < $< | \ | ||
278 | sed $(ESCAPE) $(DVB_DOCUMENTED) | \ | ||
279 | sed 's/i\.e\./&ie;/') >> $@ | ||
280 | @( \ | ||
281 | echo "</programlisting>") >> $@ | ||
282 | |||
283 | $(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml | ||
284 | @$($(quiet)gen_xml) | ||
285 | @( \ | ||
286 | echo "<!-- Generated file! Do not edit. -->") >$@ | ||
287 | @( \ | ||
288 | echo -e "\n<!-- Functions -->") >>$@ | ||
289 | @( \ | ||
290 | for ident in $(FUNCS) ; do \ | ||
291 | entity=`echo $$ident | tr _ -` ; \ | ||
292 | echo "<!ENTITY func-$$entity \"<link" \ | ||
293 | "linkend='func-$$entity'><function>$$ident()</function></link>\">" \ | ||
294 | >>$@ ; \ | ||
295 | done) | ||
296 | @( \ | ||
297 | echo -e "\n<!-- Ioctls -->") >>$@ | ||
298 | @( \ | ||
299 | for ident in $(IOCTLS) ; do \ | ||
300 | entity=`echo $$ident | tr _ -` ; \ | ||
301 | id=`grep "<refname>$$ident" $(MEDIA_OBJ_DIR)/vidioc-*.xml | sed -r s,"^.*/(.*).xml.*","\1",` ; \ | ||
302 | echo "<!ENTITY $$entity \"<link" \ | ||
303 | "linkend='$$id'><constant>$$ident</constant></link>\">" \ | ||
304 | >>$@ ; \ | ||
305 | done) | ||
306 | @( \ | ||
307 | echo -e "\n<!-- Types -->") >>$@ | ||
308 | @( \ | ||
309 | for ident in $(TYPES) ; do \ | ||
310 | entity=`echo $$ident | tr _ -` ; \ | ||
311 | echo "<!ENTITY $$entity \"<link" \ | ||
312 | "linkend='$$entity'>$$ident</link>\">" >>$@ ; \ | ||
313 | done) | ||
314 | @( \ | ||
315 | echo -e "\n<!-- Enums -->") >>$@ | ||
316 | @( \ | ||
317 | for ident in $(ENUMS) ; do \ | ||
318 | entity=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -` ; \ | ||
319 | echo "<!ENTITY $$entity \"enum <link" \ | ||
320 | "linkend='$$entity'>$$ident</link>\">" >>$@ ; \ | ||
321 | done) | ||
322 | @( \ | ||
323 | echo -e "\n<!-- Structures -->") >>$@ | ||
324 | @( \ | ||
325 | for ident in $(STRUCTS) ; do \ | ||
326 | entity=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \ | ||
327 | echo "<!ENTITY $$entity \"struct <link" \ | ||
328 | "linkend='$$entity'>$$ident</link>\">" >>$@ ; \ | ||
329 | done) | ||
330 | @( \ | ||
331 | echo -e "\n<!-- Error Codes -->") >>$@ | ||
332 | @( \ | ||
333 | for ident in $(ERRORS) ; do \ | ||
334 | echo "<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \ | ||
335 | "error code\">" >>$@ ; \ | ||
336 | done) | ||
337 | @( \ | ||
338 | echo -e "\n<!-- Subsections -->") >>$@ | ||
339 | @( \ | ||
340 | for file in $(MEDIA_SGMLS) ; do \ | ||
341 | entity=`echo "$$file" | sed $(FILENAME) -e s/"^([^-]*)"/sub\1/` ; \ | ||
342 | if ! echo "$$file" | \ | ||
343 | grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \ | ||
344 | echo "<!ENTITY sub-$$entity SYSTEM \"$$file\">" >>$@ ; \ | ||
345 | fi ; \ | ||
346 | done) | ||
347 | @( \ | ||
348 | echo -e "\n<!-- Function Reference -->") >>$@ | ||
349 | @( \ | ||
350 | for file in $(MEDIA_SGMLS) ; do \ | ||
351 | if echo "$$file" | \ | ||
352 | grep -q -E -e '(func|vidioc|pixfmt)-' ; then \ | ||
353 | entity=`echo "$$file" |sed $(FILENAME)` ; \ | ||
354 | echo "<!ENTITY $$entity SYSTEM \"$$file\">" >>$@ ; \ | ||
355 | fi ; \ | ||
356 | done) | ||
357 | |||
358 | # Jade can auto-generate a list-of-tables, which includes all structs, | ||
359 | # but we only want data types, all types, and sorted please. | ||
360 | $(MEDIA_OBJ_DIR)/media-indices.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml | ||
361 | @$($(quiet)gen_xml) | ||
362 | @( \ | ||
363 | echo "<!-- Generated file! Do not edit. -->") >$@ | ||
364 | @( \ | ||
365 | echo -e "\n<index><title>List of Types</title>") >>$@ | ||
366 | @( \ | ||
367 | for ident in $(TYPES) ; do \ | ||
368 | id=`echo $$ident | tr _ -` ; \ | ||
369 | echo "<indexentry><primaryie><link" \ | ||
370 | "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \ | ||
371 | done) | ||
372 | @( \ | ||
373 | for ident in $(ENUMS) ; do \ | ||
374 | id=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -`; \ | ||
375 | echo "<indexentry><primaryie>enum <link" \ | ||
376 | "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \ | ||
377 | done) | ||
378 | @( \ | ||
379 | for ident in $(STRUCTS) ; do \ | ||
380 | id=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \ | ||
381 | echo "<indexentry><primaryie>struct <link" \ | ||
382 | "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \ | ||
383 | done) | ||
384 | @( \ | ||
385 | echo "</index>") >>$@ | ||
386 | |||
diff --git a/Documentation/DocBook/media/bayer.png.b64 b/Documentation/DocBook/media/bayer.png.b64 new file mode 100644 index 000000000000..ccdf2bcda95c --- /dev/null +++ b/Documentation/DocBook/media/bayer.png.b64 | |||
@@ -0,0 +1,171 @@ | |||
1 | iVBORw0KGgoAAAANSUhEUgAAAlgAAACqCAMAAABGfcHVAAAAAXNSR0IArs4c6QAAAwBQTFRFAAIA | ||
2 | CAICAAQVEQEBAgsAJgECAAogAwsTAQopHQYBNAEAAAxNARQAERIQAhoDABwAABZEHRQKGRYKQw0F | ||
3 | ACMBACUAERwpHR4cVRAFBR5rZhADACR2JiIhBDAGAiWGgQ4AcxQABDYACSeQMSYlJykmESxYlQ4A | ||
4 | PSYZIS05OSsJHS5JOC8kAEMDUC8SADXLNDUzADbEAEsAADX/2RABCFIAAD/qxB0AAD//BFgAK0Vp | ||
5 | WT4r3hwA3RsTRERAAEf/5CIA2iYCCUv+WUgz7iIAOk5g3CgVSU5SiD8uB2sABm8AE1X/U1RQOFyL | ||
6 | 4jkfIlz/RV98M1j+G2H/fVk23jtD4T0pXl9ieFtGcV894UIiYWJfAIwA50gOV2p+4kssO2j+dGZx | ||
7 | bG1qVmj/OHH/aHJzfnBX5lQ7B50AZnahdXd0AKUG5V1ARnz/6mErCqgAAKsAent46GBIW4GhAK0A | ||
8 | AK8B42FtALIOin9/ALUAiIOBALkAVIf/6WxWg4eBi4SKJrEAmoVtdY2geoP/rYVXhoyOqYVuJbUh | ||
9 | IrgWX5D/jo6J7nszP7gAsI9S63xnN70zZqO/fZzCOb4+cZr+64dy8otYnJ6b7ImDRcM56IqcWMEo | ||
10 | oJb/N8ZoTMRL7Y9/QchcsaOTo6eohaj/7ZqKXspXj6v9xal+oK+7d7vTUM+Afco5r7CumLTVStKV | ||
11 | bs9ukbb/9qx/9q9l8queoLv/e9R66beG7rDImNRhi9aDwsPAs8bWzcK2cd67jtqP5MWUodyB8b+1 | ||
12 | tMr/z8L/j9+kbOXWnN2ZstD7yc7Rzs7Ly9xb183UwdD/+si/qeOmvuKIx9fj4tPCtuWiqOrL+tS2 | ||
13 | y9v++NPK2dvZt+m0ueq80+Wo3OeSwuy/yezG+d7f/eS/z/DS3uf/6Ono4PC71O39xPb02vPZ/+nR | ||
14 | +Ori6e399+vt+PGz+ur65fL55/Xb4vbh7ffX/PPY8vP9+vLy6Pf36fjr/PfM8vjr//f+/vn48P36 | ||
15 | 9vv+/vzf+fv4/fvu//z7+v7//P/7/v/8//QpxAAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAFY8AABWW | ||
16 | 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 | ||
diff --git a/Documentation/DocBook/media/crop.gif.b64 b/Documentation/DocBook/media/crop.gif.b64 new file mode 100644 index 000000000000..11d936ae72e8 --- /dev/null +++ b/Documentation/DocBook/media/crop.gif.b64 | |||
@@ -0,0 +1,105 @@ | |||
1 | R0lGODlhuQJGAeMAAAAAAH9/fwCvAP8AANEA0dEAAK8Ar////wCOAAAA0QAA//////////////// | ||
2 | /////ywAAAAAuQJGAQAE/vDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqP | ||
3 | yKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaH | ||
4 | iImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6gQC9vr/A | ||
5 | wcLDxMXGx8jJysvMzc7P0NHS09TV1tfYxbth2d3e3+DRAePk5ebn6Onl4ezt7u3q8fLqANtg7/j5 | ||
6 | +s/z/f4B+wIKHAjsn8F09ex5IciwobuDEM1Bi0ixosWLGDNqrJhQIZdk/htDihxJsiTJiSZTqlzJ | ||
7 | MmNHj1q+tRznsKbNmzhzDoz3EiYWmTN7+vQJgOfQmN5mAjzKtCg9pj+TBoU61ClCqlaAthSKVZdV | ||
8 | dFy7NtHKMqxYW1/PmT2bhOzKtWxlpZUYF4pblXDrvpq7Tq+Tu+UGCB5MuLDhw4gTK17MuLHjx5Aj | ||
9 | S55MubLly5gza95MmVxev0EAkxsg8jNoVXNJ0zy9RPQ41RtNsz6V2vPstlLTwdYo+zap2qt9G3Ed | ||
10 | YLdL4bGAL0VOhLhxjL2Zf1IeXboM56Wtt6KuPXRudM8vVu+eiTt5H9hDjj9vyfyIXrTW80gfO4OC | ||
11 | +/jz69/Pv7///wAG/ijggAQWaOCBCCao4IIMNujggRe4J4IwBxBg4YUYZqjhhhx26OGHIIYo4ogk | ||
12 | loihMBbi1k084VlklgLsWQKjBRJqgIwEBJRyY4UqZsNidhjMGOMkQlLgnjERwkdBjuVpk2QFTB5B | ||
13 | H2/2DUlJkRNYhWQKUTKyJQpdFjHlcUFaSaQxo9nGQph/fCkDm0OMCV2VZh7iZpbnwCYfBnDKcecO | ||
14 | fXq3ojotckRnnXr8SQGWEtQIphuKEhEoEHKKdygHCUiQ6QEJdDrEphWA2oGo3UXaAaMHOHrCpFmY | ||
15 | 2gSr6H2XJ5AXoHqBp5xyuimpPfCa6we+6uWqCaiqagKsTAxrBbLz/slqTqEUvWgBqLviSqqvnXpq | ||
16 | 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 | ||
diff --git a/Documentation/DocBook/dvb/.gitignore b/Documentation/DocBook/media/dvb/.gitignore index d7ec32eafac9..d7ec32eafac9 100644 --- a/Documentation/DocBook/dvb/.gitignore +++ b/Documentation/DocBook/media/dvb/.gitignore | |||
diff --git a/Documentation/DocBook/dvb/audio.xml b/Documentation/DocBook/media/dvb/audio.xml index eeb96b8a0864..d64386237207 100644 --- a/Documentation/DocBook/dvb/audio.xml +++ b/Documentation/DocBook/media/dvb/audio.xml | |||
@@ -14,17 +14,17 @@ the omission of the audio and video device. | |||
14 | audio device. | 14 | audio device. |
15 | </para> | 15 | </para> |
16 | 16 | ||
17 | <section id="audio_stream_source_t"> | 17 | <section id="audio-stream-source-t"> |
18 | <title>audio_stream_source_t</title> | 18 | <title>audio_stream_source_t</title> |
19 | <para>The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take | 19 | <para>The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take |
20 | the following values, depending on whether we are replaying from an internal (demux) or | 20 | the following values, depending on whether we are replaying from an internal (demux) or |
21 | external (user write) source. | 21 | external (user write) source. |
22 | </para> | 22 | </para> |
23 | <programlisting> | 23 | <programlisting> |
24 | typedef enum { | 24 | typedef enum { |
25 | AUDIO_SOURCE_DEMUX, | 25 | AUDIO_SOURCE_DEMUX, |
26 | AUDIO_SOURCE_MEMORY | 26 | AUDIO_SOURCE_MEMORY |
27 | } audio_stream_source_t; | 27 | } audio_stream_source_t; |
28 | </programlisting> | 28 | </programlisting> |
29 | <para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the | 29 | <para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the |
30 | DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY | 30 | DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY |
@@ -33,61 +33,64 @@ call. | |||
33 | </para> | 33 | </para> |
34 | 34 | ||
35 | </section> | 35 | </section> |
36 | <section id="audio_play_state_t"> | 36 | <section id="audio-play-state-t"> |
37 | <title>audio_play_state_t</title> | 37 | <title>audio_play_state_t</title> |
38 | <para>The following values can be returned by the AUDIO_GET_STATUS call representing the | 38 | <para>The following values can be returned by the AUDIO_GET_STATUS call representing the |
39 | state of audio playback. | 39 | state of audio playback. |
40 | </para> | 40 | </para> |
41 | <programlisting> | 41 | <programlisting> |
42 | typedef enum { | 42 | typedef enum { |
43 | AUDIO_STOPPED, | 43 | AUDIO_STOPPED, |
44 | AUDIO_PLAYING, | 44 | AUDIO_PLAYING, |
45 | AUDIO_PAUSED | 45 | AUDIO_PAUSED |
46 | } audio_play_state_t; | 46 | } audio_play_state_t; |
47 | </programlisting> | 47 | </programlisting> |
48 | 48 | ||
49 | </section> | 49 | </section> |
50 | <section id="audio_channel_select_t"> | 50 | <section id="audio-channel-select-t"> |
51 | <title>audio_channel_select_t</title> | 51 | <title>audio_channel_select_t</title> |
52 | <para>The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the | 52 | <para>The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the |
53 | following values. | 53 | following values. |
54 | </para> | 54 | </para> |
55 | <programlisting> | 55 | <programlisting> |
56 | typedef enum { | 56 | typedef enum { |
57 | AUDIO_STEREO, | 57 | AUDIO_STEREO, |
58 | AUDIO_MONO_LEFT, | 58 | AUDIO_MONO_LEFT, |
59 | AUDIO_MONO_RIGHT, | 59 | AUDIO_MONO_RIGHT, |
60 | } audio_channel_select_t; | 60 | AUDIO_MONO, |
61 | AUDIO_STEREO_SWAPPED | ||
62 | } audio_channel_select_t; | ||
61 | </programlisting> | 63 | </programlisting> |
62 | 64 | ||
63 | </section> | 65 | </section> |
64 | <section id="struct_audio_status"> | 66 | <section id="audio-status"> |
65 | <title>struct audio_status</title> | 67 | <title>struct audio_status</title> |
66 | <para>The AUDIO_GET_STATUS call returns the following structure informing about various | 68 | <para>The AUDIO_GET_STATUS call returns the following structure informing about various |
67 | states of the playback operation. | 69 | states of the playback operation. |
68 | </para> | 70 | </para> |
69 | <programlisting> | 71 | <programlisting> |
70 | typedef struct audio_status { | 72 | typedef struct audio_status { |
71 | boolean AV_sync_state; | 73 | boolean AV_sync_state; |
72 | boolean mute_state; | 74 | boolean mute_state; |
73 | audio_play_state_t play_state; | 75 | audio_play_state_t play_state; |
74 | audio_stream_source_t stream_source; | 76 | audio_stream_source_t stream_source; |
75 | audio_channel_select_t channel_select; | 77 | audio_channel_select_t channel_select; |
76 | boolean bypass_mode; | 78 | boolean bypass_mode; |
77 | } audio_status_t; | 79 | audio_mixer_t mixer_state; |
80 | } audio_status_t; | ||
78 | </programlisting> | 81 | </programlisting> |
79 | 82 | ||
80 | </section> | 83 | </section> |
81 | <section id="struct_audio_mixer"> | 84 | <section id="audio-mixer"> |
82 | <title>struct audio_mixer</title> | 85 | <title>struct audio_mixer</title> |
83 | <para>The following structure is used by the AUDIO_SET_MIXER call to set the audio | 86 | <para>The following structure is used by the AUDIO_SET_MIXER call to set the audio |
84 | volume. | 87 | volume. |
85 | </para> | 88 | </para> |
86 | <programlisting> | 89 | <programlisting> |
87 | typedef struct audio_mixer { | 90 | typedef struct audio_mixer { |
88 | unsigned int volume_left; | 91 | unsigned int volume_left; |
89 | unsigned int volume_right; | 92 | unsigned int volume_right; |
90 | } audio_mixer_t; | 93 | } audio_mixer_t; |
91 | </programlisting> | 94 | </programlisting> |
92 | 95 | ||
93 | </section> | 96 | </section> |
@@ -109,17 +112,17 @@ bits set according to the hardwares capabilities. | |||
109 | </programlisting> | 112 | </programlisting> |
110 | 113 | ||
111 | </section> | 114 | </section> |
112 | <section id="struct_audio_karaoke"> | 115 | <section id="audio-karaoke"> |
113 | <title>struct audio_karaoke</title> | 116 | <title>struct audio_karaoke</title> |
114 | <para>The ioctl AUDIO_SET_KARAOKE uses the following format: | 117 | <para>The ioctl AUDIO_SET_KARAOKE uses the following format: |
115 | </para> | 118 | </para> |
116 | <programlisting> | 119 | <programlisting> |
117 | typedef | 120 | typedef |
118 | struct audio_karaoke{ | 121 | struct audio_karaoke { |
119 | int vocal1; | 122 | int vocal1; |
120 | int vocal2; | 123 | int vocal2; |
121 | int melody; | 124 | int melody; |
122 | } audio_karaoke_t; | 125 | } audio_karaoke_t; |
123 | </programlisting> | 126 | </programlisting> |
124 | <para>If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both, | 127 | <para>If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both, |
125 | Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the | 128 | Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the |
@@ -128,7 +131,7 @@ and right. | |||
128 | </para> | 131 | </para> |
129 | 132 | ||
130 | </section> | 133 | </section> |
131 | <section id="audio_attributes"> | 134 | <section id="audio-attributes-t"> |
132 | <title>audio attributes</title> | 135 | <title>audio attributes</title> |
133 | <para>The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES: | 136 | <para>The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES: |
134 | </para> | 137 | </para> |
@@ -217,8 +220,7 @@ and right. | |||
217 | <para>(blocking mode is the default)</para> | 220 | <para>(blocking mode is the default)</para> |
218 | </entry> | 221 | </entry> |
219 | </row></tbody></tgroup></informaltable> | 222 | </row></tbody></tgroup></informaltable> |
220 | <para>ERRORS | 223 | <para>RETURN VALUE</para> |
221 | </para> | ||
222 | <informaltable><tgroup cols="2"><tbody><row><entry | 224 | <informaltable><tgroup cols="2"><tbody><row><entry |
223 | align="char"> | 225 | align="char"> |
224 | <para>ENODEV</para> | 226 | <para>ENODEV</para> |
@@ -228,13 +230,6 @@ and right. | |||
228 | </entry> | 230 | </entry> |
229 | </row><row><entry | 231 | </row><row><entry |
230 | align="char"> | 232 | align="char"> |
231 | <para>EINTERNAL</para> | ||
232 | </entry><entry | ||
233 | align="char"> | ||
234 | <para>Internal error.</para> | ||
235 | </entry> | ||
236 | </row><row><entry | ||
237 | align="char"> | ||
238 | <para>EBUSY</para> | 233 | <para>EBUSY</para> |
239 | </entry><entry | 234 | </entry><entry |
240 | align="char"> | 235 | align="char"> |
@@ -276,8 +271,7 @@ and right. | |||
276 | <para>File descriptor returned by a previous call to open().</para> | 271 | <para>File descriptor returned by a previous call to open().</para> |
277 | </entry> | 272 | </entry> |
278 | </row></tbody></tgroup></informaltable> | 273 | </row></tbody></tgroup></informaltable> |
279 | <para>ERRORS | 274 | <para>RETURN VALUE</para> |
280 | </para> | ||
281 | <informaltable><tgroup cols="2"><tbody><row><entry | 275 | <informaltable><tgroup cols="2"><tbody><row><entry |
282 | align="char"> | 276 | align="char"> |
283 | <para>EBADF</para> | 277 | <para>EBADF</para> |
@@ -332,8 +326,7 @@ and right. | |||
332 | <para>Size of buf.</para> | 326 | <para>Size of buf.</para> |
333 | </entry> | 327 | </entry> |
334 | </row></tbody></tgroup></informaltable> | 328 | </row></tbody></tgroup></informaltable> |
335 | <para>ERRORS | 329 | <para>RETURN VALUE</para> |
336 | </para> | ||
337 | <informaltable><tgroup cols="2"><tbody><row><entry | 330 | <informaltable><tgroup cols="2"><tbody><row><entry |
338 | align="char"> | 331 | align="char"> |
339 | <para>EPERM</para> | 332 | <para>EPERM</para> |
@@ -358,7 +351,7 @@ and right. | |||
358 | </entry> | 351 | </entry> |
359 | </row></tbody></tgroup></informaltable> | 352 | </row></tbody></tgroup></informaltable> |
360 | 353 | ||
361 | </section><section | 354 | </section><section id="AUDIO_STOP" |
362 | role="subsection"><title>AUDIO_STOP</title> | 355 | role="subsection"><title>AUDIO_STOP</title> |
363 | <para>DESCRIPTION | 356 | <para>DESCRIPTION |
364 | </para> | 357 | </para> |
@@ -391,25 +384,9 @@ role="subsection"><title>AUDIO_STOP</title> | |||
391 | <para>Equals AUDIO_STOP for this command.</para> | 384 | <para>Equals AUDIO_STOP for this command.</para> |
392 | </entry> | 385 | </entry> |
393 | </row></tbody></tgroup></informaltable> | 386 | </row></tbody></tgroup></informaltable> |
394 | <para>ERRORS | 387 | &return-value-dvb; |
395 | </para> | ||
396 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
397 | align="char"> | ||
398 | <para>EBADF</para> | ||
399 | </entry><entry | ||
400 | align="char"> | ||
401 | <para>fd is not a valid open file descriptor</para> | ||
402 | </entry> | ||
403 | </row><row><entry | ||
404 | align="char"> | ||
405 | <para>EINTERNAL</para> | ||
406 | </entry><entry | ||
407 | align="char"> | ||
408 | <para>Internal error.</para> | ||
409 | </entry> | ||
410 | </row></tbody></tgroup></informaltable> | ||
411 | 388 | ||
412 | </section><section | 389 | </section><section id="AUDIO_PLAY" |
413 | role="subsection"><title>AUDIO_PLAY</title> | 390 | role="subsection"><title>AUDIO_PLAY</title> |
414 | <para>DESCRIPTION | 391 | <para>DESCRIPTION |
415 | </para> | 392 | </para> |
@@ -443,25 +420,9 @@ role="subsection"><title>AUDIO_PLAY</title> | |||
443 | <para>Equals AUDIO_PLAY for this command.</para> | 420 | <para>Equals AUDIO_PLAY for this command.</para> |
444 | </entry> | 421 | </entry> |
445 | </row></tbody></tgroup></informaltable> | 422 | </row></tbody></tgroup></informaltable> |
446 | <para>ERRORS | 423 | &return-value-dvb; |
447 | </para> | ||
448 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
449 | align="char"> | ||
450 | <para>EBADF</para> | ||
451 | </entry><entry | ||
452 | align="char"> | ||
453 | <para>fd is not a valid open file descriptor</para> | ||
454 | </entry> | ||
455 | </row><row><entry | ||
456 | align="char"> | ||
457 | <para>EINTERNAL</para> | ||
458 | </entry><entry | ||
459 | align="char"> | ||
460 | <para>Internal error.</para> | ||
461 | </entry> | ||
462 | </row></tbody></tgroup></informaltable> | ||
463 | 424 | ||
464 | </section><section | 425 | </section><section id="AUDIO_PAUSE" |
465 | role="subsection"><title>AUDIO_PAUSE</title> | 426 | role="subsection"><title>AUDIO_PAUSE</title> |
466 | <para>DESCRIPTION | 427 | <para>DESCRIPTION |
467 | </para> | 428 | </para> |
@@ -503,25 +464,49 @@ role="subsection"><title>AUDIO_PAUSE</title> | |||
503 | <para>Equals AUDIO_PAUSE for this command.</para> | 464 | <para>Equals AUDIO_PAUSE for this command.</para> |
504 | </entry> | 465 | </entry> |
505 | </row></tbody></tgroup></informaltable> | 466 | </row></tbody></tgroup></informaltable> |
506 | <para>ERRORS | 467 | &return-value-dvb; |
468 | |||
469 | </section><section id="AUDIO_CONTINUE" | ||
470 | role="subsection"><title>AUDIO_CONTINUE</title> | ||
471 | <para>DESCRIPTION | ||
472 | </para> | ||
473 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
474 | align="char"> | ||
475 | <para>This ioctl restarts the decoding and playing process previously paused | ||
476 | with AUDIO_PAUSE command.</para> | ||
477 | </entry> | ||
478 | </row><row><entry | ||
479 | align="char"> | ||
480 | <para>It only works if the stream were previously stopped with AUDIO_PAUSE</para> | ||
481 | </entry> | ||
482 | </row></tbody></tgroup></informaltable> | ||
483 | <para>SYNOPSIS | ||
484 | </para> | ||
485 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
486 | align="char"> | ||
487 | <para>int ioctl(int fd, int request = AUDIO_CONTINUE);</para> | ||
488 | </entry> | ||
489 | </row></tbody></tgroup></informaltable> | ||
490 | <para>PARAMETERS | ||
507 | </para> | 491 | </para> |
508 | <informaltable><tgroup cols="2"><tbody><row><entry | 492 | <informaltable><tgroup cols="2"><tbody><row><entry |
509 | align="char"> | 493 | align="char"> |
510 | <para>EBADF</para> | 494 | <para>int fd</para> |
511 | </entry><entry | 495 | </entry><entry |
512 | align="char"> | 496 | align="char"> |
513 | <para>fd is not a valid open file descriptor.</para> | 497 | <para>File descriptor returned by a previous call to open().</para> |
514 | </entry> | 498 | </entry> |
515 | </row><row><entry | 499 | </row><row><entry |
516 | align="char"> | 500 | align="char"> |
517 | <para>EINTERNAL</para> | 501 | <para>int request</para> |
518 | </entry><entry | 502 | </entry><entry |
519 | align="char"> | 503 | align="char"> |
520 | <para>Internal error.</para> | 504 | <para>Equals AUDIO_CONTINUE for this command.</para> |
521 | </entry> | 505 | </entry> |
522 | </row></tbody></tgroup></informaltable> | 506 | </row></tbody></tgroup></informaltable> |
507 | &return-value-dvb; | ||
523 | 508 | ||
524 | </section><section | 509 | </section><section id="AUDIO_SELECT_SOURCE" |
525 | role="subsection"><title>AUDIO_SELECT_SOURCE</title> | 510 | role="subsection"><title>AUDIO_SELECT_SOURCE</title> |
526 | <para>DESCRIPTION | 511 | <para>DESCRIPTION |
527 | </para> | 512 | </para> |
@@ -567,32 +552,9 @@ role="subsection"><title>AUDIO_SELECT_SOURCE</title> | |||
567 | stream.</para> | 552 | stream.</para> |
568 | </entry> | 553 | </entry> |
569 | </row></tbody></tgroup></informaltable> | 554 | </row></tbody></tgroup></informaltable> |
570 | <para>ERRORS | 555 | &return-value-dvb; |
571 | </para> | ||
572 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
573 | align="char"> | ||
574 | <para>EBADF</para> | ||
575 | </entry><entry | ||
576 | align="char"> | ||
577 | <para>fd is not a valid open file descriptor.</para> | ||
578 | </entry> | ||
579 | </row><row><entry | ||
580 | align="char"> | ||
581 | <para>EINTERNAL</para> | ||
582 | </entry><entry | ||
583 | align="char"> | ||
584 | <para>Internal error.</para> | ||
585 | </entry> | ||
586 | </row><row><entry | ||
587 | align="char"> | ||
588 | <para>EINVAL</para> | ||
589 | </entry><entry | ||
590 | align="char"> | ||
591 | <para>Illegal input parameter.</para> | ||
592 | </entry> | ||
593 | </row></tbody></tgroup></informaltable> | ||
594 | 556 | ||
595 | </section><section | 557 | </section><section id="AUDIO_SET_MUTE" |
596 | role="subsection"><title>AUDIO_SET_MUTE</title> | 558 | role="subsection"><title>AUDIO_SET_MUTE</title> |
597 | <para>DESCRIPTION | 559 | <para>DESCRIPTION |
598 | </para> | 560 | </para> |
@@ -646,32 +608,9 @@ role="subsection"><title>AUDIO_SET_MUTE</title> | |||
646 | <para>FALSE Audio Un-mute</para> | 608 | <para>FALSE Audio Un-mute</para> |
647 | </entry> | 609 | </entry> |
648 | </row></tbody></tgroup></informaltable> | 610 | </row></tbody></tgroup></informaltable> |
649 | <para>ERRORS | 611 | &return-value-dvb; |
650 | </para> | ||
651 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
652 | align="char"> | ||
653 | <para>EBADF</para> | ||
654 | </entry><entry | ||
655 | align="char"> | ||
656 | <para>fd is not a valid open file descriptor.</para> | ||
657 | </entry> | ||
658 | </row><row><entry | ||
659 | align="char"> | ||
660 | <para>EINTERNAL</para> | ||
661 | </entry><entry | ||
662 | align="char"> | ||
663 | <para>Internal error.</para> | ||
664 | </entry> | ||
665 | </row><row><entry | ||
666 | align="char"> | ||
667 | <para>EINVAL</para> | ||
668 | </entry><entry | ||
669 | align="char"> | ||
670 | <para>Illegal input parameter.</para> | ||
671 | </entry> | ||
672 | </row></tbody></tgroup></informaltable> | ||
673 | 612 | ||
674 | </section><section | 613 | </section><section id="AUDIO_SET_AV_SYNC" |
675 | role="subsection"><title>AUDIO_SET_AV_SYNC</title> | 614 | role="subsection"><title>AUDIO_SET_AV_SYNC</title> |
676 | <para>DESCRIPTION | 615 | <para>DESCRIPTION |
677 | </para> | 616 | </para> |
@@ -725,32 +664,9 @@ role="subsection"><title>AUDIO_SET_AV_SYNC</title> | |||
725 | <para>FALSE AV-sync OFF</para> | 664 | <para>FALSE AV-sync OFF</para> |
726 | </entry> | 665 | </entry> |
727 | </row></tbody></tgroup></informaltable> | 666 | </row></tbody></tgroup></informaltable> |
728 | <para>ERRORS | 667 | &return-value-dvb; |
729 | </para> | ||
730 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
731 | align="char"> | ||
732 | <para>EBADF</para> | ||
733 | </entry><entry | ||
734 | align="char"> | ||
735 | <para>fd is not a valid open file descriptor.</para> | ||
736 | </entry> | ||
737 | </row><row><entry | ||
738 | align="char"> | ||
739 | <para>EINTERNAL</para> | ||
740 | </entry><entry | ||
741 | align="char"> | ||
742 | <para>Internal error.</para> | ||
743 | </entry> | ||
744 | </row><row><entry | ||
745 | align="char"> | ||
746 | <para>EINVAL</para> | ||
747 | </entry><entry | ||
748 | align="char"> | ||
749 | <para>Illegal input parameter.</para> | ||
750 | </entry> | ||
751 | </row></tbody></tgroup></informaltable> | ||
752 | 668 | ||
753 | </section><section | 669 | </section><section id="AUDIO_SET_BYPASS_MODE" |
754 | role="subsection"><title>AUDIO_SET_BYPASS_MODE</title> | 670 | role="subsection"><title>AUDIO_SET_BYPASS_MODE</title> |
755 | <para>DESCRIPTION | 671 | <para>DESCRIPTION |
756 | </para> | 672 | </para> |
@@ -808,32 +724,9 @@ role="subsection"><title>AUDIO_SET_BYPASS_MODE</title> | |||
808 | <para>FALSE Bypass is enabled</para> | 724 | <para>FALSE Bypass is enabled</para> |
809 | </entry> | 725 | </entry> |
810 | </row></tbody></tgroup></informaltable> | 726 | </row></tbody></tgroup></informaltable> |
811 | <para>ERRORS | 727 | &return-value-dvb; |
812 | </para> | ||
813 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
814 | align="char"> | ||
815 | <para>EBADF</para> | ||
816 | </entry><entry | ||
817 | align="char"> | ||
818 | <para>fd is not a valid open file descriptor.</para> | ||
819 | </entry> | ||
820 | </row><row><entry | ||
821 | align="char"> | ||
822 | <para>EINTERNAL</para> | ||
823 | </entry><entry | ||
824 | align="char"> | ||
825 | <para>Internal error.</para> | ||
826 | </entry> | ||
827 | </row><row><entry | ||
828 | align="char"> | ||
829 | <para>EINVAL</para> | ||
830 | </entry><entry | ||
831 | align="char"> | ||
832 | <para>Illegal input parameter.</para> | ||
833 | </entry> | ||
834 | </row></tbody></tgroup></informaltable> | ||
835 | 728 | ||
836 | </section><section | 729 | </section><section id="AUDIO_CHANNEL_SELECT" |
837 | role="subsection"><title>AUDIO_CHANNEL_SELECT</title> | 730 | role="subsection"><title>AUDIO_CHANNEL_SELECT</title> |
838 | <para>DESCRIPTION | 731 | <para>DESCRIPTION |
839 | </para> | 732 | </para> |
@@ -877,32 +770,9 @@ role="subsection"><title>AUDIO_CHANNEL_SELECT</title> | |||
877 | stereo).</para> | 770 | stereo).</para> |
878 | </entry> | 771 | </entry> |
879 | </row></tbody></tgroup></informaltable> | 772 | </row></tbody></tgroup></informaltable> |
880 | <para>ERRORS | 773 | &return-value-dvb; |
881 | </para> | ||
882 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
883 | align="char"> | ||
884 | <para>EBADF</para> | ||
885 | </entry><entry | ||
886 | align="char"> | ||
887 | <para>fd is not a valid open file descriptor.</para> | ||
888 | </entry> | ||
889 | </row><row><entry | ||
890 | align="char"> | ||
891 | <para>EINTERNAL</para> | ||
892 | </entry><entry | ||
893 | align="char"> | ||
894 | <para>Internal error.</para> | ||
895 | </entry> | ||
896 | </row><row><entry | ||
897 | align="char"> | ||
898 | <para>EINVAL</para> | ||
899 | </entry><entry | ||
900 | align="char"> | ||
901 | <para>Illegal input parameter ch.</para> | ||
902 | </entry> | ||
903 | </row></tbody></tgroup></informaltable> | ||
904 | 774 | ||
905 | </section><section | 775 | </section><section id="AUDIO_GET_STATUS" |
906 | role="subsection"><title>AUDIO_GET_STATUS</title> | 776 | role="subsection"><title>AUDIO_GET_STATUS</title> |
907 | <para>DESCRIPTION | 777 | <para>DESCRIPTION |
908 | </para> | 778 | </para> |
@@ -945,32 +815,9 @@ role="subsection"><title>AUDIO_GET_STATUS</title> | |||
945 | <para>Returns the current state of Audio Device.</para> | 815 | <para>Returns the current state of Audio Device.</para> |
946 | </entry> | 816 | </entry> |
947 | </row></tbody></tgroup></informaltable> | 817 | </row></tbody></tgroup></informaltable> |
948 | <para>ERRORS | 818 | &return-value-dvb; |
949 | </para> | ||
950 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
951 | align="char"> | ||
952 | <para>EBADF</para> | ||
953 | </entry><entry | ||
954 | align="char"> | ||
955 | <para>fd is not a valid open file descriptor.</para> | ||
956 | </entry> | ||
957 | </row><row><entry | ||
958 | align="char"> | ||
959 | <para>EINTERNAL</para> | ||
960 | </entry><entry | ||
961 | align="char"> | ||
962 | <para>Internal error.</para> | ||
963 | </entry> | ||
964 | </row><row><entry | ||
965 | align="char"> | ||
966 | <para>EFAULT</para> | ||
967 | </entry><entry | ||
968 | align="char"> | ||
969 | <para>status points to invalid address.</para> | ||
970 | </entry> | ||
971 | </row></tbody></tgroup></informaltable> | ||
972 | 819 | ||
973 | </section><section | 820 | </section><section id="AUDIO_GET_CAPABILITIES" |
974 | role="subsection"><title>AUDIO_GET_CAPABILITIES</title> | 821 | role="subsection"><title>AUDIO_GET_CAPABILITIES</title> |
975 | <para>DESCRIPTION | 822 | <para>DESCRIPTION |
976 | </para> | 823 | </para> |
@@ -1013,32 +860,9 @@ role="subsection"><title>AUDIO_GET_CAPABILITIES</title> | |||
1013 | <para>Returns a bit array of supported sound formats.</para> | 860 | <para>Returns a bit array of supported sound formats.</para> |
1014 | </entry> | 861 | </entry> |
1015 | </row></tbody></tgroup></informaltable> | 862 | </row></tbody></tgroup></informaltable> |
1016 | <para>ERRORS | 863 | &return-value-dvb; |
1017 | </para> | ||
1018 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1019 | align="char"> | ||
1020 | <para>EBADF</para> | ||
1021 | </entry><entry | ||
1022 | align="char"> | ||
1023 | <para>fd is not a valid open file descriptor.</para> | ||
1024 | </entry> | ||
1025 | </row><row><entry | ||
1026 | align="char"> | ||
1027 | <para>EINTERNAL</para> | ||
1028 | </entry><entry | ||
1029 | align="char"> | ||
1030 | <para>Internal error.</para> | ||
1031 | </entry> | ||
1032 | </row><row><entry | ||
1033 | align="char"> | ||
1034 | <para>EFAULT</para> | ||
1035 | </entry><entry | ||
1036 | align="char"> | ||
1037 | <para>cap points to an invalid address.</para> | ||
1038 | </entry> | ||
1039 | </row></tbody></tgroup></informaltable> | ||
1040 | 864 | ||
1041 | </section><section | 865 | </section><section id="AUDIO_CLEAR_BUFFER" |
1042 | role="subsection"><title>AUDIO_CLEAR_BUFFER</title> | 866 | role="subsection"><title>AUDIO_CLEAR_BUFFER</title> |
1043 | <para>DESCRIPTION | 867 | <para>DESCRIPTION |
1044 | </para> | 868 | </para> |
@@ -1072,25 +896,9 @@ role="subsection"><title>AUDIO_CLEAR_BUFFER</title> | |||
1072 | <para>Equals AUDIO_CLEAR_BUFFER for this command.</para> | 896 | <para>Equals AUDIO_CLEAR_BUFFER for this command.</para> |
1073 | </entry> | 897 | </entry> |
1074 | </row></tbody></tgroup></informaltable> | 898 | </row></tbody></tgroup></informaltable> |
1075 | <para>ERRORS | 899 | &return-value-dvb; |
1076 | </para> | ||
1077 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1078 | align="char"> | ||
1079 | <para>EBADF</para> | ||
1080 | </entry><entry | ||
1081 | align="char"> | ||
1082 | <para>fd is not a valid open file descriptor.</para> | ||
1083 | </entry> | ||
1084 | </row><row><entry | ||
1085 | align="char"> | ||
1086 | <para>EINTERNAL</para> | ||
1087 | </entry><entry | ||
1088 | align="char"> | ||
1089 | <para>Internal error.</para> | ||
1090 | </entry> | ||
1091 | </row></tbody></tgroup></informaltable> | ||
1092 | 900 | ||
1093 | </section><section | 901 | </section><section id="AUDIO_SET_ID" |
1094 | role="subsection"><title>AUDIO_SET_ID</title> | 902 | role="subsection"><title>AUDIO_SET_ID</title> |
1095 | <para>DESCRIPTION | 903 | <para>DESCRIPTION |
1096 | </para> | 904 | </para> |
@@ -1136,32 +944,9 @@ role="subsection"><title>AUDIO_SET_ID</title> | |||
1136 | <para>audio sub-stream id</para> | 944 | <para>audio sub-stream id</para> |
1137 | </entry> | 945 | </entry> |
1138 | </row></tbody></tgroup></informaltable> | 946 | </row></tbody></tgroup></informaltable> |
1139 | <para>ERRORS | 947 | &return-value-dvb; |
1140 | </para> | ||
1141 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1142 | align="char"> | ||
1143 | <para>EBADF</para> | ||
1144 | </entry><entry | ||
1145 | align="char"> | ||
1146 | <para>fd is not a valid open file descriptor.</para> | ||
1147 | </entry> | ||
1148 | </row><row><entry | ||
1149 | align="char"> | ||
1150 | <para>EINTERNAL</para> | ||
1151 | </entry><entry | ||
1152 | align="char"> | ||
1153 | <para>Internal error.</para> | ||
1154 | </entry> | ||
1155 | </row><row><entry | ||
1156 | align="char"> | ||
1157 | <para>EINVAL</para> | ||
1158 | </entry><entry | ||
1159 | align="char"> | ||
1160 | <para>Invalid sub-stream id.</para> | ||
1161 | </entry> | ||
1162 | </row></tbody></tgroup></informaltable> | ||
1163 | 948 | ||
1164 | </section><section | 949 | </section><section id="AUDIO_SET_MIXER" |
1165 | role="subsection"><title>AUDIO_SET_MIXER</title> | 950 | role="subsection"><title>AUDIO_SET_MIXER</title> |
1166 | <para>DESCRIPTION | 951 | <para>DESCRIPTION |
1167 | </para> | 952 | </para> |
@@ -1202,32 +987,9 @@ role="subsection"><title>AUDIO_SET_MIXER</title> | |||
1202 | <para>mixer settings.</para> | 987 | <para>mixer settings.</para> |
1203 | </entry> | 988 | </entry> |
1204 | </row></tbody></tgroup></informaltable> | 989 | </row></tbody></tgroup></informaltable> |
1205 | <para>ERRORS | 990 | &return-value-dvb; |
1206 | </para> | ||
1207 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1208 | align="char"> | ||
1209 | <para>EBADF</para> | ||
1210 | </entry><entry | ||
1211 | align="char"> | ||
1212 | <para>fd is not a valid open file descriptor.</para> | ||
1213 | </entry> | ||
1214 | </row><row><entry | ||
1215 | align="char"> | ||
1216 | <para>EINTERNAL</para> | ||
1217 | </entry><entry | ||
1218 | align="char"> | ||
1219 | <para>Internal error.</para> | ||
1220 | </entry> | ||
1221 | </row><row><entry | ||
1222 | align="char"> | ||
1223 | <para>EFAULT</para> | ||
1224 | </entry><entry | ||
1225 | align="char"> | ||
1226 | <para>mix points to an invalid address.</para> | ||
1227 | </entry> | ||
1228 | </row></tbody></tgroup></informaltable> | ||
1229 | 991 | ||
1230 | </section><section | 992 | </section><section id="AUDIO_SET_STREAMTYPE" |
1231 | role="subsection"><title>AUDIO_SET_STREAMTYPE</title> | 993 | role="subsection"><title>AUDIO_SET_STREAMTYPE</title> |
1232 | <para>DESCRIPTION | 994 | <para>DESCRIPTION |
1233 | </para> | 995 | </para> |
@@ -1270,17 +1032,9 @@ role="subsection"><title>AUDIO_SET_STREAMTYPE</title> | |||
1270 | <para>stream type</para> | 1032 | <para>stream type</para> |
1271 | </entry> | 1033 | </entry> |
1272 | </row></tbody></tgroup></informaltable> | 1034 | </row></tbody></tgroup></informaltable> |
1273 | <para>ERRORS | 1035 | &return-value-dvb; |
1274 | </para> | ||
1275 | <informaltable><tgroup cols="2"><tbody><row><entry | 1036 | <informaltable><tgroup cols="2"><tbody><row><entry |
1276 | align="char"> | 1037 | align="char"> |
1277 | <para>EBADF</para> | ||
1278 | </entry><entry | ||
1279 | align="char"> | ||
1280 | <para>fd is not a valid open file descriptor</para> | ||
1281 | </entry> | ||
1282 | </row><row><entry | ||
1283 | align="char"> | ||
1284 | <para>EINVAL</para> | 1038 | <para>EINVAL</para> |
1285 | </entry><entry | 1039 | </entry><entry |
1286 | align="char"> | 1040 | align="char"> |
@@ -1288,7 +1042,7 @@ role="subsection"><title>AUDIO_SET_STREAMTYPE</title> | |||
1288 | </entry> | 1042 | </entry> |
1289 | </row></tbody></tgroup></informaltable> | 1043 | </row></tbody></tgroup></informaltable> |
1290 | 1044 | ||
1291 | </section><section | 1045 | </section><section id="AUDIO_SET_EXT_ID" |
1292 | role="subsection"><title>AUDIO_SET_EXT_ID</title> | 1046 | role="subsection"><title>AUDIO_SET_EXT_ID</title> |
1293 | <para>DESCRIPTION | 1047 | <para>DESCRIPTION |
1294 | </para> | 1048 | </para> |
@@ -1330,17 +1084,9 @@ role="subsection"><title>AUDIO_SET_EXT_ID</title> | |||
1330 | <para>audio sub_stream_id</para> | 1084 | <para>audio sub_stream_id</para> |
1331 | </entry> | 1085 | </entry> |
1332 | </row></tbody></tgroup></informaltable> | 1086 | </row></tbody></tgroup></informaltable> |
1333 | <para>ERRORS | 1087 | &return-value-dvb; |
1334 | </para> | ||
1335 | <informaltable><tgroup cols="2"><tbody><row><entry | 1088 | <informaltable><tgroup cols="2"><tbody><row><entry |
1336 | align="char"> | 1089 | align="char"> |
1337 | <para>EBADF</para> | ||
1338 | </entry><entry | ||
1339 | align="char"> | ||
1340 | <para>fd is not a valid open file descriptor</para> | ||
1341 | </entry> | ||
1342 | </row><row><entry | ||
1343 | align="char"> | ||
1344 | <para>EINVAL</para> | 1090 | <para>EINVAL</para> |
1345 | </entry><entry | 1091 | </entry><entry |
1346 | align="char"> | 1092 | align="char"> |
@@ -1348,7 +1094,7 @@ role="subsection"><title>AUDIO_SET_EXT_ID</title> | |||
1348 | </entry> | 1094 | </entry> |
1349 | </row></tbody></tgroup></informaltable> | 1095 | </row></tbody></tgroup></informaltable> |
1350 | 1096 | ||
1351 | </section><section | 1097 | </section><section id="AUDIO_SET_ATTRIBUTES" |
1352 | role="subsection"><title>AUDIO_SET_ATTRIBUTES</title> | 1098 | role="subsection"><title>AUDIO_SET_ATTRIBUTES</title> |
1353 | <para>DESCRIPTION | 1099 | <para>DESCRIPTION |
1354 | </para> | 1100 | </para> |
@@ -1391,17 +1137,9 @@ role="subsection"><title>AUDIO_SET_ATTRIBUTES</title> | |||
1391 | <para>audio attributes according to section ??</para> | 1137 | <para>audio attributes according to section ??</para> |
1392 | </entry> | 1138 | </entry> |
1393 | </row></tbody></tgroup></informaltable> | 1139 | </row></tbody></tgroup></informaltable> |
1394 | <para>ERRORS | 1140 | &return-value-dvb; |
1395 | </para> | ||
1396 | <informaltable><tgroup cols="2"><tbody><row><entry | 1141 | <informaltable><tgroup cols="2"><tbody><row><entry |
1397 | align="char"> | 1142 | align="char"> |
1398 | <para>EBADF</para> | ||
1399 | </entry><entry | ||
1400 | align="char"> | ||
1401 | <para>fd is not a valid open file descriptor</para> | ||
1402 | </entry> | ||
1403 | </row><row><entry | ||
1404 | align="char"> | ||
1405 | <para>EINVAL</para> | 1143 | <para>EINVAL</para> |
1406 | </entry><entry | 1144 | </entry><entry |
1407 | align="char"> | 1145 | align="char"> |
@@ -1409,7 +1147,7 @@ role="subsection"><title>AUDIO_SET_ATTRIBUTES</title> | |||
1409 | </entry> | 1147 | </entry> |
1410 | </row></tbody></tgroup></informaltable> | 1148 | </row></tbody></tgroup></informaltable> |
1411 | 1149 | ||
1412 | </section><section | 1150 | </section><section id="AUDIO_SET_KARAOKE" |
1413 | role="subsection"><title>AUDIO_SET_KARAOKE</title> | 1151 | role="subsection"><title>AUDIO_SET_KARAOKE</title> |
1414 | <para>DESCRIPTION | 1152 | <para>DESCRIPTION |
1415 | </para> | 1153 | </para> |
@@ -1422,7 +1160,7 @@ role="subsection"><title>AUDIO_SET_KARAOKE</title> | |||
1422 | </para> | 1160 | </para> |
1423 | <informaltable><tgroup cols="1"><tbody><row><entry | 1161 | <informaltable><tgroup cols="1"><tbody><row><entry |
1424 | align="char"> | 1162 | align="char"> |
1425 | <para>int ioctl(fd, int request = AUDIO_SET_STREAMTYPE, | 1163 | <para>int ioctl(fd, int request = AUDIO_SET_KARAOKE, |
1426 | audio_karaoke_t ⋆karaoke);</para> | 1164 | audio_karaoke_t ⋆karaoke);</para> |
1427 | </entry> | 1165 | </entry> |
1428 | </row></tbody></tgroup></informaltable> | 1166 | </row></tbody></tgroup></informaltable> |
@@ -1440,7 +1178,7 @@ role="subsection"><title>AUDIO_SET_KARAOKE</title> | |||
1440 | <para>int request</para> | 1178 | <para>int request</para> |
1441 | </entry><entry | 1179 | </entry><entry |
1442 | align="char"> | 1180 | align="char"> |
1443 | <para>Equals AUDIO_SET_STREAMTYPE for this | 1181 | <para>Equals AUDIO_SET_KARAOKE for this |
1444 | command.</para> | 1182 | command.</para> |
1445 | </entry> | 1183 | </entry> |
1446 | </row><row><entry | 1184 | </row><row><entry |
@@ -1452,17 +1190,9 @@ role="subsection"><title>AUDIO_SET_KARAOKE</title> | |||
1452 | <para>karaoke settings according to section ??.</para> | 1190 | <para>karaoke settings according to section ??.</para> |
1453 | </entry> | 1191 | </entry> |
1454 | </row></tbody></tgroup></informaltable> | 1192 | </row></tbody></tgroup></informaltable> |
1455 | <para>ERRORS | 1193 | &return-value-dvb; |
1456 | </para> | ||
1457 | <informaltable><tgroup cols="2"><tbody><row><entry | 1194 | <informaltable><tgroup cols="2"><tbody><row><entry |
1458 | align="char"> | 1195 | align="char"> |
1459 | <para>EBADF</para> | ||
1460 | </entry><entry | ||
1461 | align="char"> | ||
1462 | <para>fd is not a valid open file descriptor</para> | ||
1463 | </entry> | ||
1464 | </row><row><entry | ||
1465 | align="char"> | ||
1466 | <para>EINVAL</para> | 1196 | <para>EINVAL</para> |
1467 | </entry><entry | 1197 | </entry><entry |
1468 | align="char"> | 1198 | align="char"> |
diff --git a/Documentation/DocBook/dvb/ca.xml b/Documentation/DocBook/media/dvb/ca.xml index b1f1d2fad654..5c4adb44b1c1 100644 --- a/Documentation/DocBook/dvb/ca.xml +++ b/Documentation/DocBook/media/dvb/ca.xml | |||
@@ -8,75 +8,85 @@ including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application. | |||
8 | <title>CA Data Types</title> | 8 | <title>CA Data Types</title> |
9 | 9 | ||
10 | 10 | ||
11 | <section id="ca_slot_info_t"> | 11 | <section id="ca-slot-info"> |
12 | <title>ca_slot_info_t</title> | 12 | <title>ca_slot_info_t</title> |
13 | <programlisting> | 13 | <programlisting> |
14 | /⋆ slot interface types and info ⋆/ | 14 | typedef struct ca_slot_info { |
15 | int num; /⋆ slot number ⋆/ | ||
15 | 16 | ||
16 | typedef struct ca_slot_info_s { | 17 | int type; /⋆ CA interface this slot supports ⋆/ |
17 | int num; /⋆ slot number ⋆/ | 18 | #define CA_CI 1 /⋆ CI high level interface ⋆/ |
19 | #define CA_CI_LINK 2 /⋆ CI link layer level interface ⋆/ | ||
20 | #define CA_CI_PHYS 4 /⋆ CI physical layer level interface ⋆/ | ||
21 | #define CA_DESCR 8 /⋆ built-in descrambler ⋆/ | ||
22 | #define CA_SC 128 /⋆ simple smart card interface ⋆/ | ||
18 | 23 | ||
19 | int type; /⋆ CA interface this slot supports ⋆/ | 24 | unsigned int flags; |
20 | #define CA_CI 1 /⋆ CI high level interface ⋆/ | 25 | #define CA_CI_MODULE_PRESENT 1 /⋆ module (or card) inserted ⋆/ |
21 | #define CA_CI_LINK 2 /⋆ CI link layer level interface ⋆/ | 26 | #define CA_CI_MODULE_READY 2 |
22 | #define CA_CI_PHYS 4 /⋆ CI physical layer level interface ⋆/ | 27 | } ca_slot_info_t; |
23 | #define CA_SC 128 /⋆ simple smart card interface ⋆/ | ||
24 | |||
25 | unsigned int flags; | ||
26 | #define CA_CI_MODULE_PRESENT 1 /⋆ module (or card) inserted ⋆/ | ||
27 | #define CA_CI_MODULE_READY 2 | ||
28 | } ca_slot_info_t; | ||
29 | </programlisting> | 28 | </programlisting> |
30 | 29 | ||
31 | </section> | 30 | </section> |
32 | <section id="ca_descr_info_t"> | 31 | <section id="ca-descr-info"> |
33 | <title>ca_descr_info_t</title> | 32 | <title>ca_descr_info_t</title> |
34 | <programlisting> | 33 | <programlisting> |
35 | typedef struct ca_descr_info_s { | 34 | typedef struct ca_descr_info { |
36 | unsigned int num; /⋆ number of available descramblers (keys) ⋆/ | 35 | unsigned int num; /⋆ number of available descramblers (keys) ⋆/ |
37 | unsigned int type; /⋆ type of supported scrambling system ⋆/ | 36 | unsigned int type; /⋆ type of supported scrambling system ⋆/ |
38 | #define CA_ECD 1 | 37 | #define CA_ECD 1 |
39 | #define CA_NDS 2 | 38 | #define CA_NDS 2 |
40 | #define CA_DSS 4 | 39 | #define CA_DSS 4 |
41 | } ca_descr_info_t; | 40 | } ca_descr_info_t; |
42 | </programlisting> | 41 | </programlisting> |
43 | 42 | ||
44 | </section> | 43 | </section> |
45 | <section id="ca_cap_t"> | 44 | <section id="ca-caps"> |
46 | <title>ca_cap_t</title> | 45 | <title>ca_caps_t</title> |
47 | <programlisting> | 46 | <programlisting> |
48 | typedef struct ca_cap_s { | 47 | typedef struct ca_caps { |
49 | unsigned int slot_num; /⋆ total number of CA card and module slots ⋆/ | 48 | unsigned int slot_num; /⋆ total number of CA card and module slots ⋆/ |
50 | unsigned int slot_type; /⋆ OR of all supported types ⋆/ | 49 | unsigned int slot_type; /⋆ OR of all supported types ⋆/ |
51 | unsigned int descr_num; /⋆ total number of descrambler slots (keys) ⋆/ | 50 | unsigned int descr_num; /⋆ total number of descrambler slots (keys) ⋆/ |
52 | unsigned int descr_type;/⋆ OR of all supported types ⋆/ | 51 | unsigned int descr_type;/⋆ OR of all supported types ⋆/ |
53 | } ca_cap_t; | 52 | } ca_cap_t; |
54 | </programlisting> | 53 | </programlisting> |
55 | 54 | ||
56 | </section> | 55 | </section> |
57 | <section id="ca_msg_t"> | 56 | <section id="ca-msg"> |
58 | <title>ca_msg_t</title> | 57 | <title>ca_msg_t</title> |
59 | <programlisting> | 58 | <programlisting> |
60 | /⋆ a message to/from a CI-CAM ⋆/ | 59 | /⋆ a message to/from a CI-CAM ⋆/ |
61 | typedef struct ca_msg_s { | 60 | typedef struct ca_msg { |
62 | unsigned int index; | 61 | unsigned int index; |
63 | unsigned int type; | 62 | unsigned int type; |
64 | unsigned int length; | 63 | unsigned int length; |
65 | unsigned char msg[256]; | 64 | unsigned char msg[256]; |
66 | } ca_msg_t; | 65 | } ca_msg_t; |
67 | </programlisting> | 66 | </programlisting> |
68 | 67 | ||
69 | </section> | 68 | </section> |
70 | <section id="ca_descr_t"> | 69 | <section id="ca-descr"> |
71 | <title>ca_descr_t</title> | 70 | <title>ca_descr_t</title> |
72 | <programlisting> | 71 | <programlisting> |
73 | typedef struct ca_descr_s { | 72 | typedef struct ca_descr { |
74 | unsigned int index; | 73 | unsigned int index; |
75 | unsigned int parity; | 74 | unsigned int parity; |
76 | unsigned char cw[8]; | 75 | unsigned char cw[8]; |
77 | } ca_descr_t; | 76 | } ca_descr_t; |
78 | </programlisting> | 77 | </programlisting> |
79 | </section></section> | 78 | </section> |
79 | |||
80 | <section id="ca-pid"> | ||
81 | <title>ca-pid</title> | ||
82 | <programlisting> | ||
83 | typedef struct ca_pid { | ||
84 | unsigned int pid; | ||
85 | int index; /⋆ -1 == disable⋆/ | ||
86 | } ca_pid_t; | ||
87 | </programlisting> | ||
88 | </section></section> | ||
89 | |||
80 | <section id="ca_function_calls"> | 90 | <section id="ca_function_calls"> |
81 | <title>CA Function Calls</title> | 91 | <title>CA Function Calls</title> |
82 | 92 | ||
@@ -148,8 +158,7 @@ including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application. | |||
148 | <para>(blocking mode is the default)</para> | 158 | <para>(blocking mode is the default)</para> |
149 | </entry> | 159 | </entry> |
150 | </row></tbody></tgroup></informaltable> | 160 | </row></tbody></tgroup></informaltable> |
151 | <para>ERRORS | 161 | <para>RETURN VALUE</para> |
152 | </para> | ||
153 | <informaltable><tgroup cols="2"><tbody><row><entry | 162 | <informaltable><tgroup cols="2"><tbody><row><entry |
154 | align="char"> | 163 | align="char"> |
155 | <para>ENODEV</para> | 164 | <para>ENODEV</para> |
@@ -207,8 +216,7 @@ including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application. | |||
207 | <para>File descriptor returned by a previous call to open().</para> | 216 | <para>File descriptor returned by a previous call to open().</para> |
208 | </entry> | 217 | </entry> |
209 | </row></tbody></tgroup></informaltable> | 218 | </row></tbody></tgroup></informaltable> |
210 | <para>ERRORS | 219 | <para>RETURN VALUE</para> |
211 | </para> | ||
212 | <informaltable><tgroup cols="2"><tbody><row><entry | 220 | <informaltable><tgroup cols="2"><tbody><row><entry |
213 | align="char"> | 221 | align="char"> |
214 | <para>EBADF</para> | 222 | <para>EBADF</para> |
diff --git a/Documentation/DocBook/dvb/demux.xml b/Documentation/DocBook/media/dvb/demux.xml index 1b8c4e9835b9..37c17908aa40 100644 --- a/Documentation/DocBook/dvb/demux.xml +++ b/Documentation/DocBook/media/dvb/demux.xml | |||
@@ -7,15 +7,19 @@ accessed by including <emphasis role="tt">linux/dvb/dmx.h</emphasis> in your app | |||
7 | <section id="dmx_types"> | 7 | <section id="dmx_types"> |
8 | <title>Demux Data Types</title> | 8 | <title>Demux Data Types</title> |
9 | 9 | ||
10 | <section id="dmx_output_t"> | 10 | <section id="dmx-output-t"> |
11 | <title>dmx_output_t</title> | 11 | <title>dmx_output_t</title> |
12 | <programlisting> | 12 | <programlisting> |
13 | typedef enum | 13 | typedef enum |
14 | { | 14 | { |
15 | DMX_OUT_DECODER, | 15 | DMX_OUT_DECODER, /⋆ Streaming directly to decoder. ⋆/ |
16 | DMX_OUT_TAP, | 16 | DMX_OUT_TAP, /⋆ Output going to a memory buffer ⋆/ |
17 | DMX_OUT_TS_TAP | 17 | /⋆ (to be retrieved via the read command).⋆/ |
18 | } dmx_output_t; | 18 | DMX_OUT_TS_TAP, /⋆ Output multiplexed into a new TS ⋆/ |
19 | /⋆ (to be retrieved by reading from the ⋆/ | ||
20 | /⋆ logical DVR device). ⋆/ | ||
21 | DMX_OUT_TSDEMUX_TAP /⋆ Like TS_TAP but retrieved from the DMX device ⋆/ | ||
22 | } dmx_output_t; | ||
19 | </programlisting> | 23 | </programlisting> |
20 | <para><emphasis role="tt">DMX_OUT_TAP</emphasis> delivers the stream output to the demux device on which the ioctl is | 24 | <para><emphasis role="tt">DMX_OUT_TAP</emphasis> delivers the stream output to the demux device on which the ioctl is |
21 | called. | 25 | called. |
@@ -26,96 +30,95 @@ specified. | |||
26 | </para> | 30 | </para> |
27 | </section> | 31 | </section> |
28 | 32 | ||
29 | <section id="dmx_input_t"> | 33 | <section id="dmx-input-t"> |
30 | <title>dmx_input_t</title> | 34 | <title>dmx_input_t</title> |
31 | <programlisting> | 35 | <programlisting> |
32 | typedef enum | 36 | typedef enum |
33 | { | 37 | { |
34 | DMX_IN_FRONTEND, | 38 | DMX_IN_FRONTEND, /⋆ Input from a front-end device. ⋆/ |
35 | DMX_IN_DVR | 39 | DMX_IN_DVR /⋆ Input from the logical DVR device. ⋆/ |
36 | } dmx_input_t; | 40 | } dmx_input_t; |
37 | </programlisting> | 41 | </programlisting> |
38 | </section> | 42 | </section> |
39 | 43 | ||
40 | <section id="dmx_pes_type_t"> | 44 | <section id="dmx-pes-type-t"> |
41 | <title>dmx_pes_type_t</title> | 45 | <title>dmx_pes_type_t</title> |
42 | <programlisting> | 46 | <programlisting> |
43 | typedef enum | 47 | typedef enum |
44 | { | 48 | { |
45 | DMX_PES_AUDIO, | 49 | DMX_PES_AUDIO0, |
46 | DMX_PES_VIDEO, | 50 | DMX_PES_VIDEO0, |
47 | DMX_PES_TELETEXT, | 51 | DMX_PES_TELETEXT0, |
48 | DMX_PES_SUBTITLE, | 52 | DMX_PES_SUBTITLE0, |
49 | DMX_PES_PCR, | 53 | DMX_PES_PCR0, |
50 | DMX_PES_OTHER | ||
51 | } dmx_pes_type_t; | ||
52 | </programlisting> | ||
53 | </section> | ||
54 | 54 | ||
55 | <section id="dmx_event_t"> | 55 | DMX_PES_AUDIO1, |
56 | <title>dmx_event_t</title> | 56 | DMX_PES_VIDEO1, |
57 | <programlisting> | 57 | DMX_PES_TELETEXT1, |
58 | typedef enum | 58 | DMX_PES_SUBTITLE1, |
59 | { | 59 | DMX_PES_PCR1, |
60 | DMX_SCRAMBLING_EV, | ||
61 | DMX_FRONTEND_EV | ||
62 | } dmx_event_t; | ||
63 | </programlisting> | ||
64 | </section> | ||
65 | 60 | ||
66 | <section id="dmx_scrambling_status_t"> | 61 | DMX_PES_AUDIO2, |
67 | <title>dmx_scrambling_status_t</title> | 62 | DMX_PES_VIDEO2, |
68 | <programlisting> | 63 | DMX_PES_TELETEXT2, |
69 | typedef enum | 64 | DMX_PES_SUBTITLE2, |
70 | { | 65 | DMX_PES_PCR2, |
71 | DMX_SCRAMBLING_OFF, | 66 | |
72 | DMX_SCRAMBLING_ON | 67 | DMX_PES_AUDIO3, |
73 | } dmx_scrambling_status_t; | 68 | DMX_PES_VIDEO3, |
69 | DMX_PES_TELETEXT3, | ||
70 | DMX_PES_SUBTITLE3, | ||
71 | DMX_PES_PCR3, | ||
72 | |||
73 | DMX_PES_OTHER | ||
74 | } dmx_pes_type_t; | ||
74 | </programlisting> | 75 | </programlisting> |
75 | </section> | 76 | </section> |
76 | 77 | ||
77 | <section id="dmx_filter"> | 78 | <section id="dmx-filter"> |
78 | <title>struct dmx_filter</title> | 79 | <title>struct dmx_filter</title> |
79 | <programlisting> | 80 | <programlisting> |
80 | typedef struct dmx_filter | 81 | typedef struct dmx_filter |
81 | { | 82 | { |
82 | uint8_t filter[DMX_FILTER_SIZE]; | 83 | __u8 filter[DMX_FILTER_SIZE]; |
83 | uint8_t mask[DMX_FILTER_SIZE]; | 84 | __u8 mask[DMX_FILTER_SIZE]; |
84 | } dmx_filter_t; | 85 | __u8 mode[DMX_FILTER_SIZE]; |
86 | } dmx_filter_t; | ||
85 | </programlisting> | 87 | </programlisting> |
86 | </section> | 88 | </section> |
87 | 89 | ||
88 | <section id="dmx_sct_filter_params"> | 90 | <section id="dmx-sct-filter-params"> |
89 | <title>struct dmx_sct_filter_params</title> | 91 | <title>struct dmx_sct_filter_params</title> |
90 | <programlisting> | 92 | <programlisting> |
91 | struct dmx_sct_filter_params | 93 | struct dmx_sct_filter_params |
92 | { | 94 | { |
93 | uint16_t pid; | 95 | __u16 pid; |
94 | dmx_filter_t filter; | 96 | dmx_filter_t filter; |
95 | uint32_t timeout; | 97 | __u32 timeout; |
96 | uint32_t flags; | 98 | __u32 flags; |
97 | #define DMX_CHECK_CRC 1 | 99 | #define DMX_CHECK_CRC 1 |
98 | #define DMX_ONESHOT 2 | 100 | #define DMX_ONESHOT 2 |
99 | #define DMX_IMMEDIATE_START 4 | 101 | #define DMX_IMMEDIATE_START 4 |
100 | }; | 102 | #define DMX_KERNEL_CLIENT 0x8000 |
103 | }; | ||
101 | </programlisting> | 104 | </programlisting> |
102 | </section> | 105 | </section> |
103 | 106 | ||
104 | <section id="dmx_pes_filter_params"> | 107 | <section id="dmx-pes-filter-params"> |
105 | <title>struct dmx_pes_filter_params</title> | 108 | <title>struct dmx_pes_filter_params</title> |
106 | <programlisting> | 109 | <programlisting> |
107 | struct dmx_pes_filter_params | 110 | struct dmx_pes_filter_params |
108 | { | 111 | { |
109 | uint16_t pid; | 112 | __u16 pid; |
110 | dmx_input_t input; | 113 | dmx_input_t input; |
111 | dmx_output_t output; | 114 | dmx_output_t output; |
112 | dmx_pes_type_t pes_type; | 115 | dmx_pes_type_t pes_type; |
113 | uint32_t flags; | 116 | __u32 flags; |
114 | }; | 117 | }; |
115 | </programlisting> | 118 | </programlisting> |
116 | </section> | 119 | </section> |
117 | 120 | ||
118 | <section id="dmx_event"> | 121 | <section id="dmx-event"> |
119 | <title>struct dmx_event</title> | 122 | <title>struct dmx_event</title> |
120 | <programlisting> | 123 | <programlisting> |
121 | struct dmx_event | 124 | struct dmx_event |
@@ -130,19 +133,44 @@ specified. | |||
130 | </programlisting> | 133 | </programlisting> |
131 | </section> | 134 | </section> |
132 | 135 | ||
133 | <section id="dmx_stc"> | 136 | <section id="dmx-stc"> |
134 | <title>struct dmx_stc</title> | 137 | <title>struct dmx_stc</title> |
135 | <programlisting> | 138 | <programlisting> |
136 | struct dmx_stc { | 139 | struct dmx_stc { |
137 | unsigned int num; /⋆ input : which STC? 0..N ⋆/ | 140 | unsigned int num; /⋆ input : which STC? 0..N ⋆/ |
138 | unsigned int base; /⋆ output: divisor for stc to get 90 kHz clock ⋆/ | 141 | unsigned int base; /⋆ output: divisor for stc to get 90 kHz clock ⋆/ |
139 | uint64_t stc; /⋆ output: stc in 'base'⋆90 kHz units ⋆/ | 142 | __u64 stc; /⋆ output: stc in 'base'⋆90 kHz units ⋆/ |
140 | }; | 143 | }; |
141 | </programlisting> | 144 | </programlisting> |
142 | </section> | 145 | </section> |
143 | 146 | ||
147 | <section id="dmx-caps"> | ||
148 | <title>struct dmx_caps</title> | ||
149 | <programlisting> | ||
150 | typedef struct dmx_caps { | ||
151 | __u32 caps; | ||
152 | int num_decoders; | ||
153 | } dmx_caps_t; | ||
154 | </programlisting> | ||
155 | </section> | ||
156 | |||
157 | <section id="dmx-source-t"> | ||
158 | <title>enum dmx_source_t</title> | ||
159 | <programlisting> | ||
160 | typedef enum { | ||
161 | DMX_SOURCE_FRONT0 = 0, | ||
162 | DMX_SOURCE_FRONT1, | ||
163 | DMX_SOURCE_FRONT2, | ||
164 | DMX_SOURCE_FRONT3, | ||
165 | DMX_SOURCE_DVR0 = 16, | ||
166 | DMX_SOURCE_DVR1, | ||
167 | DMX_SOURCE_DVR2, | ||
168 | DMX_SOURCE_DVR3 | ||
169 | } dmx_source_t; | ||
170 | </programlisting> | ||
144 | </section> | 171 | </section> |
145 | 172 | ||
173 | </section> | ||
146 | <section id="dmx_fcalls"> | 174 | <section id="dmx_fcalls"> |
147 | <title>Demux Function Calls</title> | 175 | <title>Demux Function Calls</title> |
148 | 176 | ||
@@ -211,8 +239,7 @@ specified. | |||
211 | <para>(blocking mode is the default)</para> | 239 | <para>(blocking mode is the default)</para> |
212 | </entry> | 240 | </entry> |
213 | </row></tbody></tgroup></informaltable> | 241 | </row></tbody></tgroup></informaltable> |
214 | <para>ERRORS | 242 | <para>RETURN VALUE</para> |
215 | </para> | ||
216 | <informaltable><tgroup cols="2"><tbody><row><entry | 243 | <informaltable><tgroup cols="2"><tbody><row><entry |
217 | align="char"> | 244 | align="char"> |
218 | <para>ENODEV</para> | 245 | <para>ENODEV</para> |
@@ -271,8 +298,7 @@ specified. | |||
271 | <para>File descriptor returned by a previous call to open().</para> | 298 | <para>File descriptor returned by a previous call to open().</para> |
272 | </entry> | 299 | </entry> |
273 | </row></tbody></tgroup></informaltable> | 300 | </row></tbody></tgroup></informaltable> |
274 | <para>ERRORS | 301 | <para>RETURN VALUE</para> |
275 | </para> | ||
276 | <informaltable><tgroup cols="2"><tbody><row><entry | 302 | <informaltable><tgroup cols="2"><tbody><row><entry |
277 | align="char"> | 303 | align="char"> |
278 | <para>EBADF</para> | 304 | <para>EBADF</para> |
@@ -353,8 +379,7 @@ specified. | |||
353 | <para>Size of buf.</para> | 379 | <para>Size of buf.</para> |
354 | </entry> | 380 | </entry> |
355 | </row></tbody></tgroup></informaltable> | 381 | </row></tbody></tgroup></informaltable> |
356 | <para>ERRORS | 382 | <para>RETURN VALUE</para> |
357 | </para> | ||
358 | <informaltable><tgroup cols="2"><tbody><row><entry | 383 | <informaltable><tgroup cols="2"><tbody><row><entry |
359 | align="char"> | 384 | align="char"> |
360 | <para>EWOULDBLOCK</para> | 385 | <para>EWOULDBLOCK</para> |
@@ -457,8 +482,7 @@ specified. | |||
457 | <para>Size of buf.</para> | 482 | <para>Size of buf.</para> |
458 | </entry> | 483 | </entry> |
459 | </row></tbody></tgroup></informaltable> | 484 | </row></tbody></tgroup></informaltable> |
460 | <para>ERRORS | 485 | <para>RETURN VALUE</para> |
461 | </para> | ||
462 | <informaltable><tgroup cols="2"><tbody><row><entry | 486 | <informaltable><tgroup cols="2"><tbody><row><entry |
463 | align="char"> | 487 | align="char"> |
464 | <para>EWOULDBLOCK</para> | 488 | <para>EWOULDBLOCK</para> |
@@ -491,7 +515,7 @@ specified. | |||
491 | </row></tbody></tgroup></informaltable> | 515 | </row></tbody></tgroup></informaltable> |
492 | </section> | 516 | </section> |
493 | 517 | ||
494 | <section id="dmx_start"> | 518 | <section id="DMX_START"> |
495 | <title>DMX_START</title> | 519 | <title>DMX_START</title> |
496 | <para>DESCRIPTION | 520 | <para>DESCRIPTION |
497 | </para> | 521 | </para> |
@@ -525,17 +549,9 @@ specified. | |||
525 | <para>Equals DMX_START for this command.</para> | 549 | <para>Equals DMX_START for this command.</para> |
526 | </entry> | 550 | </entry> |
527 | </row></tbody></tgroup></informaltable> | 551 | </row></tbody></tgroup></informaltable> |
528 | <para>ERRORS | 552 | &return-value-dvb; |
529 | </para> | ||
530 | <informaltable><tgroup cols="2"><tbody><row><entry | 553 | <informaltable><tgroup cols="2"><tbody><row><entry |
531 | align="char"> | 554 | align="char"> |
532 | <para>EBADF</para> | ||
533 | </entry><entry | ||
534 | align="char"> | ||
535 | <para>fd is not a valid file descriptor.</para> | ||
536 | </entry> | ||
537 | </row><row><entry | ||
538 | align="char"> | ||
539 | <para>EINVAL</para> | 555 | <para>EINVAL</para> |
540 | </entry><entry | 556 | </entry><entry |
541 | align="char"> | 557 | align="char"> |
@@ -556,7 +572,7 @@ specified. | |||
556 | </row></tbody></tgroup></informaltable> | 572 | </row></tbody></tgroup></informaltable> |
557 | </section> | 573 | </section> |
558 | 574 | ||
559 | <section id="dmx_stop"> | 575 | <section id="DMX_STOP"> |
560 | <title>DMX_STOP</title> | 576 | <title>DMX_STOP</title> |
561 | <para>DESCRIPTION | 577 | <para>DESCRIPTION |
562 | </para> | 578 | </para> |
@@ -591,19 +607,10 @@ specified. | |||
591 | <para>Equals DMX_STOP for this command.</para> | 607 | <para>Equals DMX_STOP for this command.</para> |
592 | </entry> | 608 | </entry> |
593 | </row></tbody></tgroup></informaltable> | 609 | </row></tbody></tgroup></informaltable> |
594 | <para>ERRORS | 610 | &return-value-dvb; |
595 | </para> | ||
596 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
597 | align="char"> | ||
598 | <para>EBADF</para> | ||
599 | </entry><entry | ||
600 | align="char"> | ||
601 | <para>fd is not a valid file descriptor.</para> | ||
602 | </entry> | ||
603 | </row></tbody></tgroup></informaltable> | ||
604 | </section> | 611 | </section> |
605 | 612 | ||
606 | <section id="dmx_set_filter"> | 613 | <section id="DMX_SET_FILTER"> |
607 | <title>DMX_SET_FILTER</title> | 614 | <title>DMX_SET_FILTER</title> |
608 | <para>DESCRIPTION | 615 | <para>DESCRIPTION |
609 | </para> | 616 | </para> |
@@ -654,26 +661,10 @@ specified. | |||
654 | <para>Pointer to structure containing filter parameters.</para> | 661 | <para>Pointer to structure containing filter parameters.</para> |
655 | </entry> | 662 | </entry> |
656 | </row></tbody></tgroup></informaltable> | 663 | </row></tbody></tgroup></informaltable> |
657 | <para>ERRORS | 664 | &return-value-dvb; |
658 | </para> | ||
659 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
660 | align="char"> | ||
661 | <para>EBADF</para> | ||
662 | </entry><entry | ||
663 | align="char"> | ||
664 | <para>fd is not a valid file descriptor.</para> | ||
665 | </entry> | ||
666 | </row><row><entry | ||
667 | align="char"> | ||
668 | <para>EINVAL</para> | ||
669 | </entry><entry | ||
670 | align="char"> | ||
671 | <para>Invalid argument.</para> | ||
672 | </entry> | ||
673 | </row></tbody></tgroup></informaltable> | ||
674 | </section> | 665 | </section> |
675 | 666 | ||
676 | <section id="dmx_set_pes_filter"> | 667 | <section id="DMX_SET_PES_FILTER"> |
677 | <title>DMX_SET_PES_FILTER</title> | 668 | <title>DMX_SET_PES_FILTER</title> |
678 | <para>DESCRIPTION | 669 | <para>DESCRIPTION |
679 | </para> | 670 | </para> |
@@ -727,24 +718,9 @@ specified. | |||
727 | <para>Pointer to structure containing filter parameters.</para> | 718 | <para>Pointer to structure containing filter parameters.</para> |
728 | </entry> | 719 | </entry> |
729 | </row></tbody></tgroup></informaltable> | 720 | </row></tbody></tgroup></informaltable> |
730 | <para>ERRORS | 721 | &return-value-dvb; |
731 | </para> | ||
732 | <informaltable><tgroup cols="2"><tbody><row><entry | 722 | <informaltable><tgroup cols="2"><tbody><row><entry |
733 | align="char"> | 723 | align="char"> |
734 | <para>EBADF</para> | ||
735 | </entry><entry | ||
736 | align="char"> | ||
737 | <para>fd is not a valid file descriptor.</para> | ||
738 | </entry> | ||
739 | </row><row><entry | ||
740 | align="char"> | ||
741 | <para>EINVAL</para> | ||
742 | </entry><entry | ||
743 | align="char"> | ||
744 | <para>Invalid argument.</para> | ||
745 | </entry> | ||
746 | </row><row><entry | ||
747 | align="char"> | ||
748 | <para>EBUSY</para> | 724 | <para>EBUSY</para> |
749 | </entry><entry | 725 | </entry><entry |
750 | align="char"> | 726 | align="char"> |
@@ -756,7 +732,7 @@ specified. | |||
756 | </row></tbody></tgroup></informaltable> | 732 | </row></tbody></tgroup></informaltable> |
757 | </section> | 733 | </section> |
758 | 734 | ||
759 | <section id="dms_set_buffer_size"> | 735 | <section id="DMX_SET_BUFFER_SIZE"> |
760 | <title>DMX_SET_BUFFER_SIZE</title> | 736 | <title>DMX_SET_BUFFER_SIZE</title> |
761 | <para>DESCRIPTION | 737 | <para>DESCRIPTION |
762 | </para> | 738 | </para> |
@@ -799,27 +775,10 @@ specified. | |||
799 | <para>Size of circular buffer.</para> | 775 | <para>Size of circular buffer.</para> |
800 | </entry> | 776 | </entry> |
801 | </row></tbody></tgroup></informaltable> | 777 | </row></tbody></tgroup></informaltable> |
802 | <para>ERRORS | 778 | &return-value-dvb; |
803 | </para> | ||
804 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
805 | align="char"> | ||
806 | <para>EBADF</para> | ||
807 | </entry><entry | ||
808 | align="char"> | ||
809 | <para>fd is not a valid file descriptor.</para> | ||
810 | </entry> | ||
811 | </row><row><entry | ||
812 | align="char"> | ||
813 | <para>ENOMEM</para> | ||
814 | </entry><entry | ||
815 | align="char"> | ||
816 | <para>The driver was not able to allocate a buffer of the | ||
817 | requested size.</para> | ||
818 | </entry> | ||
819 | </row></tbody></tgroup></informaltable> | ||
820 | </section> | 779 | </section> |
821 | 780 | ||
822 | <section id="dmx_get_event"> | 781 | <section id="DMX_GET_EVENT"> |
823 | <title>DMX_GET_EVENT</title> | 782 | <title>DMX_GET_EVENT</title> |
824 | <para>DESCRIPTION | 783 | <para>DESCRIPTION |
825 | </para> | 784 | </para> |
@@ -872,24 +831,9 @@ specified. | |||
872 | <para>Pointer to the location where the event is to be stored.</para> | 831 | <para>Pointer to the location where the event is to be stored.</para> |
873 | </entry> | 832 | </entry> |
874 | </row></tbody></tgroup></informaltable> | 833 | </row></tbody></tgroup></informaltable> |
875 | <para>ERRORS | 834 | &return-value-dvb; |
876 | </para> | ||
877 | <informaltable><tgroup cols="2"><tbody><row><entry | 835 | <informaltable><tgroup cols="2"><tbody><row><entry |
878 | align="char"> | 836 | align="char"> |
879 | <para>EBADF</para> | ||
880 | </entry><entry | ||
881 | align="char"> | ||
882 | <para>fd is not a valid file descriptor.</para> | ||
883 | </entry> | ||
884 | </row><row><entry | ||
885 | align="char"> | ||
886 | <para>EFAULT</para> | ||
887 | </entry><entry | ||
888 | align="char"> | ||
889 | <para>ev points to an invalid address.</para> | ||
890 | </entry> | ||
891 | </row><row><entry | ||
892 | align="char"> | ||
893 | <para>EWOULDBLOCK</para> | 837 | <para>EWOULDBLOCK</para> |
894 | </entry><entry | 838 | </entry><entry |
895 | align="char"> | 839 | align="char"> |
@@ -899,7 +843,7 @@ specified. | |||
899 | </row></tbody></tgroup></informaltable> | 843 | </row></tbody></tgroup></informaltable> |
900 | </section> | 844 | </section> |
901 | 845 | ||
902 | <section id="dmx_get_stc"> | 846 | <section id="DMX_GET_STC"> |
903 | <title>DMX_GET_STC</title> | 847 | <title>DMX_GET_STC</title> |
904 | <para>DESCRIPTION | 848 | <para>DESCRIPTION |
905 | </para> | 849 | </para> |
@@ -946,24 +890,9 @@ specified. | |||
946 | <para>Pointer to the location where the stc is to be stored.</para> | 890 | <para>Pointer to the location where the stc is to be stored.</para> |
947 | </entry> | 891 | </entry> |
948 | </row></tbody></tgroup></informaltable> | 892 | </row></tbody></tgroup></informaltable> |
949 | <para>ERRORS | 893 | &return-value-dvb; |
950 | </para> | ||
951 | <informaltable><tgroup cols="2"><tbody><row><entry | 894 | <informaltable><tgroup cols="2"><tbody><row><entry |
952 | align="char"> | 895 | align="char"> |
953 | <para>EBADF</para> | ||
954 | </entry><entry | ||
955 | align="char"> | ||
956 | <para>fd is not a valid file descriptor.</para> | ||
957 | </entry> | ||
958 | </row><row><entry | ||
959 | align="char"> | ||
960 | <para>EFAULT</para> | ||
961 | </entry><entry | ||
962 | align="char"> | ||
963 | <para>stc points to an invalid address.</para> | ||
964 | </entry> | ||
965 | </row><row><entry | ||
966 | align="char"> | ||
967 | <para>EINVAL</para> | 896 | <para>EINVAL</para> |
968 | </entry><entry | 897 | </entry><entry |
969 | align="char"> | 898 | align="char"> |
diff --git a/Documentation/DocBook/dvb/dvbapi.xml b/Documentation/DocBook/media/dvb/dvbapi.xml index 9fad86ce7f5e..2ab6ddcfc4e0 100644 --- a/Documentation/DocBook/dvb/dvbapi.xml +++ b/Documentation/DocBook/media/dvb/dvbapi.xml | |||
@@ -114,8 +114,28 @@ Added ISDB-T test originally written by Patrick Boettcher | |||
114 | &sub-examples; | 114 | &sub-examples; |
115 | </chapter> | 115 | </chapter> |
116 | <!-- END OF CHAPTERS --> | 116 | <!-- END OF CHAPTERS --> |
117 | <appendix id="audio_h"> | ||
118 | <title>DVB Audio Header File</title> | ||
119 | &sub-audio-h; | ||
120 | </appendix> | ||
121 | <appendix id="ca_h"> | ||
122 | <title>DVB Conditional Access Header File</title> | ||
123 | &sub-ca-h; | ||
124 | </appendix> | ||
125 | <appendix id="dmx_h"> | ||
126 | <title>DVB Demux Header File</title> | ||
127 | &sub-dmx-h; | ||
128 | </appendix> | ||
117 | <appendix id="frontend_h"> | 129 | <appendix id="frontend_h"> |
118 | <title>DVB Frontend Header File</title> | 130 | <title>DVB Frontend Header File</title> |
119 | &sub-frontend-h; | 131 | &sub-frontend-h; |
120 | </appendix> | 132 | </appendix> |
133 | <appendix id="net_h"> | ||
134 | <title>DVB Network Header File</title> | ||
135 | &sub-net-h; | ||
136 | </appendix> | ||
137 | <appendix id="video_h"> | ||
138 | <title>DVB Video Header File</title> | ||
139 | &sub-video-h; | ||
140 | </appendix> | ||
121 | 141 | ||
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml new file mode 100644 index 000000000000..207e1a5bf8f0 --- /dev/null +++ b/Documentation/DocBook/media/dvb/dvbproperty.xml | |||
@@ -0,0 +1,859 @@ | |||
1 | <section id="FE_GET_SET_PROPERTY"> | ||
2 | <title><constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></title> | ||
3 | <para>This section describes the DVB version 5 extention of the DVB-API, also | ||
4 | called "S2API", as this API were added to provide support for DVB-S2. It was | ||
5 | designed to be able to replace the old frontend API. Yet, the DISEQC and | ||
6 | the capability ioctls weren't implemented yet via the new way.</para> | ||
7 | <para>The typical usage for the <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant> | ||
8 | API is to replace the ioctl's were the <link linkend="dvb-frontend-parameters"> | ||
9 | struct <constant>dvb_frontend_parameters</constant></link> were used.</para> | ||
10 | <section id="dtv-property"> | ||
11 | <title>DTV property type</title> | ||
12 | <programlisting> | ||
13 | /* Reserved fields should be set to 0 */ | ||
14 | struct dtv_property { | ||
15 | __u32 cmd; | ||
16 | union { | ||
17 | __u32 data; | ||
18 | struct { | ||
19 | __u8 data[32]; | ||
20 | __u32 len; | ||
21 | __u32 reserved1[3]; | ||
22 | void *reserved2; | ||
23 | } buffer; | ||
24 | } u; | ||
25 | int result; | ||
26 | } __attribute__ ((packed)); | ||
27 | |||
28 | /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ | ||
29 | #define DTV_IOCTL_MAX_MSGS 64 | ||
30 | </programlisting> | ||
31 | </section> | ||
32 | <section id="dtv-properties"> | ||
33 | <title>DTV properties type</title> | ||
34 | <programlisting> | ||
35 | struct dtv_properties { | ||
36 | __u32 num; | ||
37 | struct dtv_property *props; | ||
38 | }; | ||
39 | </programlisting> | ||
40 | </section> | ||
41 | |||
42 | <section id="FE_GET_PROPERTY"> | ||
43 | <title>FE_GET_PROPERTY</title> | ||
44 | <para>DESCRIPTION | ||
45 | </para> | ||
46 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
47 | align="char"> | ||
48 | <para>This ioctl call returns one or more frontend properties. This call only | ||
49 | requires read-only access to the device.</para> | ||
50 | </entry> | ||
51 | </row></tbody></tgroup></informaltable> | ||
52 | <para>SYNOPSIS | ||
53 | </para> | ||
54 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
55 | align="char"> | ||
56 | <para>int ioctl(int fd, int request = <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>, | ||
57 | dtv_properties ⋆props);</para> | ||
58 | </entry> | ||
59 | </row></tbody></tgroup></informaltable> | ||
60 | <para>PARAMETERS | ||
61 | </para> | ||
62 | <informaltable><tgroup cols="2"><tbody><row><entry align="char"> | ||
63 | <para>int fd</para> | ||
64 | </entry><entry | ||
65 | align="char"> | ||
66 | <para>File descriptor returned by a previous call to open().</para> | ||
67 | </entry> | ||
68 | </row><row><entry | ||
69 | align="char"> | ||
70 | <para>int num</para> | ||
71 | </entry><entry | ||
72 | align="char"> | ||
73 | <para>Equals <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> for this command.</para> | ||
74 | </entry> | ||
75 | </row><row><entry | ||
76 | align="char"> | ||
77 | <para>struct dtv_property *props</para> | ||
78 | </entry><entry | ||
79 | align="char"> | ||
80 | <para>Points to the location where the front-end property commands are stored.</para> | ||
81 | </entry> | ||
82 | </row></tbody></tgroup></informaltable> | ||
83 | &return-value-dvb; | ||
84 | <informaltable><tgroup cols="2"><tbody><row> | ||
85 | <entry align="char"><para>EOPNOTSUPP</para></entry> | ||
86 | <entry align="char"><para>Property type not supported.</para></entry> | ||
87 | </row></tbody></tgroup></informaltable> | ||
88 | </section> | ||
89 | |||
90 | <section id="FE_SET_PROPERTY"> | ||
91 | <title>FE_SET_PROPERTY</title> | ||
92 | <para>DESCRIPTION | ||
93 | </para> | ||
94 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
95 | align="char"> | ||
96 | <para>This ioctl call sets one or more frontend properties. This call only | ||
97 | requires read-only access to the device.</para> | ||
98 | </entry> | ||
99 | </row></tbody></tgroup></informaltable> | ||
100 | <para>SYNOPSIS | ||
101 | </para> | ||
102 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
103 | align="char"> | ||
104 | <para>int ioctl(int fd, int request = <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>, | ||
105 | dtv_properties ⋆props);</para> | ||
106 | </entry> | ||
107 | </row></tbody></tgroup></informaltable> | ||
108 | <para>PARAMETERS | ||
109 | </para> | ||
110 | <informaltable><tgroup cols="2"><tbody><row><entry align="char"> | ||
111 | <para>int fd</para> | ||
112 | </entry><entry | ||
113 | align="char"> | ||
114 | <para>File descriptor returned by a previous call to open().</para> | ||
115 | </entry> | ||
116 | </row><row><entry | ||
117 | align="char"> | ||
118 | <para>int num</para> | ||
119 | </entry><entry | ||
120 | align="char"> | ||
121 | <para>Equals <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link> for this command.</para> | ||
122 | </entry> | ||
123 | </row><row><entry | ||
124 | align="char"> | ||
125 | <para>struct dtv_property *props</para> | ||
126 | </entry><entry | ||
127 | align="char"> | ||
128 | <para>Points to the location where the front-end property commands are stored.</para> | ||
129 | </entry> | ||
130 | </row></tbody></tgroup></informaltable> | ||
131 | &return-value-dvb; | ||
132 | <informaltable><tgroup cols="2"><tbody><row> | ||
133 | <entry align="char"><para>EOPNOTSUPP</para></entry> | ||
134 | <entry align="char"><para>Property type not supported.</para></entry> | ||
135 | </row></tbody></tgroup></informaltable> | ||
136 | </section> | ||
137 | |||
138 | <section> | ||
139 | <title>Property types</title> | ||
140 | <para> | ||
141 | On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>, | ||
142 | the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to | ||
143 | get/set up to 64 properties. The actual meaning of each property is described on the next sections. | ||
144 | </para> | ||
145 | |||
146 | <para>The available frontend property types are shown on the next section.</para> | ||
147 | </section> | ||
148 | |||
149 | <section id="fe_property_parameters"> | ||
150 | <title>Digital TV property parameters</title> | ||
151 | <section id="DTV-UNDEFINED"> | ||
152 | <title><constant>DTV_UNDEFINED</constant></title> | ||
153 | <para>Used internally. A GET/SET operation for it won't change or return anything.</para> | ||
154 | </section> | ||
155 | <section id="DTV-TUNE"> | ||
156 | <title><constant>DTV_TUNE</constant></title> | ||
157 | <para>Interpret the cache of data, build either a traditional frontend tunerequest so we can pass validation in the <constant>FE_SET_FRONTEND</constant> ioctl.</para> | ||
158 | </section> | ||
159 | <section id="DTV-CLEAR"> | ||
160 | <title><constant>DTV_CLEAR</constant></title> | ||
161 | <para>Reset a cache of data specific to the frontend here. This does not effect hardware.</para> | ||
162 | </section> | ||
163 | <section id="DTV-FREQUENCY"> | ||
164 | <title><constant>DTV_FREQUENCY</constant></title> | ||
165 | |||
166 | <para>Central frequency of the channel, in HZ.</para> | ||
167 | |||
168 | <para>Notes:</para> | ||
169 | <para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz. | ||
170 | E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of | ||
171 | the channel which is 6MHz.</para> | ||
172 | |||
173 | <para>2)As in ISDB-Tsb the channel consists of only one or three segments the | ||
174 | frequency step is 429kHz, 3*429 respectively. As for ISDB-T the | ||
175 | central frequency of the channel is expected.</para> | ||
176 | </section> | ||
177 | <section id="DTV-MODULATION"> | ||
178 | <title><constant>DTV_MODULATION</constant></title> | ||
179 | <para>Specifies the frontend modulation type for cable and satellite types. The modulation can be one of the types bellow:</para> | ||
180 | <programlisting> | ||
181 | typedef enum fe_modulation { | ||
182 | QPSK, | ||
183 | QAM_16, | ||
184 | QAM_32, | ||
185 | QAM_64, | ||
186 | QAM_128, | ||
187 | QAM_256, | ||
188 | QAM_AUTO, | ||
189 | VSB_8, | ||
190 | VSB_16, | ||
191 | PSK_8, | ||
192 | APSK_16, | ||
193 | APSK_32, | ||
194 | DQPSK, | ||
195 | } fe_modulation_t; | ||
196 | </programlisting> | ||
197 | </section> | ||
198 | <section id="DTV-BANDWIDTH-HZ"> | ||
199 | <title><constant>DTV_BANDWIDTH_HZ</constant></title> | ||
200 | |||
201 | <para>Bandwidth for the channel, in HZ.</para> | ||
202 | |||
203 | <para>Possible values: | ||
204 | <constant>1712000</constant>, | ||
205 | <constant>5000000</constant>, | ||
206 | <constant>6000000</constant>, | ||
207 | <constant>7000000</constant>, | ||
208 | <constant>8000000</constant>, | ||
209 | <constant>10000000</constant>. | ||
210 | </para> | ||
211 | |||
212 | <para>Notes:</para> | ||
213 | |||
214 | <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para> | ||
215 | <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para> | ||
216 | <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth | ||
217 | for DVB-C depends on the symbol rate</para> | ||
218 | <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from | ||
219 | other parameters (DTV_ISDBT_SB_SEGMENT_IDX, | ||
220 | DTV_ISDBT_SB_SEGMENT_COUNT).</para> | ||
221 | <para>5) DVB-T supports 6, 7 and 8MHz.</para> | ||
222 | <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para> | ||
223 | </section> | ||
224 | <section id="DTV-INVERSION"> | ||
225 | <title><constant>DTV_INVERSION</constant></title> | ||
226 | <para>The Inversion field can take one of these values: | ||
227 | </para> | ||
228 | <programlisting> | ||
229 | typedef enum fe_spectral_inversion { | ||
230 | INVERSION_OFF, | ||
231 | INVERSION_ON, | ||
232 | INVERSION_AUTO | ||
233 | } fe_spectral_inversion_t; | ||
234 | </programlisting> | ||
235 | <para>It indicates if spectral inversion should be presumed or not. In the automatic setting | ||
236 | (<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by | ||
237 | itself. | ||
238 | </para> | ||
239 | </section> | ||
240 | <section id="DTV-DISEQC-MASTER"> | ||
241 | <title><constant>DTV_DISEQC_MASTER</constant></title> | ||
242 | <para>Currently not implemented.</para> | ||
243 | </section> | ||
244 | <section id="DTV-SYMBOL-RATE"> | ||
245 | <title><constant>DTV_SYMBOL_RATE</constant></title> | ||
246 | <para>Digital TV symbol rate, in bauds (symbols/second). Used on cable standards.</para> | ||
247 | </section> | ||
248 | <section id="DTV-INNER-FEC"> | ||
249 | <title><constant>DTV_INNER_FEC</constant></title> | ||
250 | <para>Used cable/satellite transmissions. The acceptable values are: | ||
251 | </para> | ||
252 | <programlisting> | ||
253 | typedef enum fe_code_rate { | ||
254 | FEC_NONE = 0, | ||
255 | FEC_1_2, | ||
256 | FEC_2_3, | ||
257 | FEC_3_4, | ||
258 | FEC_4_5, | ||
259 | FEC_5_6, | ||
260 | FEC_6_7, | ||
261 | FEC_7_8, | ||
262 | FEC_8_9, | ||
263 | FEC_AUTO, | ||
264 | FEC_3_5, | ||
265 | FEC_9_10, | ||
266 | } fe_code_rate_t; | ||
267 | </programlisting> | ||
268 | <para>which correspond to error correction rates of 1/2, 2/3, etc., | ||
269 | no error correction or auto detection.</para> | ||
270 | </section> | ||
271 | <section id="DTV-VOLTAGE"> | ||
272 | <title><constant>DTV_VOLTAGE</constant></title> | ||
273 | <para>The voltage is usually used with non-DiSEqC capable LNBs to switch | ||
274 | the polarzation (horizontal/vertical). When using DiSEqC epuipment this | ||
275 | voltage has to be switched consistently to the DiSEqC commands as | ||
276 | described in the DiSEqC spec.</para> | ||
277 | <programlisting> | ||
278 | typedef enum fe_sec_voltage { | ||
279 | SEC_VOLTAGE_13, | ||
280 | SEC_VOLTAGE_18 | ||
281 | } fe_sec_voltage_t; | ||
282 | </programlisting> | ||
283 | </section> | ||
284 | <section id="DTV-TONE"> | ||
285 | <title><constant>DTV_TONE</constant></title> | ||
286 | <para>Currently not used.</para> | ||
287 | </section> | ||
288 | <section id="DTV-PILOT"> | ||
289 | <title><constant>DTV_PILOT</constant></title> | ||
290 | <para>Sets DVB-S2 pilot</para> | ||
291 | <section id="fe-pilot-t"> | ||
292 | <title>fe_pilot type</title> | ||
293 | <programlisting> | ||
294 | typedef enum fe_pilot { | ||
295 | PILOT_ON, | ||
296 | PILOT_OFF, | ||
297 | PILOT_AUTO, | ||
298 | } fe_pilot_t; | ||
299 | </programlisting> | ||
300 | </section> | ||
301 | </section> | ||
302 | <section id="DTV-ROLLOFF"> | ||
303 | <title><constant>DTV_ROLLOFF</constant></title> | ||
304 | <para>Sets DVB-S2 rolloff</para> | ||
305 | |||
306 | <section id="fe-rolloff-t"> | ||
307 | <title>fe_rolloff type</title> | ||
308 | <programlisting> | ||
309 | typedef enum fe_rolloff { | ||
310 | ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */ | ||
311 | ROLLOFF_20, | ||
312 | ROLLOFF_25, | ||
313 | ROLLOFF_AUTO, | ||
314 | } fe_rolloff_t; | ||
315 | </programlisting> | ||
316 | </section> | ||
317 | </section> | ||
318 | <section id="DTV-DISEQC-SLAVE-REPLY"> | ||
319 | <title><constant>DTV_DISEQC_SLAVE_REPLY</constant></title> | ||
320 | <para>Currently not implemented.</para> | ||
321 | </section> | ||
322 | <section id="DTV-FE-CAPABILITY-COUNT"> | ||
323 | <title><constant>DTV_FE_CAPABILITY_COUNT</constant></title> | ||
324 | <para>Currently not implemented.</para> | ||
325 | </section> | ||
326 | <section id="DTV-FE-CAPABILITY"> | ||
327 | <title><constant>DTV_FE_CAPABILITY</constant></title> | ||
328 | <para>Currently not implemented.</para> | ||
329 | </section> | ||
330 | <section id="DTV-DELIVERY-SYSTEM"> | ||
331 | <title><constant>DTV_DELIVERY_SYSTEM</constant></title> | ||
332 | <para>Specifies the type of Delivery system</para> | ||
333 | <section id="fe-delivery-system-t"> | ||
334 | <title>fe_delivery_system type</title> | ||
335 | <para>Possible values: </para> | ||
336 | <programlisting> | ||
337 | typedef enum fe_delivery_system { | ||
338 | SYS_UNDEFINED, | ||
339 | SYS_DVBC_ANNEX_AC, | ||
340 | SYS_DVBC_ANNEX_B, | ||
341 | SYS_DVBT, | ||
342 | SYS_DSS, | ||
343 | SYS_DVBS, | ||
344 | SYS_DVBS2, | ||
345 | SYS_DVBH, | ||
346 | SYS_ISDBT, | ||
347 | SYS_ISDBS, | ||
348 | SYS_ISDBC, | ||
349 | SYS_ATSC, | ||
350 | SYS_ATSCMH, | ||
351 | SYS_DMBTH, | ||
352 | SYS_CMMB, | ||
353 | SYS_DAB, | ||
354 | SYS_DVBT2, | ||
355 | } fe_delivery_system_t; | ||
356 | </programlisting> | ||
357 | </section> | ||
358 | </section> | ||
359 | <section id="DTV-ISDBT-PARTIAL-RECEPTION"> | ||
360 | <title><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></title> | ||
361 | |||
362 | <para>If <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '0' this bit-field represents whether | ||
363 | the channel is in partial reception mode or not.</para> | ||
364 | |||
365 | <para>If '1' <constant>DTV_ISDBT_LAYERA_*</constant> values are assigned to the center segment and | ||
366 | <constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant> has to be '1'.</para> | ||
367 | |||
368 | <para>If in addition <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1' | ||
369 | <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> represents whether this ISDB-Tsb channel | ||
370 | is consisting of one segment and layer or three segments and two layers.</para> | ||
371 | |||
372 | <para>Possible values: 0, 1, -1 (AUTO)</para> | ||
373 | </section> | ||
374 | <section id="DTV-ISDBT-SOUND-BROADCASTING"> | ||
375 | <title><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></title> | ||
376 | |||
377 | <para>This field represents whether the other DTV_ISDBT_*-parameters are | ||
378 | referring to an ISDB-T and an ISDB-Tsb channel. (See also | ||
379 | <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>).</para> | ||
380 | |||
381 | <para>Possible values: 0, 1, -1 (AUTO)</para> | ||
382 | </section> | ||
383 | <section id="DTV-ISDBT-SB-SUBCHANNEL-ID"> | ||
384 | <title><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></title> | ||
385 | |||
386 | <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para> | ||
387 | |||
388 | <para>(Note of the author: This might not be the correct description of the | ||
389 | <constant>SUBCHANNEL-ID</constant> in all details, but it is my understanding of the technical | ||
390 | background needed to program a device)</para> | ||
391 | |||
392 | <para>An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a | ||
393 | set of connected ISDB-Tsb channels. In this set of channels every | ||
394 | channel can be received independently. The number of connected | ||
395 | ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum | ||
396 | bandwidth available.</para> | ||
397 | |||
398 | <para>Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The | ||
399 | broadcaster has several possibilities to put those channels in the | ||
400 | air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8 | ||
401 | segments from position 1-8 to 5-13 or anything in between.</para> | ||
402 | |||
403 | <para>The underlying layer of segments are subchannels: each segment is | ||
404 | consisting of several subchannels with a predefined IDs. A sub-channel | ||
405 | is used to help the demodulator to synchronize on the channel.</para> | ||
406 | |||
407 | <para>An ISDB-T channel is always centered over all sub-channels. As for | ||
408 | the example above, in ISDB-Tsb it is no longer as simple as that.</para> | ||
409 | |||
410 | <para><constant>The DTV_ISDBT_SB_SUBCHANNEL_ID</constant> parameter is used to give the | ||
411 | sub-channel ID of the segment to be demodulated.</para> | ||
412 | |||
413 | <para>Possible values: 0 .. 41, -1 (AUTO)</para> | ||
414 | </section> | ||
415 | <section id="DTV-ISDBT-SB-SEGMENT-IDX"> | ||
416 | <title><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></title> | ||
417 | <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para> | ||
418 | <para><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant> gives the index of the segment to be | ||
419 | demodulated for an ISDB-Tsb channel where several of them are | ||
420 | transmitted in the connected manner.</para> | ||
421 | <para>Possible values: 0 .. <constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> - 1</para> | ||
422 | <para>Note: This value cannot be determined by an automatic channel search.</para> | ||
423 | </section> | ||
424 | <section id="DTV-ISDBT-SB-SEGMENT-COUNT"> | ||
425 | <title><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></title> | ||
426 | <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para> | ||
427 | <para><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> gives the total count of connected ISDB-Tsb | ||
428 | channels.</para> | ||
429 | <para>Possible values: 1 .. 13</para> | ||
430 | <para>Note: This value cannot be determined by an automatic channel search.</para> | ||
431 | </section> | ||
432 | <section id="isdb-hierq-layers"> | ||
433 | <title><constant>DTV-ISDBT-LAYER*</constant> parameters</title> | ||
434 | <para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in | ||
435 | ISDB-T hierarchical layers can be decoded simultaneously. For that | ||
436 | reason a ISDB-T demodulator has 3 viterbi and 3 reed-solomon-decoders.</para> | ||
437 | <para>ISDB-T has 3 hierarchical layers which each can use a part of the | ||
438 | available segments. The total number of segments over all layers has | ||
439 | to 13 in ISDB-T.</para> | ||
440 | <para>There are 3 parameter sets, for Layers A, B and C.</para> | ||
441 | <section id="DTV-ISDBT-LAYER-ENABLED"> | ||
442 | <title><constant>DTV_ISDBT_LAYER_ENABLED</constant></title> | ||
443 | <para>Hierarchical reception in ISDB-T is achieved by enabling or disabling | ||
444 | layers in the decoding process. Setting all bits of | ||
445 | <constant>DTV_ISDBT_LAYER_ENABLED</constant> to '1' forces all layers (if applicable) to be | ||
446 | demodulated. This is the default.</para> | ||
447 | <para>If the channel is in the partial reception mode | ||
448 | (<constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> = 1) the central segment can be decoded | ||
449 | independently of the other 12 segments. In that mode layer A has to | ||
450 | have a <constant>SEGMENT_COUNT</constant> of 1.</para> | ||
451 | <para>In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb | ||
452 | according to <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>. <constant>SEGMENT_COUNT</constant> must be filled | ||
453 | accordingly.</para> | ||
454 | <para>Possible values: 0x1, 0x2, 0x4 (|-able)</para> | ||
455 | <para><constant>DTV_ISDBT_LAYER_ENABLED[0:0]</constant> - layer A</para> | ||
456 | <para><constant>DTV_ISDBT_LAYER_ENABLED[1:1]</constant> - layer B</para> | ||
457 | <para><constant>DTV_ISDBT_LAYER_ENABLED[2:2]</constant> - layer C</para> | ||
458 | <para><constant>DTV_ISDBT_LAYER_ENABLED[31:3]</constant> unused</para> | ||
459 | </section> | ||
460 | <section id="DTV-ISDBT-LAYER-FEC"> | ||
461 | <title><constant>DTV_ISDBT_LAYER*_FEC</constant></title> | ||
462 | <para>Possible values: <constant>FEC_AUTO</constant>, <constant>FEC_1_2</constant>, <constant>FEC_2_3</constant>, <constant>FEC_3_4</constant>, <constant>FEC_5_6</constant>, <constant>FEC_7_8</constant></para> | ||
463 | </section> | ||
464 | <section id="DTV-ISDBT-LAYER-MODULATION"> | ||
465 | <title><constant>DTV_ISDBT_LAYER*_MODULATION</constant></title> | ||
466 | <para>Possible values: <constant>QAM_AUTO</constant>, QP<constant>SK, QAM_16</constant>, <constant>QAM_64</constant>, <constant>DQPSK</constant></para> | ||
467 | <para>Note: If layer C is <constant>DQPSK</constant> layer B has to be <constant>DQPSK</constant>. If layer B is <constant>DQPSK</constant> | ||
468 | and <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>=0 layer has to be <constant>DQPSK</constant>.</para> | ||
469 | </section> | ||
470 | <section id="DTV-ISDBT-LAYER-SEGMENT-COUNT"> | ||
471 | <title><constant>DTV_ISDBT_LAYER*_SEGMENT_COUNT</constant></title> | ||
472 | <para>Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)</para> | ||
473 | <para>Note: Truth table for <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> and | ||
474 | <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> and <constant>LAYER</constant>*_SEGMENT_COUNT</para> | ||
475 | <informaltable id="isdbt-layer_seg-cnt-table"> | ||
476 | <tgroup cols="6"> | ||
477 | <tbody> | ||
478 | <row> | ||
479 | <entry>PR</entry> | ||
480 | <entry>SB</entry> | ||
481 | <entry>Layer A width</entry> | ||
482 | <entry>Layer B width</entry> | ||
483 | <entry>Layer C width</entry> | ||
484 | <entry>total width</entry> | ||
485 | </row> | ||
486 | <row> | ||
487 | <entry>0</entry> | ||
488 | <entry>0</entry> | ||
489 | <entry>1 .. 13</entry> | ||
490 | <entry>1 .. 13</entry> | ||
491 | <entry>1 .. 13</entry> | ||
492 | <entry>13</entry> | ||
493 | </row> | ||
494 | <row> | ||
495 | <entry>1</entry> | ||
496 | <entry>0</entry> | ||
497 | <entry>1</entry> | ||
498 | <entry>1 .. 13</entry> | ||
499 | <entry>1 .. 13</entry> | ||
500 | <entry>13</entry> | ||
501 | </row> | ||
502 | <row> | ||
503 | <entry>0</entry> | ||
504 | <entry>1</entry> | ||
505 | <entry>1</entry> | ||
506 | <entry>0</entry> | ||
507 | <entry>0</entry> | ||
508 | <entry>1</entry> | ||
509 | </row> | ||
510 | <row> | ||
511 | <entry>1</entry> | ||
512 | <entry>1</entry> | ||
513 | <entry>1</entry> | ||
514 | <entry>2</entry> | ||
515 | <entry>0</entry> | ||
516 | <entry>13</entry> | ||
517 | </row> | ||
518 | </tbody> | ||
519 | </tgroup> | ||
520 | </informaltable> | ||
521 | </section> | ||
522 | <section id="DTV-ISDBT-LAYER-TIME-INTERLEAVING"> | ||
523 | <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title> | ||
524 | <para>Possible values: 0, 1, 2, 3, -1 (AUTO)</para> | ||
525 | <para>Note: The real inter-leaver depth-names depend on the mode (fft-size); the values | ||
526 | here are referring to what can be found in the TMCC-structure - | ||
527 | independent of the mode.</para> | ||
528 | </section> | ||
529 | </section> | ||
530 | <section id="DTV-API-VERSION"> | ||
531 | <title><constant>DTV_API_VERSION</constant></title> | ||
532 | <para>Returns the major/minor version of the DVB API</para> | ||
533 | </section> | ||
534 | <section id="DTV-CODE-RATE-HP"> | ||
535 | <title><constant>DTV_CODE_RATE_HP</constant></title> | ||
536 | <para>Used on terrestrial transmissions. The acceptable values are: | ||
537 | </para> | ||
538 | <programlisting> | ||
539 | typedef enum fe_code_rate { | ||
540 | FEC_NONE = 0, | ||
541 | FEC_1_2, | ||
542 | FEC_2_3, | ||
543 | FEC_3_4, | ||
544 | FEC_4_5, | ||
545 | FEC_5_6, | ||
546 | FEC_6_7, | ||
547 | FEC_7_8, | ||
548 | FEC_8_9, | ||
549 | FEC_AUTO, | ||
550 | FEC_3_5, | ||
551 | FEC_9_10, | ||
552 | } fe_code_rate_t; | ||
553 | </programlisting> | ||
554 | </section> | ||
555 | <section id="DTV-CODE-RATE-LP"> | ||
556 | <title><constant>DTV_CODE_RATE_LP</constant></title> | ||
557 | <para>Used on terrestrial transmissions. The acceptable values are: | ||
558 | </para> | ||
559 | <programlisting> | ||
560 | typedef enum fe_code_rate { | ||
561 | FEC_NONE = 0, | ||
562 | FEC_1_2, | ||
563 | FEC_2_3, | ||
564 | FEC_3_4, | ||
565 | FEC_4_5, | ||
566 | FEC_5_6, | ||
567 | FEC_6_7, | ||
568 | FEC_7_8, | ||
569 | FEC_8_9, | ||
570 | FEC_AUTO, | ||
571 | FEC_3_5, | ||
572 | FEC_9_10, | ||
573 | } fe_code_rate_t; | ||
574 | </programlisting> | ||
575 | </section> | ||
576 | <section id="DTV-GUARD-INTERVAL"> | ||
577 | <title><constant>DTV_GUARD_INTERVAL</constant></title> | ||
578 | |||
579 | <para>Possible values are:</para> | ||
580 | <programlisting> | ||
581 | typedef enum fe_guard_interval { | ||
582 | GUARD_INTERVAL_1_32, | ||
583 | GUARD_INTERVAL_1_16, | ||
584 | GUARD_INTERVAL_1_8, | ||
585 | GUARD_INTERVAL_1_4, | ||
586 | GUARD_INTERVAL_AUTO, | ||
587 | GUARD_INTERVAL_1_128, | ||
588 | GUARD_INTERVAL_19_128, | ||
589 | GUARD_INTERVAL_19_256, | ||
590 | } fe_guard_interval_t; | ||
591 | </programlisting> | ||
592 | |||
593 | <para>Notes:</para> | ||
594 | <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will | ||
595 | try to find the correct guard interval (if capable) and will use TMCC to fill | ||
596 | in the missing parameters.</para> | ||
597 | <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para> | ||
598 | </section> | ||
599 | <section id="DTV-TRANSMISSION-MODE"> | ||
600 | <title><constant>DTV_TRANSMISSION_MODE</constant></title> | ||
601 | |||
602 | <para>Specifies the number of carriers used by the standard</para> | ||
603 | |||
604 | <para>Possible values are:</para> | ||
605 | <programlisting> | ||
606 | typedef enum fe_transmit_mode { | ||
607 | TRANSMISSION_MODE_2K, | ||
608 | TRANSMISSION_MODE_8K, | ||
609 | TRANSMISSION_MODE_AUTO, | ||
610 | TRANSMISSION_MODE_4K, | ||
611 | TRANSMISSION_MODE_1K, | ||
612 | TRANSMISSION_MODE_16K, | ||
613 | TRANSMISSION_MODE_32K, | ||
614 | } fe_transmit_mode_t; | ||
615 | </programlisting> | ||
616 | <para>Notes:</para> | ||
617 | <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called | ||
618 | 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para> | ||
619 | |||
620 | <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the | ||
621 | hardware will try to find the correct FFT-size (if capable) and will | ||
622 | use TMCC to fill in the missing parameters.</para> | ||
623 | <para>3) DVB-T specifies 2K and 8K as valid sizes.</para> | ||
624 | <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para> | ||
625 | </section> | ||
626 | <section id="DTV-HIERARCHY"> | ||
627 | <title><constant>DTV_HIERARCHY</constant></title> | ||
628 | <para>Frontend hierarchy</para> | ||
629 | <programlisting> | ||
630 | typedef enum fe_hierarchy { | ||
631 | HIERARCHY_NONE, | ||
632 | HIERARCHY_1, | ||
633 | HIERARCHY_2, | ||
634 | HIERARCHY_4, | ||
635 | HIERARCHY_AUTO | ||
636 | } fe_hierarchy_t; | ||
637 | </programlisting> | ||
638 | </section> | ||
639 | <section id="DTV-ISDBS-TS-ID"> | ||
640 | <title><constant>DTV_ISDBS_TS_ID</constant></title> | ||
641 | <para>Currently unused.</para> | ||
642 | </section> | ||
643 | <section id="DTV-DVBT2-PLP-ID"> | ||
644 | <title><constant>DTV_DVBT2_PLP_ID</constant></title> | ||
645 | <para>DVB-T2 supports Physical Layer Pipes (PLP) to allow transmission of | ||
646 | many data types via a single multiplex. The API will soon support this | ||
647 | at which point this section will be expanded.</para> | ||
648 | </section> | ||
649 | </section> | ||
650 | <section id="frontend-property-terrestrial-systems"> | ||
651 | <title>Properties used on terrestrial delivery systems</title> | ||
652 | <section id="dvbt-params"> | ||
653 | <title>DVB-T delivery system</title> | ||
654 | <para>The following parameters are valid for DVB-T:</para> | ||
655 | <itemizedlist mark='opencircle'> | ||
656 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
657 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
658 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
659 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
660 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
661 | <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem> | ||
662 | <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> | ||
663 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
664 | <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem> | ||
665 | <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem> | ||
666 | <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem> | ||
667 | <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem> | ||
668 | <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem> | ||
669 | </itemizedlist> | ||
670 | </section> | ||
671 | <section id="dvbt2-params"> | ||
672 | <title>DVB-T2 delivery system</title> | ||
673 | <para>DVB-T2 support is currently in the early stages | ||
674 | of development, so expect that this section maygrow and become | ||
675 | more detailed with time.</para> | ||
676 | <para>The following parameters are valid for DVB-T2:</para> | ||
677 | <itemizedlist mark='opencircle'> | ||
678 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
679 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
680 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
681 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
682 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
683 | <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem> | ||
684 | <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> | ||
685 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
686 | <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem> | ||
687 | <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem> | ||
688 | <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem> | ||
689 | <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem> | ||
690 | <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem> | ||
691 | <listitem><para><link linkend="DTV-DVBT2-PLP-ID"><constant>DTV_DVBT2_PLP_ID</constant></link></para></listitem> | ||
692 | </itemizedlist> | ||
693 | </section> | ||
694 | <section id="isdbt"> | ||
695 | <title>ISDB-T delivery system</title> | ||
696 | <para>This ISDB-T/ISDB-Tsb API extension should reflect all information | ||
697 | needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible | ||
698 | that some very sophisticated devices won't need certain parameters to | ||
699 | tune.</para> | ||
700 | <para>The information given here should help application writers to know how | ||
701 | to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.</para> | ||
702 | <para>The details given here about ISDB-T and ISDB-Tsb are just enough to | ||
703 | basically show the dependencies between the needed parameter values, | ||
704 | but surely some information is left out. For more detailed information | ||
705 | see the following documents:</para> | ||
706 | <para>ARIB STD-B31 - "Transmission System for Digital Terrestrial | ||
707 | Television Broadcasting" and</para> | ||
708 | <para>ARIB TR-B14 - "Operational Guidelines for Digital Terrestrial | ||
709 | Television Broadcasting".</para> | ||
710 | <para>In order to understand the ISDB specific parameters, | ||
711 | one has to have some knowledge the channel structure in | ||
712 | ISDB-T and ISDB-Tsb. I.e. it has to be known to | ||
713 | the reader that an ISDB-T channel consists of 13 segments, | ||
714 | that it can have up to 3 layer sharing those segments, | ||
715 | and things like that.</para> | ||
716 | <para>The following parameters are valid for ISDB-T:</para> | ||
717 | <itemizedlist mark='opencircle'> | ||
718 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
719 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
720 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
721 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
722 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
723 | <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem> | ||
724 | <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> | ||
725 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
726 | <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem> | ||
727 | <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem> | ||
728 | <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem> | ||
729 | <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem> | ||
730 | <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem> | ||
731 | <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem> | ||
732 | <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem> | ||
733 | <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem> | ||
734 | <listitem><para><link linkend="DTV-ISDBT-SB-SUBCHANNEL-ID"><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></link></para></listitem> | ||
735 | <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-IDX"><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></link></para></listitem> | ||
736 | <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-COUNT"><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></link></para></listitem> | ||
737 | <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERA_FEC</constant></link></para></listitem> | ||
738 | <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERA_MODULATION</constant></link></para></listitem> | ||
739 | <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant></link></para></listitem> | ||
740 | <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERA_TIME_INTERLEAVING</constant></link></para></listitem> | ||
741 | <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERB_FEC</constant></link></para></listitem> | ||
742 | <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERB_MODULATION</constant></link></para></listitem> | ||
743 | <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERB_SEGMENT_COUNT</constant></link></para></listitem> | ||
744 | <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERB_TIME_INTERLEAVING</constant></link></para></listitem> | ||
745 | <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERC_FEC</constant></link></para></listitem> | ||
746 | <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERC_MODULATION</constant></link></para></listitem> | ||
747 | <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERC_SEGMENT_COUNT</constant></link></para></listitem> | ||
748 | <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERC_TIME_INTERLEAVING</constant></link></para></listitem> | ||
749 | </itemizedlist> | ||
750 | </section> | ||
751 | <section id="atsc-params"> | ||
752 | <title>ATSC delivery system</title> | ||
753 | <para>The following parameters are valid for ATSC:</para> | ||
754 | <itemizedlist mark='opencircle'> | ||
755 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
756 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
757 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
758 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
759 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
760 | <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem> | ||
761 | <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> | ||
762 | </itemizedlist> | ||
763 | </section> | ||
764 | </section> | ||
765 | <section id="frontend-property-cable-systems"> | ||
766 | <title>Properties used on cable delivery systems</title> | ||
767 | <section id="dvbc-params"> | ||
768 | <title>DVB-C delivery system</title> | ||
769 | <para>The DVB-C Annex-A/C is the widely used cable standard. Transmission uses QAM modulation.</para> | ||
770 | <para>The following parameters are valid for DVB-C Annex A/C:</para> | ||
771 | <itemizedlist mark='opencircle'> | ||
772 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
773 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
774 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
775 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
776 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
777 | <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem> | ||
778 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
779 | <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem> | ||
780 | <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem> | ||
781 | </itemizedlist> | ||
782 | </section> | ||
783 | <section id="dvbc-annex-b-params"> | ||
784 | <title>DVB-C Annex B delivery system</title> | ||
785 | <para>The DVB-C Annex-B is only used on a few Countries like the United States.</para> | ||
786 | <para>The following parameters are valid for DVB-C Annex B:</para> | ||
787 | <itemizedlist mark='opencircle'> | ||
788 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
789 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
790 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
791 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
792 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
793 | <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem> | ||
794 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
795 | </itemizedlist> | ||
796 | </section> | ||
797 | </section> | ||
798 | <section id="frontend-property-satellital-systems"> | ||
799 | <title>Properties used on satellital delivery systems</title> | ||
800 | <section id="dvbs-params"> | ||
801 | <title>DVB-S delivery system</title> | ||
802 | <para>The following parameters are valid for DVB-S:</para> | ||
803 | <itemizedlist mark='opencircle'> | ||
804 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
805 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
806 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
807 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
808 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
809 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
810 | <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem> | ||
811 | <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem> | ||
812 | </itemizedlist> | ||
813 | <para>Future implementations might add those two missing parameters:</para> | ||
814 | <itemizedlist mark='opencircle'> | ||
815 | <listitem><para><link linkend="DTV-DISEQC-MASTER"><constant>DTV_DISEQC_MASTER</constant></link></para></listitem> | ||
816 | <listitem><para><link linkend="DTV-DISEQC-SLAVE-REPLY"><constant>DTV_DISEQC_SLAVE_REPLY</constant></link></para></listitem> | ||
817 | </itemizedlist> | ||
818 | </section> | ||
819 | <section id="dvbs2-params"> | ||
820 | <title>DVB-S2 delivery system</title> | ||
821 | <para>The following parameters are valid for DVB-S2:</para> | ||
822 | <itemizedlist mark='opencircle'> | ||
823 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
824 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
825 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
826 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
827 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
828 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
829 | <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem> | ||
830 | <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem> | ||
831 | <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem> | ||
832 | <listitem><para><link linkend="DTV-TONE"><constant>DTV_TONE</constant></link></para></listitem> | ||
833 | <listitem><para><link linkend="DTV-PILOT"><constant>DTV_PILOT</constant></link></para></listitem> | ||
834 | <listitem><para><link linkend="DTV-ROLLOFF"><constant>DTV_ROLLOFF</constant></link></para></listitem> | ||
835 | </itemizedlist> | ||
836 | <para>Future implementations might add those two missing parameters:</para> | ||
837 | <itemizedlist mark='opencircle'> | ||
838 | <listitem><para><link linkend="DTV-DISEQC-MASTER"><constant>DTV_DISEQC_MASTER</constant></link></para></listitem> | ||
839 | <listitem><para><link linkend="DTV-DISEQC-SLAVE-REPLY"><constant>DTV_DISEQC_SLAVE_REPLY</constant></link></para></listitem> | ||
840 | </itemizedlist> | ||
841 | </section> | ||
842 | <section id="isdbs-params"> | ||
843 | <title>ISDB-S delivery system</title> | ||
844 | <para>The following parameters are valid for ISDB-S:</para> | ||
845 | <itemizedlist mark='opencircle'> | ||
846 | <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem> | ||
847 | <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem> | ||
848 | <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem> | ||
849 | <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem> | ||
850 | <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem> | ||
851 | <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem> | ||
852 | <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem> | ||
853 | <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem> | ||
854 | <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem> | ||
855 | <listitem><para><link linkend="DTV-ISDBS-TS-ID"><constant>DTV_ISDBS_TS_ID</constant></link></para></listitem> | ||
856 | </itemizedlist> | ||
857 | </section> | ||
858 | </section> | ||
859 | </section> | ||
diff --git a/Documentation/DocBook/dvb/dvbstb.pdf b/Documentation/DocBook/media/dvb/dvbstb.pdf index 0fa75d90c3eb..0fa75d90c3eb 100644 --- a/Documentation/DocBook/dvb/dvbstb.pdf +++ b/Documentation/DocBook/media/dvb/dvbstb.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/dvb/examples.xml b/Documentation/DocBook/media/dvb/examples.xml index f037e568eb6e..f037e568eb6e 100644 --- a/Documentation/DocBook/dvb/examples.xml +++ b/Documentation/DocBook/media/dvb/examples.xml | |||
diff --git a/Documentation/DocBook/dvb/frontend.xml b/Documentation/DocBook/media/dvb/frontend.xml index 60c6976fb311..61407eaba020 100644 --- a/Documentation/DocBook/dvb/frontend.xml +++ b/Documentation/DocBook/media/dvb/frontend.xml | |||
@@ -20,22 +20,52 @@ cards, in which case there exists no frontend device.</para> | |||
20 | <section id="frontend_types"> | 20 | <section id="frontend_types"> |
21 | <title>Frontend Data Types</title> | 21 | <title>Frontend Data Types</title> |
22 | 22 | ||
23 | <section id="frontend_type"> | 23 | <section id="fe-type-t"> |
24 | <title>frontend type</title> | 24 | <title>Frontend type</title> |
25 | 25 | ||
26 | <para>For historical reasons frontend types are named after the type of modulation used in | 26 | <para>For historical reasons, frontend types are named by the type of modulation used in |
27 | transmission.</para> | 27 | transmission. The fontend types are given by fe_type_t type, defined as:</para> |
28 | <programlisting> | 28 | |
29 | typedef enum fe_type { | 29 | <table pgwide="1" frame="none" id="fe-type"> |
30 | FE_QPSK, /⋆ DVB-S ⋆/ | 30 | <title>Frontend types</title> |
31 | FE_QAM, /⋆ DVB-C ⋆/ | 31 | <tgroup cols="3"> |
32 | FE_OFDM /⋆ DVB-T ⋆/ | 32 | &cs-def; |
33 | } fe_type_t; | 33 | <thead> |
34 | </programlisting> | 34 | <row> |
35 | 35 | <entry>fe_type</entry> | |
36 | <entry>Description</entry> | ||
37 | <entry><link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> equivalent type</entry> | ||
38 | </row> | ||
39 | </thead> | ||
40 | <tbody valign="top"> | ||
41 | <row> | ||
42 | <entry id="FE_QPSK"><constant>FE_QPSK</constant></entry> | ||
43 | <entry>For DVB-S standard</entry> | ||
44 | <entry><constant>SYS_DVBS</constant></entry> | ||
45 | </row> | ||
46 | <row> | ||
47 | <entry id="FE_QAM"><constant>FE_QAM</constant></entry> | ||
48 | <entry>For DVB-C annex A/C standard</entry> | ||
49 | <entry><constant>SYS_DVBC_ANNEX_AC</constant></entry> | ||
50 | </row> | ||
51 | <row> | ||
52 | <entry id="FE_OFDM"><constant>FE_OFDM</constant></entry> | ||
53 | <entry>For DVB-T standard</entry> | ||
54 | <entry><constant>SYS_DVBT</constant></entry> | ||
55 | </row> | ||
56 | <row> | ||
57 | <entry id="FE_ATSC"><constant>FE_ATSC</constant></entry> | ||
58 | <entry>For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used in US.</entry> | ||
59 | <entry><constant>SYS_ATSC</constant> (terrestrial) or <constant>SYS_DVBC_ANNEX_B</constant> (cable)</entry> | ||
60 | </row> | ||
61 | </tbody></tgroup></table> | ||
62 | |||
63 | <para>Newer formats like DVB-S2, ISDB-T, ISDB-S and DVB-T2 are not described at the above, as they're | ||
64 | supported via the new <link linkend="FE_GET_SET_PROPERTY">FE_GET_PROPERTY/FE_GET_SET_PROPERTY</link> ioctl's, using the <link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> parameter. | ||
65 | </para> | ||
36 | </section> | 66 | </section> |
37 | 67 | ||
38 | <section id="frontend_caps"> | 68 | <section id="fe-caps-t"> |
39 | <title>frontend capabilities</title> | 69 | <title>frontend capabilities</title> |
40 | 70 | ||
41 | <para>Capabilities describe what a frontend can do. Some capabilities can only be supported for | 71 | <para>Capabilities describe what a frontend can do. Some capabilities can only be supported for |
@@ -76,7 +106,7 @@ a specific frontend type.</para> | |||
76 | </programlisting> | 106 | </programlisting> |
77 | </section> | 107 | </section> |
78 | 108 | ||
79 | <section id="frontend_info"> | 109 | <section id="dvb-frontend-info"> |
80 | <title>frontend information</title> | 110 | <title>frontend information</title> |
81 | 111 | ||
82 | <para>Information about the frontend ca be queried with | 112 | <para>Information about the frontend ca be queried with |
@@ -99,7 +129,7 @@ a specific frontend type.</para> | |||
99 | </programlisting> | 129 | </programlisting> |
100 | </section> | 130 | </section> |
101 | 131 | ||
102 | <section id="frontend_diseqc"> | 132 | <section id="dvb-diseqc-master-cmd"> |
103 | <title>diseqc master command</title> | 133 | <title>diseqc master command</title> |
104 | 134 | ||
105 | <para>A message sent from the frontend to DiSEqC capable equipment.</para> | 135 | <para>A message sent from the frontend to DiSEqC capable equipment.</para> |
@@ -110,7 +140,7 @@ a specific frontend type.</para> | |||
110 | }; | 140 | }; |
111 | </programlisting> | 141 | </programlisting> |
112 | </section> | 142 | </section> |
113 | <section role="subsection"> | 143 | <section role="subsection" id="dvb-diseqc-slave-reply"> |
114 | <title>diseqc slave reply</title> | 144 | <title>diseqc slave reply</title> |
115 | 145 | ||
116 | <para>A reply to the frontend from DiSEqC 2.0 capable equipment.</para> | 146 | <para>A reply to the frontend from DiSEqC 2.0 capable equipment.</para> |
@@ -123,7 +153,7 @@ a specific frontend type.</para> | |||
123 | </programlisting> | 153 | </programlisting> |
124 | </section> | 154 | </section> |
125 | 155 | ||
126 | <section id="frontend_diseqc_slave_reply"> | 156 | <section id="fe-sec-voltage-t"> |
127 | <title>diseqc slave reply</title> | 157 | <title>diseqc slave reply</title> |
128 | <para>The voltage is usually used with non-DiSEqC capable LNBs to switch the polarzation | 158 | <para>The voltage is usually used with non-DiSEqC capable LNBs to switch the polarzation |
129 | (horizontal/vertical). When using DiSEqC epuipment this voltage has to be switched | 159 | (horizontal/vertical). When using DiSEqC epuipment this voltage has to be switched |
@@ -136,7 +166,7 @@ consistently to the DiSEqC commands as described in the DiSEqC spec.</para> | |||
136 | </programlisting> | 166 | </programlisting> |
137 | </section> | 167 | </section> |
138 | 168 | ||
139 | <section id="frontend_sec_tone"> | 169 | <section id="fe-sec-tone-mode-t"> |
140 | <title>SEC continuous tone</title> | 170 | <title>SEC continuous tone</title> |
141 | 171 | ||
142 | <para>The continuous 22KHz tone is usually used with non-DiSEqC capable LNBs to switch the | 172 | <para>The continuous 22KHz tone is usually used with non-DiSEqC capable LNBs to switch the |
@@ -151,7 +181,7 @@ spec.</para> | |||
151 | </programlisting> | 181 | </programlisting> |
152 | </section> | 182 | </section> |
153 | 183 | ||
154 | <section id="frontend_sec_burst"> | 184 | <section id="fe-sec-mini-cmd-t"> |
155 | <title>SEC tone burst</title> | 185 | <title>SEC tone burst</title> |
156 | 186 | ||
157 | <para>The 22KHz tone burst is usually used with non-DiSEqC capable switches to select | 187 | <para>The 22KHz tone burst is usually used with non-DiSEqC capable switches to select |
@@ -168,7 +198,7 @@ spec.</para> | |||
168 | <para></para> | 198 | <para></para> |
169 | </section> | 199 | </section> |
170 | 200 | ||
171 | <section id="frontend_status"> | 201 | <section id="fe-status-t"> |
172 | <title>frontend status</title> | 202 | <title>frontend status</title> |
173 | <para>Several functions of the frontend device use the fe_status data type defined | 203 | <para>Several functions of the frontend device use the fe_status data type defined |
174 | by</para> | 204 | by</para> |
@@ -188,31 +218,54 @@ by</para> | |||
188 | 218 | ||
189 | </section> | 219 | </section> |
190 | 220 | ||
191 | <section id="frontend_params"> | 221 | <section id="dvb-frontend-parameters"> |
192 | <title>frontend parameters</title> | 222 | <title>frontend parameters</title> |
193 | <para>The kind of parameters passed to the frontend device for tuning depend on | 223 | <para>The kind of parameters passed to the frontend device for tuning depend on |
194 | the kind of hardware you are using. All kinds of parameters are combined as an | 224 | the kind of hardware you are using.</para> |
195 | union in the FrontendParameters structure:</para> | 225 | <para>The struct <constant>dvb_frontend_parameters</constant> uses an |
226 | union with specific per-system parameters. However, as newer delivery systems | ||
227 | required more data, the structure size weren't enough to fit, and just | ||
228 | extending its size would break the existing applications. So, those parameters | ||
229 | were replaced by the usage of <link linkend="FE_GET_SET_PROPERTY"> | ||
230 | <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> ioctl's. The | ||
231 | new API is flexible enough to add new parameters to existing delivery systems, | ||
232 | and to add newer delivery systems.</para> | ||
233 | <para>So, newer applications should use <link linkend="FE_GET_SET_PROPERTY"> | ||
234 | <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> instead, in | ||
235 | order to be able to support the newer System Delivery like DVB-S2, DVB-T2, | ||
236 | DVB-C2, ISDB, etc.</para> | ||
237 | <para>All kinds of parameters are combined as an union in the FrontendParameters structure:</para> | ||
196 | <programlisting> | 238 | <programlisting> |
197 | struct dvb_frontend_parameters { | 239 | struct dvb_frontend_parameters { |
198 | uint32_t frequency; /⋆ (absolute) frequency in Hz for QAM/OFDM ⋆/ | 240 | uint32_t frequency; /⋆ (absolute) frequency in Hz for QAM/OFDM ⋆/ |
199 | /⋆ intermediate frequency in kHz for QPSK ⋆/ | 241 | /⋆ intermediate frequency in kHz for QPSK ⋆/ |
200 | fe_spectral_inversion_t inversion; | 242 | fe_spectral_inversion_t inversion; |
201 | union { | 243 | union { |
202 | struct dvb_qpsk_parameters qpsk; | 244 | struct dvb_qpsk_parameters qpsk; |
203 | struct dvb_qam_parameters qam; | 245 | struct dvb_qam_parameters qam; |
204 | struct dvb_ofdm_parameters ofdm; | 246 | struct dvb_ofdm_parameters ofdm; |
205 | } u; | 247 | struct dvb_vsb_parameters vsb; |
206 | }; | 248 | } u; |
249 | }; | ||
207 | </programlisting> | 250 | </programlisting> |
208 | <para>For satellite QPSK frontends you have to use the <constant>QPSKParameters</constant> member defined by</para> | 251 | <para>In the case of QPSK frontends the <constant>frequency</constant> field specifies the intermediate |
252 | frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of | ||
253 | the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and | ||
254 | OFDM frontends the <constant>frequency</constant> specifies the absolute frequency and is given in Hz. | ||
255 | </para> | ||
256 | <section id="dvb-qpsk-parameters"> | ||
257 | <title>QPSK parameters</title> | ||
258 | <para>For satellite QPSK frontends you have to use the <constant>dvb_qpsk_parameters</constant> structure:</para> | ||
209 | <programlisting> | 259 | <programlisting> |
210 | struct dvb_qpsk_parameters { | 260 | struct dvb_qpsk_parameters { |
211 | uint32_t symbol_rate; /⋆ symbol rate in Symbols per second ⋆/ | 261 | uint32_t symbol_rate; /⋆ symbol rate in Symbols per second ⋆/ |
212 | fe_code_rate_t fec_inner; /⋆ forward error correction (see above) ⋆/ | 262 | fe_code_rate_t fec_inner; /⋆ forward error correction (see above) ⋆/ |
213 | }; | 263 | }; |
214 | </programlisting> | 264 | </programlisting> |
215 | <para>for cable QAM frontend you use the <constant>QAMParameters</constant> structure</para> | 265 | </section> |
266 | <section id="dvb-qam-parameters"> | ||
267 | <title>QAM parameters</title> | ||
268 | <para>for cable QAM frontend you use the <constant>dvb_qam_parameters</constant> structure:</para> | ||
216 | <programlisting> | 269 | <programlisting> |
217 | struct dvb_qam_parameters { | 270 | struct dvb_qam_parameters { |
218 | uint32_t symbol_rate; /⋆ symbol rate in Symbols per second ⋆/ | 271 | uint32_t symbol_rate; /⋆ symbol rate in Symbols per second ⋆/ |
@@ -220,8 +273,19 @@ union in the FrontendParameters structure:</para> | |||
220 | fe_modulation_t modulation; /⋆ modulation type (see above) ⋆/ | 273 | fe_modulation_t modulation; /⋆ modulation type (see above) ⋆/ |
221 | }; | 274 | }; |
222 | </programlisting> | 275 | </programlisting> |
223 | <para>DVB-T frontends are supported by the <constant>OFDMParamters</constant> structure | 276 | </section> |
224 | </para> | 277 | <section id="dvb-vsb-parameters"> |
278 | <title>VSB parameters</title> | ||
279 | <para>ATSC frontends are supported by the <constant>dvb_vsb_parameters</constant> structure:</para> | ||
280 | <programlisting> | ||
281 | struct dvb_vsb_parameters { | ||
282 | fe_modulation_t modulation; /⋆ modulation type (see above) ⋆/ | ||
283 | }; | ||
284 | </programlisting> | ||
285 | </section> | ||
286 | <section id="dvb-ofdm-parameters"> | ||
287 | <title>OFDM parameters</title> | ||
288 | <para>DVB-T frontends are supported by the <constant>dvb_ofdm_parameters</constant> structure:</para> | ||
225 | <programlisting> | 289 | <programlisting> |
226 | struct dvb_ofdm_parameters { | 290 | struct dvb_ofdm_parameters { |
227 | fe_bandwidth_t bandwidth; | 291 | fe_bandwidth_t bandwidth; |
@@ -233,86 +297,124 @@ union in the FrontendParameters structure:</para> | |||
233 | fe_hierarchy_t hierarchy_information; | 297 | fe_hierarchy_t hierarchy_information; |
234 | }; | 298 | }; |
235 | </programlisting> | 299 | </programlisting> |
236 | <para>In the case of QPSK frontends the <constant>Frequency</constant> field specifies the intermediate | 300 | </section> |
237 | frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of | 301 | <section id="fe-spectral-inversion-t"> |
238 | the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and | 302 | <title>frontend spectral inversion</title> |
239 | OFDM frontends the Frequency specifies the absolute frequency and is given in | ||
240 | Hz. | ||
241 | </para> | ||
242 | <para>The Inversion field can take one of these values: | 303 | <para>The Inversion field can take one of these values: |
243 | </para> | 304 | </para> |
244 | <programlisting> | 305 | <programlisting> |
245 | typedef enum fe_spectral_inversion { | 306 | typedef enum fe_spectral_inversion { |
246 | INVERSION_OFF, | 307 | INVERSION_OFF, |
247 | INVERSION_ON, | 308 | INVERSION_ON, |
248 | INVERSION_AUTO | 309 | INVERSION_AUTO |
249 | } fe_spectral_inversion_t; | 310 | } fe_spectral_inversion_t; |
250 | </programlisting> | 311 | </programlisting> |
251 | <para>It indicates if spectral inversion should be presumed or not. In the automatic setting | 312 | <para>It indicates if spectral inversion should be presumed or not. In the automatic setting |
252 | (<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by | 313 | (<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by |
253 | itself. | 314 | itself. |
254 | </para> | 315 | </para> |
255 | <para>The possible values for the <constant>FEC_inner</constant> field are | 316 | </section> |
317 | <section id="fe-code-rate-t"> | ||
318 | <title>frontend code rate</title> | ||
319 | <para>The possible values for the <constant>fec_inner</constant> field used on | ||
320 | <link refend="dvb-qpsk-parameters"><constant>struct dvb_qpsk_parameters</constant></link> and | ||
321 | <link refend="dvb-qam-parameters"><constant>struct dvb_qam_parameters</constant></link> are: | ||
256 | </para> | 322 | </para> |
257 | <programlisting> | 323 | <programlisting> |
258 | typedef enum fe_code_rate { | 324 | typedef enum fe_code_rate { |
259 | FEC_NONE = 0, | 325 | FEC_NONE = 0, |
260 | FEC_1_2, | 326 | FEC_1_2, |
261 | FEC_2_3, | 327 | FEC_2_3, |
262 | FEC_3_4, | 328 | FEC_3_4, |
263 | FEC_4_5, | 329 | FEC_4_5, |
264 | FEC_5_6, | 330 | FEC_5_6, |
265 | FEC_6_7, | 331 | FEC_6_7, |
266 | FEC_7_8, | 332 | FEC_7_8, |
267 | FEC_8_9, | 333 | FEC_8_9, |
268 | FEC_AUTO | 334 | FEC_AUTO, |
269 | } fe_code_rate_t; | 335 | FEC_3_5, |
336 | FEC_9_10, | ||
337 | } fe_code_rate_t; | ||
270 | </programlisting> | 338 | </programlisting> |
271 | <para>which correspond to error correction rates of 1/2, 2/3, etc., no error correction or auto | 339 | <para>which correspond to error correction rates of 1/2, 2/3, etc., no error correction or auto |
272 | detection. | 340 | detection. |
273 | </para> | 341 | </para> |
274 | <para>For cable and terrestrial frontends (QAM and OFDM) one also has to specify the quadrature | 342 | </section> |
275 | modulation mode which can be one of the following: | 343 | <section id="fe-modulation-t"> |
344 | <title>frontend modulation type for QAM, OFDM and VSB</title> | ||
345 | <para>For cable and terrestrial frontends, e. g. for | ||
346 | <link refend="dvb-qam-parameters"><constant>struct dvb_qpsk_parameters</constant></link>, | ||
347 | <link refend="dvb-ofdm-parameters"><constant>struct dvb_qam_parameters</constant></link> and | ||
348 | <link refend="dvb-vsb-parameters"><constant>struct dvb_qam_parameters</constant></link>, | ||
349 | it needs to specify the quadrature modulation mode which can be one of the following: | ||
276 | </para> | 350 | </para> |
277 | <programlisting> | 351 | <programlisting> |
278 | typedef enum fe_modulation { | 352 | typedef enum fe_modulation { |
279 | QPSK, | 353 | QPSK, |
280 | QAM_16, | 354 | QAM_16, |
281 | QAM_32, | 355 | QAM_32, |
282 | QAM_64, | 356 | QAM_64, |
283 | QAM_128, | 357 | QAM_128, |
284 | QAM_256, | 358 | QAM_256, |
285 | QAM_AUTO | 359 | QAM_AUTO, |
360 | VSB_8, | ||
361 | VSB_16, | ||
362 | PSK_8, | ||
363 | APSK_16, | ||
364 | APSK_32, | ||
365 | DQPSK, | ||
286 | } fe_modulation_t; | 366 | } fe_modulation_t; |
287 | </programlisting> | 367 | </programlisting> |
368 | </section> | ||
288 | <para>Finally, there are several more parameters for OFDM: | 369 | <para>Finally, there are several more parameters for OFDM: |
289 | </para> | 370 | </para> |
371 | <section id="fe-transmit-mode-t"> | ||
372 | <title>Number of carriers per channel</title> | ||
290 | <programlisting> | 373 | <programlisting> |
291 | typedef enum fe_transmit_mode { | 374 | typedef enum fe_transmit_mode { |
292 | TRANSMISSION_MODE_2K, | 375 | TRANSMISSION_MODE_2K, |
293 | TRANSMISSION_MODE_8K, | 376 | TRANSMISSION_MODE_8K, |
294 | TRANSMISSION_MODE_AUTO | 377 | TRANSMISSION_MODE_AUTO, |
378 | TRANSMISSION_MODE_4K, | ||
379 | TRANSMISSION_MODE_1K, | ||
380 | TRANSMISSION_MODE_16K, | ||
381 | TRANSMISSION_MODE_32K, | ||
295 | } fe_transmit_mode_t; | 382 | } fe_transmit_mode_t; |
296 | </programlisting> | 383 | </programlisting> |
297 | <programlisting> | 384 | </section> |
298 | typedef enum fe_bandwidth { | 385 | <section id="fe-bandwidth-t"> |
299 | BANDWIDTH_8_MHZ, | 386 | <title>frontend bandwidth</title> |
300 | BANDWIDTH_7_MHZ, | 387 | <programlisting> |
301 | BANDWIDTH_6_MHZ, | 388 | typedef enum fe_bandwidth { |
302 | BANDWIDTH_AUTO | 389 | BANDWIDTH_8_MHZ, |
303 | } fe_bandwidth_t; | 390 | BANDWIDTH_7_MHZ, |
391 | BANDWIDTH_6_MHZ, | ||
392 | BANDWIDTH_AUTO, | ||
393 | BANDWIDTH_5_MHZ, | ||
394 | BANDWIDTH_10_MHZ, | ||
395 | BANDWIDTH_1_712_MHZ, | ||
396 | } fe_bandwidth_t; | ||
304 | </programlisting> | 397 | </programlisting> |
305 | <programlisting> | 398 | </section> |
306 | typedef enum fe_guard_interval { | 399 | <section id="fe-guard-interval-t"> |
307 | GUARD_INTERVAL_1_32, | 400 | <title>frontend guard inverval</title> |
308 | GUARD_INTERVAL_1_16, | 401 | <programlisting> |
309 | GUARD_INTERVAL_1_8, | 402 | typedef enum fe_guard_interval { |
310 | GUARD_INTERVAL_1_4, | 403 | GUARD_INTERVAL_1_32, |
311 | GUARD_INTERVAL_AUTO | 404 | GUARD_INTERVAL_1_16, |
312 | } fe_guard_interval_t; | 405 | GUARD_INTERVAL_1_8, |
406 | GUARD_INTERVAL_1_4, | ||
407 | GUARD_INTERVAL_AUTO, | ||
408 | GUARD_INTERVAL_1_128, | ||
409 | GUARD_INTERVAL_19_128, | ||
410 | GUARD_INTERVAL_19_256, | ||
411 | } fe_guard_interval_t; | ||
313 | </programlisting> | 412 | </programlisting> |
314 | <programlisting> | 413 | </section> |
315 | typedef enum fe_hierarchy { | 414 | <section id="fe-hierarchy-t"> |
415 | <title>frontend hierarchy</title> | ||
416 | <programlisting> | ||
417 | typedef enum fe_hierarchy { | ||
316 | HIERARCHY_NONE, | 418 | HIERARCHY_NONE, |
317 | HIERARCHY_1, | 419 | HIERARCHY_1, |
318 | HIERARCHY_2, | 420 | HIERARCHY_2, |
@@ -320,10 +422,11 @@ modulation mode which can be one of the following: | |||
320 | HIERARCHY_AUTO | 422 | HIERARCHY_AUTO |
321 | } fe_hierarchy_t; | 423 | } fe_hierarchy_t; |
322 | </programlisting> | 424 | </programlisting> |
425 | </section> | ||
323 | 426 | ||
324 | </section> | 427 | </section> |
325 | 428 | ||
326 | <section id="frontend_events"> | 429 | <section id="dvb-frontend-event"> |
327 | <title>frontend events</title> | 430 | <title>frontend events</title> |
328 | <programlisting> | 431 | <programlisting> |
329 | struct dvb_frontend_event { | 432 | struct dvb_frontend_event { |
@@ -412,8 +515,7 @@ modulation mode which can be one of the following: | |||
412 | <para>(blocking mode is the default)</para> | 515 | <para>(blocking mode is the default)</para> |
413 | </entry> | 516 | </entry> |
414 | </row></tbody></tgroup></informaltable> | 517 | </row></tbody></tgroup></informaltable> |
415 | <para>ERRORS | 518 | <para>RETURN VALUE</para> |
416 | </para> | ||
417 | <informaltable><tgroup cols="2"><tbody><row><entry | 519 | <informaltable><tgroup cols="2"><tbody><row><entry |
418 | align="char"> | 520 | align="char"> |
419 | <para>ENODEV</para> | 521 | <para>ENODEV</para> |
@@ -473,8 +575,7 @@ modulation mode which can be one of the following: | |||
473 | <para>File descriptor returned by a previous call to open().</para> | 575 | <para>File descriptor returned by a previous call to open().</para> |
474 | </entry> | 576 | </entry> |
475 | </row></tbody></tgroup></informaltable> | 577 | </row></tbody></tgroup></informaltable> |
476 | <para>ERRORS | 578 | <para>RETURN VALUE</para> |
477 | </para> | ||
478 | <informaltable><tgroup cols="2"><tbody><row><entry | 579 | <informaltable><tgroup cols="2"><tbody><row><entry |
479 | align="char"> | 580 | align="char"> |
480 | <para>EBADF</para> | 581 | <para>EBADF</para> |
@@ -530,8 +631,7 @@ modulation mode which can be one of the following: | |||
530 | to be stored.</para> | 631 | to be stored.</para> |
531 | </entry> | 632 | </entry> |
532 | </row></tbody></tgroup></informaltable> | 633 | </row></tbody></tgroup></informaltable> |
533 | <para>ERRORS | 634 | <para>RETURN VALUE</para> |
534 | </para> | ||
535 | <informaltable><tgroup cols="2"><tbody><row><entry | 635 | <informaltable><tgroup cols="2"><tbody><row><entry |
536 | align="char"> | 636 | align="char"> |
537 | <para>EBADF</para> | 637 | <para>EBADF</para> |
@@ -592,38 +692,8 @@ modulation mode which can be one of the following: | |||
592 | <para>The bit error rate is stored into *ber.</para> | 692 | <para>The bit error rate is stored into *ber.</para> |
593 | </entry> | 693 | </entry> |
594 | </row></tbody></tgroup></informaltable> | 694 | </row></tbody></tgroup></informaltable> |
595 | <para>ERRORS | 695 | |
596 | </para> | 696 | &return-value-dvb; |
597 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
598 | align="char"> | ||
599 | <para>EBADF</para> | ||
600 | </entry><entry | ||
601 | align="char"> | ||
602 | <para>fd is not a valid open file descriptor.</para> | ||
603 | </entry> | ||
604 | </row><row><entry | ||
605 | align="char"> | ||
606 | <para>EFAULT</para> | ||
607 | </entry><entry | ||
608 | align="char"> | ||
609 | <para>ber points to invalid address.</para> | ||
610 | </entry> | ||
611 | </row><row><entry | ||
612 | align="char"> | ||
613 | <para>ENOSIGNAL</para> | ||
614 | </entry><entry | ||
615 | align="char"> | ||
616 | <para>There is no signal, thus no meaningful bit error rate. Also | ||
617 | returned if the front-end is not turned on.</para> | ||
618 | </entry> | ||
619 | </row><row><entry | ||
620 | align="char"> | ||
621 | <para>ENOSYS</para> | ||
622 | </entry><entry | ||
623 | align="char"> | ||
624 | <para>Function not available for this device.</para> | ||
625 | </entry> | ||
626 | </row></tbody></tgroup></informaltable> | ||
627 | </section> | 697 | </section> |
628 | 698 | ||
629 | <section id="FE_READ_SNR"> | 699 | <section id="FE_READ_SNR"> |
@@ -670,38 +740,7 @@ modulation mode which can be one of the following: | |||
670 | </entry> | 740 | </entry> |
671 | </row></tbody></tgroup></informaltable> | 741 | </row></tbody></tgroup></informaltable> |
672 | 742 | ||
673 | <para>ERRORS | 743 | &return-value-dvb; |
674 | </para> | ||
675 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
676 | align="char"> | ||
677 | <para>EBADF</para> | ||
678 | </entry><entry | ||
679 | align="char"> | ||
680 | <para>fd is not a valid open file descriptor.</para> | ||
681 | </entry> | ||
682 | </row><row><entry | ||
683 | align="char"> | ||
684 | <para>EFAULT</para> | ||
685 | </entry><entry | ||
686 | align="char"> | ||
687 | <para>snr points to invalid address.</para> | ||
688 | </entry> | ||
689 | </row><row><entry | ||
690 | align="char"> | ||
691 | <para>ENOSIGNAL</para> | ||
692 | </entry><entry | ||
693 | align="char"> | ||
694 | <para>There is no signal, thus no meaningful signal strength | ||
695 | value. Also returned if front-end is not turned on.</para> | ||
696 | </entry> | ||
697 | </row><row><entry | ||
698 | align="char"> | ||
699 | <para>ENOSYS</para> | ||
700 | </entry><entry | ||
701 | align="char"> | ||
702 | <para>Function not available for this device.</para> | ||
703 | </entry> | ||
704 | </row></tbody></tgroup></informaltable> | ||
705 | </section> | 744 | </section> |
706 | 745 | ||
707 | <section id="FE_READ_SIGNAL_STRENGTH"> | 746 | <section id="FE_READ_SIGNAL_STRENGTH"> |
@@ -748,38 +787,8 @@ modulation mode which can be one of the following: | |||
748 | <para>The signal strength value is stored into *strength.</para> | 787 | <para>The signal strength value is stored into *strength.</para> |
749 | </entry> | 788 | </entry> |
750 | </row></tbody></tgroup></informaltable> | 789 | </row></tbody></tgroup></informaltable> |
751 | <para>ERRORS | 790 | |
752 | </para> | 791 | &return-value-dvb; |
753 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
754 | align="char"> | ||
755 | <para>EBADF</para> | ||
756 | </entry><entry | ||
757 | align="char"> | ||
758 | <para>fd is not a valid open file descriptor.</para> | ||
759 | </entry> | ||
760 | </row><row><entry | ||
761 | align="char"> | ||
762 | <para>EFAULT</para> | ||
763 | </entry><entry | ||
764 | align="char"> | ||
765 | <para>status points to invalid address.</para> | ||
766 | </entry> | ||
767 | </row><row><entry | ||
768 | align="char"> | ||
769 | <para>ENOSIGNAL</para> | ||
770 | </entry><entry | ||
771 | align="char"> | ||
772 | <para>There is no signal, thus no meaningful signal strength | ||
773 | value. Also returned if front-end is not turned on.</para> | ||
774 | </entry> | ||
775 | </row><row><entry | ||
776 | align="char"> | ||
777 | <para>ENOSYS</para> | ||
778 | </entry><entry | ||
779 | align="char"> | ||
780 | <para>Function not available for this device.</para> | ||
781 | </entry> | ||
782 | </row></tbody></tgroup></informaltable> | ||
783 | </section> | 792 | </section> |
784 | 793 | ||
785 | <section id="FE_READ_UNCORRECTED_BLOCKS"> | 794 | <section id="FE_READ_UNCORRECTED_BLOCKS"> |
@@ -833,30 +842,8 @@ modulation mode which can be one of the following: | |||
833 | so far.</para> | 842 | so far.</para> |
834 | </entry> | 843 | </entry> |
835 | </row></tbody></tgroup></informaltable> | 844 | </row></tbody></tgroup></informaltable> |
836 | <para>ERRORS | 845 | |
837 | </para> | 846 | &return-value-dvb; |
838 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
839 | align="char"> | ||
840 | <para>EBADF</para> | ||
841 | </entry><entry | ||
842 | align="char"> | ||
843 | <para>fd is not a valid open file descriptor.</para> | ||
844 | </entry> | ||
845 | </row><row><entry | ||
846 | align="char"> | ||
847 | <para>EFAULT</para> | ||
848 | </entry><entry | ||
849 | align="char"> | ||
850 | <para>ublocks points to invalid address.</para> | ||
851 | </entry> | ||
852 | </row><row><entry | ||
853 | align="char"> | ||
854 | <para>ENOSYS</para> | ||
855 | </entry><entry | ||
856 | align="char"> | ||
857 | <para>Function not available for this device.</para> | ||
858 | </entry> | ||
859 | </row></tbody></tgroup></informaltable> | ||
860 | </section> | 847 | </section> |
861 | 848 | ||
862 | <section id="FE_SET_FRONTEND"> | 849 | <section id="FE_SET_FRONTEND"> |
@@ -909,24 +896,10 @@ modulation mode which can be one of the following: | |||
909 | <para>Points to parameters for tuning operation.</para> | 896 | <para>Points to parameters for tuning operation.</para> |
910 | </entry> | 897 | </entry> |
911 | </row></tbody></tgroup></informaltable> | 898 | </row></tbody></tgroup></informaltable> |
912 | <para>ERRORS | 899 | |
913 | </para> | 900 | &return-value-dvb; |
914 | <informaltable><tgroup cols="2"><tbody><row><entry | 901 | <informaltable><tgroup cols="2"><tbody><row><entry |
915 | align="char"> | 902 | align="char"> |
916 | <para>EBADF</para> | ||
917 | </entry><entry | ||
918 | align="char"> | ||
919 | <para>fd is not a valid open file descriptor.</para> | ||
920 | </entry> | ||
921 | </row><row><entry | ||
922 | align="char"> | ||
923 | <para>EFAULT</para> | ||
924 | </entry><entry | ||
925 | align="char"> | ||
926 | <para>p points to invalid address.</para> | ||
927 | </entry> | ||
928 | </row><row><entry | ||
929 | align="char"> | ||
930 | <para>EINVAL</para> | 903 | <para>EINVAL</para> |
931 | </entry><entry | 904 | </entry><entry |
932 | align="char"> | 905 | align="char"> |
@@ -982,25 +955,9 @@ modulation mode which can be one of the following: | |||
982 | </entry> | 955 | </entry> |
983 | </row></tbody></tgroup></informaltable> | 956 | </row></tbody></tgroup></informaltable> |
984 | 957 | ||
985 | <para>ERRORS | 958 | &return-value-dvb; |
986 | </para> | ||
987 | |||
988 | <informaltable><tgroup cols="2"><tbody><row><entry | 959 | <informaltable><tgroup cols="2"><tbody><row><entry |
989 | align="char"> | 960 | align="char"> |
990 | <para>EBADF</para> | ||
991 | </entry><entry | ||
992 | align="char"> | ||
993 | <para>fd is not a valid open file descriptor.</para> | ||
994 | </entry> | ||
995 | </row><row><entry | ||
996 | align="char"> | ||
997 | <para>EFAULT</para> | ||
998 | </entry><entry | ||
999 | align="char"> | ||
1000 | <para>p points to invalid address.</para> | ||
1001 | </entry> | ||
1002 | </row><row><entry | ||
1003 | align="char"> | ||
1004 | <para>EINVAL</para> | 961 | <para>EINVAL</para> |
1005 | </entry><entry | 962 | </entry><entry |
1006 | align="char"> | 963 | align="char"> |
@@ -1084,24 +1041,9 @@ modulation mode which can be one of the following: | |||
1084 | </entry> | 1041 | </entry> |
1085 | </row></tbody></tgroup></informaltable> | 1042 | </row></tbody></tgroup></informaltable> |
1086 | 1043 | ||
1087 | <para>ERRORS | 1044 | &return-value-dvb; |
1088 | </para> | ||
1089 | <informaltable><tgroup cols="2"><tbody><row><entry | 1045 | <informaltable><tgroup cols="2"><tbody><row><entry |
1090 | align="char"> | 1046 | align="char"> |
1091 | <para>EBADF</para> | ||
1092 | </entry><entry | ||
1093 | align="char"> | ||
1094 | <para>fd is not a valid open file descriptor.</para> | ||
1095 | </entry> | ||
1096 | </row><row><entry | ||
1097 | align="char"> | ||
1098 | <para>EFAULT</para> | ||
1099 | </entry><entry | ||
1100 | align="char"> | ||
1101 | <para>ev points to invalid address.</para> | ||
1102 | </entry> | ||
1103 | </row><row><entry | ||
1104 | align="char"> | ||
1105 | <para>EWOULDBLOCK</para> | 1047 | <para>EWOULDBLOCK</para> |
1106 | </entry><entry | 1048 | </entry><entry |
1107 | align="char"> | 1049 | align="char"> |
@@ -1113,11 +1055,6 @@ modulation mode which can be one of the following: | |||
1113 | <para>EOVERFLOW</para> | 1055 | <para>EOVERFLOW</para> |
1114 | </entry><entry | 1056 | </entry><entry |
1115 | align="char"> | 1057 | align="char"> |
1116 | </entry> | ||
1117 | </row><row><entry | ||
1118 | align="char"> | ||
1119 | </entry><entry | ||
1120 | align="char"> | ||
1121 | <para>Overflow in event queue - one or more events were lost.</para> | 1058 | <para>Overflow in event queue - one or more events were lost.</para> |
1122 | </entry> | 1059 | </entry> |
1123 | </row></tbody></tgroup></informaltable> | 1060 | </row></tbody></tgroup></informaltable> |
@@ -1170,23 +1107,7 @@ modulation mode which can be one of the following: | |||
1170 | to be stored.</para> | 1107 | to be stored.</para> |
1171 | </entry> | 1108 | </entry> |
1172 | </row></tbody></tgroup></informaltable> | 1109 | </row></tbody></tgroup></informaltable> |
1173 | <para>ERRORS | 1110 | &return-value-dvb; |
1174 | </para> | ||
1175 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1176 | align="char"> | ||
1177 | <para>EBADF</para> | ||
1178 | </entry><entry | ||
1179 | align="char"> | ||
1180 | <para>fd is not a valid open file descriptor.</para> | ||
1181 | </entry> | ||
1182 | </row><row><entry | ||
1183 | align="char"> | ||
1184 | <para>EFAULT</para> | ||
1185 | </entry><entry | ||
1186 | align="char"> | ||
1187 | <para>info points to invalid address.</para> | ||
1188 | </entry> | ||
1189 | </row></tbody></tgroup></informaltable> | ||
1190 | </section> | 1111 | </section> |
1191 | 1112 | ||
1192 | <section id="FE_DISEQC_RESET_OVERLOAD"> | 1113 | <section id="FE_DISEQC_RESET_OVERLOAD"> |
@@ -1229,30 +1150,7 @@ modulation mode which can be one of the following: | |||
1229 | </entry> | 1150 | </entry> |
1230 | </row></tbody></tgroup></informaltable> | 1151 | </row></tbody></tgroup></informaltable> |
1231 | 1152 | ||
1232 | <para>ERRORS | 1153 | &return-value-dvb; |
1233 | </para> | ||
1234 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1235 | align="char"> | ||
1236 | <para>EBADF</para> | ||
1237 | </entry><entry | ||
1238 | align="char"> | ||
1239 | <para>fd is not a valid file descriptor.</para> | ||
1240 | </entry> | ||
1241 | </row><row><entry | ||
1242 | align="char"> | ||
1243 | <para>EPERM</para> | ||
1244 | </entry><entry | ||
1245 | align="char"> | ||
1246 | <para>Permission denied (needs read/write access).</para> | ||
1247 | </entry> | ||
1248 | </row><row><entry | ||
1249 | align="char"> | ||
1250 | <para>EINTERNAL</para> | ||
1251 | </entry><entry | ||
1252 | align="char"> | ||
1253 | <para>Internal error in the device driver.</para> | ||
1254 | </entry> | ||
1255 | </row></tbody></tgroup></informaltable> | ||
1256 | </section> | 1154 | </section> |
1257 | 1155 | ||
1258 | <section id="FE_DISEQC_SEND_MASTER_CMD"> | 1156 | <section id="FE_DISEQC_SEND_MASTER_CMD"> |
@@ -1302,45 +1200,7 @@ modulation mode which can be one of the following: | |||
1302 | </entry> | 1200 | </entry> |
1303 | </row></tbody></tgroup></informaltable> | 1201 | </row></tbody></tgroup></informaltable> |
1304 | 1202 | ||
1305 | <para>ERRORS | 1203 | &return-value-dvb; |
1306 | </para> | ||
1307 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1308 | align="char"> | ||
1309 | <para>EBADF</para> | ||
1310 | </entry><entry | ||
1311 | align="char"> | ||
1312 | <para>fd is not a valid file descriptor.</para> | ||
1313 | </entry> | ||
1314 | </row><row><entry | ||
1315 | align="char"> | ||
1316 | <para>EFAULT</para> | ||
1317 | </entry><entry | ||
1318 | align="char"> | ||
1319 | <para>Seq points to an invalid address.</para> | ||
1320 | </entry> | ||
1321 | </row><row><entry | ||
1322 | align="char"> | ||
1323 | <para>EINVAL</para> | ||
1324 | </entry><entry | ||
1325 | align="char"> | ||
1326 | <para>The data structure referred to by seq is invalid in some | ||
1327 | way.</para> | ||
1328 | </entry> | ||
1329 | </row><row><entry | ||
1330 | align="char"> | ||
1331 | <para>EPERM</para> | ||
1332 | </entry><entry | ||
1333 | align="char"> | ||
1334 | <para>Permission denied (needs read/write access).</para> | ||
1335 | </entry> | ||
1336 | </row><row><entry | ||
1337 | align="char"> | ||
1338 | <para>EINTERNAL</para> | ||
1339 | </entry><entry | ||
1340 | align="char"> | ||
1341 | <para>Internal error in the device driver.</para> | ||
1342 | </entry> | ||
1343 | </row></tbody></tgroup></informaltable> | ||
1344 | </section> | 1204 | </section> |
1345 | 1205 | ||
1346 | <section id="FE_DISEQC_RECV_SLAVE_REPLY"> | 1206 | <section id="FE_DISEQC_RECV_SLAVE_REPLY"> |
@@ -1390,45 +1250,7 @@ modulation mode which can be one of the following: | |||
1390 | <para>Pointer to the command to be received.</para> | 1250 | <para>Pointer to the command to be received.</para> |
1391 | </entry> | 1251 | </entry> |
1392 | </row></tbody></tgroup></informaltable> | 1252 | </row></tbody></tgroup></informaltable> |
1393 | <para>ERRORS | 1253 | &return-value-dvb; |
1394 | </para> | ||
1395 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1396 | align="char"> | ||
1397 | <para>EBADF</para> | ||
1398 | </entry><entry | ||
1399 | align="char"> | ||
1400 | <para>fd is not a valid file descriptor.</para> | ||
1401 | </entry> | ||
1402 | </row><row><entry | ||
1403 | align="char"> | ||
1404 | <para>EFAULT</para> | ||
1405 | </entry><entry | ||
1406 | align="char"> | ||
1407 | <para>Seq points to an invalid address.</para> | ||
1408 | </entry> | ||
1409 | </row><row><entry | ||
1410 | align="char"> | ||
1411 | <para>EINVAL</para> | ||
1412 | </entry><entry | ||
1413 | align="char"> | ||
1414 | <para>The data structure referred to by seq is invalid in some | ||
1415 | way.</para> | ||
1416 | </entry> | ||
1417 | </row><row><entry | ||
1418 | align="char"> | ||
1419 | <para>EPERM</para> | ||
1420 | </entry><entry | ||
1421 | align="char"> | ||
1422 | <para>Permission denied (needs read/write access).</para> | ||
1423 | </entry> | ||
1424 | </row><row><entry | ||
1425 | align="char"> | ||
1426 | <para>EINTERNAL</para> | ||
1427 | </entry><entry | ||
1428 | align="char"> | ||
1429 | <para>Internal error in the device driver.</para> | ||
1430 | </entry> | ||
1431 | </row></tbody></tgroup></informaltable> | ||
1432 | </section> | 1254 | </section> |
1433 | 1255 | ||
1434 | <section id="FE_DISEQC_SEND_BURST"> | 1256 | <section id="FE_DISEQC_SEND_BURST"> |
@@ -1476,45 +1298,7 @@ modulation mode which can be one of the following: | |||
1476 | </entry> | 1298 | </entry> |
1477 | </row></tbody></tgroup></informaltable> | 1299 | </row></tbody></tgroup></informaltable> |
1478 | 1300 | ||
1479 | <para>ERRORS | 1301 | &return-value-dvb; |
1480 | </para> | ||
1481 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1482 | align="char"> | ||
1483 | <para>EBADF</para> | ||
1484 | </entry><entry | ||
1485 | align="char"> | ||
1486 | <para>fd is not a valid file descriptor.</para> | ||
1487 | </entry> | ||
1488 | </row><row><entry | ||
1489 | align="char"> | ||
1490 | <para>EFAULT</para> | ||
1491 | </entry><entry | ||
1492 | align="char"> | ||
1493 | <para>Seq points to an invalid address.</para> | ||
1494 | </entry> | ||
1495 | </row><row><entry | ||
1496 | align="char"> | ||
1497 | <para>EINVAL</para> | ||
1498 | </entry><entry | ||
1499 | align="char"> | ||
1500 | <para>The data structure referred to by seq is invalid in some | ||
1501 | way.</para> | ||
1502 | </entry> | ||
1503 | </row><row><entry | ||
1504 | align="char"> | ||
1505 | <para>EPERM</para> | ||
1506 | </entry><entry | ||
1507 | align="char"> | ||
1508 | <para>Permission denied (needs read/write access).</para> | ||
1509 | </entry> | ||
1510 | </row><row><entry | ||
1511 | align="char"> | ||
1512 | <para>EINTERNAL</para> | ||
1513 | </entry><entry | ||
1514 | align="char"> | ||
1515 | <para>Internal error in the device driver.</para> | ||
1516 | </entry> | ||
1517 | </row></tbody></tgroup></informaltable> | ||
1518 | </section> | 1302 | </section> |
1519 | 1303 | ||
1520 | <section id="FE_SET_TONE"> | 1304 | <section id="FE_SET_TONE"> |
@@ -1560,44 +1344,7 @@ modulation mode which can be one of the following: | |||
1560 | <para>The requested tone generation mode (on/off).</para> | 1344 | <para>The requested tone generation mode (on/off).</para> |
1561 | </entry> | 1345 | </entry> |
1562 | </row></tbody></tgroup></informaltable> | 1346 | </row></tbody></tgroup></informaltable> |
1563 | <para>ERRORS | 1347 | &return-value-dvb; |
1564 | </para> | ||
1565 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1566 | align="char"> | ||
1567 | <para>ENODEV</para> | ||
1568 | </entry><entry | ||
1569 | align="char"> | ||
1570 | <para>Device driver not loaded/available.</para> | ||
1571 | </entry> | ||
1572 | </row><row><entry | ||
1573 | align="char"> | ||
1574 | <para>EBUSY</para> | ||
1575 | </entry><entry | ||
1576 | align="char"> | ||
1577 | <para>Device or resource busy.</para> | ||
1578 | </entry> | ||
1579 | </row><row><entry | ||
1580 | align="char"> | ||
1581 | <para>EINVAL</para> | ||
1582 | </entry><entry | ||
1583 | align="char"> | ||
1584 | <para>Invalid argument.</para> | ||
1585 | </entry> | ||
1586 | </row><row><entry | ||
1587 | align="char"> | ||
1588 | <para>EPERM</para> | ||
1589 | </entry><entry | ||
1590 | align="char"> | ||
1591 | <para>File not opened with read permissions.</para> | ||
1592 | </entry> | ||
1593 | </row><row><entry | ||
1594 | align="char"> | ||
1595 | <para>EINTERNAL</para> | ||
1596 | </entry><entry | ||
1597 | align="char"> | ||
1598 | <para>Internal error in the device driver.</para> | ||
1599 | </entry> | ||
1600 | </row></tbody></tgroup></informaltable> | ||
1601 | </section> | 1348 | </section> |
1602 | 1349 | ||
1603 | <section id="FE_SET_VOLTAGE"> | 1350 | <section id="FE_SET_VOLTAGE"> |
@@ -1645,44 +1392,7 @@ modulation mode which can be one of the following: | |||
1645 | </entry> | 1392 | </entry> |
1646 | </row></tbody></tgroup></informaltable> | 1393 | </row></tbody></tgroup></informaltable> |
1647 | 1394 | ||
1648 | <para>ERRORS | 1395 | &return-value-dvb; |
1649 | </para> | ||
1650 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1651 | align="char"> | ||
1652 | <para>ENODEV</para> | ||
1653 | </entry><entry | ||
1654 | align="char"> | ||
1655 | <para>Device driver not loaded/available.</para> | ||
1656 | </entry> | ||
1657 | </row><row><entry | ||
1658 | align="char"> | ||
1659 | <para>EBUSY</para> | ||
1660 | </entry><entry | ||
1661 | align="char"> | ||
1662 | <para>Device or resource busy.</para> | ||
1663 | </entry> | ||
1664 | </row><row><entry | ||
1665 | align="char"> | ||
1666 | <para>EINVAL</para> | ||
1667 | </entry><entry | ||
1668 | align="char"> | ||
1669 | <para>Invalid argument.</para> | ||
1670 | </entry> | ||
1671 | </row><row><entry | ||
1672 | align="char"> | ||
1673 | <para>EPERM</para> | ||
1674 | </entry><entry | ||
1675 | align="char"> | ||
1676 | <para>File not opened with read permissions.</para> | ||
1677 | </entry> | ||
1678 | </row><row><entry | ||
1679 | align="char"> | ||
1680 | <para>EINTERNAL</para> | ||
1681 | </entry><entry | ||
1682 | align="char"> | ||
1683 | <para>Internal error in the device driver.</para> | ||
1684 | </entry> | ||
1685 | </row></tbody></tgroup></informaltable> | ||
1686 | </section> | 1396 | </section> |
1687 | 1397 | ||
1688 | <section id="FE_ENABLE_HIGH_LNB_VOLTAGE"> | 1398 | <section id="FE_ENABLE_HIGH_LNB_VOLTAGE"> |
@@ -1731,44 +1441,7 @@ modulation mode which can be one of the following: | |||
1731 | </entry> | 1441 | </entry> |
1732 | </row></tbody></tgroup></informaltable> | 1442 | </row></tbody></tgroup></informaltable> |
1733 | 1443 | ||
1734 | <para>ERRORS | 1444 | &return-value-dvb; |
1735 | </para> | ||
1736 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1737 | align="char"> | ||
1738 | <para>ENODEV</para> | ||
1739 | </entry><entry | ||
1740 | align="char"> | ||
1741 | <para>Device driver not loaded/available.</para> | ||
1742 | </entry> | ||
1743 | </row><row><entry | ||
1744 | align="char"> | ||
1745 | <para>EBUSY</para> | ||
1746 | </entry><entry | ||
1747 | align="char"> | ||
1748 | <para>Device or resource busy.</para> | ||
1749 | </entry> | ||
1750 | </row><row><entry | ||
1751 | align="char"> | ||
1752 | <para>EINVAL</para> | ||
1753 | </entry><entry | ||
1754 | align="char"> | ||
1755 | <para>Invalid argument.</para> | ||
1756 | </entry> | ||
1757 | </row><row><entry | ||
1758 | align="char"> | ||
1759 | <para>EPERM</para> | ||
1760 | </entry><entry | ||
1761 | align="char"> | ||
1762 | <para>File not opened with read permissions.</para> | ||
1763 | </entry> | ||
1764 | </row><row><entry | ||
1765 | align="char"> | ||
1766 | <para>EINTERNAL</para> | ||
1767 | </entry><entry | ||
1768 | align="char"> | ||
1769 | <para>Internal error in the device driver.</para> | ||
1770 | </entry> | ||
1771 | </row></tbody></tgroup></informaltable> | ||
1772 | </section> | 1445 | </section> |
1773 | 1446 | ||
1774 | <section id="FE_SET_FRONTEND_TUNE_MODE"> | 1447 | <section id="FE_SET_FRONTEND_TUNE_MODE"> |
@@ -1800,11 +1473,7 @@ FE_TUNE_MODE_ONESHOT When set, this flag will disable any zigzagging or other "n | |||
1800 | </entry> | 1473 | </entry> |
1801 | </row></tbody></tgroup></informaltable> | 1474 | </row></tbody></tgroup></informaltable> |
1802 | 1475 | ||
1803 | <para>ERRORS</para> | 1476 | &return-value-dvb; |
1804 | <informaltable><tgroup cols="2"><tbody><row> | ||
1805 | <entry align="char"><para>EINVAL</para></entry> | ||
1806 | <entry align="char"><para>Invalid argument.</para></entry> | ||
1807 | </row></tbody></tgroup></informaltable> | ||
1808 | </section> | 1477 | </section> |
1809 | 1478 | ||
1810 | <section id="FE_DISHNETWORK_SEND_LEGACY_CMD"> | 1479 | <section id="FE_DISHNETWORK_SEND_LEGACY_CMD"> |
@@ -1838,12 +1507,7 @@ sends the specified raw cmd to the dish via DISEqC. | |||
1838 | </entry> | 1507 | </entry> |
1839 | </row></tbody></tgroup></informaltable> | 1508 | </row></tbody></tgroup></informaltable> |
1840 | 1509 | ||
1841 | <para>ERRORS</para> | 1510 | &return-value-dvb; |
1842 | <informaltable><tgroup cols="1"><tbody><row> | ||
1843 | <entry align="char"> | ||
1844 | <para>There are no errors in use for this call</para> | ||
1845 | </entry> | ||
1846 | </row></tbody></tgroup></informaltable> | ||
1847 | </section> | 1511 | </section> |
1848 | 1512 | ||
1849 | </section> | 1513 | </section> |
diff --git a/Documentation/DocBook/dvb/intro.xml b/Documentation/DocBook/media/dvb/intro.xml index 0dc83f672ea2..c75dc7cc3e9b 100644 --- a/Documentation/DocBook/dvb/intro.xml +++ b/Documentation/DocBook/media/dvb/intro.xml | |||
@@ -154,6 +154,10 @@ are called:</para> | |||
154 | </listitem> | 154 | </listitem> |
155 | <listitem> | 155 | <listitem> |
156 | 156 | ||
157 | <para><emphasis role="tt">/dev/dvb/adapterN/dvrM</emphasis>,</para> | ||
158 | </listitem> | ||
159 | <listitem> | ||
160 | |||
157 | <para><emphasis role="tt">/dev/dvb/adapterN/caM</emphasis>,</para></listitem></itemizedlist> | 161 | <para><emphasis role="tt">/dev/dvb/adapterN/caM</emphasis>,</para></listitem></itemizedlist> |
158 | 162 | ||
159 | <para>where N enumerates the DVB PCI cards in a system starting | 163 | <para>where N enumerates the DVB PCI cards in a system starting |
@@ -175,10 +179,27 @@ the devices are described in the following chapters.</para> | |||
175 | The DVB API include files should be included in application sources with | 179 | The DVB API include files should be included in application sources with |
176 | a partial path like:</para> | 180 | a partial path like:</para> |
177 | 181 | ||
178 | 182 | <programlisting> | |
183 | #include <linux/dvb/audio.h> | ||
184 | </programlisting> | ||
185 | <programlisting> | ||
186 | #include <linux/dvb/ca.h> | ||
187 | </programlisting> | ||
188 | <programlisting> | ||
189 | #include <linux/dvb/dmx.h> | ||
190 | </programlisting> | ||
179 | <programlisting> | 191 | <programlisting> |
180 | #include <linux/dvb/frontend.h> | 192 | #include <linux/dvb/frontend.h> |
181 | </programlisting> | 193 | </programlisting> |
194 | <programlisting> | ||
195 | #include <linux/dvb/net.h> | ||
196 | </programlisting> | ||
197 | <programlisting> | ||
198 | #include <linux/dvb/osd.h> | ||
199 | </programlisting> | ||
200 | <programlisting> | ||
201 | #include <linux/dvb/video.h> | ||
202 | </programlisting> | ||
182 | 203 | ||
183 | <para>To enable applications to support different API version, an | 204 | <para>To enable applications to support different API version, an |
184 | additional include file <emphasis | 205 | additional include file <emphasis |
diff --git a/Documentation/DocBook/dvb/kdapi.xml b/Documentation/DocBook/media/dvb/kdapi.xml index 6c67481eaa4b..6c67481eaa4b 100644 --- a/Documentation/DocBook/dvb/kdapi.xml +++ b/Documentation/DocBook/media/dvb/kdapi.xml | |||
diff --git a/Documentation/DocBook/dvb/net.xml b/Documentation/DocBook/media/dvb/net.xml index 94e388d94c0d..67d37e5ce597 100644 --- a/Documentation/DocBook/dvb/net.xml +++ b/Documentation/DocBook/media/dvb/net.xml | |||
@@ -7,6 +7,23 @@ application. | |||
7 | </para> | 7 | </para> |
8 | <section id="dvb_net_types"> | 8 | <section id="dvb_net_types"> |
9 | <title>DVB Net Data Types</title> | 9 | <title>DVB Net Data Types</title> |
10 | |||
11 | <section id="dvb-net-if"> | ||
12 | <title>struct dvb_net_if</title> | ||
13 | <programlisting> | ||
14 | struct dvb_net_if { | ||
15 | __u16 pid; | ||
16 | __u16 if_num; | ||
17 | __u8 feedtype; | ||
18 | #define DVB_NET_FEEDTYPE_MPE 0 /⋆ multi protocol encapsulation ⋆/ | ||
19 | #define DVB_NET_FEEDTYPE_ULE 1 /⋆ ultra lightweight encapsulation ⋆/ | ||
20 | }; | ||
21 | </programlisting> | ||
22 | </section> | ||
23 | |||
24 | </section> | ||
25 | <section id="net_fcalls"> | ||
26 | <title>DVB net Function Calls</title> | ||
10 | <para>To be written… | 27 | <para>To be written… |
11 | </para> | 28 | </para> |
12 | </section> | 29 | </section> |
diff --git a/Documentation/DocBook/dvb/video.xml b/Documentation/DocBook/media/dvb/video.xml index 7bb287e67c8e..25fb823226b4 100644 --- a/Documentation/DocBook/dvb/video.xml +++ b/Documentation/DocBook/media/dvb/video.xml | |||
@@ -18,15 +18,16 @@ supported on some MPEG decoders made for DVD playback. | |||
18 | <section id="video_types"> | 18 | <section id="video_types"> |
19 | <title>Video Data Types</title> | 19 | <title>Video Data Types</title> |
20 | 20 | ||
21 | <section id="video_format_t"> | 21 | <section id="video-format-t"> |
22 | <title>video_format_t</title> | 22 | <title>video_format_t</title> |
23 | <para>The <emphasis role="tt">video_format_t</emphasis> data type defined by | 23 | <para>The <emphasis role="tt">video_format_t</emphasis> data type defined by |
24 | </para> | 24 | </para> |
25 | <programlisting> | 25 | <programlisting> |
26 | typedef enum { | 26 | typedef enum { |
27 | VIDEO_FORMAT_4_3, | 27 | VIDEO_FORMAT_4_3, /⋆ Select 4:3 format ⋆/ |
28 | VIDEO_FORMAT_16_9 | 28 | VIDEO_FORMAT_16_9, /⋆ Select 16:9 format. ⋆/ |
29 | } video_format_t; | 29 | VIDEO_FORMAT_221_1 /⋆ 2.21:1 ⋆/ |
30 | } video_format_t; | ||
30 | </programlisting> | 31 | </programlisting> |
31 | <para>is used in the VIDEO_SET_FORMAT function (??) to tell the driver which aspect ratio | 32 | <para>is used in the VIDEO_SET_FORMAT function (??) to tell the driver which aspect ratio |
32 | the output hardware (e.g. TV) has. It is also used in the data structures video_status | 33 | the output hardware (e.g. TV) has. It is also used in the data structures video_status |
@@ -36,34 +37,36 @@ stream. | |||
36 | </para> | 37 | </para> |
37 | </section> | 38 | </section> |
38 | 39 | ||
39 | <section id="video_display_format_t"> | 40 | <section id="video-displayformat-t"> |
40 | <title>video_display_format_t</title> | 41 | <title>video_displayformat_t</title> |
41 | <para>In case the display format of the video stream and of the display hardware differ the | 42 | <para>In case the display format of the video stream and of the display hardware differ the |
42 | application has to specify how to handle the cropping of the picture. This can be done using | 43 | application has to specify how to handle the cropping of the picture. This can be done using |
43 | the VIDEO_SET_DISPLAY_FORMAT call (??) which accepts | 44 | the VIDEO_SET_DISPLAY_FORMAT call (??) which accepts |
44 | </para> | 45 | </para> |
45 | <programlisting> | 46 | <programlisting> |
46 | typedef enum { | 47 | typedef enum { |
47 | VIDEO_PAN_SCAN, | 48 | VIDEO_PAN_SCAN, /⋆ use pan and scan format ⋆/ |
48 | VIDEO_LETTER_BOX, | 49 | VIDEO_LETTER_BOX, /⋆ use letterbox format ⋆/ |
49 | VIDEO_CENTER_CUT_OUT | 50 | VIDEO_CENTER_CUT_OUT /⋆ use center cut out format ⋆/ |
50 | } video_display_format_t; | 51 | } video_displayformat_t; |
51 | </programlisting> | 52 | </programlisting> |
52 | <para>as argument. | 53 | <para>as argument. |
53 | </para> | 54 | </para> |
54 | </section> | 55 | </section> |
55 | 56 | ||
56 | <section id="video_stream_source"> | 57 | <section id="video-stream-source-t"> |
57 | <title>video stream source</title> | 58 | <title>video stream source</title> |
58 | <para>The video stream source is set through the VIDEO_SELECT_SOURCE call and can take | 59 | <para>The video stream source is set through the VIDEO_SELECT_SOURCE call and can take |
59 | the following values, depending on whether we are replaying from an internal (demuxer) or | 60 | the following values, depending on whether we are replaying from an internal (demuxer) or |
60 | external (user write) source. | 61 | external (user write) source. |
61 | </para> | 62 | </para> |
62 | <programlisting> | 63 | <programlisting> |
63 | typedef enum { | 64 | typedef enum { |
64 | VIDEO_SOURCE_DEMUX, | 65 | VIDEO_SOURCE_DEMUX, /⋆ Select the demux as the main source ⋆/ |
65 | VIDEO_SOURCE_MEMORY | 66 | VIDEO_SOURCE_MEMORY /⋆ If this source is selected, the stream |
66 | } video_stream_source_t; | 67 | comes from the user through the write |
68 | system call ⋆/ | ||
69 | } video_stream_source_t; | ||
67 | </programlisting> | 70 | </programlisting> |
68 | <para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the | 71 | <para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the |
69 | DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY | 72 | DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY |
@@ -72,49 +75,98 @@ call. | |||
72 | </para> | 75 | </para> |
73 | </section> | 76 | </section> |
74 | 77 | ||
75 | <section id="video_play_state"> | 78 | <section id="video-play-state-t"> |
76 | <title>video play state</title> | 79 | <title>video play state</title> |
77 | <para>The following values can be returned by the VIDEO_GET_STATUS call representing the | 80 | <para>The following values can be returned by the VIDEO_GET_STATUS call representing the |
78 | state of video playback. | 81 | state of video playback. |
79 | </para> | 82 | </para> |
80 | <programlisting> | 83 | <programlisting> |
81 | typedef enum { | 84 | typedef enum { |
82 | VIDEO_STOPPED, | 85 | VIDEO_STOPPED, /⋆ Video is stopped ⋆/ |
83 | VIDEO_PLAYING, | 86 | VIDEO_PLAYING, /⋆ Video is currently playing ⋆/ |
84 | VIDEO_FREEZED | 87 | VIDEO_FREEZED /⋆ Video is freezed ⋆/ |
85 | } video_play_state_t; | 88 | } video_play_state_t; |
86 | </programlisting> | 89 | </programlisting> |
87 | </section> | 90 | </section> |
88 | 91 | ||
89 | <section id="video_event"> | 92 | <section id="video-command"> |
93 | <para>The structure must be zeroed before use by the application | ||
94 | This ensures it can be extended safely in the future.</para> | ||
95 | <title>struct video-command</title> | ||
96 | <programlisting> | ||
97 | struct video_command { | ||
98 | __u32 cmd; | ||
99 | __u32 flags; | ||
100 | union { | ||
101 | struct { | ||
102 | __u64 pts; | ||
103 | } stop; | ||
104 | |||
105 | struct { | ||
106 | /⋆ 0 or 1000 specifies normal speed, | ||
107 | 1 specifies forward single stepping, | ||
108 | -1 specifies backward single stepping, | ||
109 | >>1: playback at speed/1000 of the normal speed, | ||
110 | <-1: reverse playback at (-speed/1000) of the normal speed. ⋆/ | ||
111 | __s32 speed; | ||
112 | __u32 format; | ||
113 | } play; | ||
114 | |||
115 | struct { | ||
116 | __u32 data[16]; | ||
117 | } raw; | ||
118 | }; | ||
119 | }; | ||
120 | </programlisting> | ||
121 | </section> | ||
122 | |||
123 | <section id="video-size-t"> | ||
124 | <title>struct video_size-t</title> | ||
125 | <programlisting> | ||
126 | typedef struct { | ||
127 | int w; | ||
128 | int h; | ||
129 | video_format_t aspect_ratio; | ||
130 | } video_size_t; | ||
131 | </programlisting> | ||
132 | </section> | ||
133 | |||
134 | |||
135 | <section id="video-event"> | ||
90 | <title>struct video_event</title> | 136 | <title>struct video_event</title> |
91 | <para>The following is the structure of a video event as it is returned by the VIDEO_GET_EVENT | 137 | <para>The following is the structure of a video event as it is returned by the VIDEO_GET_EVENT |
92 | call. | 138 | call. |
93 | </para> | 139 | </para> |
94 | <programlisting> | 140 | <programlisting> |
95 | struct video_event { | 141 | struct video_event { |
96 | int32_t type; | 142 | __s32 type; |
97 | time_t timestamp; | 143 | #define VIDEO_EVENT_SIZE_CHANGED 1 |
98 | union { | 144 | #define VIDEO_EVENT_FRAME_RATE_CHANGED 2 |
99 | video_format_t video_format; | 145 | #define VIDEO_EVENT_DECODER_STOPPED 3 |
100 | } u; | 146 | #define VIDEO_EVENT_VSYNC 4 |
101 | }; | 147 | __kernel_time_t timestamp; |
148 | union { | ||
149 | video_size_t size; | ||
150 | unsigned int frame_rate; /⋆ in frames per 1000sec ⋆/ | ||
151 | unsigned char vsync_field; /⋆ unknown/odd/even/progressive ⋆/ | ||
152 | } u; | ||
153 | }; | ||
102 | </programlisting> | 154 | </programlisting> |
103 | </section> | 155 | </section> |
104 | 156 | ||
105 | <section id="video_status"> | 157 | <section id="video-status"> |
106 | <title>struct video_status</title> | 158 | <title>struct video_status</title> |
107 | <para>The VIDEO_GET_STATUS call returns the following structure informing about various | 159 | <para>The VIDEO_GET_STATUS call returns the following structure informing about various |
108 | states of the playback operation. | 160 | states of the playback operation. |
109 | </para> | 161 | </para> |
110 | <programlisting> | 162 | <programlisting> |
111 | struct video_status { | 163 | struct video_status { |
112 | boolean video_blank; | 164 | int video_blank; /⋆ blank video on freeze? ⋆/ |
113 | video_play_state_t play_state; | 165 | video_play_state_t play_state; /⋆ current state of playback ⋆/ |
114 | video_stream_source_t stream_source; | 166 | video_stream_source_t stream_source; /⋆ current source (demux/memory) ⋆/ |
115 | video_format_t video_format; | 167 | video_format_t video_format; /⋆ current aspect ratio of stream ⋆/ |
116 | video_displayformat_t display_format; | 168 | video_displayformat_t display_format;/⋆ selected cropping mode ⋆/ |
117 | }; | 169 | }; |
118 | </programlisting> | 170 | </programlisting> |
119 | <para>If video_blank is set video will be blanked out if the channel is changed or if playback is | 171 | <para>If video_blank is set video will be blanked out if the channel is changed or if playback is |
120 | stopped. Otherwise, the last picture will be displayed. play_state indicates if the video is | 172 | stopped. Otherwise, the last picture will be displayed. play_state indicates if the video is |
@@ -127,17 +179,17 @@ device. | |||
127 | </para> | 179 | </para> |
128 | </section> | 180 | </section> |
129 | 181 | ||
130 | <section id="video_still_picture"> | 182 | <section id="video-still-picture"> |
131 | <title>struct video_still_picture</title> | 183 | <title>struct video_still_picture</title> |
132 | <para>An I-frame displayed via the VIDEO_STILLPICTURE call is passed on within the | 184 | <para>An I-frame displayed via the VIDEO_STILLPICTURE call is passed on within the |
133 | following structure. | 185 | following structure. |
134 | </para> | 186 | </para> |
135 | <programlisting> | 187 | <programlisting> |
136 | /⋆ pointer to and size of a single iframe in memory ⋆/ | 188 | /⋆ pointer to and size of a single iframe in memory ⋆/ |
137 | struct video_still_picture { | 189 | struct video_still_picture { |
138 | char ⋆iFrame; | 190 | char ⋆iFrame; /⋆ pointer to a single iframe in memory ⋆/ |
139 | int32_t size; | 191 | int32_t size; |
140 | }; | 192 | }; |
141 | </programlisting> | 193 | </programlisting> |
142 | </section> | 194 | </section> |
143 | 195 | ||
@@ -164,26 +216,26 @@ bits set according to the hardwares capabilities. | |||
164 | </programlisting> | 216 | </programlisting> |
165 | </section> | 217 | </section> |
166 | 218 | ||
167 | <section id="video_system"> | 219 | <section id="video-system"> |
168 | <title>video system</title> | 220 | <title>video system</title> |
169 | <para>A call to VIDEO_SET_SYSTEM sets the desired video system for TV output. The | 221 | <para>A call to VIDEO_SET_SYSTEM sets the desired video system for TV output. The |
170 | following system types can be set: | 222 | following system types can be set: |
171 | </para> | 223 | </para> |
172 | <programlisting> | 224 | <programlisting> |
173 | typedef enum { | 225 | typedef enum { |
174 | VIDEO_SYSTEM_PAL, | 226 | VIDEO_SYSTEM_PAL, |
175 | VIDEO_SYSTEM_NTSC, | 227 | VIDEO_SYSTEM_NTSC, |
176 | VIDEO_SYSTEM_PALN, | 228 | VIDEO_SYSTEM_PALN, |
177 | VIDEO_SYSTEM_PALNc, | 229 | VIDEO_SYSTEM_PALNc, |
178 | VIDEO_SYSTEM_PALM, | 230 | VIDEO_SYSTEM_PALM, |
179 | VIDEO_SYSTEM_NTSC60, | 231 | VIDEO_SYSTEM_NTSC60, |
180 | VIDEO_SYSTEM_PAL60, | 232 | VIDEO_SYSTEM_PAL60, |
181 | VIDEO_SYSTEM_PALM60 | 233 | VIDEO_SYSTEM_PALM60 |
182 | } video_system_t; | 234 | } video_system_t; |
183 | </programlisting> | 235 | </programlisting> |
184 | </section> | 236 | </section> |
185 | 237 | ||
186 | <section id="video_highlight"> | 238 | <section id="video-highlight"> |
187 | <title>struct video_highlight</title> | 239 | <title>struct video_highlight</title> |
188 | <para>Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight information. The | 240 | <para>Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight information. The |
189 | call expects the following format for that information: | 241 | call expects the following format for that information: |
@@ -210,7 +262,7 @@ call expects the following format for that information: | |||
210 | </programlisting> | 262 | </programlisting> |
211 | 263 | ||
212 | </section> | 264 | </section> |
213 | <section id="video_spu"> | 265 | <section id="video-spu"> |
214 | <title>video SPU</title> | 266 | <title>video SPU</title> |
215 | <para>Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according to the | 267 | <para>Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according to the |
216 | following format: | 268 | following format: |
@@ -224,7 +276,7 @@ following format: | |||
224 | </programlisting> | 276 | </programlisting> |
225 | 277 | ||
226 | </section> | 278 | </section> |
227 | <section id="video_spu_palette"> | 279 | <section id="video-spu-palette"> |
228 | <title>video SPU palette</title> | 280 | <title>video SPU palette</title> |
229 | <para>The following structure is used to set the SPU palette by calling VIDEO_SPU_PALETTE: | 281 | <para>The following structure is used to set the SPU palette by calling VIDEO_SPU_PALETTE: |
230 | </para> | 282 | </para> |
@@ -237,7 +289,7 @@ following format: | |||
237 | </programlisting> | 289 | </programlisting> |
238 | 290 | ||
239 | </section> | 291 | </section> |
240 | <section id="video_navi_pack"> | 292 | <section id="video-navi-pack"> |
241 | <title>video NAVI pack</title> | 293 | <title>video NAVI pack</title> |
242 | <para>In order to get the navigational data the following structure has to be passed to the ioctl | 294 | <para>In order to get the navigational data the following structure has to be passed to the ioctl |
243 | VIDEO_GET_NAVI: | 295 | VIDEO_GET_NAVI: |
@@ -252,7 +304,7 @@ VIDEO_GET_NAVI: | |||
252 | </section> | 304 | </section> |
253 | 305 | ||
254 | 306 | ||
255 | <section id="video_attributes"> | 307 | <section id="video-attributes-t"> |
256 | <title>video attributes</title> | 308 | <title>video attributes</title> |
257 | <para>The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES: | 309 | <para>The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES: |
258 | </para> | 310 | </para> |
@@ -347,8 +399,7 @@ VIDEO_GET_NAVI: | |||
347 | <para>(blocking mode is the default)</para> | 399 | <para>(blocking mode is the default)</para> |
348 | </entry> | 400 | </entry> |
349 | </row></tbody></tgroup></informaltable> | 401 | </row></tbody></tgroup></informaltable> |
350 | <para>ERRORS | 402 | <para>RETURN VALUE</para> |
351 | </para> | ||
352 | <informaltable><tgroup cols="2"><tbody><row><entry | 403 | <informaltable><tgroup cols="2"><tbody><row><entry |
353 | align="char"> | 404 | align="char"> |
354 | <para>ENODEV</para> | 405 | <para>ENODEV</para> |
@@ -406,8 +457,7 @@ VIDEO_GET_NAVI: | |||
406 | <para>File descriptor returned by a previous call to open().</para> | 457 | <para>File descriptor returned by a previous call to open().</para> |
407 | </entry> | 458 | </entry> |
408 | </row></tbody></tgroup></informaltable> | 459 | </row></tbody></tgroup></informaltable> |
409 | <para>ERRORS | 460 | <para>RETURN VALUE</para> |
410 | </para> | ||
411 | <informaltable><tgroup cols="2"><tbody><row><entry | 461 | <informaltable><tgroup cols="2"><tbody><row><entry |
412 | align="char"> | 462 | align="char"> |
413 | <para>EBADF</para> | 463 | <para>EBADF</para> |
@@ -462,8 +512,7 @@ VIDEO_GET_NAVI: | |||
462 | <para>Size of buf.</para> | 512 | <para>Size of buf.</para> |
463 | </entry> | 513 | </entry> |
464 | </row></tbody></tgroup></informaltable> | 514 | </row></tbody></tgroup></informaltable> |
465 | <para>ERRORS | 515 | <para>RETURN VALUE</para> |
466 | </para> | ||
467 | <informaltable><tgroup cols="2"><tbody><row><entry | 516 | <informaltable><tgroup cols="2"><tbody><row><entry |
468 | align="char"> | 517 | align="char"> |
469 | <para>EPERM</para> | 518 | <para>EPERM</para> |
@@ -488,7 +537,7 @@ VIDEO_GET_NAVI: | |||
488 | </entry> | 537 | </entry> |
489 | </row></tbody></tgroup></informaltable> | 538 | </row></tbody></tgroup></informaltable> |
490 | 539 | ||
491 | </section><section | 540 | </section><section id="VIDEO_STOP" |
492 | role="subsection"><title>VIDEO_STOP</title> | 541 | role="subsection"><title>VIDEO_STOP</title> |
493 | <para>DESCRIPTION | 542 | <para>DESCRIPTION |
494 | </para> | 543 | </para> |
@@ -543,26 +592,9 @@ role="subsection"><title>VIDEO_STOP</title> | |||
543 | <para>FALSE: Show last decoded frame.</para> | 592 | <para>FALSE: Show last decoded frame.</para> |
544 | </entry> | 593 | </entry> |
545 | </row></tbody></tgroup></informaltable> | 594 | </row></tbody></tgroup></informaltable> |
546 | <para>ERRORS | 595 | &return-value-dvb; |
547 | </para> | ||
548 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
549 | align="char"> | ||
550 | <para>EBADF</para> | ||
551 | </entry><entry | ||
552 | align="char"> | ||
553 | <para>fd is not a valid open file descriptor</para> | ||
554 | </entry> | ||
555 | </row><row><entry | ||
556 | align="char"> | ||
557 | <para>EINTERNAL</para> | ||
558 | </entry><entry | ||
559 | align="char"> | ||
560 | <para>Internal error, possibly in the communication with the | ||
561 | DVB subsystem.</para> | ||
562 | </entry> | ||
563 | </row></tbody></tgroup></informaltable> | ||
564 | 596 | ||
565 | </section><section | 597 | </section><section id="VIDEO_PLAY" |
566 | role="subsection"><title>VIDEO_PLAY</title> | 598 | role="subsection"><title>VIDEO_PLAY</title> |
567 | <para>DESCRIPTION | 599 | <para>DESCRIPTION |
568 | </para> | 600 | </para> |
@@ -596,26 +628,9 @@ role="subsection"><title>VIDEO_PLAY</title> | |||
596 | <para>Equals VIDEO_PLAY for this command.</para> | 628 | <para>Equals VIDEO_PLAY for this command.</para> |
597 | </entry> | 629 | </entry> |
598 | </row></tbody></tgroup></informaltable> | 630 | </row></tbody></tgroup></informaltable> |
599 | <para>ERRORS | 631 | &return-value-dvb; |
600 | </para> | ||
601 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
602 | align="char"> | ||
603 | <para>EBADF</para> | ||
604 | </entry><entry | ||
605 | align="char"> | ||
606 | <para>fd is not a valid open file descriptor</para> | ||
607 | </entry> | ||
608 | </row><row><entry | ||
609 | align="char"> | ||
610 | <para>EINTERNAL</para> | ||
611 | </entry><entry | ||
612 | align="char"> | ||
613 | <para>Internal error, possibly in the communication with the | ||
614 | DVB subsystem.</para> | ||
615 | </entry> | ||
616 | </row></tbody></tgroup></informaltable> | ||
617 | 632 | ||
618 | </section><section | 633 | </section><section id="VIDEO_FREEZE" |
619 | role="subsection"><title>VIDEO_FREEZE</title> | 634 | role="subsection"><title>VIDEO_FREEZE</title> |
620 | <para>DESCRIPTION | 635 | <para>DESCRIPTION |
621 | </para> | 636 | </para> |
@@ -653,26 +668,9 @@ role="subsection"><title>VIDEO_FREEZE</title> | |||
653 | <para>Equals VIDEO_FREEZE for this command.</para> | 668 | <para>Equals VIDEO_FREEZE for this command.</para> |
654 | </entry> | 669 | </entry> |
655 | </row></tbody></tgroup></informaltable> | 670 | </row></tbody></tgroup></informaltable> |
656 | <para>ERRORS | 671 | &return-value-dvb; |
657 | </para> | ||
658 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
659 | align="char"> | ||
660 | <para>EBADF</para> | ||
661 | </entry><entry | ||
662 | align="char"> | ||
663 | <para>fd is not a valid open file descriptor</para> | ||
664 | </entry> | ||
665 | </row><row><entry | ||
666 | align="char"> | ||
667 | <para>EINTERNAL</para> | ||
668 | </entry><entry | ||
669 | align="char"> | ||
670 | <para>Internal error, possibly in the communication with the | ||
671 | DVB subsystem.</para> | ||
672 | </entry> | ||
673 | </row></tbody></tgroup></informaltable> | ||
674 | 672 | ||
675 | </section><section | 673 | </section><section id="VIDEO_CONTINUE" |
676 | role="subsection"><title>VIDEO_CONTINUE</title> | 674 | role="subsection"><title>VIDEO_CONTINUE</title> |
677 | <para>DESCRIPTION | 675 | <para>DESCRIPTION |
678 | </para> | 676 | </para> |
@@ -706,26 +704,9 @@ role="subsection"><title>VIDEO_CONTINUE</title> | |||
706 | <para>Equals VIDEO_CONTINUE for this command.</para> | 704 | <para>Equals VIDEO_CONTINUE for this command.</para> |
707 | </entry> | 705 | </entry> |
708 | </row></tbody></tgroup></informaltable> | 706 | </row></tbody></tgroup></informaltable> |
709 | <para>ERRORS | 707 | &return-value-dvb; |
710 | </para> | ||
711 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
712 | align="char"> | ||
713 | <para>EBADF</para> | ||
714 | </entry><entry | ||
715 | align="char"> | ||
716 | <para>fd is not a valid open file descriptor</para> | ||
717 | </entry> | ||
718 | </row><row><entry | ||
719 | align="char"> | ||
720 | <para>EINTERNAL</para> | ||
721 | </entry><entry | ||
722 | align="char"> | ||
723 | <para>Internal error, possibly in the communication with the | ||
724 | DVB subsystem.</para> | ||
725 | </entry> | ||
726 | </row></tbody></tgroup></informaltable> | ||
727 | 708 | ||
728 | </section><section | 709 | </section><section id="VIDEO_SELECT_SOURCE" |
729 | role="subsection"><title>VIDEO_SELECT_SOURCE</title> | 710 | role="subsection"><title>VIDEO_SELECT_SOURCE</title> |
730 | <para>DESCRIPTION | 711 | <para>DESCRIPTION |
731 | </para> | 712 | </para> |
@@ -769,26 +750,9 @@ role="subsection"><title>VIDEO_SELECT_SOURCE</title> | |||
769 | <para>Indicates which source shall be used for the Video stream.</para> | 750 | <para>Indicates which source shall be used for the Video stream.</para> |
770 | </entry> | 751 | </entry> |
771 | </row></tbody></tgroup></informaltable> | 752 | </row></tbody></tgroup></informaltable> |
772 | <para>ERRORS | 753 | &return-value-dvb; |
773 | </para> | ||
774 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
775 | align="char"> | ||
776 | <para>EBADF</para> | ||
777 | </entry><entry | ||
778 | align="char"> | ||
779 | <para>fd is not a valid open file descriptor</para> | ||
780 | </entry> | ||
781 | </row><row><entry | ||
782 | align="char"> | ||
783 | <para>EINTERNAL</para> | ||
784 | </entry><entry | ||
785 | align="char"> | ||
786 | <para>Internal error, possibly in the communication with the | ||
787 | DVB subsystem.</para> | ||
788 | </entry> | ||
789 | </row></tbody></tgroup></informaltable> | ||
790 | 754 | ||
791 | </section><section | 755 | </section><section id="VIDEO_SET_BLANK" |
792 | role="subsection"><title>VIDEO_SET_BLANK</title> | 756 | role="subsection"><title>VIDEO_SET_BLANK</title> |
793 | <para>DESCRIPTION | 757 | <para>DESCRIPTION |
794 | </para> | 758 | </para> |
@@ -835,33 +799,9 @@ role="subsection"><title>VIDEO_SET_BLANK</title> | |||
835 | <para>FALSE: Show last decoded frame.</para> | 799 | <para>FALSE: Show last decoded frame.</para> |
836 | </entry> | 800 | </entry> |
837 | </row></tbody></tgroup></informaltable> | 801 | </row></tbody></tgroup></informaltable> |
838 | <para>ERRORS | 802 | &return-value-dvb; |
839 | </para> | ||
840 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
841 | align="char"> | ||
842 | <para>EBADF</para> | ||
843 | </entry><entry | ||
844 | align="char"> | ||
845 | <para>fd is not a valid open file descriptor</para> | ||
846 | </entry> | ||
847 | </row><row><entry | ||
848 | align="char"> | ||
849 | <para>EINTERNAL</para> | ||
850 | </entry><entry | ||
851 | align="char"> | ||
852 | <para>Internal error, possibly in the communication with the | ||
853 | DVB subsystem.</para> | ||
854 | </entry> | ||
855 | </row><row><entry | ||
856 | align="char"> | ||
857 | <para>EINVAL</para> | ||
858 | </entry><entry | ||
859 | align="char"> | ||
860 | <para>Illegal input parameter</para> | ||
861 | </entry> | ||
862 | </row></tbody></tgroup></informaltable> | ||
863 | 803 | ||
864 | </section><section | 804 | </section><section id="VIDEO_GET_STATUS" |
865 | role="subsection"><title>VIDEO_GET_STATUS</title> | 805 | role="subsection"><title>VIDEO_GET_STATUS</title> |
866 | <para>DESCRIPTION | 806 | <para>DESCRIPTION |
867 | </para> | 807 | </para> |
@@ -903,33 +843,9 @@ role="subsection"><title>VIDEO_GET_STATUS</title> | |||
903 | <para>Returns the current status of the Video Device.</para> | 843 | <para>Returns the current status of the Video Device.</para> |
904 | </entry> | 844 | </entry> |
905 | </row></tbody></tgroup></informaltable> | 845 | </row></tbody></tgroup></informaltable> |
906 | <para>ERRORS | 846 | &return-value-dvb; |
907 | </para> | ||
908 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
909 | align="char"> | ||
910 | <para>EBADF</para> | ||
911 | </entry><entry | ||
912 | align="char"> | ||
913 | <para>fd is not a valid open file descriptor</para> | ||
914 | </entry> | ||
915 | </row><row><entry | ||
916 | align="char"> | ||
917 | <para>EINTERNAL</para> | ||
918 | </entry><entry | ||
919 | align="char"> | ||
920 | <para>Internal error, possibly in the communication with the | ||
921 | DVB subsystem.</para> | ||
922 | </entry> | ||
923 | </row><row><entry | ||
924 | align="char"> | ||
925 | <para>EFAULT</para> | ||
926 | </entry><entry | ||
927 | align="char"> | ||
928 | <para>status points to invalid address</para> | ||
929 | </entry> | ||
930 | </row></tbody></tgroup></informaltable> | ||
931 | 847 | ||
932 | </section><section | 848 | </section><section id="VIDEO_GET_EVENT" |
933 | role="subsection"><title>VIDEO_GET_EVENT</title> | 849 | role="subsection"><title>VIDEO_GET_EVENT</title> |
934 | <para>DESCRIPTION | 850 | <para>DESCRIPTION |
935 | </para> | 851 | </para> |
@@ -980,24 +896,9 @@ role="subsection"><title>VIDEO_GET_EVENT</title> | |||
980 | stored.</para> | 896 | stored.</para> |
981 | </entry> | 897 | </entry> |
982 | </row></tbody></tgroup></informaltable> | 898 | </row></tbody></tgroup></informaltable> |
983 | <para>ERRORS | 899 | &return-value-dvb; |
984 | </para> | ||
985 | <informaltable><tgroup cols="2"><tbody><row><entry | 900 | <informaltable><tgroup cols="2"><tbody><row><entry |
986 | align="char"> | 901 | align="char"> |
987 | <para>EBADF</para> | ||
988 | </entry><entry | ||
989 | align="char"> | ||
990 | <para>fd is not a valid open file descriptor</para> | ||
991 | </entry> | ||
992 | </row><row><entry | ||
993 | align="char"> | ||
994 | <para>EFAULT</para> | ||
995 | </entry><entry | ||
996 | align="char"> | ||
997 | <para>ev points to invalid address</para> | ||
998 | </entry> | ||
999 | </row><row><entry | ||
1000 | align="char"> | ||
1001 | <para>EWOULDBLOCK</para> | 902 | <para>EWOULDBLOCK</para> |
1002 | </entry><entry | 903 | </entry><entry |
1003 | align="char"> | 904 | align="char"> |
@@ -1009,16 +910,11 @@ role="subsection"><title>VIDEO_GET_EVENT</title> | |||
1009 | <para>EOVERFLOW</para> | 910 | <para>EOVERFLOW</para> |
1010 | </entry><entry | 911 | </entry><entry |
1011 | align="char"> | 912 | align="char"> |
1012 | </entry> | ||
1013 | </row><row><entry | ||
1014 | align="char"> | ||
1015 | </entry><entry | ||
1016 | align="char"> | ||
1017 | <para>Overflow in event queue - one or more events were lost.</para> | 913 | <para>Overflow in event queue - one or more events were lost.</para> |
1018 | </entry> | 914 | </entry> |
1019 | </row></tbody></tgroup></informaltable> | 915 | </row></tbody></tgroup></informaltable> |
1020 | 916 | ||
1021 | </section><section | 917 | </section><section id="VIDEO_SET_DISPLAY_FORMAT" |
1022 | role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title> | 918 | role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title> |
1023 | <para>DESCRIPTION | 919 | <para>DESCRIPTION |
1024 | </para> | 920 | </para> |
@@ -1063,32 +959,9 @@ role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title> | |||
1063 | <para>Selects the video format to be used.</para> | 959 | <para>Selects the video format to be used.</para> |
1064 | </entry> | 960 | </entry> |
1065 | </row></tbody></tgroup></informaltable> | 961 | </row></tbody></tgroup></informaltable> |
1066 | <para>ERRORS | 962 | &return-value-dvb; |
1067 | </para> | ||
1068 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1069 | align="char"> | ||
1070 | <para>EBADF</para> | ||
1071 | </entry><entry | ||
1072 | align="char"> | ||
1073 | <para>fd is not a valid open file descriptor</para> | ||
1074 | </entry> | ||
1075 | </row><row><entry | ||
1076 | align="char"> | ||
1077 | <para>EINTERNAL</para> | ||
1078 | </entry><entry | ||
1079 | align="char"> | ||
1080 | <para>Internal error.</para> | ||
1081 | </entry> | ||
1082 | </row><row><entry | ||
1083 | align="char"> | ||
1084 | <para>EINVAL</para> | ||
1085 | </entry><entry | ||
1086 | align="char"> | ||
1087 | <para>Illegal parameter format.</para> | ||
1088 | </entry> | ||
1089 | </row></tbody></tgroup></informaltable> | ||
1090 | 963 | ||
1091 | </section><section | 964 | </section><section id="VIDEO_STILLPICTURE" |
1092 | role="subsection"><title>VIDEO_STILLPICTURE</title> | 965 | role="subsection"><title>VIDEO_STILLPICTURE</title> |
1093 | <para>DESCRIPTION | 966 | <para>DESCRIPTION |
1094 | </para> | 967 | </para> |
@@ -1133,32 +1006,9 @@ role="subsection"><title>VIDEO_STILLPICTURE</title> | |||
1133 | <para>Pointer to a location where an I-frame and size is stored.</para> | 1006 | <para>Pointer to a location where an I-frame and size is stored.</para> |
1134 | </entry> | 1007 | </entry> |
1135 | </row></tbody></tgroup></informaltable> | 1008 | </row></tbody></tgroup></informaltable> |
1136 | <para>ERRORS | 1009 | &return-value-dvb; |
1137 | </para> | ||
1138 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1139 | align="char"> | ||
1140 | <para>EBADF</para> | ||
1141 | </entry><entry | ||
1142 | align="char"> | ||
1143 | <para>fd is not a valid open file descriptor</para> | ||
1144 | </entry> | ||
1145 | </row><row><entry | ||
1146 | align="char"> | ||
1147 | <para>EINTERNAL</para> | ||
1148 | </entry><entry | ||
1149 | align="char"> | ||
1150 | <para>Internal error.</para> | ||
1151 | </entry> | ||
1152 | </row><row><entry | ||
1153 | align="char"> | ||
1154 | <para>EFAULT</para> | ||
1155 | </entry><entry | ||
1156 | align="char"> | ||
1157 | <para>sp points to an invalid iframe.</para> | ||
1158 | </entry> | ||
1159 | </row></tbody></tgroup></informaltable> | ||
1160 | 1010 | ||
1161 | </section><section | 1011 | </section><section id="VIDEO_FAST_FORWARD" |
1162 | role="subsection"><title>VIDEO_FAST_FORWARD</title> | 1012 | role="subsection"><title>VIDEO_FAST_FORWARD</title> |
1163 | <para>DESCRIPTION | 1013 | <para>DESCRIPTION |
1164 | </para> | 1014 | </para> |
@@ -1200,39 +1050,17 @@ role="subsection"><title>VIDEO_FAST_FORWARD</title> | |||
1200 | <para>The number of frames to skip.</para> | 1050 | <para>The number of frames to skip.</para> |
1201 | </entry> | 1051 | </entry> |
1202 | </row></tbody></tgroup></informaltable> | 1052 | </row></tbody></tgroup></informaltable> |
1203 | <para>ERRORS | 1053 | &return-value-dvb; |
1204 | </para> | ||
1205 | <informaltable><tgroup cols="2"><tbody><row><entry | 1054 | <informaltable><tgroup cols="2"><tbody><row><entry |
1206 | align="char"> | 1055 | align="char"> |
1207 | <para>EBADF</para> | ||
1208 | </entry><entry | ||
1209 | align="char"> | ||
1210 | <para>fd is not a valid open file descriptor</para> | ||
1211 | </entry> | ||
1212 | </row><row><entry | ||
1213 | align="char"> | ||
1214 | <para>EINTERNAL</para> | ||
1215 | </entry><entry | ||
1216 | align="char"> | ||
1217 | <para>Internal error.</para> | ||
1218 | </entry> | ||
1219 | </row><row><entry | ||
1220 | align="char"> | ||
1221 | <para>EPERM</para> | 1056 | <para>EPERM</para> |
1222 | </entry><entry | 1057 | </entry><entry |
1223 | align="char"> | 1058 | align="char"> |
1224 | <para>Mode VIDEO_SOURCE_MEMORY not selected.</para> | 1059 | <para>Mode VIDEO_SOURCE_MEMORY not selected.</para> |
1225 | </entry> | 1060 | </entry> |
1226 | </row><row><entry | ||
1227 | align="char"> | ||
1228 | <para>EINVAL</para> | ||
1229 | </entry><entry | ||
1230 | align="char"> | ||
1231 | <para>Illegal parameter format.</para> | ||
1232 | </entry> | ||
1233 | </row></tbody></tgroup></informaltable> | 1061 | </row></tbody></tgroup></informaltable> |
1234 | 1062 | ||
1235 | </section><section | 1063 | </section><section id="VIDEO_SLOWMOTION" |
1236 | role="subsection"><title>VIDEO_SLOWMOTION</title> | 1064 | role="subsection"><title>VIDEO_SLOWMOTION</title> |
1237 | <para>DESCRIPTION | 1065 | <para>DESCRIPTION |
1238 | </para> | 1066 | </para> |
@@ -1274,39 +1102,17 @@ role="subsection"><title>VIDEO_SLOWMOTION</title> | |||
1274 | <para>The number of times to repeat each frame.</para> | 1102 | <para>The number of times to repeat each frame.</para> |
1275 | </entry> | 1103 | </entry> |
1276 | </row></tbody></tgroup></informaltable> | 1104 | </row></tbody></tgroup></informaltable> |
1277 | <para>ERRORS | 1105 | &return-value-dvb; |
1278 | </para> | ||
1279 | <informaltable><tgroup cols="2"><tbody><row><entry | 1106 | <informaltable><tgroup cols="2"><tbody><row><entry |
1280 | align="char"> | 1107 | align="char"> |
1281 | <para>EBADF</para> | ||
1282 | </entry><entry | ||
1283 | align="char"> | ||
1284 | <para>fd is not a valid open file descriptor</para> | ||
1285 | </entry> | ||
1286 | </row><row><entry | ||
1287 | align="char"> | ||
1288 | <para>EINTERNAL</para> | ||
1289 | </entry><entry | ||
1290 | align="char"> | ||
1291 | <para>Internal error.</para> | ||
1292 | </entry> | ||
1293 | </row><row><entry | ||
1294 | align="char"> | ||
1295 | <para>EPERM</para> | 1108 | <para>EPERM</para> |
1296 | </entry><entry | 1109 | </entry><entry |
1297 | align="char"> | 1110 | align="char"> |
1298 | <para>Mode VIDEO_SOURCE_MEMORY not selected.</para> | 1111 | <para>Mode VIDEO_SOURCE_MEMORY not selected.</para> |
1299 | </entry> | 1112 | </entry> |
1300 | </row><row><entry | ||
1301 | align="char"> | ||
1302 | <para>EINVAL</para> | ||
1303 | </entry><entry | ||
1304 | align="char"> | ||
1305 | <para>Illegal parameter format.</para> | ||
1306 | </entry> | ||
1307 | </row></tbody></tgroup></informaltable> | 1113 | </row></tbody></tgroup></informaltable> |
1308 | 1114 | ||
1309 | </section><section | 1115 | </section><section id="VIDEO_GET_CAPABILITIES" |
1310 | role="subsection"><title>VIDEO_GET_CAPABILITIES</title> | 1116 | role="subsection"><title>VIDEO_GET_CAPABILITIES</title> |
1311 | <para>DESCRIPTION | 1117 | <para>DESCRIPTION |
1312 | </para> | 1118 | </para> |
@@ -1350,25 +1156,9 @@ role="subsection"><title>VIDEO_GET_CAPABILITIES</title> | |||
1350 | information.</para> | 1156 | information.</para> |
1351 | </entry> | 1157 | </entry> |
1352 | </row></tbody></tgroup></informaltable> | 1158 | </row></tbody></tgroup></informaltable> |
1353 | <para>ERRORS | 1159 | &return-value-dvb; |
1354 | </para> | ||
1355 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1356 | align="char"> | ||
1357 | <para>EBADF</para> | ||
1358 | </entry><entry | ||
1359 | align="char"> | ||
1360 | <para>fd is not a valid open file descriptor</para> | ||
1361 | </entry> | ||
1362 | </row><row><entry | ||
1363 | align="char"> | ||
1364 | <para>EFAULT</para> | ||
1365 | </entry><entry | ||
1366 | align="char"> | ||
1367 | <para>cap points to an invalid iframe.</para> | ||
1368 | </entry> | ||
1369 | </row></tbody></tgroup></informaltable> | ||
1370 | 1160 | ||
1371 | </section><section | 1161 | </section><section id="VIDEO_SET_ID" |
1372 | role="subsection"><title>VIDEO_SET_ID</title> | 1162 | role="subsection"><title>VIDEO_SET_ID</title> |
1373 | <para>DESCRIPTION | 1163 | <para>DESCRIPTION |
1374 | </para> | 1164 | </para> |
@@ -1410,24 +1200,9 @@ role="subsection"><title>VIDEO_SET_ID</title> | |||
1410 | <para>video sub-stream id</para> | 1200 | <para>video sub-stream id</para> |
1411 | </entry> | 1201 | </entry> |
1412 | </row></tbody></tgroup></informaltable> | 1202 | </row></tbody></tgroup></informaltable> |
1413 | <para>ERRORS | 1203 | &return-value-dvb; |
1414 | </para> | ||
1415 | <informaltable><tgroup cols="2"><tbody><row><entry | 1204 | <informaltable><tgroup cols="2"><tbody><row><entry |
1416 | align="char"> | 1205 | align="char"> |
1417 | <para>EBADF</para> | ||
1418 | </entry><entry | ||
1419 | align="char"> | ||
1420 | <para>fd is not a valid open file descriptor.</para> | ||
1421 | </entry> | ||
1422 | </row><row><entry | ||
1423 | align="char"> | ||
1424 | <para>EINTERNAL</para> | ||
1425 | </entry><entry | ||
1426 | align="char"> | ||
1427 | <para>Internal error.</para> | ||
1428 | </entry> | ||
1429 | </row><row><entry | ||
1430 | align="char"> | ||
1431 | <para>EINVAL</para> | 1206 | <para>EINVAL</para> |
1432 | </entry><entry | 1207 | </entry><entry |
1433 | align="char"> | 1208 | align="char"> |
@@ -1435,7 +1210,7 @@ role="subsection"><title>VIDEO_SET_ID</title> | |||
1435 | </entry> | 1210 | </entry> |
1436 | </row></tbody></tgroup></informaltable> | 1211 | </row></tbody></tgroup></informaltable> |
1437 | 1212 | ||
1438 | </section><section | 1213 | </section><section id="VIDEO_CLEAR_BUFFER" |
1439 | role="subsection"><title>VIDEO_CLEAR_BUFFER</title> | 1214 | role="subsection"><title>VIDEO_CLEAR_BUFFER</title> |
1440 | <para>DESCRIPTION | 1215 | <para>DESCRIPTION |
1441 | </para> | 1216 | </para> |
@@ -1468,18 +1243,9 @@ role="subsection"><title>VIDEO_CLEAR_BUFFER</title> | |||
1468 | <para>Equals VIDEO_CLEAR_BUFFER for this command.</para> | 1243 | <para>Equals VIDEO_CLEAR_BUFFER for this command.</para> |
1469 | </entry> | 1244 | </entry> |
1470 | </row></tbody></tgroup></informaltable> | 1245 | </row></tbody></tgroup></informaltable> |
1471 | <para>ERRORS | 1246 | &return-value-dvb; |
1472 | </para> | ||
1473 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1474 | align="char"> | ||
1475 | <para>EBADF</para> | ||
1476 | </entry><entry | ||
1477 | align="char"> | ||
1478 | <para>fd is not a valid open file descriptor</para> | ||
1479 | </entry> | ||
1480 | </row></tbody></tgroup></informaltable> | ||
1481 | 1247 | ||
1482 | </section><section | 1248 | </section><section id="VIDEO_SET_STREAMTYPE" |
1483 | role="subsection"><title>VIDEO_SET_STREAMTYPE</title> | 1249 | role="subsection"><title>VIDEO_SET_STREAMTYPE</title> |
1484 | <para>DESCRIPTION | 1250 | <para>DESCRIPTION |
1485 | </para> | 1251 | </para> |
@@ -1522,25 +1288,9 @@ role="subsection"><title>VIDEO_SET_STREAMTYPE</title> | |||
1522 | <para>stream type</para> | 1288 | <para>stream type</para> |
1523 | </entry> | 1289 | </entry> |
1524 | </row></tbody></tgroup></informaltable> | 1290 | </row></tbody></tgroup></informaltable> |
1525 | <para>ERRORS | 1291 | &return-value-dvb; |
1526 | </para> | ||
1527 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1528 | align="char"> | ||
1529 | <para>EBADF</para> | ||
1530 | </entry><entry | ||
1531 | align="char"> | ||
1532 | <para>fd is not a valid open file descriptor</para> | ||
1533 | </entry> | ||
1534 | </row><row><entry | ||
1535 | align="char"> | ||
1536 | <para>EINVAL</para> | ||
1537 | </entry><entry | ||
1538 | align="char"> | ||
1539 | <para>type is not a valid or supported stream type.</para> | ||
1540 | </entry> | ||
1541 | </row></tbody></tgroup></informaltable> | ||
1542 | 1292 | ||
1543 | </section><section | 1293 | </section><section id="VIDEO_SET_FORMAT" |
1544 | role="subsection"><title>VIDEO_SET_FORMAT</title> | 1294 | role="subsection"><title>VIDEO_SET_FORMAT</title> |
1545 | <para>DESCRIPTION | 1295 | <para>DESCRIPTION |
1546 | </para> | 1296 | </para> |
@@ -1583,17 +1333,9 @@ role="subsection"><title>VIDEO_SET_FORMAT</title> | |||
1583 | <para>video format of TV as defined in section ??.</para> | 1333 | <para>video format of TV as defined in section ??.</para> |
1584 | </entry> | 1334 | </entry> |
1585 | </row></tbody></tgroup></informaltable> | 1335 | </row></tbody></tgroup></informaltable> |
1586 | <para>ERRORS | 1336 | &return-value-dvb; |
1587 | </para> | ||
1588 | <informaltable><tgroup cols="2"><tbody><row><entry | 1337 | <informaltable><tgroup cols="2"><tbody><row><entry |
1589 | align="char"> | 1338 | align="char"> |
1590 | <para>EBADF</para> | ||
1591 | </entry><entry | ||
1592 | align="char"> | ||
1593 | <para>fd is not a valid open file descriptor</para> | ||
1594 | </entry> | ||
1595 | </row><row><entry | ||
1596 | align="char"> | ||
1597 | <para>EINVAL</para> | 1339 | <para>EINVAL</para> |
1598 | </entry><entry | 1340 | </entry><entry |
1599 | align="char"> | 1341 | align="char"> |
@@ -1601,7 +1343,7 @@ role="subsection"><title>VIDEO_SET_FORMAT</title> | |||
1601 | </entry> | 1343 | </entry> |
1602 | </row></tbody></tgroup></informaltable> | 1344 | </row></tbody></tgroup></informaltable> |
1603 | 1345 | ||
1604 | </section><section | 1346 | </section><section id="VIDEO_SET_SYSTEM" |
1605 | role="subsection"><title>VIDEO_SET_SYSTEM</title> | 1347 | role="subsection"><title>VIDEO_SET_SYSTEM</title> |
1606 | <para>DESCRIPTION | 1348 | <para>DESCRIPTION |
1607 | </para> | 1349 | </para> |
@@ -1645,17 +1387,9 @@ role="subsection"><title>VIDEO_SET_SYSTEM</title> | |||
1645 | <para>video system of TV output.</para> | 1387 | <para>video system of TV output.</para> |
1646 | </entry> | 1388 | </entry> |
1647 | </row></tbody></tgroup></informaltable> | 1389 | </row></tbody></tgroup></informaltable> |
1648 | <para>ERRORS | 1390 | &return-value-dvb; |
1649 | </para> | ||
1650 | <informaltable><tgroup cols="2"><tbody><row><entry | 1391 | <informaltable><tgroup cols="2"><tbody><row><entry |
1651 | align="char"> | 1392 | align="char"> |
1652 | <para>EBADF</para> | ||
1653 | </entry><entry | ||
1654 | align="char"> | ||
1655 | <para>fd is not a valid open file descriptor</para> | ||
1656 | </entry> | ||
1657 | </row><row><entry | ||
1658 | align="char"> | ||
1659 | <para>EINVAL</para> | 1393 | <para>EINVAL</para> |
1660 | </entry><entry | 1394 | </entry><entry |
1661 | align="char"> | 1395 | align="char"> |
@@ -1663,7 +1397,7 @@ role="subsection"><title>VIDEO_SET_SYSTEM</title> | |||
1663 | </entry> | 1397 | </entry> |
1664 | </row></tbody></tgroup></informaltable> | 1398 | </row></tbody></tgroup></informaltable> |
1665 | 1399 | ||
1666 | </section><section | 1400 | </section><section id="VIDEO_SET_HIGHLIGHT" |
1667 | role="subsection"><title>VIDEO_SET_HIGHLIGHT</title> | 1401 | role="subsection"><title>VIDEO_SET_HIGHLIGHT</title> |
1668 | <para>DESCRIPTION | 1402 | <para>DESCRIPTION |
1669 | </para> | 1403 | </para> |
@@ -1705,25 +1439,9 @@ role="subsection"><title>VIDEO_SET_HIGHLIGHT</title> | |||
1705 | <para>SPU Highlight information according to section ??.</para> | 1439 | <para>SPU Highlight information according to section ??.</para> |
1706 | </entry> | 1440 | </entry> |
1707 | </row></tbody></tgroup></informaltable> | 1441 | </row></tbody></tgroup></informaltable> |
1708 | <para>ERRORS | 1442 | &return-value-dvb; |
1709 | </para> | ||
1710 | <informaltable><tgroup cols="2"><tbody><row><entry | ||
1711 | align="char"> | ||
1712 | <para>EBADF</para> | ||
1713 | </entry><entry | ||
1714 | align="char"> | ||
1715 | <para>fd is not a valid open file descriptor.</para> | ||
1716 | </entry> | ||
1717 | </row><row><entry | ||
1718 | align="char"> | ||
1719 | <para>EINVAL</para> | ||
1720 | </entry><entry | ||
1721 | align="char"> | ||
1722 | <para>input is not a valid highlight setting.</para> | ||
1723 | </entry> | ||
1724 | </row></tbody></tgroup></informaltable> | ||
1725 | 1443 | ||
1726 | </section><section | 1444 | </section><section id="VIDEO_SET_SPU" |
1727 | role="subsection"><title>VIDEO_SET_SPU</title> | 1445 | role="subsection"><title>VIDEO_SET_SPU</title> |
1728 | <para>DESCRIPTION | 1446 | <para>DESCRIPTION |
1729 | </para> | 1447 | </para> |
@@ -1766,17 +1484,9 @@ role="subsection"><title>VIDEO_SET_SPU</title> | |||
1766 | to section ??.</para> | 1484 | to section ??.</para> |
1767 | </entry> | 1485 | </entry> |
1768 | </row></tbody></tgroup></informaltable> | 1486 | </row></tbody></tgroup></informaltable> |
1769 | <para>ERRORS | 1487 | &return-value-dvb; |
1770 | </para> | ||
1771 | <informaltable><tgroup cols="2"><tbody><row><entry | 1488 | <informaltable><tgroup cols="2"><tbody><row><entry |
1772 | align="char"> | 1489 | align="char"> |
1773 | <para>EBADF</para> | ||
1774 | </entry><entry | ||
1775 | align="char"> | ||
1776 | <para>fd is not a valid open file descriptor</para> | ||
1777 | </entry> | ||
1778 | </row><row><entry | ||
1779 | align="char"> | ||
1780 | <para>EINVAL</para> | 1490 | <para>EINVAL</para> |
1781 | </entry><entry | 1491 | </entry><entry |
1782 | align="char"> | 1492 | align="char"> |
@@ -1785,7 +1495,7 @@ role="subsection"><title>VIDEO_SET_SPU</title> | |||
1785 | </entry> | 1495 | </entry> |
1786 | </row></tbody></tgroup></informaltable> | 1496 | </row></tbody></tgroup></informaltable> |
1787 | 1497 | ||
1788 | </section><section | 1498 | </section><section id="VIDEO_SET_SPU_PALETTE" |
1789 | role="subsection"><title>VIDEO_SET_SPU_PALETTE</title> | 1499 | role="subsection"><title>VIDEO_SET_SPU_PALETTE</title> |
1790 | <para>DESCRIPTION | 1500 | <para>DESCRIPTION |
1791 | </para> | 1501 | </para> |
@@ -1827,17 +1537,9 @@ role="subsection"><title>VIDEO_SET_SPU_PALETTE</title> | |||
1827 | <para>SPU palette according to section ??.</para> | 1537 | <para>SPU palette according to section ??.</para> |
1828 | </entry> | 1538 | </entry> |
1829 | </row></tbody></tgroup></informaltable> | 1539 | </row></tbody></tgroup></informaltable> |
1830 | <para>ERRORS | 1540 | &return-value-dvb; |
1831 | </para> | ||
1832 | <informaltable><tgroup cols="2"><tbody><row><entry | 1541 | <informaltable><tgroup cols="2"><tbody><row><entry |
1833 | align="char"> | 1542 | align="char"> |
1834 | <para>EBADF</para> | ||
1835 | </entry><entry | ||
1836 | align="char"> | ||
1837 | <para>fd is not a valid open file descriptor</para> | ||
1838 | </entry> | ||
1839 | </row><row><entry | ||
1840 | align="char"> | ||
1841 | <para>EINVAL</para> | 1543 | <para>EINVAL</para> |
1842 | </entry><entry | 1544 | </entry><entry |
1843 | align="char"> | 1545 | align="char"> |
@@ -1845,7 +1547,7 @@ role="subsection"><title>VIDEO_SET_SPU_PALETTE</title> | |||
1845 | </entry> | 1547 | </entry> |
1846 | </row></tbody></tgroup></informaltable> | 1548 | </row></tbody></tgroup></informaltable> |
1847 | 1549 | ||
1848 | </section><section | 1550 | </section><section id="VIDEO_GET_NAVI" |
1849 | role="subsection"><title>VIDEO_GET_NAVI</title> | 1551 | role="subsection"><title>VIDEO_GET_NAVI</title> |
1850 | <para>DESCRIPTION | 1552 | <para>DESCRIPTION |
1851 | </para> | 1553 | </para> |
@@ -1889,17 +1591,9 @@ role="subsection"><title>VIDEO_GET_NAVI</title> | |||
1889 | ??.</para> | 1591 | ??.</para> |
1890 | </entry> | 1592 | </entry> |
1891 | </row></tbody></tgroup></informaltable> | 1593 | </row></tbody></tgroup></informaltable> |
1892 | <para>ERRORS | 1594 | &return-value-dvb; |
1893 | </para> | ||
1894 | <informaltable><tgroup cols="2"><tbody><row><entry | 1595 | <informaltable><tgroup cols="2"><tbody><row><entry |
1895 | align="char"> | 1596 | align="char"> |
1896 | <para>EBADF</para> | ||
1897 | </entry><entry | ||
1898 | align="char"> | ||
1899 | <para>fd is not a valid open file descriptor</para> | ||
1900 | </entry> | ||
1901 | </row><row><entry | ||
1902 | align="char"> | ||
1903 | <para>EFAULT</para> | 1597 | <para>EFAULT</para> |
1904 | </entry><entry | 1598 | </entry><entry |
1905 | align="char"> | 1599 | align="char"> |
@@ -1907,7 +1601,7 @@ role="subsection"><title>VIDEO_GET_NAVI</title> | |||
1907 | </entry> | 1601 | </entry> |
1908 | </row></tbody></tgroup></informaltable> | 1602 | </row></tbody></tgroup></informaltable> |
1909 | 1603 | ||
1910 | </section><section | 1604 | </section><section id="VIDEO_SET_ATTRIBUTES" |
1911 | role="subsection"><title>VIDEO_SET_ATTRIBUTES</title> | 1605 | role="subsection"><title>VIDEO_SET_ATTRIBUTES</title> |
1912 | <para>DESCRIPTION | 1606 | <para>DESCRIPTION |
1913 | </para> | 1607 | </para> |
@@ -1951,17 +1645,9 @@ role="subsection"><title>VIDEO_SET_ATTRIBUTES</title> | |||
1951 | <para>video attributes according to section ??.</para> | 1645 | <para>video attributes according to section ??.</para> |
1952 | </entry> | 1646 | </entry> |
1953 | </row></tbody></tgroup></informaltable> | 1647 | </row></tbody></tgroup></informaltable> |
1954 | <para>ERRORS | 1648 | &return-value-dvb; |
1955 | </para> | ||
1956 | <informaltable><tgroup cols="2"><tbody><row><entry | 1649 | <informaltable><tgroup cols="2"><tbody><row><entry |
1957 | align="char"> | 1650 | align="char"> |
1958 | <para>EBADF</para> | ||
1959 | </entry><entry | ||
1960 | align="char"> | ||
1961 | <para>fd is not a valid open file descriptor</para> | ||
1962 | </entry> | ||
1963 | </row><row><entry | ||
1964 | align="char"> | ||
1965 | <para>EINVAL</para> | 1651 | <para>EINVAL</para> |
1966 | </entry><entry | 1652 | </entry><entry |
1967 | align="char"> | 1653 | align="char"> |
diff --git a/Documentation/DocBook/media/dvbstb.png.b64 b/Documentation/DocBook/media/dvbstb.png.b64 new file mode 100644 index 000000000000..e8b52fde3d11 --- /dev/null +++ b/Documentation/DocBook/media/dvbstb.png.b64 | |||
@@ -0,0 +1,398 @@ | |||
1 | iVBORw0KGgoAAAANSUhEUgAAAzMAAAGaCAYAAAA7Jx25AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI | ||
2 | WXMAAA3XAAANiQFmEOuiAAAgAElEQVR42uzdd1RU18I28GdgKFZUBE0saFA0KoqFFkEhKhbAQmxJ | ||
3 | bIkNNEpMEUwsMZarJMZrw4KxRExQczUqil0jRBA1GAjGQqLYC4TemdnfH76cj3HodYDntxaLmTll | ||
4 | zuw57Zmz9z4yIYQAkYZzcnJCSkoKGjZsyMIgIiIiquPS09PRoEEDyBhmqCaQyWRo06YN3nvvPRYG | ||
5 | ERERUR137Ngx/Pnnn5CzKKgmMDAwwKpVqxhmiIiIiAj29vZ4//33ocWiICIiIiKimohhhoiIiIiI | ||
6 | GGaIiIiIiIgYZoiIiIiIiBhmiIiIiIiIYYaIiIiIiIhhhoiIiIiIiGGGiIiIiIgYZoiIiIiIiBhm | ||
7 | iIiIiIiIGGaIiIiIiIgYZoiIiIiIiGGGiIiIiIiIYYaIiIiIiIhhhoiIiIiIGGaIiIiIiIgYZoiI | ||
8 | iIiIiBhmiIiIiIiIYYaIiIiIiIhhhoiIiIiIqFLIWQRElSMsLAy2trZo1KgR5HJualTxEhIS8P33 | ||
9 | 3+PDDz+sM5+5bdu2ePDgAZo2bcoVgCplm3J0dMS5c+fqzGf++uuvsWTJEm5TVClSU1ORk5ODBw8e | ||
10 | oHXr1gwzRDVJbm4uAGDRokUwMDBggVCFmzlzJrKysurUZ3727BksLCzg4eHBFYAq3IIFC5CQkFCn | ||
11 | PnNGRgYAYNWqVVwBqMJFRUVh48aNUCqVlfYeDDNElWzGjBkMM1QpNm7cWOc+c8uWLTFjxgzMmDGD | ||
12 | KwBVuLt37yIkJKTOfW5nZ2duU1SpYaYysc0MERERERHVSAwzRERERETEMENERERERMQwQ0RERERE | ||
13 | xDBDREREREQMM0RERERERAwzREREREREDDNERERERMQwQ0RERERExDBDRERERETEMENERERERMQw | ||
14 | Q0REREREDDNEREREREQMM0RERERERAwzRERERETEMENERERERMQwQ0RERERExDBDREREREQMM0RE | ||
15 | RERERAwzREREREREDDNEREREREQMM0RERERExDBDRERERETEMENERERERMQwQ0REREREDDNERERE | ||
16 | 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 | ||
366 | q6+vj5dffjmef/75+Nvf/habNm2K/fv3RyqViuzs7KitrT3lNllZWZGXlxe///3vY+zYsWfc9s9+ | ||
367 | 9rOYN29es0By9AXEDABAm/nPf/4TL7zwQmzZsiU2bdoUr776atTX10fnzp2jtra22VGWX/3qV3HX | ||
368 | XXedso377rsvFi5cGBHvnua5sbHR0RcQMwAAF1ZdXV288sorsXXr1ti8eXOUlpbGgQMHmr7+pS99 | ||
369 | KdavXx9ZWe+ek2natGnx61//OiIi+vfvH1/5ylccfQExAwBcKPv27Ys//vGPFuIMDh8+HP/617/i | ||
370 | 6aefjoaGhujbt2/ccccdsX79+vj3v/8dH/rQh2L06NHRrVs3i3UWI0eOjE996lMWQsyIGQCg9ZSW | ||
371 | lsZ1110XvXr1ii5duliQczj5N2mysrKaTqfM2e3evTuWL18e06ZNsxgdXMoSAABt4fXXX4+ioiIL | ||
372 | QasbPHiwRSAi/NFMAABAzAAAAIgZAAAAMQMAAIgZAAAAMQMAACBmAAAAMQMAACBmAAAAxAwAAICY | ||
373 | AQAAxAwAAICYAQAAEDMAAICYAQAAEDMAAABiBgAAEDMAAABiBgAAQMwAAACIGQAAQMwAAACIGQAA | ||
374 | ADEDAACIGQAAADEDAAAgZgAAADEDAAAgZgAAAMQMAACAmAEAANqBlCUAADh/VVVVsXfv3vP7wSyV | ||
375 | ik9+8pOxf//+OHjw4BmvV1xcHB/5yEdO+XySJPHaa6+d9jYDBgyILl262FGIGQAAmvvLX/4St9xy | ||
376 | y3lto2fPnrF///7YvXt3rFy5Mh5++OFIkqTp6yUlJTFx4sQYNWrUGWPmz3/+c2zZsiWefPLJiIgo | ||
377 | KiqK6dOnx4wZM8QMYgYAgFPV1NRERETv3r1jwYIF8dnPfjYuu+yySKVSUVpaGpMmTYqIiI997GPx | ||
378 | 3HPPRZIkcfz48XjrrbfiySefjGXLljVtY8SIETFixIi44oorYt68eU3f44c//GFMnDjxjPchKysr | ||
379 | 7rnnnrjnnnti4MCBsWPHjnj88cdjzJgxdhBiBgCA06uuro6cnJz461//GiUlJc2+1qNHj6aPc3Jy | ||
380 | ok+fPk2XL7/88hg9enRceumlsXjx4ma3mz17djz00EOxc+fOiIgoLS09a8yclCRJVFRUxMiRI4UM | ||
381 | 7ZoTAAAAtIKampoYP378KSHTUjNmzIjGxsZoaGho+lwqlYqFCxc2XX7kkUfi2LFj59zWCy+8EAcO | ||
382 | HIgZM2bYMYgZAADOHTPjxo37wLe/7LLLYtiwYXH8+PFmn7/llluiX79+ERFx5MiR+O1vf3vOba1e | ||
383 | vTq6d+8eEyZMsGMQMwAAnN28efNiypQp57WNLVu2REFBQbPPpVKpmDVrVtPln//8582O3vyvo0eP | ||
384 | xqOPPhpTpkyJvLw8OwYxAwDAOX6oysqKTp06ndc2srOzT7uNb37zm1FUVBQREW+88UbTmcpO59FH | ||
385 | H41jx47Ft771LTsFMQMAwMVVWFgYU6dObbp8//33n/Z6SZLEihUrYtSoUR94dgfEDAAArWrmzJmR | ||
386 | Sr17ItotW7bE888/f8p1XnrppXjllVeahQ+IGQAALqo+ffrEbbfd1nT5dEdnVqxYEcXFxfHVr37V | ||
387 | giFmAABIH3PmzGn6+Iknnog9e/Y0Xa6qqorHHnssJk+eHJ07d7ZYiBkAANLH0KFD4/rrr4+IiMbG | ||
388 | xnjggQeavmbwHzEDAEBamzt3btPHK1eujKqqqqbB/xEjRsSnP/1pi4SYAQAg/dxwww1NZyo7evRo | ||
389 | rFq1KrZt2xZlZWUG/xEzAACk8Q9vWVnNZmeWLVsWDz74YFxyySVx6623WiDEDAAA6Wvy5MnRvXv3 | ||
390 | iIjYu3dvrFmzJu64447o0qWLxUHMAADQehobG1t1e/n5+TF9+vRmnzP4j5gBAKDVvfPOO00f19TU | ||
391 | tMo2p0+fHnl5eRERMWzYsPjMZz5joREzAAC0rmeeeabp471798aOHTvOe5u9evWKyZMnR0QY/EfM | ||
392 | AADQeg4dOhRTpkyJIUOGxIoVK5p97eqrr44bb7wxfvKTn5zX95gzZ04UFhbGxIkTLTgdUsoSAAC0 | ||
393 | vm7dusWaNWva9HtcccUVsWnTpigsLLTgdEiOzAAAZLChQ4daBMQMAACAmAEAABAzAAAAYgYAABAz | ||
394 | AAAAYgYAAEDMAAAAYgYAAEDMAAAAiBkAAEDMAAAAiBkAAAAxAwAAIGYAAAAxAwAAIGYAAADEDAAA | ||
395 | IGYAAADEDAAAgJgBAADEjCUAAADEDAAAgJgBAAAQMwAAgJgBAAAQMwAAAGIGAAAQMwAAAGIGAABA | ||
396 | zAAAAIgZAABAzAAAAIgZAAAAMQMAAIgZAACA9JCyBABAW+jVq1cUFBRYCFpdZWWlRSAiIjolSZJY | ||
397 | BgCgtVRUVMTGjRstBG1q6NCh8fGPf9xCiBkxAwAAZB4zMwAAQEZKvb79xaYLJYOutiIAAEBGcGQG | ||
398 | AADISP8FpxZnWS0U37cAAAAASUVORK5CYII= | ||
diff --git a/Documentation/DocBook/media/fieldseq_bt.gif.b64 b/Documentation/DocBook/media/fieldseq_bt.gif.b64 new file mode 100644 index 000000000000..b5b557b88158 --- /dev/null +++ b/Documentation/DocBook/media/fieldseq_bt.gif.b64 | |||
@@ -0,0 +1,447 @@ | |||
1 | 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 | ||
447 | l3O5NwEBADs= | ||
diff --git a/Documentation/DocBook/media/fieldseq_tb.gif.b64 b/Documentation/DocBook/media/fieldseq_tb.gif.b64 new file mode 100644 index 000000000000..7b4c1766b407 --- /dev/null +++ b/Documentation/DocBook/media/fieldseq_tb.gif.b64 | |||
@@ -0,0 +1,445 @@ | |||
1 | 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 | ||
445 | kh6JXympkivJkm4TEAA7 | ||
diff --git a/Documentation/DocBook/media/nv12mt.gif.b64 b/Documentation/DocBook/media/nv12mt.gif.b64 new file mode 100644 index 000000000000..083a7c85d107 --- /dev/null +++ b/Documentation/DocBook/media/nv12mt.gif.b64 | |||
@@ -0,0 +1,37 @@ | |||
1 | R0lGODlhFgFnAMZnAAAAAAYCAgAASAwFBQAAdEgAACQODkgASCoQEEgAdHQAADATEjUVFHQASDsX | ||
2 | F3QAdE0eHVMhIABISABInEhIAIM0Mok2NI84Nk9PT5o9O5xIAHRInFlZWaxEQbhJRgB0v75LSLhQ | ||
3 | TbRTUcBRTrBXVatcWsJWVKdfXW9vb6VhX0h0v8RcWZhpaJJubpBwb8ZiX8ZiYI5zc4t1dYd4eMhn | ||
4 | Zb90AIN8fH9/f8pracpta8ttasxzcM51dM52dM53dc94dkic39F+fNOEgpmZmdWJh9ePjdiTkt+c | ||
5 | SNuamd2gnt6lo3S//5y/nOCqqeKwr+S1tOa7uv+/dOjBwOrGxuzKye3KyuzMy5zf/7/fnO/S0fHX | ||
6 | 1//fnPPd3fTe3vXj4vfo6Pnu7r////v09N////35+f//v///3/////////////////////////// | ||
7 | /////////////////////////////////////////////////////////////////////////yH+ | ||
8 | FE5WMTJNVCBtZW1vcnkgbGF5b3V0ACwAAAAAFgFnAAAH/oBngoOEhYaHiImKi4yNjo+QkZKTlJWW | ||
9 | l5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGmkM3ysvMzc7P | ||
10 | 0NHS0CjT1tfY19XZ3N3Y297h4sxDlQDj6OLn6ezZ6+3w0u/x9M0A5r/3vvq9/Lz+kQDqEpiLIC6D | ||
11 | txAyUliLIS2HsyDKkniIIiyLrzC60tiKoyCPq0CqEpmKJCqQJk+lNLWyVEtSKPPJ3Ddz0stRN0Xl | ||
12 | DLUTVEyaQPvVlNTzU1FPRzsl5fRTaNB/QwNGHTi1IL6nu5Zu0qqpKVSsVME+4pqJLCazl9Ba8oqp | ||
13 | jAIA/gTCIOXkVsAVo52OAABgV6kmMxr2Cgbil9LLGh/OIJ6r6QgBLAfuMm48YYzPT1siF7a5qUyD | ||
14 | u1HibtaUWfLoS55NT+a0+DSklqXPxK5EJkuhm7NdV8pMYW9i3YJsT8q99Wqm2MQn/cihZRBuzasv | ||
15 | RenrdgnwM8uFQzpSOfrrTcihW5KyogiYM89VF9cUWq7i3+sRTVlB5Lyj6ngNd/58pn0mMUmY4ER6 | ||
16 | +R2nGWCEMbUIGQE2QUYj3Fnm3VibIPgeJ178kEFz4Imn4F8aEJbcWY18EcQLViziVoITOvLSFgXA | ||
17 | 5R4iVvxg44045oijByAU0QMIQAYppJAwPHhIFILx/qUeieDFCIB1igjBg45U4nhBlVSaAEIQYiTi | ||
18 | 2IzXLbTKF1mUaeaZaJr5RAc5aKeIFStw0RErVehARZp4mrlAnmlCscILU8yp3y5iILECBI7AKaeg | ||
19 | q3DxQ5cuMgLgCg5uZBwuTpiAhBgQKZqRK45CKqYiftZ30aW1WEFDEF58xIinn4L6aCMIabHDDhye | ||
20 | OqgtYgSRonOLwBqrrKImglAQUjyEalg0xjlRLKEuotayFIoliLC6whKtsVVFai222Wo7KyLT7kpU | ||
21 | VeCGK26xhJTLmblZGZKuuutW1C2tUc1Lb7233TuqU9c6m9At2wJrLb68JEEGP/rG4u4iBaPnr7S8 | ||
22 | /ohhgsRnNOxwLgU/LJVh9YR8Qwsl3HCOCyHIIDI986yMjgwkzKBMyy63g1LN8JzAgskoq4wzOzT/ | ||
23 | 3E0MIIiQggM2CG0ztbW88MUZDAgc7y5aFlHBCDsk4ebA8NryxQsZd7DoV7oIQcQKBpyhRRM/jOCE | ||
24 | VV3X8kQRcKYtCBnsNsQLFHSLPQjecL+bi9lxApCFEjuM0ASzuXwNtdSMf5yLlkQEAcIOSmzN9S5O | ||
25 | A6Dxs3HPogUIOSBhRQATy1LEE/d8vq+3t5BhhH0YA6zLFELo47qlocNChhC/unowLRYzDLnevbvy | ||
26 | e/DC265LEqgPsntITCsPvCEef4fV9CVVz8ry/vYOjzwh3KvkvSrgh+985AGPDbrgvl9PbuoRNev+ | ||
27 | 6wjHzzz29L8v7/G8g18r0sct8SkrEeXTyfkigaS9sIgRBCwge/bSlzBNAjAV/BACAXgIGAmmOxo8 | ||
28 | lybK8AC5TGdJh4igBAuhOUaUYQOWqQEIMVGb2jVGAh6iRA0N9iYOFmJE8RFhJ/CzIPn9qxDZoYR/ | ||
29 | NLEcBNClAUzIISWWw6FO+XAQQOzKAocjxUKoUBEImY+pIAEY+GhCCh0wT2OAkEVJkMc8EtGYB/cC | ||
30 | pRBKjjVmTKER85fCBhlpEQ2c4SYGEKC3XWILCQhDGyUBIBNE4BG7O0IGtZg8SkRIEV+k2CJM/oSi | ||
31 | R0gShWs5Q4aYY4kaiKiLlvDCBUjZCNcRMYh3zMSXFuEDHGAJS1e65Y20xKVGvPJNurTSjUbQox8N | ||
32 | 6ZhAosEf3ZIkADxQXsHU0QWI6SNkIrNIKlJAHSkpwEvIUEKK6AKfxrmncZbJT4BSxBZUIIgTlsic | ||
33 | ZyrnE1bQJkws8gxkgieaIEDPFkaiBlCapR21dxwn7UWQTErEpCqlCMBQEJRrKdQKnkAaVFKiUB2g | ||
34 | aEEPCk5YEpRshygV7VwRAU3lbRaZQsIA+qc+kBLCVriKhaos0CpcqIpVNpxaNwNXCGTJoldWyJ5C | ||
35 | fcVDl35Up0blKVJjyT6lNvUgW/TfUp+6jzkhJhWqBqxfJQ+4Pqd6FXZXrepUv8rHsWK1q2e1qlnF | ||
36 | SlVbsKWt4wurW6O6saxKFa5gZCn+5mrXiijNZn8FWmDTEbTBuqMSHDDsODCgWHEwtrHeeCxkucGB | ||
37 | Y1j2spjNrGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM3tLQIBADs= | ||
diff --git a/Documentation/DocBook/media/nv12mt_example.gif.b64 b/Documentation/DocBook/media/nv12mt_example.gif.b64 new file mode 100644 index 000000000000..a512078c7f24 --- /dev/null +++ b/Documentation/DocBook/media/nv12mt_example.gif.b64 | |||
@@ -0,0 +1,121 @@ | |||
1 | R0lGODlhoAHkAOe1AAAAAAAASAAAdEgAAEgASEgAdBgYGHQAABoaGnQASHQAdC0eHigoKEIlJEYm | ||
2 | JS4uLlssKzY2NgBISFIyMQBInEBAQEhBQUhIAFBBQVhCQkhISF5DQ2NDQmdDQ3NEQ05OToNGRHhJ | ||
3 | SJxIAItHRY9HRXRInJdIRlpaWppLSaJJRqpJR7BIRa5KR2NfX7JKR2BgYGxdXWleXmZfX31ZWXJc | ||
4 | XHpaWQB0v29dXLZKSHhbWolXVpVUU5JVU55SUJhUUqdQTrpLSK9OTKRRT6FSULRNS7hMSrVNSr5L | ||
5 | SL9MSr1OS7xQTsBRTrtTUL5WU7lYVsJWVEh0v7deW4pqab5dW8RcWbdgXrZjYcZgXnd3d8ZiX8Zi | ||
6 | YL9lY7RoZshnZb90ALJubLFwb8prabBzccpta79wbsttaqx6ecxzcKt8e4aGhr93dc10cs51dM52 | ||
7 | dImJib97ec53dc94dqiEhKeHhkic39F+fKeKiaWPj9OEgqSSkb6PjtWJh5qamqGamqCcnNePjZ+f | ||
8 | n9iTkr6amtiUktmVk9+cSL6enduamb+jo92gnr+pqd6lo7Ozs7+wsHS//7W1tZy/nOCqqbm5ub+4 | ||
9 | uOKwr+S1tL+/v9+/dOa7uv+/dOjBwOrGxuzKye3KyuzMy5zf/7/fnO/S0d/fnPHX1+Dg4P/fnPPd | ||
10 | 3fTe3vXj4vfo6L//v+/v7/nu7r///9//v/v09N//39////35+f//v///3/////////////////// | ||
11 | //////////////////////////////////////////////////////////////////////////// | ||
12 | //////////////////////////////////////////////////////////////////////////// | ||
13 | //////////////////////////////////////////////////////////////////////////// | ||
14 | /////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH | ||
15 | SU1QACwAAAAAoAHkAAAI/gBrCRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJ | ||
16 | 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 | ||
121 | XnvvxTdfffflt19//+03IAA7 | ||
diff --git a/Documentation/DocBook/media/pipeline.png.b64 b/Documentation/DocBook/media/pipeline.png.b64 new file mode 100644 index 000000000000..97d9ac007473 --- /dev/null +++ b/Documentation/DocBook/media/pipeline.png.b64 | |||
@@ -0,0 +1,213 @@ | |||
1 | iVBORw0KGgoAAAANSUhEUgAAAlgAAAEcCAMAAAAsmToJAAAAAXNSR0IArs4c6QAAAwBQTFRFAAEA | ||
2 | EAEBAwUBCgMBCAUKAgkMHQIDCwYXFQYDBgkVDwgFCAsHChASJwkDFA4NEg4TDhANHgwHDg8aExAG | ||
3 | DBEjBBUZERMQCBNRDxU0ExcZFRgVFRcgCRkzHBcUDRdCNRELIxYTAx4mLBUMEBwcEhsiDxwhExsu | ||
4 | Dh8XJRkQByAtDCMUHx4bACk0DSsiGScsFCRcJSUiGSZCDiwqGCg1LyQbIycpVhsPDy0wNyQVECxA | ||
5 | PSIfCS84ADJCEStWRiIULSwpADdHCDkgEy1/BjorEjhADDhXCzZvITNPUysQDzs8MjIvCj04BT1O | ||
6 | PDEoQjEhMDU3LzY9KTdFTTMYNzk2GD6PAEpfEUVjBExFCEpPB1ArK0FjKEVZYTscdDYXG0d5SkA5 | ||
7 | FEiJQUNAOURPAFhCA1RpP0ZJVEMvYUAyBFtRWkYnDlR+QEleAF1jkTojHlV1AGB4PlN5YU87cUws | ||
8 | SVRXAGaBWVJKUlRRRVZlAG1PWFNSBGt5AmqVAG+NAHNpK17BWl9ifFs9KWmnSGZ0YGFfp1IuCnWj | ||
9 | AHuKbWBXoVNAdGBPDniWAHujTWmLk14rAH+ch19XX2aRX2t8AIeLiWgvAIeeAIaqa21rOnehdW1m | ||
10 | AImspWJYj2tLW3C0AIyvWXaNAo6xb3Z5dXZzent4WIKiQojAen+CkX1pcoSWcYDOoH9fp4E+Y4ur | ||
11 | hoWCXIvGb4mut3xpqYNYnYdUO5rDyXxdjY6LYJqk0IRGb5azXZnMjJGUgJWqpJB8l5aUyJN4kKK1 | ||
12 | rZ6IYqzge6Xho6GdnaWpgqy6yZ9zvaR0hqzMk6rN5Jxxw6mF26lbq7C2pLTGwrCbs7Owvb+8zcGc | ||
13 | 8rp42L2xsMbY3L+jtMfsz8W2nM/yx8jH0MfA7MWU78h/3crIyNTo4NLD6dK1z9bc1dbT3NXOv9vr | ||
14 | /OKSwur8++Gw4uTh0ef78uPU+OPL3Ojz++bGyfH36evo/+3b6vT88vPw/feu1/v+//bb//nK/PnW | ||
15 | 5f/+//ro+fv49/7///37//71//3//v/8sZeTnQAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAFY4AABWO | ||
16 | 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 | ||
diff --git a/Documentation/DocBook/v4l/.gitignore b/Documentation/DocBook/media/v4l/.gitignore index d7ec32eafac9..d7ec32eafac9 100644 --- a/Documentation/DocBook/v4l/.gitignore +++ b/Documentation/DocBook/media/v4l/.gitignore | |||
diff --git a/Documentation/DocBook/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml index afc8a0dd2601..afc8a0dd2601 100644 --- a/Documentation/DocBook/v4l/biblio.xml +++ b/Documentation/DocBook/media/v4l/biblio.xml | |||
diff --git a/Documentation/DocBook/v4l/capture.c.xml b/Documentation/DocBook/media/v4l/capture.c.xml index 1c5c49a2de59..1c5c49a2de59 100644 --- a/Documentation/DocBook/v4l/capture.c.xml +++ b/Documentation/DocBook/media/v4l/capture.c.xml | |||
diff --git a/Documentation/DocBook/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml index 9028721438dc..a86f7a045529 100644 --- a/Documentation/DocBook/v4l/common.xml +++ b/Documentation/DocBook/media/v4l/common.xml | |||
@@ -236,7 +236,15 @@ important parts of the API.</para> | |||
236 | <para>The &VIDIOC-QUERYCAP; ioctl is available to check if the kernel | 236 | <para>The &VIDIOC-QUERYCAP; ioctl is available to check if the kernel |
237 | device is compatible with this specification, and to query the <link | 237 | device is compatible with this specification, and to query the <link |
238 | linkend="devices">functions</link> and <link linkend="io">I/O | 238 | linkend="devices">functions</link> and <link linkend="io">I/O |
239 | methods</link> supported by the device. Other features can be queried | 239 | methods</link> supported by the device.</para> |
240 | |||
241 | <para>Starting with kernel version 3.1, VIDIOC-QUERYCAP will return the | ||
242 | V4L2 API version used by the driver, with generally matches the Kernel version. | ||
243 | There's no need of using &VIDIOC-QUERYCAP; to check if an specific ioctl is | ||
244 | supported, the V4L2 core now returns ENOIOCTLCMD if a driver doesn't provide | ||
245 | support for an ioctl.</para> | ||
246 | |||
247 | <para>Other features can be queried | ||
240 | by calling the respective ioctl, for example &VIDIOC-ENUMINPUT; | 248 | by calling the respective ioctl, for example &VIDIOC-ENUMINPUT; |
241 | to learn about the number, types and names of video connectors on the | 249 | to learn about the number, types and names of video connectors on the |
242 | device. Although abstraction is a major objective of this API, the | 250 | device. Although abstraction is a major objective of this API, the |
diff --git a/Documentation/DocBook/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml index 9f7cd4f25792..ce1004a7da52 100644 --- a/Documentation/DocBook/v4l/compat.xml +++ b/Documentation/DocBook/media/v4l/compat.xml | |||
@@ -10,12 +10,10 @@ driver writers to port or update their code.</para> | |||
10 | <para>The Video For Linux API was first introduced in Linux 2.1 to | 10 | <para>The Video For Linux API was first introduced in Linux 2.1 to |
11 | unify and replace various TV and radio device related interfaces, | 11 | unify and replace various TV and radio device related interfaces, |
12 | developed independently by driver writers in prior years. Starting | 12 | developed independently by driver writers in prior years. Starting |
13 | with Linux 2.5 the much improved V4L2 API replaces the V4L API, | 13 | with Linux 2.5 the much improved V4L2 API replaces the V4L API. |
14 | although existing drivers will continue to support V4L applications in | 14 | The support for the old V4L calls were removed from Kernel, but the |
15 | the future, either directly or through the V4L2 compatibility layer in | 15 | library <xref linkend="libv4l" /> supports the conversion of a V4L |
16 | the <filename>videodev</filename> kernel module translating ioctls on | 16 | API system call into a V4L2 one.</para> |
17 | the fly. For a transition period not all drivers will support the V4L2 | ||
18 | API.</para> | ||
19 | 17 | ||
20 | <section> | 18 | <section> |
21 | <title>Opening and Closing Devices</title> | 19 | <title>Opening and Closing Devices</title> |
@@ -84,12 +82,7 @@ not compatible with V4L or V4L2.</para> </footnote>, | |||
84 | device file. V4L2 drivers <emphasis>may</emphasis> support multiple | 82 | device file. V4L2 drivers <emphasis>may</emphasis> support multiple |
85 | opens, see <xref linkend="open" /> for details and consequences.</para> | 83 | opens, see <xref linkend="open" /> for details and consequences.</para> |
86 | 84 | ||
87 | <para>V4L drivers respond to V4L2 ioctls with an &EINVAL;. The | 85 | <para>V4L drivers respond to V4L2 ioctls with an &EINVAL;.</para> |
88 | compatibility layer in the V4L2 <filename>videodev</filename> module | ||
89 | can translate V4L ioctl requests to their V4L2 counterpart, however a | ||
90 | V4L2 driver usually needs more preparation to become fully V4L | ||
91 | compatible. This is covered in more detail in <xref | ||
92 | linkend="driver" />.</para> | ||
93 | </section> | 86 | </section> |
94 | 87 | ||
95 | <section> | 88 | <section> |
@@ -2367,6 +2360,16 @@ that used it. It was originally scheduled for removal in 2.6.35. | |||
2367 | </listitem> | 2360 | </listitem> |
2368 | </orderedlist> | 2361 | </orderedlist> |
2369 | </section> | 2362 | </section> |
2363 | <section> | ||
2364 | <title>V4L2 in Linux 3.1</title> | ||
2365 | <orderedlist> | ||
2366 | <listitem> | ||
2367 | <para>VIDIOC_QUERYCAP now returns a per-subsystem version instead of a per-driver one.</para> | ||
2368 | <para>Standardize an error code for invalid ioctl.</para> | ||
2369 | <para>Added V4L2_CTRL_TYPE_BITMASK.</para> | ||
2370 | </listitem> | ||
2371 | </orderedlist> | ||
2372 | </section> | ||
2370 | 2373 | ||
2371 | <section id="other"> | 2374 | <section id="other"> |
2372 | <title>Relation of V4L2 to other Linux multimedia APIs</title> | 2375 | <title>Relation of V4L2 to other Linux multimedia APIs</title> |
@@ -2472,6 +2475,9 @@ ioctls.</para> | |||
2472 | <listitem> | 2475 | <listitem> |
2473 | <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> | 2476 | <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> |
2474 | </listitem> | 2477 | </listitem> |
2478 | <listitem> | ||
2479 | <para>Flash API. <xref linkend="flash-controls" /></para> | ||
2480 | </listitem> | ||
2475 | </itemizedlist> | 2481 | </itemizedlist> |
2476 | </section> | 2482 | </section> |
2477 | 2483 | ||
diff --git a/Documentation/DocBook/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index a920ee80f640..23fdf79f8cf3 100644 --- a/Documentation/DocBook/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -51,6 +51,10 @@ readability until any ioctl (querying the properties) is | |||
51 | called.</para> | 51 | called.</para> |
52 | </footnote></para> | 52 | </footnote></para> |
53 | 53 | ||
54 | <para> | ||
55 | All controls use machine endianness. | ||
56 | </para> | ||
57 | |||
54 | <table pgwide="1" frame="none" id="control-id"> | 58 | <table pgwide="1" frame="none" id="control-id"> |
55 | <title>Control IDs</title> | 59 | <title>Control IDs</title> |
56 | <tgroup cols="3"> | 60 | <tgroup cols="3"> |
@@ -325,6 +329,22 @@ minimum value disables backlight compensation.</entry> | |||
325 | <constant>V4L2_CID_ILLUMINATORS_2</constant> + 1).</entry> | 329 | <constant>V4L2_CID_ILLUMINATORS_2</constant> + 1).</entry> |
326 | </row> | 330 | </row> |
327 | <row> | 331 | <row> |
332 | <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_CAPTURE</constant></entry> | ||
333 | <entry>integer</entry> | ||
334 | <entry>This is a read-only control that can be read by the application | ||
335 | and used as a hint to determine the number of CAPTURE buffers to pass to REQBUFS. | ||
336 | The value is the minimum number of CAPTURE buffers that is necessary for hardware | ||
337 | to work.</entry> | ||
338 | </row> | ||
339 | <row> | ||
340 | <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_OUTPUT</constant></entry> | ||
341 | <entry>integer</entry> | ||
342 | <entry>This is a read-only control that can be read by the application | ||
343 | and used as a hint to determine the number of OUTPUT buffers to pass to REQBUFS. | ||
344 | The value is the minimum number of OUTPUT buffers that is necessary for hardware | ||
345 | to work.</entry> | ||
346 | </row> | ||
347 | <row> | ||
328 | <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry> | 348 | <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry> |
329 | <entry></entry> | 349 | <entry></entry> |
330 | <entry>ID of the first custom (driver specific) control. | 350 | <entry>ID of the first custom (driver specific) control. |
@@ -545,6 +565,10 @@ may not be supported (<constant>VIDIOC_QUERYMENU</constant> will | |||
545 | return an error). A good example is the list of supported MPEG audio | 565 | return an error). A good example is the list of supported MPEG audio |
546 | bitrates. Some drivers only support one or two bitrates, others | 566 | bitrates. Some drivers only support one or two bitrates, others |
547 | support a wider range.</para> | 567 | support a wider range.</para> |
568 | |||
569 | <para> | ||
570 | All controls use machine endianness. | ||
571 | </para> | ||
548 | </section> | 572 | </section> |
549 | 573 | ||
550 | <section> | 574 | <section> |
@@ -670,7 +694,8 @@ caption of a Tab page in a GUI, for example.</entry> | |||
670 | </row><row><entry spanname="descr">The MPEG-1, -2 or -4 | 694 | </row><row><entry spanname="descr">The MPEG-1, -2 or -4 |
671 | output stream type. One cannot assume anything here. Each hardware | 695 | output stream type. One cannot assume anything here. Each hardware |
672 | MPEG encoder tends to support different subsets of the available MPEG | 696 | MPEG encoder tends to support different subsets of the available MPEG |
673 | stream types. The currently defined stream types are:</entry> | 697 | stream types. This control is specific to multiplexed MPEG streams. |
698 | The currently defined stream types are:</entry> | ||
674 | </row> | 699 | </row> |
675 | <row> | 700 | <row> |
676 | <entrytbl spanname="descr" cols="2"> | 701 | <entrytbl spanname="descr" cols="2"> |
@@ -800,6 +825,7 @@ frequency. Possible values are:</entry> | |||
800 | <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant> </entry> | 825 | <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant> </entry> |
801 | <entry>enum v4l2_mpeg_audio_encoding</entry> | 826 | <entry>enum v4l2_mpeg_audio_encoding</entry> |
802 | </row><row><entry spanname="descr">MPEG Audio encoding. | 827 | </row><row><entry spanname="descr">MPEG Audio encoding. |
828 | This control is specific to multiplexed MPEG streams. | ||
803 | Possible values are:</entry> | 829 | Possible values are:</entry> |
804 | </row> | 830 | </row> |
805 | <row> | 831 | <row> |
@@ -1250,7 +1276,8 @@ and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry> | |||
1250 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant> </entry> | 1276 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant> </entry> |
1251 | <entry>enum v4l2_mpeg_video_encoding</entry> | 1277 | <entry>enum v4l2_mpeg_video_encoding</entry> |
1252 | </row><row><entry spanname="descr">MPEG Video encoding | 1278 | </row><row><entry spanname="descr">MPEG Video encoding |
1253 | method. Possible values are:</entry> | 1279 | method. This control is specific to multiplexed MPEG streams. |
1280 | Possible values are:</entry> | ||
1254 | </row> | 1281 | </row> |
1255 | <row> | 1282 | <row> |
1256 | <entrytbl spanname="descr" cols="2"> | 1283 | <entrytbl spanname="descr" cols="2"> |
@@ -1406,6 +1433,959 @@ of the video. The supplied 32-bit integer is interpreted as follows (bit | |||
1406 | </tbody> | 1433 | </tbody> |
1407 | </entrytbl> | 1434 | </entrytbl> |
1408 | </row> | 1435 | </row> |
1436 | |||
1437 | |||
1438 | <row><entry></entry></row> | ||
1439 | <row> | ||
1440 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE</constant> </entry> | ||
1441 | <entry>boolean</entry> | ||
1442 | </row> | ||
1443 | <row><entry spanname="descr">If enabled the decoder expects to receive a single slice per buffer, otherwise | ||
1444 | the decoder expects a single frame in per buffer. Applicable to the decoder, all codecs. | ||
1445 | </entry> | ||
1446 | </row> | ||
1447 | |||
1448 | <row><entry></entry></row> | ||
1449 | <row> | ||
1450 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE</constant> </entry> | ||
1451 | <entry>boolean</entry> | ||
1452 | </row> | ||
1453 | <row><entry spanname="descr">Enable writing sample aspect ratio in the Video Usability Information. | ||
1454 | Applicable to the H264 encoder.</entry> | ||
1455 | </row> | ||
1456 | |||
1457 | <row><entry></entry></row> | ||
1458 | <row id="v4l2-mpeg-video-h264-vui-sar-idc"> | ||
1459 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC</constant> </entry> | ||
1460 | <entry>enum v4l2_mpeg_video_h264_vui_sar_idc</entry> | ||
1461 | </row> | ||
1462 | <row><entry spanname="descr">VUI sample aspect ratio indicator for H.264 encoding. The value | ||
1463 | is defined in the table E-1 in the standard. Applicable to the H264 encoder.</entry> | ||
1464 | </row> | ||
1465 | <row> | ||
1466 | <entrytbl spanname="descr" cols="2"> | ||
1467 | <tbody valign="top"> | ||
1468 | |||
1469 | <row> | ||
1470 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED</constant> </entry> | ||
1471 | <entry>Unspecified</entry> | ||
1472 | </row> | ||
1473 | <row> | ||
1474 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1</constant> </entry> | ||
1475 | <entry>1x1</entry> | ||
1476 | </row> | ||
1477 | <row> | ||
1478 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11</constant> </entry> | ||
1479 | <entry>12x11</entry> | ||
1480 | </row> | ||
1481 | <row> | ||
1482 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11</constant> </entry> | ||
1483 | <entry>10x11</entry> | ||
1484 | </row> | ||
1485 | <row> | ||
1486 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11</constant> </entry> | ||
1487 | <entry>16x11</entry> | ||
1488 | </row> | ||
1489 | <row> | ||
1490 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33</constant> </entry> | ||
1491 | <entry>40x33</entry> | ||
1492 | </row> | ||
1493 | <row> | ||
1494 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11</constant> </entry> | ||
1495 | <entry>24x11</entry> | ||
1496 | </row> | ||
1497 | <row> | ||
1498 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11</constant> </entry> | ||
1499 | <entry>20x11</entry> | ||
1500 | </row> | ||
1501 | <row> | ||
1502 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11</constant> </entry> | ||
1503 | <entry>32x11</entry> | ||
1504 | </row> | ||
1505 | <row> | ||
1506 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33</constant> </entry> | ||
1507 | <entry>80x33</entry> | ||
1508 | </row> | ||
1509 | <row> | ||
1510 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11</constant> </entry> | ||
1511 | <entry>18x11</entry> | ||
1512 | </row> | ||
1513 | <row> | ||
1514 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11</constant> </entry> | ||
1515 | <entry>15x11</entry> | ||
1516 | </row> | ||
1517 | <row> | ||
1518 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33</constant> </entry> | ||
1519 | <entry>64x33</entry> | ||
1520 | </row> | ||
1521 | <row> | ||
1522 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99</constant> </entry> | ||
1523 | <entry>160x99</entry> | ||
1524 | </row> | ||
1525 | <row> | ||
1526 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3</constant> </entry> | ||
1527 | <entry>4x3</entry> | ||
1528 | </row> | ||
1529 | <row> | ||
1530 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2</constant> </entry> | ||
1531 | <entry>3x2</entry> | ||
1532 | </row> | ||
1533 | <row> | ||
1534 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1</constant> </entry> | ||
1535 | <entry>2x1</entry> | ||
1536 | </row> | ||
1537 | <row> | ||
1538 | <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED</constant> </entry> | ||
1539 | <entry>Extended SAR</entry> | ||
1540 | </row> | ||
1541 | </tbody> | ||
1542 | </entrytbl> | ||
1543 | </row> | ||
1544 | |||
1545 | <row><entry></entry></row> | ||
1546 | <row> | ||
1547 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH</constant> </entry> | ||
1548 | <entry>integer</entry> | ||
1549 | </row> | ||
1550 | <row><entry spanname="descr">Extended sample aspect ratio width for H.264 VUI encoding. | ||
1551 | Applicable to the H264 encoder.</entry> | ||
1552 | </row> | ||
1553 | |||
1554 | <row><entry></entry></row> | ||
1555 | <row> | ||
1556 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT</constant> </entry> | ||
1557 | <entry>integer</entry> | ||
1558 | </row> | ||
1559 | <row><entry spanname="descr">Extended sample aspect ratio height for H.264 VUI encoding. | ||
1560 | Applicable to the H264 encoder.</entry> | ||
1561 | </row> | ||
1562 | |||
1563 | <row><entry></entry></row> | ||
1564 | <row id="v4l2-mpeg-video-h264-level"> | ||
1565 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LEVEL</constant> </entry> | ||
1566 | <entry>enum v4l2_mpeg_video_h264_level</entry> | ||
1567 | </row> | ||
1568 | <row><entry spanname="descr">The level information for the H264 video elementary stream. | ||
1569 | Applicable to the H264 encoder. | ||
1570 | Possible values are:</entry> | ||
1571 | </row> | ||
1572 | <row> | ||
1573 | <entrytbl spanname="descr" cols="2"> | ||
1574 | <tbody valign="top"> | ||
1575 | <row> | ||
1576 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_0</constant> </entry> | ||
1577 | <entry>Level 1.0</entry> | ||
1578 | </row> | ||
1579 | <row> | ||
1580 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1B</constant> </entry> | ||
1581 | <entry>Level 1B</entry> | ||
1582 | </row> | ||
1583 | <row> | ||
1584 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_1</constant> </entry> | ||
1585 | <entry>Level 1.1</entry> | ||
1586 | </row> | ||
1587 | <row> | ||
1588 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_2</constant> </entry> | ||
1589 | <entry>Level 1.2</entry> | ||
1590 | </row> | ||
1591 | <row> | ||
1592 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_3</constant> </entry> | ||
1593 | <entry>Level 1.3</entry> | ||
1594 | </row> | ||
1595 | <row> | ||
1596 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_0</constant> </entry> | ||
1597 | <entry>Level 2.0</entry> | ||
1598 | </row> | ||
1599 | <row> | ||
1600 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_1</constant> </entry> | ||
1601 | <entry>Level 2.1</entry> | ||
1602 | </row> | ||
1603 | <row> | ||
1604 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_2</constant> </entry> | ||
1605 | <entry>Level 2.2</entry> | ||
1606 | </row> | ||
1607 | <row> | ||
1608 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_0</constant> </entry> | ||
1609 | <entry>Level 3.0</entry> | ||
1610 | </row> | ||
1611 | <row> | ||
1612 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_1</constant> </entry> | ||
1613 | <entry>Level 3.1</entry> | ||
1614 | </row> | ||
1615 | <row> | ||
1616 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_2</constant> </entry> | ||
1617 | <entry>Level 3.2</entry> | ||
1618 | </row> | ||
1619 | <row> | ||
1620 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_0</constant> </entry> | ||
1621 | <entry>Level 4.0</entry> | ||
1622 | </row> | ||
1623 | <row> | ||
1624 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_1</constant> </entry> | ||
1625 | <entry>Level 4.1</entry> | ||
1626 | </row> | ||
1627 | <row> | ||
1628 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_2</constant> </entry> | ||
1629 | <entry>Level 4.2</entry> | ||
1630 | </row> | ||
1631 | <row> | ||
1632 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_5_0</constant> </entry> | ||
1633 | <entry>Level 5.0</entry> | ||
1634 | </row> | ||
1635 | <row> | ||
1636 | <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_5_1</constant> </entry> | ||
1637 | <entry>Level 5.1</entry> | ||
1638 | </row> | ||
1639 | </tbody> | ||
1640 | </entrytbl> | ||
1641 | </row> | ||
1642 | |||
1643 | <row><entry></entry></row> | ||
1644 | <row id="v4l2-mpeg-video-mpeg4-level"> | ||
1645 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL</constant> </entry> | ||
1646 | <entry>enum v4l2_mpeg_video_mpeg4_level</entry> | ||
1647 | </row> | ||
1648 | <row><entry spanname="descr">The level information for the MPEG4 elementary stream. | ||
1649 | Applicable to the MPEG4 encoder. | ||
1650 | Possible values are:</entry> | ||
1651 | </row> | ||
1652 | <row> | ||
1653 | <entrytbl spanname="descr" cols="2"> | ||
1654 | <tbody valign="top"> | ||
1655 | <row> | ||
1656 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0</constant> </entry> | ||
1657 | <entry>Level 0</entry> | ||
1658 | </row> | ||
1659 | <row> | ||
1660 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0B</constant> </entry> | ||
1661 | <entry>Level 0b</entry> | ||
1662 | </row> | ||
1663 | <row> | ||
1664 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_1</constant> </entry> | ||
1665 | <entry>Level 1</entry> | ||
1666 | </row> | ||
1667 | <row> | ||
1668 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_2</constant> </entry> | ||
1669 | <entry>Level 2</entry> | ||
1670 | </row> | ||
1671 | <row> | ||
1672 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3</constant> </entry> | ||
1673 | <entry>Level 3</entry> | ||
1674 | </row> | ||
1675 | <row> | ||
1676 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3B</constant> </entry> | ||
1677 | <entry>Level 3b</entry> | ||
1678 | </row> | ||
1679 | <row> | ||
1680 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_4</constant> </entry> | ||
1681 | <entry>Level 4</entry> | ||
1682 | </row> | ||
1683 | <row> | ||
1684 | <entry><constant>V4L2_MPEG_VIDEO_LEVEL_5</constant> </entry> | ||
1685 | <entry>Level 5</entry> | ||
1686 | </row> | ||
1687 | </tbody> | ||
1688 | </entrytbl> | ||
1689 | </row> | ||
1690 | |||
1691 | <row><entry></entry></row> | ||
1692 | <row id="v4l2-mpeg-video-h264-profile"> | ||
1693 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant> </entry> | ||
1694 | <entry>enum v4l2_mpeg_video_h264_profile</entry> | ||
1695 | </row> | ||
1696 | <row><entry spanname="descr">The profile information for H264. | ||
1697 | Applicable to the H264 encoder. | ||
1698 | Possible values are:</entry> | ||
1699 | </row> | ||
1700 | <row> | ||
1701 | <entrytbl spanname="descr" cols="2"> | ||
1702 | <tbody valign="top"> | ||
1703 | <row> | ||
1704 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE</constant> </entry> | ||
1705 | <entry>Baseline profile</entry> | ||
1706 | </row> | ||
1707 | <row> | ||
1708 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE</constant> </entry> | ||
1709 | <entry>Constrained Baseline profile</entry> | ||
1710 | </row> | ||
1711 | <row> | ||
1712 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MAIN</constant> </entry> | ||
1713 | <entry>Main profile</entry> | ||
1714 | </row> | ||
1715 | <row> | ||
1716 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED</constant> </entry> | ||
1717 | <entry>Extended profile</entry> | ||
1718 | </row> | ||
1719 | <row> | ||
1720 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH</constant> </entry> | ||
1721 | <entry>High profile</entry> | ||
1722 | </row> | ||
1723 | <row> | ||
1724 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10</constant> </entry> | ||
1725 | <entry>High 10 profile</entry> | ||
1726 | </row> | ||
1727 | <row> | ||
1728 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422</constant> </entry> | ||
1729 | <entry>High 422 profile</entry> | ||
1730 | </row> | ||
1731 | <row> | ||
1732 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE</constant> </entry> | ||
1733 | <entry>High 444 Predictive profile</entry> | ||
1734 | </row> | ||
1735 | <row> | ||
1736 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA</constant> </entry> | ||
1737 | <entry>High 10 Intra profile</entry> | ||
1738 | </row> | ||
1739 | <row> | ||
1740 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA</constant> </entry> | ||
1741 | <entry>High 422 Intra profile</entry> | ||
1742 | </row> | ||
1743 | <row> | ||
1744 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA</constant> </entry> | ||
1745 | <entry>High 444 Intra profile</entry> | ||
1746 | </row> | ||
1747 | <row> | ||
1748 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA</constant> </entry> | ||
1749 | <entry>CAVLC 444 Intra profile</entry> | ||
1750 | </row> | ||
1751 | <row> | ||
1752 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE</constant> </entry> | ||
1753 | <entry>Scalable Baseline profile</entry> | ||
1754 | </row> | ||
1755 | <row> | ||
1756 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH</constant> </entry> | ||
1757 | <entry>Scalable High profile</entry> | ||
1758 | </row> | ||
1759 | <row> | ||
1760 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA</constant> </entry> | ||
1761 | <entry>Scalable High Intra profile</entry> | ||
1762 | </row> | ||
1763 | <row> | ||
1764 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH</constant> </entry> | ||
1765 | <entry>Stereo High profile</entry> | ||
1766 | </row> | ||
1767 | <row> | ||
1768 | <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH</constant> </entry> | ||
1769 | <entry>Multiview High profile</entry> | ||
1770 | </row> | ||
1771 | |||
1772 | </tbody> | ||
1773 | </entrytbl> | ||
1774 | </row> | ||
1775 | |||
1776 | <row><entry></entry></row> | ||
1777 | <row id="v4l2-mpeg-video-mpeg4-profile"> | ||
1778 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant> </entry> | ||
1779 | <entry>enum v4l2_mpeg_video_mpeg4_profile</entry> | ||
1780 | </row> | ||
1781 | <row><entry spanname="descr">The profile information for MPEG4. | ||
1782 | Applicable to the MPEG4 encoder. | ||
1783 | Possible values are:</entry> | ||
1784 | </row> | ||
1785 | <row> | ||
1786 | <entrytbl spanname="descr" cols="2"> | ||
1787 | <tbody valign="top"> | ||
1788 | <row> | ||
1789 | <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE</constant> </entry> | ||
1790 | <entry>Simple profile</entry> | ||
1791 | </row> | ||
1792 | <row> | ||
1793 | <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_SIMPLE</constant> </entry> | ||
1794 | <entry>Advanced Simple profile</entry> | ||
1795 | </row> | ||
1796 | <row> | ||
1797 | <entry><constant>V4L2_MPEG_VIDEO_PROFILE_CORE</constant> </entry> | ||
1798 | <entry>Core profile</entry> | ||
1799 | </row> | ||
1800 | <row> | ||
1801 | <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE_SCALABLE</constant> </entry> | ||
1802 | <entry>Simple Scalable profile</entry> | ||
1803 | </row> | ||
1804 | <row> | ||
1805 | <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY</constant> </entry> | ||
1806 | <entry></entry> | ||
1807 | </row> | ||
1808 | </tbody> | ||
1809 | </entrytbl> | ||
1810 | </row> | ||
1811 | |||
1812 | <row><entry></entry></row> | ||
1813 | <row> | ||
1814 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MAX_REF_PIC</constant> </entry> | ||
1815 | <entry>integer</entry> | ||
1816 | </row> | ||
1817 | <row><entry spanname="descr">The maximum number of reference pictures used for encoding. | ||
1818 | Applicable to the encoder. | ||
1819 | </entry> | ||
1820 | </row> | ||
1821 | |||
1822 | <row><entry></entry></row> | ||
1823 | <row id="v4l2-mpeg-video-multi-slice-mode"> | ||
1824 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> </entry> | ||
1825 | <entry>enum v4l2_mpeg_video_multi_slice_mode</entry> | ||
1826 | </row> | ||
1827 | <row><entry spanname="descr">Determines how the encoder should handle division of frame into slices. | ||
1828 | Applicable to the encoder. | ||
1829 | Possible values are:</entry> | ||
1830 | </row> | ||
1831 | <row> | ||
1832 | <entrytbl spanname="descr" cols="2"> | ||
1833 | <tbody valign="top"> | ||
1834 | <row> | ||
1835 | <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE</constant> </entry> | ||
1836 | <entry>Single slice per frame.</entry> | ||
1837 | </row> | ||
1838 | <row> | ||
1839 | <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB</constant> </entry> | ||
1840 | <entry>Multiple slices with set maximum number of macroblocks per slice.</entry> | ||
1841 | </row> | ||
1842 | <row> | ||
1843 | <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES</constant> </entry> | ||
1844 | <entry>Multiple slice with set maximum size in bytes per slice.</entry> | ||
1845 | </row> | ||
1846 | </tbody> | ||
1847 | </entrytbl> | ||
1848 | </row> | ||
1849 | |||
1850 | <row><entry></entry></row> | ||
1851 | <row> | ||
1852 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB</constant> </entry> | ||
1853 | <entry>integer</entry> | ||
1854 | </row> | ||
1855 | <row><entry spanname="descr">The maximum number of macroblocks in a slice. Used when | ||
1856 | <constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> is set to <constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB</constant>. | ||
1857 | Applicable to the encoder.</entry> | ||
1858 | </row> | ||
1859 | |||
1860 | <row><entry></entry></row> | ||
1861 | <row> | ||
1862 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES</constant> </entry> | ||
1863 | <entry>integer</entry> | ||
1864 | </row> | ||
1865 | <row><entry spanname="descr">The maximum size of a slice in bytes. Used when | ||
1866 | <constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> is set to <constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES</constant>. | ||
1867 | Applicable to the encoder.</entry> | ||
1868 | </row> | ||
1869 | |||
1870 | <row><entry></entry></row> | ||
1871 | <row id="v4l2-mpeg-video-h264-loop-filter-mode"> | ||
1872 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant> </entry> | ||
1873 | <entry>enum v4l2_mpeg_video_h264_loop_filter_mode</entry> | ||
1874 | </row> | ||
1875 | <row><entry spanname="descr">Loop filter mode for H264 encoder. | ||
1876 | Possible values are:</entry> | ||
1877 | </row> | ||
1878 | <row> | ||
1879 | <entrytbl spanname="descr" cols="2"> | ||
1880 | <tbody valign="top"> | ||
1881 | <row> | ||
1882 | <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED</constant> </entry> | ||
1883 | <entry>Loop filter is enabled.</entry> | ||
1884 | </row> | ||
1885 | <row> | ||
1886 | <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED</constant> </entry> | ||
1887 | <entry>Loop filter is disabled.</entry> | ||
1888 | </row> | ||
1889 | <row> | ||
1890 | <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY</constant> </entry> | ||
1891 | <entry>Loop filter is disabled at the slice boundary.</entry> | ||
1892 | </row> | ||
1893 | </tbody> | ||
1894 | </entrytbl> | ||
1895 | </row> | ||
1896 | |||
1897 | <row><entry></entry></row> | ||
1898 | <row> | ||
1899 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA</constant> </entry> | ||
1900 | <entry>integer</entry> | ||
1901 | </row> | ||
1902 | <row><entry spanname="descr">Loop filter alpha coefficient, defined in the H264 standard. | ||
1903 | Applicable to the H264 encoder.</entry> | ||
1904 | </row> | ||
1905 | |||
1906 | <row><entry></entry></row> | ||
1907 | <row> | ||
1908 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA</constant> </entry> | ||
1909 | <entry>integer</entry> | ||
1910 | </row> | ||
1911 | <row><entry spanname="descr">Loop filter beta coefficient, defined in the H264 standard. | ||
1912 | Applicable to the H264 encoder.</entry> | ||
1913 | </row> | ||
1914 | |||
1915 | <row><entry></entry></row> | ||
1916 | <row id="v4l2-mpeg-video-h264-entropy-mode"> | ||
1917 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE</constant> </entry> | ||
1918 | <entry>enum v4l2_mpeg_video_h264_entropy_mode</entry> | ||
1919 | </row> | ||
1920 | <row><entry spanname="descr">Entropy coding mode for H264 - CABAC/CAVALC. | ||
1921 | Applicable to the H264 encoder. | ||
1922 | Possible values are:</entry> | ||
1923 | </row> | ||
1924 | <row> | ||
1925 | <entrytbl spanname="descr" cols="2"> | ||
1926 | <tbody valign="top"> | ||
1927 | <row> | ||
1928 | <entry><constant>V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC</constant> </entry> | ||
1929 | <entry>Use CAVLC entropy coding.</entry> | ||
1930 | </row> | ||
1931 | <row> | ||
1932 | <entry><constant>V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC</constant> </entry> | ||
1933 | <entry>Use CABAC entropy coding.</entry> | ||
1934 | </row> | ||
1935 | </tbody> | ||
1936 | </entrytbl> | ||
1937 | </row> | ||
1938 | |||
1939 | <row><entry></entry></row> | ||
1940 | <row> | ||
1941 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM</constant> </entry> | ||
1942 | <entry>boolean</entry> | ||
1943 | </row> | ||
1944 | <row><entry spanname="descr">Enable 8X8 transform for H264. Applicable to the H264 encoder.</entry> | ||
1945 | </row> | ||
1946 | |||
1947 | <row><entry></entry></row> | ||
1948 | <row> | ||
1949 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB</constant> </entry> | ||
1950 | <entry>integer</entry> | ||
1951 | </row> | ||
1952 | <row><entry spanname="descr">Cyclic intra macroblock refresh. This is the number of continuous macroblocks | ||
1953 | refreshed every frame. Each frame a succesive set of macroblocks is refreshed until the cycle completes and starts from the | ||
1954 | top of the frame. Applicable to H264, H263 and MPEG4 encoder.</entry> | ||
1955 | </row> | ||
1956 | |||
1957 | <row><entry></entry></row> | ||
1958 | <row> | ||
1959 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE</constant> </entry> | ||
1960 | <entry>boolean</entry> | ||
1961 | </row> | ||
1962 | <row><entry spanname="descr">Frame level rate control enable. | ||
1963 | If this control is disabled then the quantization parameter for each frame type is constant and set with appropriate controls | ||
1964 | (e.g. <constant>V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP</constant>). | ||
1965 | If frame rate control is enabled then quantization parameter is adjusted to meet the chosen bitrate. Minimum and maximum value | ||
1966 | for the quantization parameter can be set with appropriate controls (e.g. <constant>V4L2_CID_MPEG_VIDEO_H263_MIN_QP</constant>). | ||
1967 | Applicable to encoders.</entry> | ||
1968 | </row> | ||
1969 | |||
1970 | <row><entry></entry></row> | ||
1971 | <row> | ||
1972 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant> </entry> | ||
1973 | <entry>boolean</entry> | ||
1974 | </row> | ||
1975 | <row><entry spanname="descr">Macroblock level rate control enable. | ||
1976 | Applicable to the MPEG4 and H264 encoders.</entry> | ||
1977 | </row> | ||
1978 | |||
1979 | <row><entry></entry></row> | ||
1980 | <row> | ||
1981 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_QPEL</constant> </entry> | ||
1982 | <entry>boolean</entry> | ||
1983 | </row> | ||
1984 | <row><entry spanname="descr">Quarter pixel motion estimation for MPEG4. Applicable to the MPEG4 encoder.</entry> | ||
1985 | </row> | ||
1986 | |||
1987 | <row><entry></entry></row> | ||
1988 | <row> | ||
1989 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP</constant> </entry> | ||
1990 | <entry>integer</entry> | ||
1991 | </row> | ||
1992 | <row><entry spanname="descr">Quantization parameter for an I frame for H263. Valid range: from 1 to 31.</entry> | ||
1993 | </row> | ||
1994 | |||
1995 | <row><entry></entry></row> | ||
1996 | <row> | ||
1997 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MIN_QP</constant> </entry> | ||
1998 | <entry>integer</entry> | ||
1999 | </row> | ||
2000 | <row><entry spanname="descr">Minimum quantization parameter for H263. Valid range: from 1 to 31.</entry> | ||
2001 | </row> | ||
2002 | |||
2003 | <row><entry></entry></row> | ||
2004 | <row> | ||
2005 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MAX_QP</constant> </entry> | ||
2006 | <entry>integer</entry> | ||
2007 | </row> | ||
2008 | <row><entry spanname="descr">Maximum quantization parameter for H263. Valid range: from 1 to 31.</entry> | ||
2009 | </row> | ||
2010 | |||
2011 | <row><entry></entry></row> | ||
2012 | <row> | ||
2013 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP</constant> </entry> | ||
2014 | <entry>integer</entry> | ||
2015 | </row> | ||
2016 | <row><entry spanname="descr">Quantization parameter for an P frame for H263. Valid range: from 1 to 31.</entry> | ||
2017 | </row> | ||
2018 | |||
2019 | <row><entry></entry></row> | ||
2020 | <row> | ||
2021 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP</constant> </entry> | ||
2022 | <entry>integer</entry> | ||
2023 | </row> | ||
2024 | <row><entry spanname="descr">Quantization parameter for an B frame for H263. Valid range: from 1 to 31.</entry> | ||
2025 | </row> | ||
2026 | |||
2027 | <row><entry></entry></row> | ||
2028 | <row> | ||
2029 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP</constant> </entry> | ||
2030 | <entry>integer</entry> | ||
2031 | </row> | ||
2032 | <row><entry spanname="descr">Quantization parameter for an I frame for H264. Valid range: from 0 to 51.</entry> | ||
2033 | </row> | ||
2034 | |||
2035 | <row><entry></entry></row> | ||
2036 | <row> | ||
2037 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MIN_QP</constant> </entry> | ||
2038 | <entry>integer</entry> | ||
2039 | </row> | ||
2040 | <row><entry spanname="descr">Minimum quantization parameter for H264. Valid range: from 0 to 51.</entry> | ||
2041 | </row> | ||
2042 | |||
2043 | <row><entry></entry></row> | ||
2044 | <row> | ||
2045 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MAX_QP</constant> </entry> | ||
2046 | <entry>integer</entry> | ||
2047 | </row> | ||
2048 | <row><entry spanname="descr">Maximum quantization parameter for H264. Valid range: from 0 to 51.</entry> | ||
2049 | </row> | ||
2050 | |||
2051 | <row><entry></entry></row> | ||
2052 | <row> | ||
2053 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP</constant> </entry> | ||
2054 | <entry>integer</entry> | ||
2055 | </row> | ||
2056 | <row><entry spanname="descr">Quantization parameter for an P frame for H264. Valid range: from 0 to 51.</entry> | ||
2057 | </row> | ||
2058 | |||
2059 | <row><entry></entry></row> | ||
2060 | <row> | ||
2061 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP</constant> </entry> | ||
2062 | <entry>integer</entry> | ||
2063 | </row> | ||
2064 | <row><entry spanname="descr">Quantization parameter for an B frame for H264. Valid range: from 0 to 51.</entry> | ||
2065 | </row> | ||
2066 | |||
2067 | <row><entry></entry></row> | ||
2068 | <row> | ||
2069 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP</constant> </entry> | ||
2070 | <entry>integer</entry> | ||
2071 | </row> | ||
2072 | <row><entry spanname="descr">Quantization parameter for an I frame for MPEG4. Valid range: from 1 to 31.</entry> | ||
2073 | </row> | ||
2074 | |||
2075 | <row><entry></entry></row> | ||
2076 | <row> | ||
2077 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP</constant> </entry> | ||
2078 | <entry>integer</entry> | ||
2079 | </row> | ||
2080 | <row><entry spanname="descr">Minimum quantization parameter for MPEG4. Valid range: from 1 to 31.</entry> | ||
2081 | </row> | ||
2082 | |||
2083 | <row><entry></entry></row> | ||
2084 | <row> | ||
2085 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP</constant> </entry> | ||
2086 | <entry>integer</entry> | ||
2087 | </row> | ||
2088 | <row><entry spanname="descr">Maximum quantization parameter for MPEG4. Valid range: from 1 to 31.</entry> | ||
2089 | </row> | ||
2090 | |||
2091 | <row><entry></entry></row> | ||
2092 | <row> | ||
2093 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP</constant> </entry> | ||
2094 | <entry>integer</entry> | ||
2095 | </row> | ||
2096 | <row><entry spanname="descr">Quantization parameter for an P frame for MPEG4. Valid range: from 1 to 31.</entry> | ||
2097 | </row> | ||
2098 | |||
2099 | <row><entry></entry></row> | ||
2100 | <row> | ||
2101 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP</constant> </entry> | ||
2102 | <entry>integer</entry> | ||
2103 | </row> | ||
2104 | <row><entry spanname="descr">Quantization parameter for an B frame for MPEG4. Valid range: from 1 to 31.</entry> | ||
2105 | </row> | ||
2106 | |||
2107 | <row><entry></entry></row> | ||
2108 | <row> | ||
2109 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_SIZE</constant> </entry> | ||
2110 | <entry>integer</entry> | ||
2111 | </row> | ||
2112 | <row><entry spanname="descr">The Video Buffer Verifier size in kilobytes, it is used as a limitation of frame skip. | ||
2113 | The VBV is defined in the standard as a mean to verify that the produced stream will be succesfully decoded. | ||
2114 | The standard describes it as "Part of a hypothetical decoder that is conceptually connected to the | ||
2115 | output of the encoder. Its purpose is to provide a constraint on the variability of the data rate that an | ||
2116 | encoder or editing process may produce.". | ||
2117 | Applicable to the MPEG1, MPEG2, MPEG4 encoders.</entry> | ||
2118 | </row> | ||
2119 | |||
2120 | <row><entry></entry></row> | ||
2121 | <row> | ||
2122 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE</constant> </entry> | ||
2123 | <entry>integer</entry> | ||
2124 | </row> | ||
2125 | <row><entry spanname="descr">The Coded Picture Buffer size in kilobytes, it is used as a limitation of frame skip. | ||
2126 | The CPB is defined in the H264 standard as a mean to verify that the produced stream will be succesfully decoded. | ||
2127 | Applicable to the H264 encoder.</entry> | ||
2128 | </row> | ||
2129 | |||
2130 | <row><entry></entry></row> | ||
2131 | <row> | ||
2132 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_PERIOD</constant> </entry> | ||
2133 | <entry>integer</entry> | ||
2134 | </row> | ||
2135 | <row><entry spanname="descr">Period between I-frames in the open GOP for H264. In case of an open GOP | ||
2136 | this is the period between two I-frames. The period between IDR (Instantaneous Decoding Refresh) frames is taken from the GOP_SIZE control. | ||
2137 | An IDR frame, which stands for Instantaneous Decoding Refresh is an I-frame after which no prior frames are | ||
2138 | referenced. This means that a stream can be restarted from an IDR frame without the need to store or decode any | ||
2139 | previous frames. Applicable to the H264 encoder.</entry> | ||
2140 | </row> | ||
2141 | |||
2142 | <row><entry></entry></row> | ||
2143 | <row id="v4l2-mpeg-video-header-mode"> | ||
2144 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant> </entry> | ||
2145 | <entry>enum v4l2_mpeg_video_header_mode</entry> | ||
2146 | </row> | ||
2147 | <row><entry spanname="descr">Determines whether the header is returned as the first buffer or is | ||
2148 | it returned together with the first frame. Applicable to encoders. | ||
2149 | Possible values are:</entry> | ||
2150 | </row> | ||
2151 | <row> | ||
2152 | <entrytbl spanname="descr" cols="2"> | ||
2153 | <tbody valign="top"> | ||
2154 | <row> | ||
2155 | <entry><constant>V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE</constant> </entry> | ||
2156 | <entry>The stream header is returned separately in the first buffer.</entry> | ||
2157 | </row> | ||
2158 | <row> | ||
2159 | <entry><constant>V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME</constant> </entry> | ||
2160 | <entry>The stream header is returned together with the first encoded frame.</entry> | ||
2161 | </row> | ||
2162 | </tbody> | ||
2163 | </entrytbl> | ||
2164 | </row> | ||
2165 | <row><entry></entry></row> | ||
2166 | <row> | ||
2167 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER</constant> </entry> | ||
2168 | <entry>boolean</entry> | ||
2169 | </row><row><entry spanname="descr">Enabled the deblocking post processing filter for MPEG4 decoder. | ||
2170 | Applicable to the MPEG4 decoder.</entry> | ||
2171 | </row> | ||
2172 | <row><entry></entry></row> | ||
2173 | <row> | ||
2174 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_RES</constant> </entry> | ||
2175 | <entry>integer</entry> | ||
2176 | </row><row><entry spanname="descr">vop_time_increment_resolution value for MPEG4. Applicable to the MPEG4 encoder.</entry> | ||
2177 | </row> | ||
2178 | <row><entry></entry></row> | ||
2179 | <row> | ||
2180 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_INC</constant> </entry> | ||
2181 | <entry>integer</entry> | ||
2182 | </row><row><entry spanname="descr">vop_time_increment value for MPEG4. Applicable to the MPEG4 encoder.</entry> | ||
2183 | </row> | ||
2184 | |||
2185 | </tbody> | ||
2186 | </tgroup> | ||
2187 | </table> | ||
2188 | </section> | ||
2189 | |||
2190 | <section> | ||
2191 | <title>MFC 5.1 MPEG Controls</title> | ||
2192 | |||
2193 | <para>The following MPEG class controls deal with MPEG | ||
2194 | decoding and encoding settings that are specific to the Multi Format Codec 5.1 device present | ||
2195 | in the S5P family of SoCs by Samsung. | ||
2196 | </para> | ||
2197 | |||
2198 | <table pgwide="1" frame="none" id="mfc51-control-id"> | ||
2199 | <title>MFC 5.1 Control IDs</title> | ||
2200 | <tgroup cols="4"> | ||
2201 | <colspec colname="c1" colwidth="1*" /> | ||
2202 | <colspec colname="c2" colwidth="6*" /> | ||
2203 | <colspec colname="c3" colwidth="2*" /> | ||
2204 | <colspec colname="c4" colwidth="6*" /> | ||
2205 | <spanspec namest="c1" nameend="c2" spanname="id" /> | ||
2206 | <spanspec namest="c2" nameend="c4" spanname="descr" /> | ||
2207 | <thead> | ||
2208 | <row> | ||
2209 | <entry spanname="id" align="left">ID</entry> | ||
2210 | <entry align="left">Type</entry> | ||
2211 | </row><row><entry spanname="descr" align="left">Description</entry> | ||
2212 | </row> | ||
2213 | </thead> | ||
2214 | <tbody valign="top"> | ||
2215 | <row><entry></entry></row> | ||
2216 | <row> | ||
2217 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant> </entry> | ||
2218 | <entry>integer</entry> | ||
2219 | </row><row><entry spanname="descr">If the display delay is enabled then the decoder has to return a | ||
2220 | CAPTURE buffer after processing a certain number of OUTPUT buffers. If this number is low, then it may result in | ||
2221 | buffers not being dequeued in display order. In addition hardware may still use those buffers as reference, thus | ||
2222 | application should not write to those buffers. This feature can be used for example for generating thumbnails of videos. | ||
2223 | Applicable to the H264 decoder. | ||
2224 | </entry> | ||
2225 | </row> | ||
2226 | <row><entry></entry></row> | ||
2227 | <row> | ||
2228 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant> </entry> | ||
2229 | <entry>integer</entry> | ||
2230 | </row><row><entry spanname="descr">Display delay value for H264 decoder. | ||
2231 | The decoder is forced to return a decoded frame after the set 'display delay' number of frames. If this number is | ||
2232 | low it may result in frames returned out of dispaly order, in addition the hardware may still be using the returned buffer | ||
2233 | as a reference picture for subsequent frames. | ||
2234 | </entry> | ||
2235 | </row> | ||
2236 | <row><entry></entry></row> | ||
2237 | <row> | ||
2238 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P</constant> </entry> | ||
2239 | <entry>integer</entry> | ||
2240 | </row><row><entry spanname="descr">The number of reference pictures used for encoding a P picture. | ||
2241 | Applicable to the H264 encoder.</entry> | ||
2242 | </row> | ||
2243 | <row><entry></entry></row> | ||
2244 | <row> | ||
2245 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_PADDING</constant> </entry> | ||
2246 | <entry>boolean</entry> | ||
2247 | </row><row><entry spanname="descr">Padding enable in the encoder - use a color instead of repeating border pixels. | ||
2248 | Applicable to encoders.</entry> | ||
2249 | </row> | ||
2250 | <row><entry></entry></row> | ||
2251 | <row> | ||
2252 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV</constant> </entry> | ||
2253 | <entry>integer</entry> | ||
2254 | </row><row><entry spanname="descr">Padding color in the encoder. Applicable to encoders. The supplied 32-bit integer is interpreted as follows (bit | ||
2255 | 0 = least significant bit):</entry> | ||
2256 | </row> | ||
2257 | <row> | ||
2258 | <entrytbl spanname="descr" cols="2"> | ||
2259 | <tbody valign="top"> | ||
2260 | <row> | ||
2261 | <entry>Bit 0:7</entry> | ||
2262 | <entry>V chrominance information</entry> | ||
2263 | </row> | ||
2264 | <row> | ||
2265 | <entry>Bit 8:15</entry> | ||
2266 | <entry>U chrominance information</entry> | ||
2267 | </row> | ||
2268 | <row> | ||
2269 | <entry>Bit 16:23</entry> | ||
2270 | <entry>Y luminance information</entry> | ||
2271 | </row> | ||
2272 | <row> | ||
2273 | <entry>Bit 24:31</entry> | ||
2274 | <entry>Must be zero.</entry> | ||
2275 | </row> | ||
2276 | </tbody> | ||
2277 | </entrytbl> | ||
2278 | </row> | ||
2279 | <row><entry></entry></row> | ||
2280 | <row> | ||
2281 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF</constant> </entry> | ||
2282 | <entry>integer</entry> | ||
2283 | </row><row><entry spanname="descr">Reaction coefficient for MFC rate control. Applicable to encoders. | ||
2284 | <para>Note 1: Valid only when the frame level RC is enabled.</para> | ||
2285 | <para>Note 2: For tight CBR, this field must be small (ex. 2 ~ 10). | ||
2286 | For VBR, this field must be large (ex. 100 ~ 1000).</para> | ||
2287 | <para>Note 3: It is not recommended to use the greater number than FRAME_RATE * (10^9 / BIT_RATE).</para> | ||
2288 | </entry> | ||
2289 | </row> | ||
2290 | <row><entry></entry></row> | ||
2291 | <row> | ||
2292 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK</constant> </entry> | ||
2293 | <entry>boolean</entry> | ||
2294 | </row><row><entry spanname="descr">Adaptive rate control for dark region. | ||
2295 | Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>). | ||
2296 | Applicable to the H264 encoder.</entry> | ||
2297 | </row> | ||
2298 | <row><entry></entry></row> | ||
2299 | <row> | ||
2300 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH</constant> </entry> | ||
2301 | <entry>boolean</entry> | ||
2302 | </row><row><entry spanname="descr">Adaptive rate control for smooth region. | ||
2303 | Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>). | ||
2304 | Applicable to the H264 encoder.</entry> | ||
2305 | </row> | ||
2306 | <row><entry></entry></row> | ||
2307 | <row> | ||
2308 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC</constant> </entry> | ||
2309 | <entry>boolean</entry> | ||
2310 | </row><row><entry spanname="descr">Adaptive rate control for static region. | ||
2311 | Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>). | ||
2312 | Applicable to the H264 encoder.</entry> | ||
2313 | </row> | ||
2314 | <row><entry></entry></row> | ||
2315 | <row> | ||
2316 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY</constant> </entry> | ||
2317 | <entry>boolean</entry> | ||
2318 | </row><row><entry spanname="descr">Adaptive rate control for activity region. | ||
2319 | Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>). | ||
2320 | Applicable to the H264 encoder.</entry> | ||
2321 | </row> | ||
2322 | <row><entry></entry></row> | ||
2323 | <row id="v4l2-mpeg-mfc51-video-frame-skip-mode"> | ||
2324 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant> </entry> | ||
2325 | <entry>enum v4l2_mpeg_mfc51_video_frame_skip_mode</entry> | ||
2326 | </row> | ||
2327 | <row><entry spanname="descr"> | ||
2328 | Indicates in what conditions the encoder should skip frames. If encoding a frame would cause the encoded stream to be larger then | ||
2329 | a chosen data limit then the frame will be skipped. | ||
2330 | Possible values are:</entry> | ||
2331 | </row> | ||
2332 | <row> | ||
2333 | <entrytbl spanname="descr" cols="2"> | ||
2334 | <tbody valign="top"> | ||
2335 | <row> | ||
2336 | <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_DISABLED</constant> </entry> | ||
2337 | <entry>Frame skip mode is disabled.</entry> | ||
2338 | </row> | ||
2339 | <row> | ||
2340 | <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT</constant> </entry> | ||
2341 | <entry>Frame skip mode enabled and buffer limit is set by the chosen level and is defined by the standard.</entry> | ||
2342 | </row> | ||
2343 | <row> | ||
2344 | <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT</constant> </entry> | ||
2345 | <entry>Frame skip mode enabled and buffer limit is set by the VBV (MPEG1/2/4) or CPB (H264) buffer size control.</entry> | ||
2346 | </row> | ||
2347 | </tbody> | ||
2348 | </entrytbl> | ||
2349 | </row> | ||
2350 | <row><entry></entry></row> | ||
2351 | <row> | ||
2352 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT</constant> </entry> | ||
2353 | <entry>integer</entry> | ||
2354 | </row><row><entry spanname="descr">Enable rate-control with fixed target bit. | ||
2355 | If this setting is enabled, then the rate control logic of the encoder will calculate the average bitrate | ||
2356 | for a GOP and keep it below or equal the set bitrate target. Otherwise the rate control logic calculates the | ||
2357 | overall average bitrate for the stream and keeps it below or equal to the set bitrate. In the first case | ||
2358 | the average bitrate for the whole stream will be smaller then the set bitrate. This is caused because the | ||
2359 | average is calculated for smaller number of frames, on the other hand enabling this setting will ensure that | ||
2360 | the stream will meet tight bandwidth contraints. Applicable to encoders. | ||
2361 | </entry> | ||
2362 | </row> | ||
2363 | <row><entry></entry></row> | ||
2364 | <row id="v4l2-mpeg-mfc51-video-force-frame-type"> | ||
2365 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant> </entry> | ||
2366 | <entry>enum v4l2_mpeg_mfc51_video_force_frame_type</entry> | ||
2367 | </row> | ||
2368 | <row><entry spanname="descr">Force a frame type for the next queued buffer. Applicable to encoders. | ||
2369 | Possible values are:</entry> | ||
2370 | </row> | ||
2371 | <row> | ||
2372 | <entrytbl spanname="descr" cols="2"> | ||
2373 | <tbody valign="top"> | ||
2374 | <row> | ||
2375 | <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_DISABLED</constant> </entry> | ||
2376 | <entry>Forcing a specific frame type disabled.</entry> | ||
2377 | </row> | ||
2378 | <row> | ||
2379 | <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_I_FRAME</constant> </entry> | ||
2380 | <entry>Force an I-frame.</entry> | ||
2381 | </row> | ||
2382 | <row> | ||
2383 | <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_NOT_CODED</constant> </entry> | ||
2384 | <entry>Force a non-coded frame.</entry> | ||
2385 | </row> | ||
2386 | </tbody> | ||
2387 | </entrytbl> | ||
2388 | </row> | ||
1409 | </tbody> | 2389 | </tbody> |
1410 | </tgroup> | 2390 | </tgroup> |
1411 | </table> | 2391 | </table> |
@@ -2092,6 +3072,289 @@ manually or automatically if set to zero. Unit, range and step are driver-specif | |||
2092 | <para>For more details about RDS specification, refer to | 3072 | <para>For more details about RDS specification, refer to |
2093 | <xref linkend="en50067" /> document, from CENELEC.</para> | 3073 | <xref linkend="en50067" /> document, from CENELEC.</para> |
2094 | </section> | 3074 | </section> |
3075 | |||
3076 | <section id="flash-controls"> | ||
3077 | <title>Flash Control Reference</title> | ||
3078 | |||
3079 | <note> | ||
3080 | <title>Experimental</title> | ||
3081 | |||
3082 | <para>This is an <link linkend="experimental">experimental</link> | ||
3083 | interface and may change in the future.</para> | ||
3084 | </note> | ||
3085 | |||
3086 | <para> | ||
3087 | The V4L2 flash controls are intended to provide generic access | ||
3088 | to flash controller devices. Flash controller devices are | ||
3089 | typically used in digital cameras. | ||
3090 | </para> | ||
3091 | |||
3092 | <para> | ||
3093 | The interface can support both LED and xenon flash devices. As | ||
3094 | of writing this, there is no xenon flash driver using this | ||
3095 | interface. | ||
3096 | </para> | ||
3097 | |||
3098 | <section id="flash-controls-use-cases"> | ||
3099 | <title>Supported use cases</title> | ||
3100 | |||
3101 | <section> | ||
3102 | <title>Unsynchronised LED flash (software strobe)</title> | ||
3103 | |||
3104 | <para> | ||
3105 | Unsynchronised LED flash is controlled directly by the | ||
3106 | host as the sensor. The flash must be enabled by the host | ||
3107 | before the exposure of the image starts and disabled once | ||
3108 | it ends. The host is fully responsible for the timing of | ||
3109 | the flash. | ||
3110 | </para> | ||
3111 | |||
3112 | <para>Example of such device: Nokia N900.</para> | ||
3113 | </section> | ||
3114 | |||
3115 | <section> | ||
3116 | <title>Synchronised LED flash (hardware strobe)</title> | ||
3117 | |||
3118 | <para> | ||
3119 | The synchronised LED flash is pre-programmed by the host | ||
3120 | (power and timeout) but controlled by the sensor through a | ||
3121 | strobe signal from the sensor to the flash. | ||
3122 | </para> | ||
3123 | |||
3124 | <para> | ||
3125 | The sensor controls the flash duration and timing. This | ||
3126 | information typically must be made available to the | ||
3127 | sensor. | ||
3128 | </para> | ||
3129 | |||
3130 | </section> | ||
3131 | |||
3132 | <section> | ||
3133 | <title>LED flash as torch</title> | ||
3134 | |||
3135 | <para> | ||
3136 | LED flash may be used as torch in conjunction with another | ||
3137 | use case involving camera or individually. | ||
3138 | </para> | ||
3139 | |||
3140 | </section> | ||
3141 | |||
3142 | </section> | ||
3143 | |||
3144 | <table pgwide="1" frame="none" id="flash-control-id"> | ||
3145 | <title>Flash Control IDs</title> | ||
3146 | |||
3147 | <tgroup cols="4"> | ||
3148 | <colspec colname="c1" colwidth="1*" /> | ||
3149 | <colspec colname="c2" colwidth="6*" /> | ||
3150 | <colspec colname="c3" colwidth="2*" /> | ||
3151 | <colspec colname="c4" colwidth="6*" /> | ||
3152 | <spanspec namest="c1" nameend="c2" spanname="id" /> | ||
3153 | <spanspec namest="c2" nameend="c4" spanname="descr" /> | ||
3154 | <thead> | ||
3155 | <row> | ||
3156 | <entry spanname="id" align="left">ID</entry> | ||
3157 | <entry align="left">Type</entry> | ||
3158 | </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> | ||
3159 | </row> | ||
3160 | </thead> | ||
3161 | <tbody valign="top"> | ||
3162 | <row><entry></entry></row> | ||
3163 | <row> | ||
3164 | <entry spanname="id"><constant>V4L2_CID_FLASH_CLASS</constant></entry> | ||
3165 | <entry>class</entry> | ||
3166 | </row> | ||
3167 | <row> | ||
3168 | <entry spanname="descr">The FLASH class descriptor.</entry> | ||
3169 | </row> | ||
3170 | <row> | ||
3171 | <entry spanname="id"><constant>V4L2_CID_FLASH_LED_MODE</constant></entry> | ||
3172 | <entry>menu</entry> | ||
3173 | </row> | ||
3174 | <row id="v4l2-flash-led-mode"> | ||
3175 | <entry spanname="descr">Defines the mode of the flash LED, | ||
3176 | the high-power white LED attached to the flash controller. | ||
3177 | Setting this control may not be possible in presence of | ||
3178 | some faults. See V4L2_CID_FLASH_FAULT.</entry> | ||
3179 | </row> | ||
3180 | <row> | ||
3181 | <entrytbl spanname="descr" cols="2"> | ||
3182 | <tbody valign="top"> | ||
3183 | <row> | ||
3184 | <entry><constant>V4L2_FLASH_LED_MODE_NONE</constant></entry> | ||
3185 | <entry>Off.</entry> | ||
3186 | </row> | ||
3187 | <row> | ||
3188 | <entry><constant>V4L2_FLASH_LED_MODE_FLASH</constant></entry> | ||
3189 | <entry>Flash mode.</entry> | ||
3190 | </row> | ||
3191 | <row> | ||
3192 | <entry><constant>V4L2_FLASH_LED_MODE_TORCH</constant></entry> | ||
3193 | <entry>Torch mode. See V4L2_CID_FLASH_TORCH_INTENSITY.</entry> | ||
3194 | </row> | ||
3195 | </tbody> | ||
3196 | </entrytbl> | ||
3197 | </row> | ||
3198 | <row> | ||
3199 | <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_SOURCE</constant></entry> | ||
3200 | <entry>menu</entry> | ||
3201 | </row> | ||
3202 | <row id="v4l2-flash-strobe-source"><entry | ||
3203 | spanname="descr">Defines the source of the flash LED | ||
3204 | strobe.</entry> | ||
3205 | </row> | ||
3206 | <row> | ||
3207 | <entrytbl spanname="descr" cols="2"> | ||
3208 | <tbody valign="top"> | ||
3209 | <row> | ||
3210 | <entry><constant>V4L2_FLASH_STROBE_SOURCE_SOFTWARE</constant></entry> | ||
3211 | <entry>The flash strobe is triggered by using | ||
3212 | the V4L2_CID_FLASH_STROBE control.</entry> | ||
3213 | </row> | ||
3214 | <row> | ||
3215 | <entry><constant>V4L2_FLASH_STROBE_SOURCE_EXTERNAL</constant></entry> | ||
3216 | <entry>The flash strobe is triggered by an | ||
3217 | external source. Typically this is a sensor, | ||
3218 | which makes it possible to synchronises the | ||
3219 | flash strobe start to exposure start.</entry> | ||
3220 | </row> | ||
3221 | </tbody> | ||
3222 | </entrytbl> | ||
3223 | </row> | ||
3224 | <row> | ||
3225 | <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE</constant></entry> | ||
3226 | <entry>button</entry> | ||
3227 | </row> | ||
3228 | <row> | ||
3229 | <entry spanname="descr">Strobe flash. Valid when | ||
3230 | V4L2_CID_FLASH_LED_MODE is set to | ||
3231 | V4L2_FLASH_LED_MODE_FLASH and V4L2_CID_FLASH_STROBE_SOURCE | ||
3232 | is set to V4L2_FLASH_STROBE_SOURCE_SOFTWARE. Setting this | ||
3233 | control may not be possible in presence of some faults. | ||
3234 | See V4L2_CID_FLASH_FAULT.</entry> | ||
3235 | </row> | ||
3236 | <row> | ||
3237 | <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_STOP</constant></entry> | ||
3238 | <entry>button</entry> | ||
3239 | </row> | ||
3240 | <row><entry spanname="descr">Stop flash strobe immediately.</entry> | ||
3241 | </row> | ||
3242 | <row> | ||
3243 | <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_STATUS</constant></entry> | ||
3244 | <entry>boolean</entry> | ||
3245 | </row> | ||
3246 | <row> | ||
3247 | <entry spanname="descr">Strobe status: whether the flash | ||
3248 | is strobing at the moment or not. This is a read-only | ||
3249 | control.</entry> | ||
3250 | </row> | ||
3251 | <row> | ||
3252 | <entry spanname="id"><constant>V4L2_CID_FLASH_TIMEOUT</constant></entry> | ||
3253 | <entry>integer</entry> | ||
3254 | </row> | ||
3255 | <row> | ||
3256 | <entry spanname="descr">Hardware timeout for flash. The | ||
3257 | flash strobe is stopped after this period of time has | ||
3258 | passed from the start of the strobe.</entry> | ||
3259 | </row> | ||
3260 | <row> | ||
3261 | <entry spanname="id"><constant>V4L2_CID_FLASH_INTENSITY</constant></entry> | ||
3262 | <entry>integer</entry> | ||
3263 | </row> | ||
3264 | <row> | ||
3265 | <entry spanname="descr">Intensity of the flash strobe when | ||
3266 | the flash LED is in flash mode | ||
3267 | (V4L2_FLASH_LED_MODE_FLASH). The unit should be milliamps | ||
3268 | (mA) if possible.</entry> | ||
3269 | </row> | ||
3270 | <row> | ||
3271 | <entry spanname="id"><constant>V4L2_CID_FLASH_TORCH_INTENSITY</constant></entry> | ||
3272 | <entry>integer</entry> | ||
3273 | </row> | ||
3274 | <row> | ||
3275 | <entry spanname="descr">Intensity of the flash LED in | ||
3276 | torch mode (V4L2_FLASH_LED_MODE_TORCH). The unit should be | ||
3277 | milliamps (mA) if possible. Setting this control may not | ||
3278 | be possible in presence of some faults. See | ||
3279 | V4L2_CID_FLASH_FAULT.</entry> | ||
3280 | </row> | ||
3281 | <row> | ||
3282 | <entry spanname="id"><constant>V4L2_CID_FLASH_INDICATOR_INTENSITY</constant></entry> | ||
3283 | <entry>integer</entry> | ||
3284 | </row> | ||
3285 | <row> | ||
3286 | <entry spanname="descr">Intensity of the indicator LED. | ||
3287 | The indicator LED may be fully independent of the flash | ||
3288 | LED. The unit should be microamps (uA) if possible.</entry> | ||
3289 | </row> | ||
3290 | <row> | ||
3291 | <entry spanname="id"><constant>V4L2_CID_FLASH_FAULT</constant></entry> | ||
3292 | <entry>bitmask</entry> | ||
3293 | </row> | ||
3294 | <row> | ||
3295 | <entry spanname="descr">Faults related to the flash. The | ||
3296 | faults tell about specific problems in the flash chip | ||
3297 | itself or the LEDs attached to it. Faults may prevent | ||
3298 | further use of some of the flash controls. In particular, | ||
3299 | V4L2_CID_FLASH_LED_MODE is set to V4L2_FLASH_LED_MODE_NONE | ||
3300 | if the fault affects the flash LED. Exactly which faults | ||
3301 | have such an effect is chip dependent. Reading the faults | ||
3302 | resets the control and returns the chip to a usable state | ||
3303 | if possible.</entry> | ||
3304 | </row> | ||
3305 | <row> | ||
3306 | <entrytbl spanname="descr" cols="2"> | ||
3307 | <tbody valign="top"> | ||
3308 | <row> | ||
3309 | <entry><constant>V4L2_FLASH_FAULT_OVER_VOLTAGE</constant></entry> | ||
3310 | <entry>Flash controller voltage to the flash LED | ||
3311 | has exceeded the limit specific to the flash | ||
3312 | controller.</entry> | ||
3313 | </row> | ||
3314 | <row> | ||
3315 | <entry><constant>V4L2_FLASH_FAULT_TIMEOUT</constant></entry> | ||
3316 | <entry>The flash strobe was still on when | ||
3317 | the timeout set by the user --- | ||
3318 | V4L2_CID_FLASH_TIMEOUT control --- has expired. | ||
3319 | Not all flash controllers may set this in all | ||
3320 | such conditions.</entry> | ||
3321 | </row> | ||
3322 | <row> | ||
3323 | <entry><constant>V4L2_FLASH_FAULT_OVER_TEMPERATURE</constant></entry> | ||
3324 | <entry>The flash controller has overheated.</entry> | ||
3325 | </row> | ||
3326 | <row> | ||
3327 | <entry><constant>V4L2_FLASH_FAULT_SHORT_CIRCUIT</constant></entry> | ||
3328 | <entry>The short circuit protection of the flash | ||
3329 | controller has been triggered.</entry> | ||
3330 | </row> | ||
3331 | </tbody> | ||
3332 | </entrytbl> | ||
3333 | </row> | ||
3334 | <row> | ||
3335 | <entry spanname="id"><constant>V4L2_CID_FLASH_CHARGE</constant></entry> | ||
3336 | <entry>boolean</entry> | ||
3337 | </row> | ||
3338 | <row><entry spanname="descr">Enable or disable charging of the xenon | ||
3339 | flash capacitor.</entry> | ||
3340 | </row> | ||
3341 | <row> | ||
3342 | <entry spanname="id"><constant>V4L2_CID_FLASH_READY</constant></entry> | ||
3343 | <entry>boolean</entry> | ||
3344 | </row> | ||
3345 | <row> | ||
3346 | <entry spanname="descr">Is the flash ready to strobe? | ||
3347 | Xenon flashes require their capacitors charged before | ||
3348 | strobing. LED flashes often require a cooldown period | ||
3349 | after strobe during which another strobe will not be | ||
3350 | possible. This is a read-only control.</entry> | ||
3351 | </row> | ||
3352 | <row><entry></entry></row> | ||
3353 | </tbody> | ||
3354 | </tgroup> | ||
3355 | </table> | ||
3356 | |||
3357 | </section> | ||
2095 | </section> | 3358 | </section> |
2096 | 3359 | ||
2097 | <!-- | 3360 | <!-- |
diff --git a/Documentation/DocBook/v4l/crop.pdf b/Documentation/DocBook/media/v4l/crop.pdf index c9fb81cd32f3..c9fb81cd32f3 100644 --- a/Documentation/DocBook/v4l/crop.pdf +++ b/Documentation/DocBook/media/v4l/crop.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/dev-capture.xml b/Documentation/DocBook/media/v4l/dev-capture.xml index 2237c661f26a..2237c661f26a 100644 --- a/Documentation/DocBook/v4l/dev-capture.xml +++ b/Documentation/DocBook/media/v4l/dev-capture.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-codec.xml b/Documentation/DocBook/media/v4l/dev-codec.xml index 6e156dc45b94..6e156dc45b94 100644 --- a/Documentation/DocBook/v4l/dev-codec.xml +++ b/Documentation/DocBook/media/v4l/dev-codec.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-effect.xml b/Documentation/DocBook/media/v4l/dev-effect.xml index 9c243beba0e6..9c243beba0e6 100644 --- a/Documentation/DocBook/v4l/dev-effect.xml +++ b/Documentation/DocBook/media/v4l/dev-effect.xml | |||
diff --git a/Documentation/DocBook/media/v4l/dev-event.xml b/Documentation/DocBook/media/v4l/dev-event.xml new file mode 100644 index 000000000000..f14ae3fe107c --- /dev/null +++ b/Documentation/DocBook/media/v4l/dev-event.xml | |||
@@ -0,0 +1,51 @@ | |||
1 | <title>Event Interface</title> | ||
2 | |||
3 | <para>The V4L2 event interface provides a means for a user to get | ||
4 | immediately notified on certain conditions taking place on a device. | ||
5 | This might include start of frame or loss of signal events, for | ||
6 | example. Changes in the value or state of a V4L2 control can also be | ||
7 | reported through events. | ||
8 | </para> | ||
9 | |||
10 | <para>To receive events, the events the user is interested in first must | ||
11 | be subscribed using the &VIDIOC-SUBSCRIBE-EVENT; ioctl. Once an event is | ||
12 | subscribed, the events of subscribed types are dequeueable using the | ||
13 | &VIDIOC-DQEVENT; ioctl. Events may be unsubscribed using | ||
14 | VIDIOC_UNSUBSCRIBE_EVENT ioctl. The special event type V4L2_EVENT_ALL may | ||
15 | be used to unsubscribe all the events the driver supports.</para> | ||
16 | |||
17 | <para>The event subscriptions and event queues are specific to file | ||
18 | handles. Subscribing an event on one file handle does not affect | ||
19 | other file handles.</para> | ||
20 | |||
21 | <para>The information on dequeueable events is obtained by using select or | ||
22 | poll system calls on video devices. The V4L2 events use POLLPRI events on | ||
23 | poll system call and exceptions on select system call.</para> | ||
24 | |||
25 | <para>Starting with kernel 3.1 certain guarantees can be given with | ||
26 | regards to events:<orderedlist> | ||
27 | <listitem> | ||
28 | <para>Each subscribed event has its own internal dedicated event queue. | ||
29 | This means that flooding of one event type will not interfere with other | ||
30 | event types.</para> | ||
31 | </listitem> | ||
32 | <listitem> | ||
33 | <para>If the internal event queue for a particular subscribed event | ||
34 | becomes full, then the oldest event in that queue will be dropped.</para> | ||
35 | </listitem> | ||
36 | <listitem> | ||
37 | <para>Where applicable, certain event types can ensure that the payload | ||
38 | of the oldest event that is about to be dropped will be merged with the payload | ||
39 | of the next oldest event. Thus ensuring that no information is lost, but only an | ||
40 | intermediate step leading up to that information. See the documentation for the | ||
41 | event you want to subscribe to whether this is applicable for that event or not.</para> | ||
42 | </listitem> | ||
43 | </orderedlist></para> | ||
44 | |||
45 | <!-- | ||
46 | Local Variables: | ||
47 | mode: sgml | ||
48 | sgml-parent-document: "v4l2.sgml" | ||
49 | indent-tabs-mode: nil | ||
50 | End: | ||
51 | --> | ||
diff --git a/Documentation/DocBook/v4l/dev-osd.xml b/Documentation/DocBook/media/v4l/dev-osd.xml index c9a68a2ccd33..c9a68a2ccd33 100644 --- a/Documentation/DocBook/v4l/dev-osd.xml +++ b/Documentation/DocBook/media/v4l/dev-osd.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-output.xml b/Documentation/DocBook/media/v4l/dev-output.xml index 919e22c53854..919e22c53854 100644 --- a/Documentation/DocBook/v4l/dev-output.xml +++ b/Documentation/DocBook/media/v4l/dev-output.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-overlay.xml b/Documentation/DocBook/media/v4l/dev-overlay.xml index 92513cf79150..92513cf79150 100644 --- a/Documentation/DocBook/v4l/dev-overlay.xml +++ b/Documentation/DocBook/media/v4l/dev-overlay.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-radio.xml b/Documentation/DocBook/media/v4l/dev-radio.xml index 73aa90b45b34..73aa90b45b34 100644 --- a/Documentation/DocBook/v4l/dev-radio.xml +++ b/Documentation/DocBook/media/v4l/dev-radio.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-raw-vbi.xml b/Documentation/DocBook/media/v4l/dev-raw-vbi.xml index c5a70bdfaf27..c5a70bdfaf27 100644 --- a/Documentation/DocBook/v4l/dev-raw-vbi.xml +++ b/Documentation/DocBook/media/v4l/dev-raw-vbi.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-rds.xml b/Documentation/DocBook/media/v4l/dev-rds.xml index 2427f54397e7..2427f54397e7 100644 --- a/Documentation/DocBook/v4l/dev-rds.xml +++ b/Documentation/DocBook/media/v4l/dev-rds.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-sliced-vbi.xml b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml index 69e789fa7f7b..69e789fa7f7b 100644 --- a/Documentation/DocBook/v4l/dev-sliced-vbi.xml +++ b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-subdev.xml b/Documentation/DocBook/media/v4l/dev-subdev.xml index 05c8fefcbcbe..05c8fefcbcbe 100644 --- a/Documentation/DocBook/v4l/dev-subdev.xml +++ b/Documentation/DocBook/media/v4l/dev-subdev.xml | |||
diff --git a/Documentation/DocBook/v4l/dev-teletext.xml b/Documentation/DocBook/media/v4l/dev-teletext.xml index 414b1cfff9f4..414b1cfff9f4 100644 --- a/Documentation/DocBook/v4l/dev-teletext.xml +++ b/Documentation/DocBook/media/v4l/dev-teletext.xml | |||
diff --git a/Documentation/DocBook/v4l/driver.xml b/Documentation/DocBook/media/v4l/driver.xml index 1f7eea5c4ec3..1f7eea5c4ec3 100644 --- a/Documentation/DocBook/v4l/driver.xml +++ b/Documentation/DocBook/media/v4l/driver.xml | |||
diff --git a/Documentation/DocBook/v4l/fdl-appendix.xml b/Documentation/DocBook/media/v4l/fdl-appendix.xml index ae22394ba997..ae22394ba997 100644 --- a/Documentation/DocBook/v4l/fdl-appendix.xml +++ b/Documentation/DocBook/media/v4l/fdl-appendix.xml | |||
diff --git a/Documentation/DocBook/v4l/fieldseq_bt.pdf b/Documentation/DocBook/media/v4l/fieldseq_bt.pdf index 26598b23f80d..26598b23f80d 100644 --- a/Documentation/DocBook/v4l/fieldseq_bt.pdf +++ b/Documentation/DocBook/media/v4l/fieldseq_bt.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/fieldseq_tb.pdf b/Documentation/DocBook/media/v4l/fieldseq_tb.pdf index 4965b22ddb3a..4965b22ddb3a 100644 --- a/Documentation/DocBook/v4l/fieldseq_tb.pdf +++ b/Documentation/DocBook/media/v4l/fieldseq_tb.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/func-close.xml b/Documentation/DocBook/media/v4l/func-close.xml index dfb41cbbbec3..dfb41cbbbec3 100644 --- a/Documentation/DocBook/v4l/func-close.xml +++ b/Documentation/DocBook/media/v4l/func-close.xml | |||
diff --git a/Documentation/DocBook/media/v4l/func-ioctl.xml b/Documentation/DocBook/media/v4l/func-ioctl.xml new file mode 100644 index 000000000000..2de64be706f5 --- /dev/null +++ b/Documentation/DocBook/media/v4l/func-ioctl.xml | |||
@@ -0,0 +1,79 @@ | |||
1 | <refentry id="func-ioctl"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2 ioctl()</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>v4l2-ioctl</refname> | ||
9 | <refpurpose>Program a V4L2 device</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcsynopsisinfo>#include <sys/ioctl.h></funcsynopsisinfo> | ||
15 | <funcprototype> | ||
16 | <funcdef>int <function>ioctl</function></funcdef> | ||
17 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
18 | <paramdef>int <parameter>request</parameter></paramdef> | ||
19 | <paramdef>void *<parameter>argp</parameter></paramdef> | ||
20 | </funcprototype> | ||
21 | </funcsynopsis> | ||
22 | </refsynopsisdiv> | ||
23 | |||
24 | <refsect1> | ||
25 | <title>Arguments</title> | ||
26 | |||
27 | <variablelist> | ||
28 | <varlistentry> | ||
29 | <term><parameter>fd</parameter></term> | ||
30 | <listitem> | ||
31 | <para>&fd;</para> | ||
32 | </listitem> | ||
33 | </varlistentry> | ||
34 | <varlistentry> | ||
35 | <term><parameter>request</parameter></term> | ||
36 | <listitem> | ||
37 | <para>V4L2 ioctl request code as defined in the <filename>videodev2.h</filename> header file, for example | ||
38 | VIDIOC_QUERYCAP.</para> | ||
39 | </listitem> | ||
40 | </varlistentry> | ||
41 | <varlistentry> | ||
42 | <term><parameter>argp</parameter></term> | ||
43 | <listitem> | ||
44 | <para>Pointer to a function parameter, usually a structure.</para> | ||
45 | </listitem> | ||
46 | </varlistentry> | ||
47 | </variablelist> | ||
48 | </refsect1> | ||
49 | |||
50 | <refsect1> | ||
51 | <title>Description</title> | ||
52 | |||
53 | <para>The <function>ioctl()</function> function is used to program | ||
54 | V4L2 devices. The argument <parameter>fd</parameter> must be an open | ||
55 | file descriptor. An ioctl <parameter>request</parameter> has encoded | ||
56 | in it whether the argument is an input, output or read/write | ||
57 | parameter, and the size of the argument <parameter>argp</parameter> in | ||
58 | bytes. Macros and defines specifying V4L2 ioctl requests are located | ||
59 | in the <filename>videodev2.h</filename> header file. | ||
60 | Applications should use their own copy, not include the version in the | ||
61 | kernel sources on the system they compile on. All V4L2 ioctl requests, | ||
62 | their respective function and parameters are specified in <xref | ||
63 | linkend="user-func" />.</para> | ||
64 | </refsect1> | ||
65 | |||
66 | <refsect1> | ||
67 | &return-value; | ||
68 | <para>When an ioctl that takes an output or read/write parameter fails, | ||
69 | the parameter remains unmodified.</para> | ||
70 | </refsect1> | ||
71 | </refentry> | ||
72 | |||
73 | <!-- | ||
74 | Local Variables: | ||
75 | mode: sgml | ||
76 | sgml-parent-document: "v4l2.sgml" | ||
77 | indent-tabs-mode: nil | ||
78 | End: | ||
79 | --> | ||
diff --git a/Documentation/DocBook/v4l/func-mmap.xml b/Documentation/DocBook/media/v4l/func-mmap.xml index 786732b64bbd..786732b64bbd 100644 --- a/Documentation/DocBook/v4l/func-mmap.xml +++ b/Documentation/DocBook/media/v4l/func-mmap.xml | |||
diff --git a/Documentation/DocBook/v4l/func-munmap.xml b/Documentation/DocBook/media/v4l/func-munmap.xml index e2c4190f9bb6..e2c4190f9bb6 100644 --- a/Documentation/DocBook/v4l/func-munmap.xml +++ b/Documentation/DocBook/media/v4l/func-munmap.xml | |||
diff --git a/Documentation/DocBook/v4l/func-open.xml b/Documentation/DocBook/media/v4l/func-open.xml index 7595d07a8c72..7595d07a8c72 100644 --- a/Documentation/DocBook/v4l/func-open.xml +++ b/Documentation/DocBook/media/v4l/func-open.xml | |||
diff --git a/Documentation/DocBook/v4l/func-poll.xml b/Documentation/DocBook/media/v4l/func-poll.xml index ec3c718f5963..ec3c718f5963 100644 --- a/Documentation/DocBook/v4l/func-poll.xml +++ b/Documentation/DocBook/media/v4l/func-poll.xml | |||
diff --git a/Documentation/DocBook/v4l/func-read.xml b/Documentation/DocBook/media/v4l/func-read.xml index a5089bf8873d..a5089bf8873d 100644 --- a/Documentation/DocBook/v4l/func-read.xml +++ b/Documentation/DocBook/media/v4l/func-read.xml | |||
diff --git a/Documentation/DocBook/v4l/func-select.xml b/Documentation/DocBook/media/v4l/func-select.xml index b6713623181f..b6713623181f 100644 --- a/Documentation/DocBook/v4l/func-select.xml +++ b/Documentation/DocBook/media/v4l/func-select.xml | |||
diff --git a/Documentation/DocBook/v4l/func-write.xml b/Documentation/DocBook/media/v4l/func-write.xml index 2c09c09371c3..2c09c09371c3 100644 --- a/Documentation/DocBook/v4l/func-write.xml +++ b/Documentation/DocBook/media/v4l/func-write.xml | |||
diff --git a/Documentation/DocBook/media/v4l/gen-errors.xml b/Documentation/DocBook/media/v4l/gen-errors.xml new file mode 100644 index 000000000000..5bbf3ce1973a --- /dev/null +++ b/Documentation/DocBook/media/v4l/gen-errors.xml | |||
@@ -0,0 +1,78 @@ | |||
1 | <title>Generic Error Codes</title> | ||
2 | |||
3 | <table frame="none" pgwide="1" id="gen-errors"> | ||
4 | <title>Generic error codes</title> | ||
5 | <tgroup cols="2"> | ||
6 | &cs-str; | ||
7 | <tbody valign="top"> | ||
8 | <!-- Keep it ordered alphabetically --> | ||
9 | <row> | ||
10 | <entry>EBADF</entry> | ||
11 | <entry>The file descriptor is not a valid.</entry> | ||
12 | </row> | ||
13 | <row> | ||
14 | <entry>EBUSY</entry> | ||
15 | <entry>The ioctl can't be handled because the device is busy. This is | ||
16 | typically return while device is streaming, and an ioctl tried to | ||
17 | change something that would affect the stream, or would require the | ||
18 | usage of a hardware resource that was already allocated. The ioctl | ||
19 | must not be retried without performing another action to fix the | ||
20 | problem first (typically: stop the stream before retrying).</entry> | ||
21 | </row> | ||
22 | <row> | ||
23 | <entry>EFAULT</entry> | ||
24 | <entry>There was a failure while copying data from/to userspace, | ||
25 | probably caused by an invalid pointer reference.</entry> | ||
26 | </row> | ||
27 | <row> | ||
28 | <entry>EINVAL</entry> | ||
29 | <entry>One or more of the ioctl parameters are invalid or out of the | ||
30 | allowed range. This is a widely used error code. See the individual | ||
31 | ioctl requests for specific causes.</entry> | ||
32 | </row> | ||
33 | <row> | ||
34 | <entry>ENODEV</entry> | ||
35 | <entry>Device not found or was removed.</entry> | ||
36 | </row> | ||
37 | <row> | ||
38 | <entry>ENOMEM</entry> | ||
39 | <entry>There's not enough memory to handle the desired operation.</entry> | ||
40 | </row> | ||
41 | <row> | ||
42 | <entry>ENOTTY</entry> | ||
43 | <entry>The ioctl is not supported by the driver, actually meaning that | ||
44 | the required functionality is not available, or the file | ||
45 | descriptor is not for a media device.</entry> | ||
46 | </row> | ||
47 | <row> | ||
48 | <entry>ENOSPC</entry> | ||
49 | <entry>On USB devices, the stream ioctl's can return this error, meaning | ||
50 | that this request would overcommit the usb bandwidth reserved | ||
51 | for periodic transfers (up to 80% of the USB bandwidth).</entry> | ||
52 | </row> | ||
53 | <row> | ||
54 | <entry>ENOSYS or EOPNOTSUPP</entry> | ||
55 | <entry>Function not available for this device (dvb API only. Will likely | ||
56 | be replaced anytime soon by ENOTTY).</entry> | ||
57 | </row> | ||
58 | <row> | ||
59 | <entry>EPERM</entry> | ||
60 | <entry>Permission denied. Can be returned if the device needs write | ||
61 | permission, or some special capabilities is needed | ||
62 | (e. g. root)</entry> | ||
63 | </row> | ||
64 | <row> | ||
65 | <entry>EWOULDBLOCK</entry> | ||
66 | <entry>Operation would block. Used when the ioctl would need to wait | ||
67 | for an event, but the device was opened in non-blocking mode.</entry> | ||
68 | </row> | ||
69 | </tbody> | ||
70 | </tgroup> | ||
71 | </table> | ||
72 | |||
73 | <para>Note 1: ioctls may return other error codes. Since errors may have side | ||
74 | effects such as a driver reset, applications should abort on unexpected errors. | ||
75 | </para> | ||
76 | |||
77 | <para>Note 2: Request-specific error codes are listed in the individual | ||
78 | requests descriptions.</para> | ||
diff --git a/Documentation/DocBook/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml index c57d1ec6291c..c57d1ec6291c 100644 --- a/Documentation/DocBook/v4l/io.xml +++ b/Documentation/DocBook/media/v4l/io.xml | |||
diff --git a/Documentation/DocBook/v4l/keytable.c.xml b/Documentation/DocBook/media/v4l/keytable.c.xml index d53254a3be15..d53254a3be15 100644 --- a/Documentation/DocBook/v4l/keytable.c.xml +++ b/Documentation/DocBook/media/v4l/keytable.c.xml | |||
diff --git a/Documentation/DocBook/v4l/libv4l.xml b/Documentation/DocBook/media/v4l/libv4l.xml index 3cb10ec51929..3cb10ec51929 100644 --- a/Documentation/DocBook/v4l/libv4l.xml +++ b/Documentation/DocBook/media/v4l/libv4l.xml | |||
diff --git a/Documentation/DocBook/v4l/lirc_device_interface.xml b/Documentation/DocBook/media/v4l/lirc_device_interface.xml index 0e0453f39e73..8d7eb6bf6312 100644 --- a/Documentation/DocBook/v4l/lirc_device_interface.xml +++ b/Documentation/DocBook/media/v4l/lirc_device_interface.xml | |||
@@ -246,6 +246,8 @@ on working with the default settings initially.</para> | |||
246 | </listitem> | 246 | </listitem> |
247 | </varlistentry> | 247 | </varlistentry> |
248 | </variablelist> | 248 | </variablelist> |
249 | 249 | <section id="lirc_dev_errors"> | |
250 | &return-value; | ||
251 | </section> | ||
250 | </section> | 252 | </section> |
251 | </section> | 253 | </section> |
diff --git a/Documentation/DocBook/v4l/media-controller.xml b/Documentation/DocBook/media/v4l/media-controller.xml index 873ac3a621f0..873ac3a621f0 100644 --- a/Documentation/DocBook/v4l/media-controller.xml +++ b/Documentation/DocBook/media/v4l/media-controller.xml | |||
diff --git a/Documentation/DocBook/v4l/media-func-close.xml b/Documentation/DocBook/media/v4l/media-func-close.xml index be149c802aeb..be149c802aeb 100644 --- a/Documentation/DocBook/v4l/media-func-close.xml +++ b/Documentation/DocBook/media/v4l/media-func-close.xml | |||
diff --git a/Documentation/DocBook/v4l/media-func-ioctl.xml b/Documentation/DocBook/media/v4l/media-func-ioctl.xml index bda8604de15c..39478d0fbcaa 100644 --- a/Documentation/DocBook/v4l/media-func-ioctl.xml +++ b/Documentation/DocBook/media/v4l/media-func-ioctl.xml | |||
@@ -63,54 +63,11 @@ | |||
63 | </refsect1> | 63 | </refsect1> |
64 | 64 | ||
65 | <refsect1> | 65 | <refsect1> |
66 | <title>Return Value</title> | 66 | &return-value; |
67 | 67 | ||
68 | <para><function>ioctl()</function> returns <returnvalue>0</returnvalue> on | 68 | <para>Request-specific error codes are listed in the |
69 | success. On failure, <returnvalue>-1</returnvalue> is returned, and the | ||
70 | <varname>errno</varname> variable is set appropriately. Generic error codes | ||
71 | are listed below, and request-specific error codes are listed in the | ||
72 | individual requests descriptions.</para> | 69 | individual requests descriptions.</para> |
73 | <para>When an ioctl that takes an output or read/write parameter fails, | 70 | <para>When an ioctl that takes an output or read/write parameter fails, |
74 | the parameter remains unmodified.</para> | 71 | the parameter remains unmodified.</para> |
75 | |||
76 | <variablelist> | ||
77 | <varlistentry> | ||
78 | <term><errorcode>EBADF</errorcode></term> | ||
79 | <listitem> | ||
80 | <para><parameter>fd</parameter> is not a valid open file descriptor. | ||
81 | </para> | ||
82 | </listitem> | ||
83 | </varlistentry> | ||
84 | <varlistentry> | ||
85 | <term><errorcode>EFAULT</errorcode></term> | ||
86 | <listitem> | ||
87 | <para><parameter>argp</parameter> references an inaccessible memory | ||
88 | area.</para> | ||
89 | </listitem> | ||
90 | </varlistentry> | ||
91 | <varlistentry> | ||
92 | <term><errorcode>EINVAL</errorcode></term> | ||
93 | <listitem> | ||
94 | <para>The <parameter>request</parameter> or the data pointed to by | ||
95 | <parameter>argp</parameter> is not valid. This is a very common error | ||
96 | code, see the individual ioctl requests listed in | ||
97 | <xref linkend="media-user-func" /> for actual causes.</para> | ||
98 | </listitem> | ||
99 | </varlistentry> | ||
100 | <varlistentry> | ||
101 | <term><errorcode>ENOMEM</errorcode></term> | ||
102 | <listitem> | ||
103 | <para>Insufficient kernel memory was available to complete the | ||
104 | request.</para> | ||
105 | </listitem> | ||
106 | </varlistentry> | ||
107 | <varlistentry> | ||
108 | <term><errorcode>ENOTTY</errorcode></term> | ||
109 | <listitem> | ||
110 | <para><parameter>fd</parameter> is not associated with a character | ||
111 | special device.</para> | ||
112 | </listitem> | ||
113 | </varlistentry> | ||
114 | </variablelist> | ||
115 | </refsect1> | 72 | </refsect1> |
116 | </refentry> | 73 | </refentry> |
diff --git a/Documentation/DocBook/v4l/media-func-open.xml b/Documentation/DocBook/media/v4l/media-func-open.xml index f7df034dc9ed..f7df034dc9ed 100644 --- a/Documentation/DocBook/v4l/media-func-open.xml +++ b/Documentation/DocBook/media/v4l/media-func-open.xml | |||
diff --git a/Documentation/DocBook/v4l/media-ioc-device-info.xml b/Documentation/DocBook/media/v4l/media-ioc-device-info.xml index 1f3237351bba..2ce521419e67 100644 --- a/Documentation/DocBook/v4l/media-ioc-device-info.xml +++ b/Documentation/DocBook/media/v4l/media-ioc-device-info.xml | |||
@@ -127,7 +127,6 @@ | |||
127 | </refsect1> | 127 | </refsect1> |
128 | 128 | ||
129 | <refsect1> | 129 | <refsect1> |
130 | <title>Return value</title> | 130 | &return-value; |
131 | <para>This function doesn't return specific error codes.</para> | ||
132 | </refsect1> | 131 | </refsect1> |
133 | </refentry> | 132 | </refentry> |
diff --git a/Documentation/DocBook/v4l/media-ioc-enum-entities.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml index 576b68b33f2c..576b68b33f2c 100644 --- a/Documentation/DocBook/v4l/media-ioc-enum-entities.xml +++ b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml | |||
diff --git a/Documentation/DocBook/v4l/media-ioc-enum-links.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-links.xml index d2fc73ef8d56..355df43badc5 100644 --- a/Documentation/DocBook/v4l/media-ioc-enum-links.xml +++ b/Documentation/DocBook/media/v4l/media-ioc-enum-links.xml | |||
@@ -139,7 +139,7 @@ | |||
139 | </table> | 139 | </table> |
140 | 140 | ||
141 | <table pgwide="1" frame="none" id="media-link-desc"> | 141 | <table pgwide="1" frame="none" id="media-link-desc"> |
142 | <title>struct <structname>media_links_desc</structname></title> | 142 | <title>struct <structname>media_link_desc</structname></title> |
143 | <tgroup cols="3"> | 143 | <tgroup cols="3"> |
144 | &cs-str; | 144 | &cs-str; |
145 | <tbody valign="top"> | 145 | <tbody valign="top"> |
diff --git a/Documentation/DocBook/v4l/media-ioc-setup-link.xml b/Documentation/DocBook/media/v4l/media-ioc-setup-link.xml index cec97af4dab4..fc2e522ee65a 100644 --- a/Documentation/DocBook/v4l/media-ioc-setup-link.xml +++ b/Documentation/DocBook/media/v4l/media-ioc-setup-link.xml | |||
@@ -72,15 +72,6 @@ | |||
72 | 72 | ||
73 | <variablelist> | 73 | <variablelist> |
74 | <varlistentry> | 74 | <varlistentry> |
75 | <term><errorcode>EBUSY</errorcode></term> | ||
76 | <listitem> | ||
77 | <para>The link properties can't be changed because the link is | ||
78 | currently busy. This can be caused, for instance, by an active media | ||
79 | stream (audio or video) on the link. The ioctl shouldn't be retried if | ||
80 | no other action is performed before to fix the problem.</para> | ||
81 | </listitem> | ||
82 | </varlistentry> | ||
83 | <varlistentry> | ||
84 | <term><errorcode>EINVAL</errorcode></term> | 75 | <term><errorcode>EINVAL</errorcode></term> |
85 | <listitem> | 76 | <listitem> |
86 | <para>The &media-link-desc; references a non-existing link, or the | 77 | <para>The &media-link-desc; references a non-existing link, or the |
diff --git a/Documentation/DocBook/v4l/pipeline.pdf b/Documentation/DocBook/media/v4l/pipeline.pdf index ee3e37f04b6a..ee3e37f04b6a 100644 --- a/Documentation/DocBook/v4l/pipeline.pdf +++ b/Documentation/DocBook/media/v4l/pipeline.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-grey.xml b/Documentation/DocBook/media/v4l/pixfmt-grey.xml index 3b72bc6b2de7..3b72bc6b2de7 100644 --- a/Documentation/DocBook/v4l/pixfmt-grey.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-grey.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-m420.xml b/Documentation/DocBook/media/v4l/pixfmt-m420.xml index ce4bc019e5c0..ce4bc019e5c0 100644 --- a/Documentation/DocBook/v4l/pixfmt-m420.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-m420.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-nv12.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12.xml index 873f67035181..873f67035181 100644 --- a/Documentation/DocBook/v4l/pixfmt-nv12.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-nv12.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-nv12m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml index c9e166d9ded8..c9e166d9ded8 100644 --- a/Documentation/DocBook/v4l/pixfmt-nv12m.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml index 7a2855a526c1..7a2855a526c1 100644 --- a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-nv16.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16.xml index 26094035fc04..26094035fc04 100644 --- a/Documentation/DocBook/v4l/pixfmt-nv16.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-nv16.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml index 4db272b8a0d3..4db272b8a0d3 100644 --- a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-packed-yuv.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml index 3cab5d0ca75d..3cab5d0ca75d 100644 --- a/Documentation/DocBook/v4l/pixfmt-packed-yuv.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-sbggr16.xml b/Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml index 519a9efbac10..519a9efbac10 100644 --- a/Documentation/DocBook/v4l/pixfmt-sbggr16.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-sbggr8.xml b/Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml index 5fe84ecc2ebe..5fe84ecc2ebe 100644 --- a/Documentation/DocBook/v4l/pixfmt-sbggr8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-sgbrg8.xml b/Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml index d67a472b0880..d67a472b0880 100644 --- a/Documentation/DocBook/v4l/pixfmt-sgbrg8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-sgrbg8.xml b/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml index 0cdf13b8ac1c..0cdf13b8ac1c 100644 --- a/Documentation/DocBook/v4l/pixfmt-sgrbg8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml index 7b274092e60c..7b274092e60c 100644 --- a/Documentation/DocBook/v4l/pixfmt-srggb10.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml index 9ba4fb690bc0..9ba4fb690bc0 100644 --- a/Documentation/DocBook/v4l/pixfmt-srggb12.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb8.xml index 2570e3be3cf1..2570e3be3cf1 100644 --- a/Documentation/DocBook/v4l/pixfmt-srggb8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb8.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-uyvy.xml b/Documentation/DocBook/media/v4l/pixfmt-uyvy.xml index 816c8d467c16..816c8d467c16 100644 --- a/Documentation/DocBook/v4l/pixfmt-uyvy.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-uyvy.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-vyuy.xml b/Documentation/DocBook/media/v4l/pixfmt-vyuy.xml index 61f12a5e68d9..61f12a5e68d9 100644 --- a/Documentation/DocBook/v4l/pixfmt-vyuy.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-vyuy.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-y10.xml b/Documentation/DocBook/media/v4l/pixfmt-y10.xml index d065043db8d8..d065043db8d8 100644 --- a/Documentation/DocBook/v4l/pixfmt-y10.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-y10.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-y10b.xml b/Documentation/DocBook/media/v4l/pixfmt-y10b.xml index adb0ad808c93..adb0ad808c93 100644 --- a/Documentation/DocBook/v4l/pixfmt-y10b.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-y10b.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-y12.xml b/Documentation/DocBook/media/v4l/pixfmt-y12.xml index ff417b858cc9..ff417b858cc9 100644 --- a/Documentation/DocBook/v4l/pixfmt-y12.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-y12.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-y16.xml b/Documentation/DocBook/media/v4l/pixfmt-y16.xml index d58404015078..d58404015078 100644 --- a/Documentation/DocBook/v4l/pixfmt-y16.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-y16.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-y41p.xml b/Documentation/DocBook/media/v4l/pixfmt-y41p.xml index 73c8536efb05..73c8536efb05 100644 --- a/Documentation/DocBook/v4l/pixfmt-y41p.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-y41p.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv410.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv410.xml index 8eb4a193d770..8eb4a193d770 100644 --- a/Documentation/DocBook/v4l/pixfmt-yuv410.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv410.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv411p.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml index 00e0960a9869..00e0960a9869 100644 --- a/Documentation/DocBook/v4l/pixfmt-yuv411p.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv420.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420.xml index 42d7de5e456d..42d7de5e456d 100644 --- a/Documentation/DocBook/v4l/pixfmt-yuv420.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv420.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml index f5d8f57495c8..f5d8f57495c8 100644 --- a/Documentation/DocBook/v4l/pixfmt-yuv420m.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv422p.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml index 4348bd9f0d01..4348bd9f0d01 100644 --- a/Documentation/DocBook/v4l/pixfmt-yuv422p.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-yuyv.xml b/Documentation/DocBook/media/v4l/pixfmt-yuyv.xml index bdb2ffacbbcc..bdb2ffacbbcc 100644 --- a/Documentation/DocBook/v4l/pixfmt-yuyv.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-yuyv.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt-yvyu.xml b/Documentation/DocBook/media/v4l/pixfmt-yvyu.xml index 40d17ae39dde..40d17ae39dde 100644 --- a/Documentation/DocBook/v4l/pixfmt-yvyu.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-yvyu.xml | |||
diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index deb660207f94..2ff6b7776d7f 100644 --- a/Documentation/DocBook/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml | |||
@@ -121,7 +121,7 @@ set this field to zero.</entry> | |||
121 | an array of <structname>v4l2_plane_pix_format</structname> structures, | 121 | an array of <structname>v4l2_plane_pix_format</structname> structures, |
122 | describing all planes of that format.</para> | 122 | describing all planes of that format.</para> |
123 | <table pgwide="1" frame="none" id="v4l2-plane-pix-format"> | 123 | <table pgwide="1" frame="none" id="v4l2-plane-pix-format"> |
124 | <title>struct <structname>vl42_plane_pix_format</structname></title> | 124 | <title>struct <structname>v4l2_plane_pix_format</structname></title> |
125 | <tgroup cols="3"> | 125 | <tgroup cols="3"> |
126 | &cs-str; | 126 | &cs-str; |
127 | <tbody valign="top"> | 127 | <tbody valign="top"> |
@@ -741,10 +741,55 @@ information.</para> | |||
741 | <row id="V4L2-PIX-FMT-MPEG"> | 741 | <row id="V4L2-PIX-FMT-MPEG"> |
742 | <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry> | 742 | <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry> |
743 | <entry>'MPEG'</entry> | 743 | <entry>'MPEG'</entry> |
744 | <entry>MPEG stream. The actual format is determined by | 744 | <entry>MPEG multiplexed stream. The actual format is determined by |
745 | extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see | 745 | extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see |
746 | <xref linkend="mpeg-control-id" />.</entry> | 746 | <xref linkend="mpeg-control-id" />.</entry> |
747 | </row> | 747 | </row> |
748 | <row id="V4L2-PIX-FMT-H264"> | ||
749 | <entry><constant>V4L2_PIX_FMT_H264</constant></entry> | ||
750 | <entry>'H264'</entry> | ||
751 | <entry>H264 video elementary stream with start codes.</entry> | ||
752 | </row> | ||
753 | <row id="V4L2-PIX-FMT-H264-NO-SC"> | ||
754 | <entry><constant>V4L2_PIX_FMT_H264_NO_SC</constant></entry> | ||
755 | <entry>'AVC1'</entry> | ||
756 | <entry>H264 video elementary stream without start codes.</entry> | ||
757 | </row> | ||
758 | <row id="V4L2-PIX-FMT-H263"> | ||
759 | <entry><constant>V4L2_PIX_FMT_H263</constant></entry> | ||
760 | <entry>'H263'</entry> | ||
761 | <entry>H263 video elementary stream.</entry> | ||
762 | </row> | ||
763 | <row id="V4L2-PIX-FMT-MPEG1"> | ||
764 | <entry><constant>V4L2_PIX_FMT_MPEG1</constant></entry> | ||
765 | <entry>'MPG1'</entry> | ||
766 | <entry>MPEG1 video elementary stream.</entry> | ||
767 | </row> | ||
768 | <row id="V4L2-PIX-FMT-MPEG2"> | ||
769 | <entry><constant>V4L2_PIX_FMT_MPEG2</constant></entry> | ||
770 | <entry>'MPG2'</entry> | ||
771 | <entry>MPEG2 video elementary stream.</entry> | ||
772 | </row> | ||
773 | <row id="V4L2-PIX-FMT-MPEG4"> | ||
774 | <entry><constant>V4L2_PIX_FMT_MPEG4</constant></entry> | ||
775 | <entry>'MPG4'</entry> | ||
776 | <entry>MPEG4 video elementary stream.</entry> | ||
777 | </row> | ||
778 | <row id="V4L2-PIX-FMT-XVID"> | ||
779 | <entry><constant>V4L2_PIX_FMT_XVID</constant></entry> | ||
780 | <entry>'XVID'</entry> | ||
781 | <entry>Xvid video elementary stream.</entry> | ||
782 | </row> | ||
783 | <row id="V4L2-PIX-FMT-VC1-ANNEX-G"> | ||
784 | <entry><constant>V4L2_PIX_FMT_VC1_ANNEX_G</constant></entry> | ||
785 | <entry>'VC1G'</entry> | ||
786 | <entry>VC1, SMPTE 421M Annex G compliant stream.</entry> | ||
787 | </row> | ||
788 | <row id="V4L2-PIX-FMT-VC1-ANNEX-L"> | ||
789 | <entry><constant>V4L2_PIX_FMT_VC1_ANNEX_L</constant></entry> | ||
790 | <entry>'VC1L'</entry> | ||
791 | <entry>VC1, SMPTE 421M Annex L compliant stream.</entry> | ||
792 | </row> | ||
748 | </tbody> | 793 | </tbody> |
749 | </tgroup> | 794 | </tgroup> |
750 | </table> | 795 | </table> |
@@ -804,6 +849,12 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm | |||
804 | <entry>'CPIA'</entry> | 849 | <entry>'CPIA'</entry> |
805 | <entry>YUV format used by the gspca cpia1 driver.</entry> | 850 | <entry>YUV format used by the gspca cpia1 driver.</entry> |
806 | </row> | 851 | </row> |
852 | <row id="V4L2-PIX-FMT-JPGL"> | ||
853 | <entry><constant>V4L2_PIX_FMT_JPGL</constant></entry> | ||
854 | <entry>'JPGL'</entry> | ||
855 | <entry>JPEG-Light format (Pegasus Lossless JPEG) | ||
856 | used in Divio webcams NW 80x.</entry> | ||
857 | </row> | ||
807 | <row id="V4L2-PIX-FMT-SPCA501"> | 858 | <row id="V4L2-PIX-FMT-SPCA501"> |
808 | <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry> | 859 | <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry> |
809 | <entry>'S501'</entry> | 860 | <entry>'S501'</entry> |
@@ -854,6 +905,11 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm | |||
854 | <entry>'PJPG'</entry> | 905 | <entry>'PJPG'</entry> |
855 | <entry>Pixart 73xx JPEG format used by the gspca driver.</entry> | 906 | <entry>Pixart 73xx JPEG format used by the gspca driver.</entry> |
856 | </row> | 907 | </row> |
908 | <row id="V4L2-PIX-FMT-SE401"> | ||
909 | <entry><constant>V4L2_PIX_FMT_SE401</constant></entry> | ||
910 | <entry>'S401'</entry> | ||
911 | <entry>Compressed RGB format used by the gspca se401 driver</entry> | ||
912 | </row> | ||
857 | <row id="V4L2-PIX-FMT-SQ905C"> | 913 | <row id="V4L2-PIX-FMT-SQ905C"> |
858 | <entry><constant>V4L2_PIX_FMT_SQ905C</constant></entry> | 914 | <entry><constant>V4L2_PIX_FMT_SQ905C</constant></entry> |
859 | <entry>'905C'</entry> | 915 | <entry>'905C'</entry> |
diff --git a/Documentation/DocBook/v4l/planar-apis.xml b/Documentation/DocBook/media/v4l/planar-apis.xml index 878ce2040488..878ce2040488 100644 --- a/Documentation/DocBook/v4l/planar-apis.xml +++ b/Documentation/DocBook/media/v4l/planar-apis.xml | |||
diff --git a/Documentation/DocBook/v4l/remote_controllers.xml b/Documentation/DocBook/media/v4l/remote_controllers.xml index 160e464d44b7..160e464d44b7 100644 --- a/Documentation/DocBook/v4l/remote_controllers.xml +++ b/Documentation/DocBook/media/v4l/remote_controllers.xml | |||
diff --git a/Documentation/DocBook/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml index 8d3409d2c632..49c532ebbbbe 100644 --- a/Documentation/DocBook/v4l/subdev-formats.xml +++ b/Documentation/DocBook/media/v4l/subdev-formats.xml | |||
@@ -380,9 +380,6 @@ | |||
380 | <title>Bayer Patterns</title> | 380 | <title>Bayer Patterns</title> |
381 | <mediaobject> | 381 | <mediaobject> |
382 | <imageobject> | 382 | <imageobject> |
383 | <imagedata fileref="bayer.pdf" format="PS" /> | ||
384 | </imageobject> | ||
385 | <imageobject> | ||
386 | <imagedata fileref="bayer.png" format="PNG" /> | 383 | <imagedata fileref="bayer.png" format="PNG" /> |
387 | </imageobject> | 384 | </imageobject> |
388 | <textobject> | 385 | <textobject> |
@@ -2528,7 +2525,7 @@ | |||
2528 | 2525 | ||
2529 | <para>Those data formats consist of an ordered sequence of 8-bit bytes | 2526 | <para>Those data formats consist of an ordered sequence of 8-bit bytes |
2530 | obtained from JPEG compression process. Additionally to the | 2527 | obtained from JPEG compression process. Additionally to the |
2531 | <constant>_JPEG</constant> prefix the format code is made of | 2528 | <constant>_JPEG</constant> postfix the format code is made of |
2532 | the following information. | 2529 | the following information. |
2533 | <itemizedlist> | 2530 | <itemizedlist> |
2534 | <listitem><para>The number of bus samples per entropy encoded byte.</para></listitem> | 2531 | <listitem><para>The number of bus samples per entropy encoded byte.</para></listitem> |
diff --git a/Documentation/DocBook/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml index a7fd76d0dac1..0d05e8747c12 100644 --- a/Documentation/DocBook/v4l/v4l2.xml +++ b/Documentation/DocBook/media/v4l/v4l2.xml | |||
@@ -87,7 +87,7 @@ Remote Controller chapter.</contrib> | |||
87 | </author> | 87 | </author> |
88 | 88 | ||
89 | <author> | 89 | <author> |
90 | <firstname>Pawel</firstname> | 90 | <firstname>Pawel</firstname> |
91 | <surname>Osciak</surname> | 91 | <surname>Osciak</surname> |
92 | <contrib>Designed and documented the multi-planar API.</contrib> | 92 | <contrib>Designed and documented the multi-planar API.</contrib> |
93 | <affiliation> | 93 | <affiliation> |
@@ -128,6 +128,15 @@ structs, ioctls) must be noted in more detail in the history chapter | |||
128 | applications. --> | 128 | applications. --> |
129 | 129 | ||
130 | <revision> | 130 | <revision> |
131 | <revnumber>3.1</revnumber> | ||
132 | <date>2011-06-27</date> | ||
133 | <authorinitials>mcc, po, hv</authorinitials> | ||
134 | <revremark>Documented that VIDIOC_QUERYCAP now returns a per-subsystem version instead of a per-driver one. | ||
135 | Standardize an error code for invalid ioctl. | ||
136 | Added V4L2_CTRL_TYPE_BITMASK.</revremark> | ||
137 | </revision> | ||
138 | |||
139 | <revision> | ||
131 | <revnumber>2.6.39</revnumber> | 140 | <revnumber>2.6.39</revnumber> |
132 | <date>2011-03-01</date> | 141 | <date>2011-03-01</date> |
133 | <authorinitials>mcc, po</authorinitials> | 142 | <authorinitials>mcc, po</authorinitials> |
@@ -401,7 +410,7 @@ and discussions on the V4L mailing list.</revremark> | |||
401 | </partinfo> | 410 | </partinfo> |
402 | 411 | ||
403 | <title>Video for Linux Two API Specification</title> | 412 | <title>Video for Linux Two API Specification</title> |
404 | <subtitle>Revision 2.6.39</subtitle> | 413 | <subtitle>Revision 3.1</subtitle> |
405 | 414 | ||
406 | <chapter id="common"> | 415 | <chapter id="common"> |
407 | &sub-common; | 416 | &sub-common; |
diff --git a/Documentation/DocBook/v4l/v4l2grab.c.xml b/Documentation/DocBook/media/v4l/v4l2grab.c.xml index bed12e40be27..bed12e40be27 100644 --- a/Documentation/DocBook/v4l/v4l2grab.c.xml +++ b/Documentation/DocBook/media/v4l/v4l2grab.c.xml | |||
diff --git a/Documentation/DocBook/v4l/vbi_525.pdf b/Documentation/DocBook/media/v4l/vbi_525.pdf index 9e72c25b208d..9e72c25b208d 100644 --- a/Documentation/DocBook/v4l/vbi_525.pdf +++ b/Documentation/DocBook/media/v4l/vbi_525.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/vbi_625.pdf b/Documentation/DocBook/media/v4l/vbi_625.pdf index 765235e33a4d..765235e33a4d 100644 --- a/Documentation/DocBook/v4l/vbi_625.pdf +++ b/Documentation/DocBook/media/v4l/vbi_625.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/vbi_hsync.pdf b/Documentation/DocBook/media/v4l/vbi_hsync.pdf index 200b668189bf..200b668189bf 100644 --- a/Documentation/DocBook/v4l/vbi_hsync.pdf +++ b/Documentation/DocBook/media/v4l/vbi_hsync.pdf | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/vidioc-cropcap.xml b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml index 816e90e283c5..b4f2f255211e 100644 --- a/Documentation/DocBook/v4l/vidioc-cropcap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml | |||
@@ -156,19 +156,10 @@ on 22 Oct 2002 subject "Re:[V4L][patches!] Re:v4l2/kernel-2.5" --> | |||
156 | <term><errorcode>EINVAL</errorcode></term> | 156 | <term><errorcode>EINVAL</errorcode></term> |
157 | <listitem> | 157 | <listitem> |
158 | <para>The &v4l2-cropcap; <structfield>type</structfield> is | 158 | <para>The &v4l2-cropcap; <structfield>type</structfield> is |
159 | invalid or the ioctl is not supported. This is not permitted for | 159 | invalid. This is not permitted for video capture, output and overlay devices, |
160 | video capture, output and overlay devices, which must support | 160 | which must support <constant>VIDIOC_CROPCAP</constant>.</para> |
161 | <constant>VIDIOC_CROPCAP</constant>.</para> | ||
162 | </listitem> | 161 | </listitem> |
163 | </varlistentry> | 162 | </varlistentry> |
164 | </variablelist> | 163 | </variablelist> |
165 | </refsect1> | 164 | </refsect1> |
166 | </refentry> | 165 | </refentry> |
167 | |||
168 | <!-- | ||
169 | Local Variables: | ||
170 | mode: sgml | ||
171 | sgml-parent-document: "v4l2.sgml" | ||
172 | indent-tabs-mode: nil | ||
173 | End: | ||
174 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml index 4a09e203af0f..4ecd966808de 100644 --- a/Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml +++ b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml | |||
@@ -258,18 +258,9 @@ could not identify it.</entry> | |||
258 | <varlistentry> | 258 | <varlistentry> |
259 | <term><errorcode>EINVAL</errorcode></term> | 259 | <term><errorcode>EINVAL</errorcode></term> |
260 | <listitem> | 260 | <listitem> |
261 | <para>The driver does not support this ioctl, or the | 261 | <para>The <structfield>match_type</structfield> is invalid.</para> |
262 | <structfield>match_type</structfield> is invalid.</para> | ||
263 | </listitem> | 262 | </listitem> |
264 | </varlistentry> | 263 | </varlistentry> |
265 | </variablelist> | 264 | </variablelist> |
266 | </refsect1> | 265 | </refsect1> |
267 | </refentry> | 266 | </refentry> |
268 | |||
269 | <!-- | ||
270 | Local Variables: | ||
271 | mode: sgml | ||
272 | sgml-parent-document: "v4l2.sgml" | ||
273 | indent-tabs-mode: nil | ||
274 | End: | ||
275 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-dbg-g-register.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml index 980c7f3e2fd6..a44aebc7997a 100644 --- a/Documentation/DocBook/v4l/vidioc-dbg-g-register.xml +++ b/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml | |||
@@ -247,15 +247,6 @@ register.</entry> | |||
247 | 247 | ||
248 | <variablelist> | 248 | <variablelist> |
249 | <varlistentry> | 249 | <varlistentry> |
250 | <term><errorcode>EINVAL</errorcode></term> | ||
251 | <listitem> | ||
252 | <para>The driver does not support this ioctl, or the kernel | ||
253 | was not compiled with the <constant>CONFIG_VIDEO_ADV_DEBUG</constant> | ||
254 | option, or the <structfield>match_type</structfield> is invalid, or the | ||
255 | selected chip or register does not exist.</para> | ||
256 | </listitem> | ||
257 | </varlistentry> | ||
258 | <varlistentry> | ||
259 | <term><errorcode>EPERM</errorcode></term> | 250 | <term><errorcode>EPERM</errorcode></term> |
260 | <listitem> | 251 | <listitem> |
261 | <para>Insufficient permissions. Root privileges are required | 252 | <para>Insufficient permissions. Root privileges are required |
@@ -265,11 +256,3 @@ to execute these ioctls.</para> | |||
265 | </variablelist> | 256 | </variablelist> |
266 | </refsect1> | 257 | </refsect1> |
267 | </refentry> | 258 | </refentry> |
268 | |||
269 | <!-- | ||
270 | Local Variables: | ||
271 | mode: sgml | ||
272 | sgml-parent-document: "v4l2.sgml" | ||
273 | indent-tabs-mode: nil | ||
274 | End: | ||
275 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml index 4e0a7cc30812..7769642ee431 100644 --- a/Documentation/DocBook/v4l/vidioc-dqevent.xml +++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml | |||
@@ -81,6 +81,13 @@ | |||
81 | </row> | 81 | </row> |
82 | <row> | 82 | <row> |
83 | <entry></entry> | 83 | <entry></entry> |
84 | <entry>&v4l2-event-ctrl;</entry> | ||
85 | <entry><structfield>ctrl</structfield></entry> | ||
86 | <entry>Event data for event V4L2_EVENT_CTRL. | ||
87 | </entry> | ||
88 | </row> | ||
89 | <row> | ||
90 | <entry></entry> | ||
84 | <entry>__u8</entry> | 91 | <entry>__u8</entry> |
85 | <entry><structfield>data</structfield>[64]</entry> | 92 | <entry><structfield>data</structfield>[64]</entry> |
86 | <entry>Event data. Defined by the event type. The union | 93 | <entry>Event data. Defined by the event type. The union |
@@ -110,8 +117,16 @@ | |||
110 | <entry>Event timestamp.</entry> | 117 | <entry>Event timestamp.</entry> |
111 | </row> | 118 | </row> |
112 | <row> | 119 | <row> |
120 | <entry>u32</entry> | ||
121 | <entry><structfield>id</structfield></entry> | ||
122 | <entry></entry> | ||
123 | <entry>The ID associated with the event source. If the event does not | ||
124 | have an associated ID (this depends on the event type), then this | ||
125 | is 0.</entry> | ||
126 | </row> | ||
127 | <row> | ||
113 | <entry>__u32</entry> | 128 | <entry>__u32</entry> |
114 | <entry><structfield>reserved</structfield>[9]</entry> | 129 | <entry><structfield>reserved</structfield>[8]</entry> |
115 | <entry></entry> | 130 | <entry></entry> |
116 | <entry>Reserved for future extensions. Drivers must set | 131 | <entry>Reserved for future extensions. Drivers must set |
117 | the array to zero.</entry> | 132 | the array to zero.</entry> |
@@ -121,11 +136,7 @@ | |||
121 | </table> | 136 | </table> |
122 | 137 | ||
123 | </refsect1> | 138 | </refsect1> |
139 | <refsect1> | ||
140 | &return-value; | ||
141 | </refsect1> | ||
124 | </refentry> | 142 | </refentry> |
125 | <!-- | ||
126 | Local Variables: | ||
127 | mode: sgml | ||
128 | sgml-parent-document: "v4l2.sgml" | ||
129 | indent-tabs-mode: nil | ||
130 | End: | ||
131 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-encoder-cmd.xml b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml index b0dde943825c..af7f3f2a36dd 100644 --- a/Documentation/DocBook/v4l/vidioc-encoder-cmd.xml +++ b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml | |||
@@ -180,8 +180,7 @@ Pictures</wordasword>, rather than immediately.</entry> | |||
180 | <varlistentry> | 180 | <varlistentry> |
181 | <term><errorcode>EINVAL</errorcode></term> | 181 | <term><errorcode>EINVAL</errorcode></term> |
182 | <listitem> | 182 | <listitem> |
183 | <para>The driver does not support this ioctl, or the | 183 | <para>The <structfield>cmd</structfield> field is invalid.</para> |
184 | <structfield>cmd</structfield> field is invalid.</para> | ||
185 | </listitem> | 184 | </listitem> |
186 | </varlistentry> | 185 | </varlistentry> |
187 | <varlistentry> | 186 | <varlistentry> |
@@ -194,11 +193,3 @@ the encoder was not running.</para> | |||
194 | </variablelist> | 193 | </variablelist> |
195 | </refsect1> | 194 | </refsect1> |
196 | </refentry> | 195 | </refentry> |
197 | |||
198 | <!-- | ||
199 | Local Variables: | ||
200 | mode: sgml | ||
201 | sgml-parent-document: "v4l2.sgml" | ||
202 | indent-tabs-mode: nil | ||
203 | End: | ||
204 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml index 1d31427edd1b..1d31427edd1b 100644 --- a/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-enum-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml index 71d373b6d36a..71d373b6d36a 100644 --- a/Documentation/DocBook/v4l/vidioc-enum-fmt.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml b/Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml index 3c216e113a54..5fd72c4c33e3 100644 --- a/Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml | |||
@@ -254,17 +254,6 @@ enumerated.</entry> | |||
254 | 254 | ||
255 | <refsect1> | 255 | <refsect1> |
256 | &return-value; | 256 | &return-value; |
257 | |||
258 | <para>See the description section above for a list of return | ||
259 | values that <varname>errno</varname> can have.</para> | ||
260 | </refsect1> | 257 | </refsect1> |
261 | 258 | ||
262 | </refentry> | 259 | </refentry> |
263 | |||
264 | <!-- | ||
265 | Local Variables: | ||
266 | mode: sgml | ||
267 | sgml-parent-document: "v4l2.sgml" | ||
268 | indent-tabs-mode: nil | ||
269 | End: | ||
270 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-enum-framesizes.xml b/Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml index 6afa4542c818..f77a13f486d7 100644 --- a/Documentation/DocBook/v4l/vidioc-enum-framesizes.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml | |||
@@ -267,16 +267,5 @@ application should zero out all members except for the | |||
267 | 267 | ||
268 | <refsect1> | 268 | <refsect1> |
269 | &return-value; | 269 | &return-value; |
270 | |||
271 | <para>See the description section above for a list of return | ||
272 | values that <varname>errno</varname> can have.</para> | ||
273 | </refsect1> | 270 | </refsect1> |
274 | </refentry> | 271 | </refentry> |
275 | |||
276 | <!-- | ||
277 | Local Variables: | ||
278 | mode: sgml | ||
279 | sgml-parent-document: "v4l2.sgml" | ||
280 | indent-tabs-mode: nil | ||
281 | End: | ||
282 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-enumaudio.xml b/Documentation/DocBook/media/v4l/vidioc-enumaudio.xml index 9ae8f2d3a96f..ea816ab2e49e 100644 --- a/Documentation/DocBook/v4l/vidioc-enumaudio.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enumaudio.xml | |||
@@ -68,19 +68,9 @@ until the driver returns <errorcode>EINVAL</errorcode>.</para> | |||
68 | <varlistentry> | 68 | <varlistentry> |
69 | <term><errorcode>EINVAL</errorcode></term> | 69 | <term><errorcode>EINVAL</errorcode></term> |
70 | <listitem> | 70 | <listitem> |
71 | <para>The number of the audio input is out of bounds, or | 71 | <para>The number of the audio input is out of bounds.</para> |
72 | there are no audio inputs at all and this ioctl is not | ||
73 | supported.</para> | ||
74 | </listitem> | 72 | </listitem> |
75 | </varlistentry> | 73 | </varlistentry> |
76 | </variablelist> | 74 | </variablelist> |
77 | </refsect1> | 75 | </refsect1> |
78 | </refentry> | 76 | </refentry> |
79 | |||
80 | <!-- | ||
81 | Local Variables: | ||
82 | mode: sgml | ||
83 | sgml-parent-document: "v4l2.sgml" | ||
84 | indent-tabs-mode: nil | ||
85 | End: | ||
86 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-enumaudioout.xml b/Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml index d3d7c0ab17b8..2e87cedb0d32 100644 --- a/Documentation/DocBook/v4l/vidioc-enumaudioout.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml | |||
@@ -71,19 +71,9 @@ signal to a sound card are not audio outputs in this sense.</para> | |||
71 | <varlistentry> | 71 | <varlistentry> |
72 | <term><errorcode>EINVAL</errorcode></term> | 72 | <term><errorcode>EINVAL</errorcode></term> |
73 | <listitem> | 73 | <listitem> |
74 | <para>The number of the audio output is out of bounds, or | 74 | <para>The number of the audio output is out of bounds.</para> |
75 | there are no audio outputs at all and this ioctl is not | ||
76 | supported.</para> | ||
77 | </listitem> | 75 | </listitem> |
78 | </varlistentry> | 76 | </varlistentry> |
79 | </variablelist> | 77 | </variablelist> |
80 | </refsect1> | 78 | </refsect1> |
81 | </refentry> | 79 | </refentry> |
82 | |||
83 | <!-- | ||
84 | Local Variables: | ||
85 | mode: sgml | ||
86 | sgml-parent-document: "v4l2.sgml" | ||
87 | indent-tabs-mode: nil | ||
88 | End: | ||
89 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml index 476fe1d2bba0..476fe1d2bba0 100644 --- a/Documentation/DocBook/v4l/vidioc-enuminput.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml index a281d26a195f..a281d26a195f 100644 --- a/Documentation/DocBook/v4l/vidioc-enumoutput.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-enumstd.xml b/Documentation/DocBook/media/v4l/vidioc-enumstd.xml index 95803fe2c8e4..95803fe2c8e4 100644 --- a/Documentation/DocBook/v4l/vidioc-enumstd.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enumstd.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-g-audio.xml b/Documentation/DocBook/media/v4l/vidioc-g-audio.xml index 65361a8c2b05..d7bb9b3738f6 100644 --- a/Documentation/DocBook/v4l/vidioc-g-audio.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-audio.xml | |||
@@ -164,25 +164,9 @@ tuner.</entry> | |||
164 | <listitem> | 164 | <listitem> |
165 | <para>No audio inputs combine with the current video input, | 165 | <para>No audio inputs combine with the current video input, |
166 | or the number of the selected audio input is out of bounds or it does | 166 | or the number of the selected audio input is out of bounds or it does |
167 | not combine, or there are no audio inputs at all and the ioctl is not | 167 | not combine.</para> |
168 | supported.</para> | ||
169 | </listitem> | ||
170 | </varlistentry> | ||
171 | <varlistentry> | ||
172 | <term><errorcode>EBUSY</errorcode></term> | ||
173 | <listitem> | ||
174 | <para>I/O is in progress, the input cannot be | ||
175 | switched.</para> | ||
176 | </listitem> | 168 | </listitem> |
177 | </varlistentry> | 169 | </varlistentry> |
178 | </variablelist> | 170 | </variablelist> |
179 | </refsect1> | 171 | </refsect1> |
180 | </refentry> | 172 | </refentry> |
181 | |||
182 | <!-- | ||
183 | Local Variables: | ||
184 | mode: sgml | ||
185 | sgml-parent-document: "v4l2.sgml" | ||
186 | indent-tabs-mode: nil | ||
187 | End: | ||
188 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-audioout.xml b/Documentation/DocBook/media/v4l/vidioc-g-audioout.xml index 3632730c5c6e..200a2704a970 100644 --- a/Documentation/DocBook/v4l/vidioc-g-audioout.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-audioout.xml | |||
@@ -130,25 +130,9 @@ applications must set the array to zero.</entry> | |||
130 | <listitem> | 130 | <listitem> |
131 | <para>No audio outputs combine with the current video | 131 | <para>No audio outputs combine with the current video |
132 | output, or the number of the selected audio output is out of bounds or | 132 | output, or the number of the selected audio output is out of bounds or |
133 | it does not combine, or there are no audio outputs at all and the | 133 | it does not combine.</para> |
134 | ioctl is not supported.</para> | ||
135 | </listitem> | ||
136 | </varlistentry> | ||
137 | <varlistentry> | ||
138 | <term><errorcode>EBUSY</errorcode></term> | ||
139 | <listitem> | ||
140 | <para>I/O is in progress, the output cannot be | ||
141 | switched.</para> | ||
142 | </listitem> | 134 | </listitem> |
143 | </varlistentry> | 135 | </varlistentry> |
144 | </variablelist> | 136 | </variablelist> |
145 | </refsect1> | 137 | </refsect1> |
146 | </refentry> | 138 | </refentry> |
147 | |||
148 | <!-- | ||
149 | Local Variables: | ||
150 | mode: sgml | ||
151 | sgml-parent-document: "v4l2.sgml" | ||
152 | indent-tabs-mode: nil | ||
153 | End: | ||
154 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml index d235b1dedbed..01a50640dce0 100644 --- a/Documentation/DocBook/v4l/vidioc-g-crop.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml | |||
@@ -122,22 +122,5 @@ for &v4l2-cropcap; <structfield>bounds</structfield> is used.</entry> | |||
122 | 122 | ||
123 | <refsect1> | 123 | <refsect1> |
124 | &return-value; | 124 | &return-value; |
125 | |||
126 | <variablelist> | ||
127 | <varlistentry> | ||
128 | <term><errorcode>EINVAL</errorcode></term> | ||
129 | <listitem> | ||
130 | <para>Cropping is not supported.</para> | ||
131 | </listitem> | ||
132 | </varlistentry> | ||
133 | </variablelist> | ||
134 | </refsect1> | 125 | </refsect1> |
135 | </refentry> | 126 | </refentry> |
136 | |||
137 | <!-- | ||
138 | Local Variables: | ||
139 | mode: sgml | ||
140 | sgml-parent-document: "v4l2.sgml" | ||
141 | indent-tabs-mode: nil | ||
142 | End: | ||
143 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-ctrl.xml b/Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml index 8b5e6ff7f3df..5146d00782e3 100644 --- a/Documentation/DocBook/v4l/vidioc-g-ctrl.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml | |||
@@ -117,6 +117,13 @@ because another applications took over control of the device function | |||
117 | this control belongs to.</para> | 117 | this control belongs to.</para> |
118 | </listitem> | 118 | </listitem> |
119 | </varlistentry> | 119 | </varlistentry> |
120 | <varlistentry> | ||
121 | <term><errorcode>EACCES</errorcode></term> | ||
122 | <listitem> | ||
123 | <para>Attempt to set a read-only control or to get a | ||
124 | write-only control.</para> | ||
125 | </listitem> | ||
126 | </varlistentry> | ||
120 | </variablelist> | 127 | </variablelist> |
121 | </refsect1> | 128 | </refsect1> |
122 | </refentry> | 129 | </refentry> |
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml index d733721a7519..7940c1149393 100644 --- a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml | |||
@@ -97,14 +97,8 @@ If the preset is not supported, it returns an &EINVAL; </para> | |||
97 | </tbody> | 97 | </tbody> |
98 | </tgroup> | 98 | </tgroup> |
99 | </table> | 99 | </table> |
100 | 100 | </refsect1> | |
101 | <refsect1> | ||
102 | &return-value; | ||
101 | </refsect1> | 103 | </refsect1> |
102 | </refentry> | 104 | </refentry> |
103 | |||
104 | <!-- | ||
105 | Local Variables: | ||
106 | mode: sgml | ||
107 | sgml-parent-document: "v4l2.sgml" | ||
108 | indent-tabs-mode: nil | ||
109 | End: | ||
110 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml index d5ec6abf0ce2..4a8648ae9a63 100644 --- a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml | |||
@@ -212,12 +212,7 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H | |||
212 | </tgroup> | 212 | </tgroup> |
213 | </table> | 213 | </table> |
214 | </refsect1> | 214 | </refsect1> |
215 | <refsect1> | ||
216 | &return-value; | ||
217 | </refsect1> | ||
215 | </refentry> | 218 | </refentry> |
216 | |||
217 | <!-- | ||
218 | Local Variables: | ||
219 | mode: sgml | ||
220 | sgml-parent-document: "v4l2.sgml" | ||
221 | indent-tabs-mode: nil | ||
222 | End: | ||
223 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-enc-index.xml b/Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml index 9f242e4b2948..2aef02c9044e 100644 --- a/Documentation/DocBook/v4l/vidioc-g-enc-index.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml | |||
@@ -192,22 +192,5 @@ this mask to obtain the picture coding type.</entry> | |||
192 | 192 | ||
193 | <refsect1> | 193 | <refsect1> |
194 | &return-value; | 194 | &return-value; |
195 | |||
196 | <variablelist> | ||
197 | <varlistentry> | ||
198 | <term><errorcode>EINVAL</errorcode></term> | ||
199 | <listitem> | ||
200 | <para>The driver does not support this ioctl.</para> | ||
201 | </listitem> | ||
202 | </varlistentry> | ||
203 | </variablelist> | ||
204 | </refsect1> | 195 | </refsect1> |
205 | </refentry> | 196 | </refentry> |
206 | |||
207 | <!-- | ||
208 | Local Variables: | ||
209 | mode: sgml | ||
210 | sgml-parent-document: "v4l2.sgml" | ||
211 | indent-tabs-mode: nil | ||
212 | End: | ||
213 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml index 3aa7f8f9ff0c..5122ce87e0b8 100644 --- a/Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml | |||
@@ -250,6 +250,13 @@ These controls are described in <xref | |||
250 | These controls are described in <xref | 250 | These controls are described in <xref |
251 | linkend="fm-tx-controls" />.</entry> | 251 | linkend="fm-tx-controls" />.</entry> |
252 | </row> | 252 | </row> |
253 | <row> | ||
254 | <entry><constant>V4L2_CTRL_CLASS_FLASH</constant></entry> | ||
255 | <entry>0x9c0000</entry> | ||
256 | <entry>The class containing flash device controls. | ||
257 | These controls are described in <xref | ||
258 | linkend="flash-controls" />.</entry> | ||
259 | </row> | ||
253 | </tbody> | 260 | </tbody> |
254 | </tgroup> | 261 | </tgroup> |
255 | </table> | 262 | </table> |
@@ -294,6 +301,13 @@ The field <structfield>size</structfield> is set to a value that is enough | |||
294 | to store the payload and this error code is returned.</para> | 301 | to store the payload and this error code is returned.</para> |
295 | </listitem> | 302 | </listitem> |
296 | </varlistentry> | 303 | </varlistentry> |
304 | <varlistentry> | ||
305 | <term><errorcode>EACCES</errorcode></term> | ||
306 | <listitem> | ||
307 | <para>Attempt to try or set a read-only control or to get a | ||
308 | write-only control.</para> | ||
309 | </listitem> | ||
310 | </varlistentry> | ||
297 | </variablelist> | 311 | </variablelist> |
298 | </refsect1> | 312 | </refsect1> |
299 | </refentry> | 313 | </refentry> |
diff --git a/Documentation/DocBook/v4l/vidioc-g-fbuf.xml b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml index e7dda4822f04..055718231bc1 100644 --- a/Documentation/DocBook/v4l/vidioc-g-fbuf.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml | |||
@@ -446,28 +446,11 @@ overlay.</para> | |||
446 | </listitem> | 446 | </listitem> |
447 | </varlistentry> | 447 | </varlistentry> |
448 | <varlistentry> | 448 | <varlistentry> |
449 | <term><errorcode>EBUSY</errorcode></term> | ||
450 | <listitem> | ||
451 | <para>The framebuffer parameters cannot be changed at this | ||
452 | time because overlay is already enabled, or capturing is enabled | ||
453 | and the hardware cannot capture and overlay simultaneously.</para> | ||
454 | </listitem> | ||
455 | </varlistentry> | ||
456 | <varlistentry> | ||
457 | <term><errorcode>EINVAL</errorcode></term> | 449 | <term><errorcode>EINVAL</errorcode></term> |
458 | <listitem> | 450 | <listitem> |
459 | <para>The ioctl is not supported or the | 451 | <para>The <constant>VIDIOC_S_FBUF</constant> parameters are unsuitable.</para> |
460 | <constant>VIDIOC_S_FBUF</constant> parameters are unsuitable.</para> | ||
461 | </listitem> | 452 | </listitem> |
462 | </varlistentry> | 453 | </varlistentry> |
463 | </variablelist> | 454 | </variablelist> |
464 | </refsect1> | 455 | </refsect1> |
465 | </refentry> | 456 | </refentry> |
466 | |||
467 | <!-- | ||
468 | Local Variables: | ||
469 | mode: sgml | ||
470 | sgml-parent-document: "v4l2.sgml" | ||
471 | indent-tabs-mode: nil | ||
472 | End: | ||
473 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml index a4ae59b664eb..17fbda15137b 100644 --- a/Documentation/DocBook/v4l/vidioc-g-fmt.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml | |||
@@ -184,29 +184,13 @@ capture and output devices.</entry> | |||
184 | 184 | ||
185 | <variablelist> | 185 | <variablelist> |
186 | <varlistentry> | 186 | <varlistentry> |
187 | <term><errorcode>EBUSY</errorcode></term> | ||
188 | <listitem> | ||
189 | <para>The data format cannot be changed at this | ||
190 | time, for example because I/O is already in progress.</para> | ||
191 | </listitem> | ||
192 | </varlistentry> | ||
193 | <varlistentry> | ||
194 | <term><errorcode>EINVAL</errorcode></term> | 187 | <term><errorcode>EINVAL</errorcode></term> |
195 | <listitem> | 188 | <listitem> |
196 | <para>The &v4l2-format; <structfield>type</structfield> | 189 | <para>The &v4l2-format; <structfield>type</structfield> |
197 | field is invalid, the requested buffer type not supported, or | 190 | field is invalid, the requested buffer type not supported, or the |
198 | <constant>VIDIOC_TRY_FMT</constant> was called and is not | 191 | format is not supported with this buffer type.</para> |
199 | supported with this buffer type.</para> | ||
200 | </listitem> | 192 | </listitem> |
201 | </varlistentry> | 193 | </varlistentry> |
202 | </variablelist> | 194 | </variablelist> |
203 | </refsect1> | 195 | </refsect1> |
204 | </refentry> | 196 | </refentry> |
205 | |||
206 | <!-- | ||
207 | Local Variables: | ||
208 | mode: sgml | ||
209 | sgml-parent-document: "v4l2.sgml" | ||
210 | indent-tabs-mode: nil | ||
211 | End: | ||
212 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml index 062d72069090..062d72069090 100644 --- a/Documentation/DocBook/v4l/vidioc-g-frequency.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-g-input.xml b/Documentation/DocBook/media/v4l/vidioc-g-input.xml index ed076e92760d..08ae82f131f2 100644 --- a/Documentation/DocBook/v4l/vidioc-g-input.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-input.xml | |||
@@ -75,26 +75,9 @@ querying or negotiating any other parameters.</para> | |||
75 | <varlistentry> | 75 | <varlistentry> |
76 | <term><errorcode>EINVAL</errorcode></term> | 76 | <term><errorcode>EINVAL</errorcode></term> |
77 | <listitem> | 77 | <listitem> |
78 | <para>The number of the video input is out of bounds, or | 78 | <para>The number of the video input is out of bounds.</para> |
79 | there are no video inputs at all and this ioctl is not | ||
80 | supported.</para> | ||
81 | </listitem> | ||
82 | </varlistentry> | ||
83 | <varlistentry> | ||
84 | <term><errorcode>EBUSY</errorcode></term> | ||
85 | <listitem> | ||
86 | <para>I/O is in progress, the input cannot be | ||
87 | switched.</para> | ||
88 | </listitem> | 79 | </listitem> |
89 | </varlistentry> | 80 | </varlistentry> |
90 | </variablelist> | 81 | </variablelist> |
91 | </refsect1> | 82 | </refsect1> |
92 | </refentry> | 83 | </refentry> |
93 | |||
94 | <!-- | ||
95 | Local Variables: | ||
96 | mode: sgml | ||
97 | sgml-parent-document: "v4l2.sgml" | ||
98 | indent-tabs-mode: nil | ||
99 | End: | ||
100 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml index 77394b287411..01ea24b84385 100644 --- a/Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml | |||
@@ -159,22 +159,5 @@ to add them.</para> | |||
159 | 159 | ||
160 | <refsect1> | 160 | <refsect1> |
161 | &return-value; | 161 | &return-value; |
162 | |||
163 | <variablelist> | ||
164 | <varlistentry> | ||
165 | <term><errorcode>EINVAL</errorcode></term> | ||
166 | <listitem> | ||
167 | <para>This ioctl is not supported.</para> | ||
168 | </listitem> | ||
169 | </varlistentry> | ||
170 | </variablelist> | ||
171 | </refsect1> | 162 | </refsect1> |
172 | </refentry> | 163 | </refentry> |
173 | |||
174 | <!-- | ||
175 | Local Variables: | ||
176 | mode: sgml | ||
177 | sgml-parent-document: "v4l2.sgml" | ||
178 | indent-tabs-mode: nil | ||
179 | End: | ||
180 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-modulator.xml b/Documentation/DocBook/media/v4l/vidioc-g-modulator.xml index 15ce660f0f5a..15ce660f0f5a 100644 --- a/Documentation/DocBook/v4l/vidioc-g-modulator.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-modulator.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-g-output.xml b/Documentation/DocBook/media/v4l/vidioc-g-output.xml index 3ea8c0ed812e..fd45f1c13ccf 100644 --- a/Documentation/DocBook/v4l/vidioc-g-output.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-output.xml | |||
@@ -76,25 +76,9 @@ negotiating any other parameters.</para> | |||
76 | <term><errorcode>EINVAL</errorcode></term> | 76 | <term><errorcode>EINVAL</errorcode></term> |
77 | <listitem> | 77 | <listitem> |
78 | <para>The number of the video output is out of bounds, or | 78 | <para>The number of the video output is out of bounds, or |
79 | there are no video outputs at all and this ioctl is not | 79 | there are no video outputs at all.</para> |
80 | supported.</para> | ||
81 | </listitem> | ||
82 | </varlistentry> | ||
83 | <varlistentry> | ||
84 | <term><errorcode>EBUSY</errorcode></term> | ||
85 | <listitem> | ||
86 | <para>I/O is in progress, the output cannot be | ||
87 | switched.</para> | ||
88 | </listitem> | 80 | </listitem> |
89 | </varlistentry> | 81 | </varlistentry> |
90 | </variablelist> | 82 | </variablelist> |
91 | </refsect1> | 83 | </refsect1> |
92 | </refentry> | 84 | </refentry> |
93 | |||
94 | <!-- | ||
95 | Local Variables: | ||
96 | mode: sgml | ||
97 | sgml-parent-document: "v4l2.sgml" | ||
98 | indent-tabs-mode: nil | ||
99 | End: | ||
100 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml index 392aa9e5571e..19b1d85dd668 100644 --- a/Documentation/DocBook/v4l/vidioc-g-parm.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml | |||
@@ -311,22 +311,5 @@ excessive motion blur. </para> | |||
311 | 311 | ||
312 | <refsect1> | 312 | <refsect1> |
313 | &return-value; | 313 | &return-value; |
314 | |||
315 | <variablelist> | ||
316 | <varlistentry> | ||
317 | <term><errorcode>EINVAL</errorcode></term> | ||
318 | <listitem> | ||
319 | <para>This ioctl is not supported.</para> | ||
320 | </listitem> | ||
321 | </varlistentry> | ||
322 | </variablelist> | ||
323 | </refsect1> | 314 | </refsect1> |
324 | </refentry> | 315 | </refentry> |
325 | |||
326 | <!-- | ||
327 | Local Variables: | ||
328 | mode: sgml | ||
329 | sgml-parent-document: "v4l2.sgml" | ||
330 | indent-tabs-mode: nil | ||
331 | End: | ||
332 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-priority.xml b/Documentation/DocBook/media/v4l/vidioc-g-priority.xml index 5fb001978645..8f5e3da7002f 100644 --- a/Documentation/DocBook/v4l/vidioc-g-priority.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-priority.xml | |||
@@ -120,8 +120,7 @@ recording.</entry> | |||
120 | <varlistentry> | 120 | <varlistentry> |
121 | <term><errorcode>EINVAL</errorcode></term> | 121 | <term><errorcode>EINVAL</errorcode></term> |
122 | <listitem> | 122 | <listitem> |
123 | <para>The requested priority value is invalid, or the | 123 | <para>The requested priority value is invalid.</para> |
124 | driver does not support access priorities.</para> | ||
125 | </listitem> | 124 | </listitem> |
126 | </varlistentry> | 125 | </varlistentry> |
127 | <varlistentry> | 126 | <varlistentry> |
diff --git a/Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml index 10e721b17374..71741daaf725 100644 --- a/Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml | |||
@@ -246,19 +246,10 @@ line systems.</entry> | |||
246 | <varlistentry> | 246 | <varlistentry> |
247 | <term><errorcode>EINVAL</errorcode></term> | 247 | <term><errorcode>EINVAL</errorcode></term> |
248 | <listitem> | 248 | <listitem> |
249 | <para>The device does not support sliced VBI capturing or | 249 | <para>The value in the <structfield>type</structfield> field is |
250 | output, or the value in the <structfield>type</structfield> field is | ||
251 | wrong.</para> | 250 | wrong.</para> |
252 | </listitem> | 251 | </listitem> |
253 | </varlistentry> | 252 | </varlistentry> |
254 | </variablelist> | 253 | </variablelist> |
255 | </refsect1> | 254 | </refsect1> |
256 | </refentry> | 255 | </refentry> |
257 | |||
258 | <!-- | ||
259 | Local Variables: | ||
260 | mode: sgml | ||
261 | sgml-parent-document: "v4l2.sgml" | ||
262 | indent-tabs-mode: nil | ||
263 | End: | ||
264 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-g-std.xml b/Documentation/DocBook/media/v4l/vidioc-g-std.xml index 912f8513e5da..37996f25b5d4 100644 --- a/Documentation/DocBook/v4l/vidioc-g-std.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-std.xml | |||
@@ -82,14 +82,7 @@ standards.</para> | |||
82 | <varlistentry> | 82 | <varlistentry> |
83 | <term><errorcode>EINVAL</errorcode></term> | 83 | <term><errorcode>EINVAL</errorcode></term> |
84 | <listitem> | 84 | <listitem> |
85 | <para>This ioctl is not supported, or the | 85 | <para>The <constant>VIDIOC_S_STD</constant> parameter was unsuitable.</para> |
86 | <constant>VIDIOC_S_STD</constant> parameter was unsuitable.</para> | ||
87 | </listitem> | ||
88 | </varlistentry> | ||
89 | <varlistentry> | ||
90 | <term><errorcode>EBUSY</errorcode></term> | ||
91 | <listitem> | ||
92 | <para>The device is busy and therefore can not change the standard</para> | ||
93 | </listitem> | 86 | </listitem> |
94 | </varlistentry> | 87 | </varlistentry> |
95 | </variablelist> | 88 | </variablelist> |
diff --git a/Documentation/DocBook/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml index bd98c734c06b..bd98c734c06b 100644 --- a/Documentation/DocBook/v4l/vidioc-g-tuner.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-log-status.xml b/Documentation/DocBook/media/v4l/vidioc-log-status.xml index 2634b7c88b58..5ded7d35e27b 100644 --- a/Documentation/DocBook/v4l/vidioc-log-status.xml +++ b/Documentation/DocBook/media/v4l/vidioc-log-status.xml | |||
@@ -37,22 +37,5 @@ was introduced in Linux 2.6.15.</para> | |||
37 | 37 | ||
38 | <refsect1> | 38 | <refsect1> |
39 | &return-value; | 39 | &return-value; |
40 | |||
41 | <variablelist> | ||
42 | <varlistentry> | ||
43 | <term><errorcode>EINVAL</errorcode></term> | ||
44 | <listitem> | ||
45 | <para>The driver does not support this ioctl.</para> | ||
46 | </listitem> | ||
47 | </varlistentry> | ||
48 | </variablelist> | ||
49 | </refsect1> | 40 | </refsect1> |
50 | </refentry> | 41 | </refentry> |
51 | |||
52 | <!-- | ||
53 | Local Variables: | ||
54 | mode: sgml | ||
55 | sgml-parent-document: "v4l2.sgml" | ||
56 | indent-tabs-mode: nil | ||
57 | End: | ||
58 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-overlay.xml b/Documentation/DocBook/media/v4l/vidioc-overlay.xml index 1036c582cc15..250a7de1877f 100644 --- a/Documentation/DocBook/v4l/vidioc-overlay.xml +++ b/Documentation/DocBook/media/v4l/vidioc-overlay.xml | |||
@@ -65,19 +65,10 @@ | |||
65 | <varlistentry> | 65 | <varlistentry> |
66 | <term><errorcode>EINVAL</errorcode></term> | 66 | <term><errorcode>EINVAL</errorcode></term> |
67 | <listitem> | 67 | <listitem> |
68 | <para>Video overlay is not supported, or the | 68 | <para>The overlay parameters have not been set up. See <xref |
69 | parameters have not been set up. See <xref | ||
70 | linkend="overlay" /> for the necessary steps.</para> | 69 | linkend="overlay" /> for the necessary steps.</para> |
71 | </listitem> | 70 | </listitem> |
72 | </varlistentry> | 71 | </varlistentry> |
73 | </variablelist> | 72 | </variablelist> |
74 | </refsect1> | 73 | </refsect1> |
75 | </refentry> | 74 | </refentry> |
76 | |||
77 | <!-- | ||
78 | Local Variables: | ||
79 | mode: sgml | ||
80 | sgml-parent-document: "v4l2.sgml" | ||
81 | indent-tabs-mode: nil | ||
82 | End: | ||
83 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-qbuf.xml b/Documentation/DocBook/media/v4l/vidioc-qbuf.xml index f2b11f8a4031..9caa49af580f 100644 --- a/Documentation/DocBook/v4l/vidioc-qbuf.xml +++ b/Documentation/DocBook/media/v4l/vidioc-qbuf.xml | |||
@@ -158,15 +158,6 @@ or no buffers have been allocated yet, or the | |||
158 | <structfield>userptr</structfield> or | 158 | <structfield>userptr</structfield> or |
159 | <structfield>length</structfield> are invalid.</para> | 159 | <structfield>length</structfield> are invalid.</para> |
160 | </listitem> | 160 | </listitem> |
161 | </varlistentry> | ||
162 | <varlistentry> | ||
163 | <term><errorcode>ENOMEM</errorcode></term> | ||
164 | <listitem> | ||
165 | <para>Not enough physical or virtual memory was available to | ||
166 | enqueue a user pointer buffer.</para> | ||
167 | </listitem> | ||
168 | </varlistentry> | ||
169 | <varlistentry> | ||
170 | <term><errorcode>EIO</errorcode></term> | 161 | <term><errorcode>EIO</errorcode></term> |
171 | <listitem> | 162 | <listitem> |
172 | <para><constant>VIDIOC_DQBUF</constant> failed due to an | 163 | <para><constant>VIDIOC_DQBUF</constant> failed due to an |
@@ -184,11 +175,3 @@ continue streaming. | |||
184 | </variablelist> | 175 | </variablelist> |
185 | </refsect1> | 176 | </refsect1> |
186 | </refentry> | 177 | </refentry> |
187 | |||
188 | <!-- | ||
189 | Local Variables: | ||
190 | mode: sgml | ||
191 | sgml-parent-document: "v4l2.sgml" | ||
192 | indent-tabs-mode: nil | ||
193 | End: | ||
194 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml index d272f7ab91b8..23b17f604211 100644 --- a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml +++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml | |||
@@ -61,27 +61,5 @@ returned.</para> | |||
61 | 61 | ||
62 | <refsect1> | 62 | <refsect1> |
63 | &return-value; | 63 | &return-value; |
64 | <variablelist> | ||
65 | <varlistentry> | ||
66 | <term><errorcode>EINVAL</errorcode></term> | ||
67 | <listitem> | ||
68 | <para>This ioctl is not supported.</para> | ||
69 | </listitem> | ||
70 | </varlistentry> | ||
71 | <varlistentry> | ||
72 | <term><errorcode>EBUSY</errorcode></term> | ||
73 | <listitem> | ||
74 | <para>The device is busy and therefore can not sense the preset</para> | ||
75 | </listitem> | ||
76 | </varlistentry> | ||
77 | </variablelist> | ||
78 | </refsect1> | 64 | </refsect1> |
79 | </refentry> | 65 | </refentry> |
80 | |||
81 | <!-- | ||
82 | Local Variables: | ||
83 | mode: sgml | ||
84 | sgml-parent-document: "v4l2.sgml" | ||
85 | indent-tabs-mode: nil | ||
86 | End: | ||
87 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-querybuf.xml b/Documentation/DocBook/media/v4l/vidioc-querybuf.xml index 5c104d42d31c..5c104d42d31c 100644 --- a/Documentation/DocBook/v4l/vidioc-querybuf.xml +++ b/Documentation/DocBook/media/v4l/vidioc-querybuf.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-querycap.xml b/Documentation/DocBook/media/v4l/vidioc-querycap.xml index f29f1b86213c..e3664d6f2de4 100644 --- a/Documentation/DocBook/v4l/vidioc-querycap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml | |||
@@ -67,9 +67,8 @@ driver is not compatible with this specification the ioctl returns an | |||
67 | <entry><para>Name of the driver, a unique NUL-terminated | 67 | <entry><para>Name of the driver, a unique NUL-terminated |
68 | ASCII string. For example: "bttv". Driver specific applications can | 68 | ASCII string. For example: "bttv". Driver specific applications can |
69 | use this information to verify the driver identity. It is also useful | 69 | use this information to verify the driver identity. It is also useful |
70 | to work around known bugs, or to identify drivers in error reports. | 70 | to work around known bugs, or to identify drivers in error reports.</para> |
71 | The driver version is stored in the <structfield>version</structfield> | 71 | <para>Storing strings in fixed sized arrays is bad |
72 | field.</para><para>Storing strings in fixed sized arrays is bad | ||
73 | practice but unavoidable here. Drivers and applications should take | 72 | practice but unavoidable here. Drivers and applications should take |
74 | precautions to never read or write beyond the end of the array and to | 73 | precautions to never read or write beyond the end of the array and to |
75 | make sure the strings are properly NUL-terminated.</para></entry> | 74 | make sure the strings are properly NUL-terminated.</para></entry> |
@@ -100,9 +99,13 @@ empty string (<structfield>bus_info</structfield>[0] = 0).<!-- XXX pci_dev->slot | |||
100 | <row> | 99 | <row> |
101 | <entry>__u32</entry> | 100 | <entry>__u32</entry> |
102 | <entry><structfield>version</structfield></entry> | 101 | <entry><structfield>version</structfield></entry> |
103 | <entry><para>Version number of the driver. Together with | 102 | <entry><para>Version number of the driver.</para> |
104 | the <structfield>driver</structfield> field this identifies a | 103 | <para>Starting on kernel 3.1, the version reported is provided per |
105 | particular driver. The version number is formatted using the | 104 | V4L2 subsystem, following the same Kernel numberation scheme. However, it |
105 | should not always return the same version as the kernel, if, for example, | ||
106 | an stable or distribution-modified kernel uses the V4L2 stack from a | ||
107 | newer kernel.</para> | ||
108 | <para>The version number is formatted using the | ||
106 | <constant>KERNEL_VERSION()</constant> macro:</para></entry> | 109 | <constant>KERNEL_VERSION()</constant> macro:</para></entry> |
107 | </row> | 110 | </row> |
108 | <row> | 111 | <row> |
@@ -280,24 +283,5 @@ linkend="mmap">streaming</link> I/O method.</entry> | |||
280 | 283 | ||
281 | <refsect1> | 284 | <refsect1> |
282 | &return-value; | 285 | &return-value; |
283 | |||
284 | <variablelist> | ||
285 | <varlistentry> | ||
286 | <term><errorcode>EINVAL</errorcode></term> | ||
287 | <listitem> | ||
288 | <para>The device is not compatible with this | ||
289 | specification.</para> | ||
290 | </listitem> | ||
291 | </varlistentry> | ||
292 | </variablelist> | ||
293 | </refsect1> | 286 | </refsect1> |
294 | </refentry> | 287 | </refentry> |
295 | |||
296 | <!-- | ||
297 | Local Variables: | ||
298 | mode: sgml | ||
299 | sgml-parent-document: "v4l2.sgml" | ||
300 | indent-tabs-mode: nil | ||
301 | End: | ||
302 | --> | ||
303 | |||
diff --git a/Documentation/DocBook/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml index 0d5e8283cf32..677ea646c29f 100644 --- a/Documentation/DocBook/v4l/vidioc-queryctrl.xml +++ b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml | |||
@@ -156,7 +156,8 @@ signed value.</entry> | |||
156 | <entry>Maximum value, inclusive. This field gives an upper | 156 | <entry>Maximum value, inclusive. This field gives an upper |
157 | bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the | 157 | bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the |
158 | highest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> | 158 | highest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> |
159 | controls. | 159 | controls. For <constant>V4L2_CTRL_TYPE_BITMASK</constant> controls it is the |
160 | set of usable bits. | ||
160 | For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the maximum value | 161 | For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the maximum value |
161 | gives the maximum length of the string. This length <emphasis>does not include the terminating | 162 | gives the maximum length of the string. This length <emphasis>does not include the terminating |
162 | zero</emphasis>. It may not be valid for any other type of control, including | 163 | zero</emphasis>. It may not be valid for any other type of control, including |
@@ -291,6 +292,15 @@ the menu items can be enumerated with the | |||
291 | <constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> | 292 | <constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> |
292 | </row> | 293 | </row> |
293 | <row> | 294 | <row> |
295 | <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry> | ||
296 | <entry>0</entry> | ||
297 | <entry>n/a</entry> | ||
298 | <entry>any</entry> | ||
299 | <entry>A bitmask field. The maximum value is the set of bits that can | ||
300 | be used, all other bits are to be 0. The maximum value is interpreted as a __u32, | ||
301 | allowing the use of bit 31 in the bitmask.</entry> | ||
302 | </row> | ||
303 | <row> | ||
294 | <entry><constant>V4L2_CTRL_TYPE_BUTTON</constant></entry> | 304 | <entry><constant>V4L2_CTRL_TYPE_BUTTON</constant></entry> |
295 | <entry>0</entry> | 305 | <entry>0</entry> |
296 | <entry>0</entry> | 306 | <entry>0</entry> |
diff --git a/Documentation/DocBook/v4l/vidioc-querystd.xml b/Documentation/DocBook/media/v4l/vidioc-querystd.xml index 1a9e60393091..4b79c7c04ed6 100644 --- a/Documentation/DocBook/v4l/vidioc-querystd.xml +++ b/Documentation/DocBook/media/v4l/vidioc-querystd.xml | |||
@@ -62,28 +62,5 @@ current video input or output.</para> | |||
62 | 62 | ||
63 | <refsect1> | 63 | <refsect1> |
64 | &return-value; | 64 | &return-value; |
65 | |||
66 | <variablelist> | ||
67 | <varlistentry> | ||
68 | <term><errorcode>EINVAL</errorcode></term> | ||
69 | <listitem> | ||
70 | <para>This ioctl is not supported.</para> | ||
71 | </listitem> | ||
72 | </varlistentry> | ||
73 | <varlistentry> | ||
74 | <term><errorcode>EBUSY</errorcode></term> | ||
75 | <listitem> | ||
76 | <para>The device is busy and therefore can not detect the standard</para> | ||
77 | </listitem> | ||
78 | </varlistentry> | ||
79 | </variablelist> | ||
80 | </refsect1> | 65 | </refsect1> |
81 | </refentry> | 66 | </refentry> |
82 | |||
83 | <!-- | ||
84 | Local Variables: | ||
85 | mode: sgml | ||
86 | sgml-parent-document: "v4l2.sgml" | ||
87 | indent-tabs-mode: nil | ||
88 | End: | ||
89 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml index 69800ae23348..7be4b1d29b90 100644 --- a/Documentation/DocBook/v4l/vidioc-reqbufs.xml +++ b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml | |||
@@ -122,14 +122,6 @@ higher. This array should be zeroed by applications.</entry> | |||
122 | 122 | ||
123 | <variablelist> | 123 | <variablelist> |
124 | <varlistentry> | 124 | <varlistentry> |
125 | <term><errorcode>EBUSY</errorcode></term> | ||
126 | <listitem> | ||
127 | <para>The driver supports multiple opens and I/O is already | ||
128 | in progress, or reallocation of buffers was attempted although one or | ||
129 | more are still mapped.</para> | ||
130 | </listitem> | ||
131 | </varlistentry> | ||
132 | <varlistentry> | ||
133 | <term><errorcode>EINVAL</errorcode></term> | 125 | <term><errorcode>EINVAL</errorcode></term> |
134 | <listitem> | 126 | <listitem> |
135 | <para>The buffer type (<structfield>type</structfield> field) or the | 127 | <para>The buffer type (<structfield>type</structfield> field) or the |
@@ -140,11 +132,3 @@ supported.</para> | |||
140 | </variablelist> | 132 | </variablelist> |
141 | </refsect1> | 133 | </refsect1> |
142 | </refentry> | 134 | </refentry> |
143 | |||
144 | <!-- | ||
145 | Local Variables: | ||
146 | mode: sgml | ||
147 | sgml-parent-document: "v4l2.sgml" | ||
148 | indent-tabs-mode: nil | ||
149 | End: | ||
150 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml index c30dcc4232c0..c30dcc4232c0 100644 --- a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml +++ b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-streamon.xml b/Documentation/DocBook/media/v4l/vidioc-streamon.xml index 75ed39bf4d2b..81cca4569050 100644 --- a/Documentation/DocBook/v4l/vidioc-streamon.xml +++ b/Documentation/DocBook/media/v4l/vidioc-streamon.xml | |||
@@ -88,9 +88,9 @@ synchronize with other events.</para> | |||
88 | <varlistentry> | 88 | <varlistentry> |
89 | <term><errorcode>EINVAL</errorcode></term> | 89 | <term><errorcode>EINVAL</errorcode></term> |
90 | <listitem> | 90 | <listitem> |
91 | <para>Streaming I/O is not supported, the buffer | 91 | <para>The buffer<structfield>type</structfield> is not supported, |
92 | <structfield>type</structfield> is not supported, or no buffers have | 92 | or no buffers have been allocated (memory mapping) or enqueued |
93 | been allocated (memory mapping) or enqueued (output) yet.</para> | 93 | (output) yet.</para> |
94 | </listitem> | 94 | </listitem> |
95 | </varlistentry> | 95 | </varlistentry> |
96 | <varlistentry> | 96 | <varlistentry> |
@@ -105,11 +105,3 @@ been allocated (memory mapping) or enqueued (output) yet.</para> | |||
105 | </variablelist> | 105 | </variablelist> |
106 | </refsect1> | 106 | </refsect1> |
107 | </refentry> | 107 | </refentry> |
108 | |||
109 | <!-- | ||
110 | Local Variables: | ||
111 | mode: sgml | ||
112 | sgml-parent-document: "v4l2.sgml" | ||
113 | indent-tabs-mode: nil | ||
114 | End: | ||
115 | --> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml index 2f8f4f0a0235..2f8f4f0a0235 100644 --- a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml index 79ce42b7c60c..79ce42b7c60c 100644 --- a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml index a6b3432449f6..a6b3432449f6 100644 --- a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml index 06197323a8cc..06197323a8cc 100644 --- a/Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml | |||
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml index f367c570c530..a67cde6f8c54 100644 --- a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml | |||
@@ -177,4 +177,7 @@ | |||
177 | </varlistentry> | 177 | </varlistentry> |
178 | </variablelist> | 178 | </variablelist> |
179 | </refsect1> | 179 | </refsect1> |
180 | <refsect1> | ||
181 | &return-value; | ||
182 | </refsect1> | ||
180 | </refentry> | 183 | </refentry> |
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml index 0bc3ea22d31f..0bc3ea22d31f 100644 --- a/Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml | |||
diff --git a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml new file mode 100644 index 000000000000..69c0d8a2a3d2 --- /dev/null +++ b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml | |||
@@ -0,0 +1,297 @@ | |||
1 | <refentry id="vidioc-subscribe-event"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refname> | ||
9 | <refpurpose>Subscribe or unsubscribe event</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcprototype> | ||
15 | <funcdef>int <function>ioctl</function></funcdef> | ||
16 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
17 | <paramdef>int <parameter>request</parameter></paramdef> | ||
18 | <paramdef>struct v4l2_event_subscription | ||
19 | *<parameter>argp</parameter></paramdef> | ||
20 | </funcprototype> | ||
21 | </funcsynopsis> | ||
22 | </refsynopsisdiv> | ||
23 | |||
24 | <refsect1> | ||
25 | <title>Arguments</title> | ||
26 | |||
27 | <variablelist> | ||
28 | <varlistentry> | ||
29 | <term><parameter>fd</parameter></term> | ||
30 | <listitem> | ||
31 | <para>&fd;</para> | ||
32 | </listitem> | ||
33 | </varlistentry> | ||
34 | <varlistentry> | ||
35 | <term><parameter>request</parameter></term> | ||
36 | <listitem> | ||
37 | <para>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</para> | ||
38 | </listitem> | ||
39 | </varlistentry> | ||
40 | <varlistentry> | ||
41 | <term><parameter>argp</parameter></term> | ||
42 | <listitem> | ||
43 | <para></para> | ||
44 | </listitem> | ||
45 | </varlistentry> | ||
46 | </variablelist> | ||
47 | </refsect1> | ||
48 | |||
49 | <refsect1> | ||
50 | <title>Description</title> | ||
51 | |||
52 | <para>Subscribe or unsubscribe V4L2 event. Subscribed events are | ||
53 | dequeued by using the &VIDIOC-DQEVENT; ioctl.</para> | ||
54 | |||
55 | <table frame="none" pgwide="1" id="v4l2-event-subscription"> | ||
56 | <title>struct <structname>v4l2_event_subscription</structname></title> | ||
57 | <tgroup cols="3"> | ||
58 | &cs-str; | ||
59 | <tbody valign="top"> | ||
60 | <row> | ||
61 | <entry>__u32</entry> | ||
62 | <entry><structfield>type</structfield></entry> | ||
63 | <entry>Type of the event.</entry> | ||
64 | </row> | ||
65 | <row> | ||
66 | <entry>__u32</entry> | ||
67 | <entry><structfield>id</structfield></entry> | ||
68 | <entry>ID of the event source. If there is no ID associated with | ||
69 | the event source, then set this to 0. Whether or not an event | ||
70 | needs an ID depends on the event type.</entry> | ||
71 | </row> | ||
72 | <row> | ||
73 | <entry>__u32</entry> | ||
74 | <entry><structfield>flags</structfield></entry> | ||
75 | <entry>Event flags, see <xref linkend="event-flags" />.</entry> | ||
76 | </row> | ||
77 | <row> | ||
78 | <entry>__u32</entry> | ||
79 | <entry><structfield>reserved</structfield>[5]</entry> | ||
80 | <entry>Reserved for future extensions. Drivers and applications | ||
81 | must set the array to zero.</entry> | ||
82 | </row> | ||
83 | </tbody> | ||
84 | </tgroup> | ||
85 | </table> | ||
86 | |||
87 | <table frame="none" pgwide="1" id="event-type"> | ||
88 | <title>Event Types</title> | ||
89 | <tgroup cols="3"> | ||
90 | &cs-def; | ||
91 | <tbody valign="top"> | ||
92 | <row> | ||
93 | <entry><constant>V4L2_EVENT_ALL</constant></entry> | ||
94 | <entry>0</entry> | ||
95 | <entry>All events. V4L2_EVENT_ALL is valid only for | ||
96 | VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once. | ||
97 | </entry> | ||
98 | </row> | ||
99 | <row> | ||
100 | <entry><constant>V4L2_EVENT_VSYNC</constant></entry> | ||
101 | <entry>1</entry> | ||
102 | <entry>This event is triggered on the vertical sync. | ||
103 | This event has a &v4l2-event-vsync; associated with it. | ||
104 | </entry> | ||
105 | </row> | ||
106 | <row> | ||
107 | <entry><constant>V4L2_EVENT_EOS</constant></entry> | ||
108 | <entry>2</entry> | ||
109 | <entry>This event is triggered when the end of a stream is reached. | ||
110 | This is typically used with MPEG decoders to report to the application | ||
111 | when the last of the MPEG stream has been decoded. | ||
112 | </entry> | ||
113 | </row> | ||
114 | <row> | ||
115 | <entry><constant>V4L2_EVENT_CTRL</constant></entry> | ||
116 | <entry>3</entry> | ||
117 | <entry><para>This event requires that the <structfield>id</structfield> | ||
118 | matches the control ID from which you want to receive events. | ||
119 | This event is triggered if the control's value changes, if a | ||
120 | button control is pressed or if the control's flags change. | ||
121 | This event has a &v4l2-event-ctrl; associated with it. This struct | ||
122 | contains much of the same information as &v4l2-queryctrl; and | ||
123 | &v4l2-control;.</para> | ||
124 | |||
125 | <para>If the event is generated due to a call to &VIDIOC-S-CTRL; or | ||
126 | &VIDIOC-S-EXT-CTRLS;, then the event will <emphasis>not</emphasis> be sent to | ||
127 | the file handle that called the ioctl function. This prevents | ||
128 | nasty feedback loops. If you <emphasis>do</emphasis> want to get the | ||
129 | event, then set the <constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant> | ||
130 | flag. | ||
131 | </para> | ||
132 | |||
133 | <para>This event type will ensure that no information is lost when | ||
134 | more events are raised than there is room internally. In that | ||
135 | case the &v4l2-event-ctrl; of the second-oldest event is kept, | ||
136 | but the <structfield>changes</structfield> field of the | ||
137 | second-oldest event is ORed with the <structfield>changes</structfield> | ||
138 | field of the oldest event.</para> | ||
139 | </entry> | ||
140 | </row> | ||
141 | <row> | ||
142 | <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry> | ||
143 | <entry>0x08000000</entry> | ||
144 | <entry>Base event number for driver-private events.</entry> | ||
145 | </row> | ||
146 | </tbody> | ||
147 | </tgroup> | ||
148 | </table> | ||
149 | |||
150 | <table pgwide="1" frame="none" id="event-flags"> | ||
151 | <title>Event Flags</title> | ||
152 | <tgroup cols="3"> | ||
153 | &cs-def; | ||
154 | <tbody valign="top"> | ||
155 | <row> | ||
156 | <entry><constant>V4L2_EVENT_SUB_FL_SEND_INITIAL</constant></entry> | ||
157 | <entry>0x0001</entry> | ||
158 | <entry>When this event is subscribed an initial event will be sent | ||
159 | containing the current status. This only makes sense for events | ||
160 | that are triggered by a status change such as <constant>V4L2_EVENT_CTRL</constant>. | ||
161 | Other events will ignore this flag.</entry> | ||
162 | </row> | ||
163 | <row> | ||
164 | <entry><constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant></entry> | ||
165 | <entry>0x0002</entry> | ||
166 | <entry><para>If set, then events directly caused by an ioctl will also be sent to | ||
167 | the filehandle that called that ioctl. For example, changing a control using | ||
168 | &VIDIOC-S-CTRL; will cause a V4L2_EVENT_CTRL to be sent back to that same | ||
169 | filehandle. Normally such events are suppressed to prevent feedback loops | ||
170 | where an application changes a control to a one value and then another, and | ||
171 | then receives an event telling it that that control has changed to the first | ||
172 | value.</para> | ||
173 | |||
174 | <para>Since it can't tell whether that event was caused by another application | ||
175 | or by the &VIDIOC-S-CTRL; call it is hard to decide whether to set the | ||
176 | control to the value in the event, or ignore it.</para> | ||
177 | |||
178 | <para>Think carefully when you set this flag so you won't get into situations | ||
179 | like that.</para> | ||
180 | </entry> | ||
181 | </row> | ||
182 | </tbody> | ||
183 | </tgroup> | ||
184 | </table> | ||
185 | |||
186 | <table frame="none" pgwide="1" id="v4l2-event-vsync"> | ||
187 | <title>struct <structname>v4l2_event_vsync</structname></title> | ||
188 | <tgroup cols="3"> | ||
189 | &cs-str; | ||
190 | <tbody valign="top"> | ||
191 | <row> | ||
192 | <entry>__u8</entry> | ||
193 | <entry><structfield>field</structfield></entry> | ||
194 | <entry>The upcoming field. See &v4l2-field;.</entry> | ||
195 | </row> | ||
196 | </tbody> | ||
197 | </tgroup> | ||
198 | </table> | ||
199 | |||
200 | <table frame="none" pgwide="1" id="v4l2-event-ctrl"> | ||
201 | <title>struct <structname>v4l2_event_ctrl</structname></title> | ||
202 | <tgroup cols="4"> | ||
203 | &cs-str; | ||
204 | <tbody valign="top"> | ||
205 | <row> | ||
206 | <entry>__u32</entry> | ||
207 | <entry><structfield>changes</structfield></entry> | ||
208 | <entry></entry> | ||
209 | <entry>A bitmask that tells what has changed. See <xref linkend="changes-flags" />.</entry> | ||
210 | </row> | ||
211 | <row> | ||
212 | <entry>__u32</entry> | ||
213 | <entry><structfield>type</structfield></entry> | ||
214 | <entry></entry> | ||
215 | <entry>The type of the control. See &v4l2-ctrl-type;.</entry> | ||
216 | </row> | ||
217 | <row> | ||
218 | <entry>union (anonymous)</entry> | ||
219 | <entry></entry> | ||
220 | <entry></entry> | ||
221 | <entry></entry> | ||
222 | </row> | ||
223 | <row> | ||
224 | <entry></entry> | ||
225 | <entry>__s32</entry> | ||
226 | <entry><structfield>value</structfield></entry> | ||
227 | <entry>The 32-bit value of the control for 32-bit control types. | ||
228 | This is 0 for string controls since the value of a string | ||
229 | cannot be passed using &VIDIOC-DQEVENT;.</entry> | ||
230 | </row> | ||
231 | <row> | ||
232 | <entry></entry> | ||
233 | <entry>__s64</entry> | ||
234 | <entry><structfield>value64</structfield></entry> | ||
235 | <entry>The 64-bit value of the control for 64-bit control types.</entry> | ||
236 | </row> | ||
237 | <row> | ||
238 | <entry>__u32</entry> | ||
239 | <entry><structfield>flags</structfield></entry> | ||
240 | <entry></entry> | ||
241 | <entry>The control flags. See <xref linkend="control-flags" />.</entry> | ||
242 | </row> | ||
243 | <row> | ||
244 | <entry>__s32</entry> | ||
245 | <entry><structfield>minimum</structfield></entry> | ||
246 | <entry></entry> | ||
247 | <entry>The minimum value of the control. See &v4l2-queryctrl;.</entry> | ||
248 | </row> | ||
249 | <row> | ||
250 | <entry>__s32</entry> | ||
251 | <entry><structfield>maximum</structfield></entry> | ||
252 | <entry></entry> | ||
253 | <entry>The maximum value of the control. See &v4l2-queryctrl;.</entry> | ||
254 | </row> | ||
255 | <row> | ||
256 | <entry>__s32</entry> | ||
257 | <entry><structfield>step</structfield></entry> | ||
258 | <entry></entry> | ||
259 | <entry>The step value of the control. See &v4l2-queryctrl;.</entry> | ||
260 | </row> | ||
261 | <row> | ||
262 | <entry>__s32</entry> | ||
263 | <entry><structfield>default_value</structfield></entry> | ||
264 | <entry></entry> | ||
265 | <entry>The default value value of the control. See &v4l2-queryctrl;.</entry> | ||
266 | </row> | ||
267 | </tbody> | ||
268 | </tgroup> | ||
269 | </table> | ||
270 | |||
271 | <table pgwide="1" frame="none" id="changes-flags"> | ||
272 | <title>Changes</title> | ||
273 | <tgroup cols="3"> | ||
274 | &cs-def; | ||
275 | <tbody valign="top"> | ||
276 | <row> | ||
277 | <entry><constant>V4L2_EVENT_CTRL_CH_VALUE</constant></entry> | ||
278 | <entry>0x0001</entry> | ||
279 | <entry>This control event was triggered because the value of the control | ||
280 | changed. Special case: if a button control is pressed, then this | ||
281 | event is sent as well, even though there is not explicit value | ||
282 | associated with a button control.</entry> | ||
283 | </row> | ||
284 | <row> | ||
285 | <entry><constant>V4L2_EVENT_CTRL_CH_FLAGS</constant></entry> | ||
286 | <entry>0x0002</entry> | ||
287 | <entry>This control event was triggered because the control flags | ||
288 | changed.</entry> | ||
289 | </row> | ||
290 | </tbody> | ||
291 | </tgroup> | ||
292 | </table> | ||
293 | </refsect1> | ||
294 | <refsect1> | ||
295 | &return-value; | ||
296 | </refsect1> | ||
297 | </refentry> | ||
diff --git a/Documentation/DocBook/media/vbi_525.gif.b64 b/Documentation/DocBook/media/vbi_525.gif.b64 new file mode 100644 index 000000000000..d5dcf06f2aef --- /dev/null +++ b/Documentation/DocBook/media/vbi_525.gif.b64 | |||
@@ -0,0 +1,84 @@ | |||
1 | R0lGODlhKgPIAIAAAAAAAP///yH5BAEAAAEALAAAAAAqA8gAAAL+jI+py+0Po5y02ouz3rz7D4bi | ||
2 | SJbmiabqWgJs475LLCt0fdy4oeN9/QPuEEFZkXVcJZXDXNP5pC0TgGrMSrRMidhA1/uNbB9j2CZ8 | ||
3 | Kc+qHDXDTT2jK3BuPau13vFpdmc/p6Uh5SeYoXMHyFNomEeYiNEVKCFFx8Wz2Eh56YWp2bfnGXk1 | ||
4 | OEhaKnem2rYa6vp3KIqaBhULmsk4Ufc1KTbq4rfbhxkcOQx22limZ4P8STYH3PsGu8pqe439aw36 | ||
5 | eji9qT1rGCpraf5MkQynyJeuG0c73imvLYzuUAwF/P6WTK8vHDdj2Qia8hYL4bF2o/CpmydOXa6I | ||
6 | uqQNPFepny/+d+cM0qsH8qNGCI8M3gvG7KG8iSJJVoNIp1w5h/C+gSPjgWE9hR0Lqmzp0RFPjLV+ | ||
7 | hoRki2XNPJyCVmy2U6KnHm6WnboRcOPFkS59xqQpEKZRpkDHfi1rdqlXgTMVKVVL7h/cnmi1rtxq | ||
8 | t27Yn1n5xrySUi81iYAlvR2MN23Fm/nkyHzp9G9iSof3Ps1pE3PmyV2dhaSL1Jiee3/ZjI5Mkhlj | ||
9 | xDPXGnkClgns1pxV0K6d4rbYF7pRv44CW7Dtojt6f/YxO7hxrrmVJ3/eZDnd4tCjVw+OPbv27dy7 | ||
10 | e/8OPrz48eTLmz+PPr369ezbu38PP778+fTr27+PP7/+/fz++/v/D2CAAg5IYIEGHohgggouSNFv | ||
11 | 1l2HHIRCACehgw9eOIR0001I4YVq8MJIVZItUpJiG564GG75VJaXb5aVthtljwnV1mauyXijVqtB | ||
12 | FVRoK7Foxi0kNphaYdhYNRUxQMZDWZKd9IXTQTmmFluUDQln5TcqBrnlYEOhaGJXNZrUpR24sLPN | ||
13 | kC6uaBGWMywERpWISeUZacIE5iZH8OApJ3FrtvhnY5AdR1iZVOw4p1BTZhljlGNG1aijfgIKl4+f | ||
14 | kNZjoIL2ySOacX4kYlyyfDgooWBSWmikOH15mU5ksfqiqUVqNsySXN7FqZ5jWdoTr7sSqaOtTH6Y | ||
15 | EajMNZX+kbC53qopDDMuymhprgLbGaTUbgrtm8smCqOqQRYbZrV58vijtzZgNW2TTHZEag7rHFuU | ||
16 | Pp4aSq6sc9EJa7jinpVuq/Ruy+xSj9KibL0YyRXrXr7WlC+242qrDMJsEYYSVvAiUzGJwg7c7BqI | ||
17 | GjyiuQ5f7PG/7j57VqkpqryyyJ0WDDBxC29ymr3+YFEzyRpLE5qG91qYYYVAR4hh0B0WTbTRR1Mn | ||
18 | NBKTDs0h0lErTTXTSyddNdZabw311ET7nLDTTct2tddmn82bc2V3zbbYazMId9xyz0133XbfjXfe | ||
19 | eu/Nd99+/w144IIPTnjhhh+OeOKKczcR2CYvDnnkkgf+XoTF2eUCs9uTb85554MrVUjmJGDuuMue | ||
20 | n4566gKyxM+T2L37cNqqz0577QG2/ikpVxEie7LflW578MIPL1vroVdifOy3outkscD/THz00k+v | ||
21 | ne46ApQT70o2ZWz1RT5Pffji2w4YWcqLkrzvMhNT/Wjuvy/6+PLPL/w/854vr+t58gP+vufySb8A | ||
22 | CnB8phEBmo7nhDHwz3vQGKADH0jAT4UgVGZQILjeBsEManB6GqKgP+h0vtFtcIQk5KAJpqAa/znL | ||
23 | Xc4CXv9KCMP2fMyA8fvDDCdYwzbg7IQbwZ0IqeHCGArRbj4UwgvxgDJSHXEfIUQVEpuIqiLycIhU | ||
24 | jJv+FNO2RCeJQ4kPuuIHUMi+Kb4piFUso4K8yIQsYm8cIlKj9VrQQyiqUH9mrOPm0DgcN8YsXoLQ | ||
25 | Ix1HAMY/ArKCdiyk5PDYHD+6qo1dlOPItIXIG0XSkJT02yR5qEg2EqyRHYyjzyrnyEqK8oyhTEgj | ||
26 | 7bFJo13SI2EwzCdDhDP4yXKWtKxYLWWJsVu+L5e6rFkv4bezX9pSmDd0XzdgZkwa7SJnFDMNMX35 | ||
27 | TFdGM5jE5GU1o4kn1WDzmXbg2TaFaSZrgvNks+ymOL9Jy3DesGUiSd5wmEhGt5SiHUipp+naCZL7 | ||
28 | 6ZOV+WyixMJhT1MKlJ+CFCP2nmexf9plCZZbJWT+3Cm7MJIxSfGcp0WTglGC9CtL+9RERz3aT3pm | ||
29 | FFeiuShBHcqNN75ToqjkaBhXqr8XJnSPIC0oHP2JU5FqdKQ2g5jyLNerfgo1qDolKTlMmsqTlrJa | ||
30 | Km1OAmOGCKa+1KkstRBEUdDQpUpqoEk1KlF2ei2fftQoYyVrSFERUK9aQp4tRakmbXrTqtbUpXD9 | ||
31 | oVw1d9UTZLWiXO0jWnn61Y7xca5mJWxhifpXsKr1IWxV6kQPitc1GnZOTcVqFhRq0Lxmdqp6palb | ||
32 | L5vYxQL0nkA9rGnVgql9FvWoiu2qX9uqVWxVtrNP/em6lsdZ2t6VbE9ap1B9y9qS9jWwwS2uzvD+ | ||
33 | OdmFDjWoIF0tcZ+7VqTWFLjMpS5Ri6krsaoJpt6M2hFLK7bGuha6DAPsqSi7XNSmV73NDa1xVSLe | ||
34 | 1xLUqlaLbViWCF7vJu27ns2pe8k72rCSq6z3XW+B22ve8rZWvuM9LW/xm13LPo2q9mUufScU3+gm | ||
35 | OMCiDRtukytVEIcYsRuO44I1LNz5RrTCytXvfo/G3wnTNsOM/S98S+zED1vYwS0WsWxxGkLMbjXF | ||
36 | DWbvhV185CS/GMm9ky6KOywmHM/xxz7WMY97bFbn3vjENR7ulSVM05QumcljXnGMabwnGysYylO2 | ||
37 | spG/TOUqo1fLa35vl4ksZ7uyeMRmrq8akav+5OI5+c5sFlRaezpgA/P5zXDGLZ05bOc0e5nRD/Zz | ||
38 | mfscHWYiQdNKAK6n4wfAxSTi09wk5zipqctunvqct1T1L8P5i1GLLtTsdMRBrBvrHNoE18fEL6dH | ||
39 | CexgC3vYxC62sY+N7GQre9nMbraznw3taEt72tSutrWvje1sa3vb3O62t78N7nCLe9zkLre5z43u | ||
40 | dKt73exut7vfDe94y3ve9K63ve9t7SBkNdH47re/9Qq6CAP63wQvuGZ2mYneFoPWBm+4w8VUWiMB | ||
41 | 5IIPr7jFX2a/YCZ8zxfvuLnf1VB5QcnjJDd4YTKucN3xuuQsb7nLXw7zmMt85jSvuc1vjvP+nOt8 | ||
42 | 5zzvuc9/DvSgC33oRC+60Y+O9KQrfelMb7rTnw71qEt96lSvutWvjvWsa33rXO+6178O9rCLfexk | ||
43 | L7vZz472scG0vllD24rZzrW28bbtcl873N2uObUfqkQzJFaJPAO9Fm53W34/mcbO+7/t9j1ksfzY | ||
44 | MiUO+DaXDPCLT9VpKr8yZnpQDM50JcmkyTOdNT5Enx8mxhAPaxApq/CULxjFV9S8kT9yhWts0zL4 | ||
45 | JVnX44uigl1481Cf8KsI3Kf+Er6biMXS18/+gy2JJfBzFw/Mc35U0NcXJxAh+4A1ENC69xdoER38 | ||
46 | 34Mf+sZvF/5OP3yQ+QKAt8+14Z9/2dH+H3dnh4d/Als5f1MzMcdsCoj5SfwwqXVb/Mca6qd9WBaA | ||
47 | R/J+1qddDHeAUZZy85c+mOcp/ndc5QMqGyMawrd5ACVx/8dYKrcsFQg7DAhEu6NAG7g9q3cU3RN4 | ||
48 | zBJV9jdwsXM/GQiCRuZWNWh7Msh3QmaAhoYSIyhja1ALbQJ/obM+L0iExvJry8d8LpiAuPdSN7h9 | ||
49 | 3VOD3kdHW1AVsOOAxEclTySEIIQOHViF7XSFZQgUVFiGj8CCYpiGR+g8Axgt24c8Q9gpvTJbHjZg | ||
50 | IjguFJQVZChbH2h/2rODJjgqxieDGTiFevgyFKWGAYOBj8gtVPF564IpLRKJgziAgAj+ieFniNxX | ||
51 | fUo4LPcXhn2YEqMnif+TMYNHgKoWeTTYTGoifZzXeAsoivpXJ2f4PaHHik7oMZ1ni4yIi8fDib+I | ||
52 | gen3g6pohE34gMa4cbO4ixJkh8m4d0HYi5Lniq1XjMqojcqgd2AmNXVnd3g3juRIYXT3dnGXjuZ4 | ||
53 | jl/zjboVjuvIjvB4d/NoUOiYd+qYj/Z4j+6IQXNXj/IojuAYkAK5j/yoZwV5kAa5kA2Zdg8JkREp | ||
54 | kRNJkRVpkT73ZxwnjASpjwCJkIP0jv3Yke34kSAZjww5kPQ4kiSZkipZkhOkNifpkOWIkjQ5kzZJ | ||
55 | NqyXi9uYeIrXho8TZtTlCjnEMfn+Z07jN3n3hIuC1ZNKeY2JiD6Zs0gC5iWzliav+Inv51vKx3wo | ||
56 | WIrTV3uh2IqC9zjZN5ZL2DBgSZW+iI2GBpTT2IwmtpajqJSGIY232JRbuQ1myZZoKZZZmTt8ySV3 | ||
57 | ggapWEHRAJjU2JaL6YVMKYepMpe/GJlH6ZTI2Jdu6ZRcuZGQBJePqTCTmYRG2XyO6Q52Ui5QuJn7 | ||
58 | sA4amC2XOYeJCWukWVugeX2y+ZeiGZSO0ZrncpdGWYKwOZq2mV94SXwzEyymCULIo4u0h5rt95ZD | ||
59 | uZuuyS2xSJuNeZZ3WJlhBmRQBAhCGVrLmRfGCXF1yTyg2ThkQlZ5eJ3lWYipOZ3+UKmd/uSDrwmf | ||
60 | ciSY76kuacmY+Hk9lWmEwumJ8BmDSBl9/zKgpEmI6CkjGcOM/MmN3QicnRmX0OBpuvmW3GlD4jkr | ||
61 | QEmUFuqfHXokUjkPGtoYDSqd+meiE+qMehmf0ZmQComTHtmScSWTMWqjHPmSMPmPMhpRGemjMYmP | ||
62 | N4mjM0qjMHqjLkmkL5qjIPCjLXqhLqqkSWqSQXqkSFqTLHmlVpqlIrmkF+mlXwqmYSqmY7puiEim | ||
63 | Zzogj4GEaMqmAIIQmtmmcTofbyqhcqp0GSlD1gCndvpvuqYldSU3dOqkfJpun/VFt1md5sFQjOKn | ||
64 | hFpu+dObKVMXUnSMx5AfDBX+agfqqH0qQQtkCrMZf81gqBvnmemBTZtacuCyp98yFbyAD/NJSLiD | ||
65 | p4dKoSuHqu62qJHqlpTYJ5AgcvKBqbfqclroUOUZBynoFP/pHrMqrI8KL2CErB1YQPHBrM06bjwJ | ||
66 | lxsDJCkkqgD3WNZ6Ro16lT5gq0JCnBPGrfs5SerJcaOKm+BaH+4KC5kkZoR2nTTBrixToKCESTwK | ||
67 | r2mqkatySi1lr/uJr7nFpJ6kooMWpf8KsHpErwQraed6sIAKLez6SQHrsHAjr6wQsSpGMzzIqp0U | ||
68 | ZfwKR9W6sfzRsarwsXnWrYDJryurohjbWSibsvohs5MmaBI7se45qQhLq5L+YrIiZLM3ix85i2e/ | ||
69 | oRMHJLJesmfoArVPyWqldnivNrW1hGqvhk5Xi7VcW05ei0u9JrbKNLbS8nioyE1bC7bAtLYIt7Xo | ||
70 | BLfmBLdWW7Vz20vq9E2mFrZ1u2qihrcdRHq19Vj5CoaFVqIMC2kAdq/U57KWqGh0hWBJu2WG67Q6 | ||
71 | y11AO6WEq6O71WjIhbRSBaubG1OVZrH7R7lAhLhyGWmLO4MHtmOUhoDqhWaJO7mru34YorlBC1mV | ||
72 | Frr8RmWf61K9q7uaRaO5K1m26xKzq7qKa7CM+7qu27nadVaWC4GnCxXKS2HG+1CYm7nHG717FVnC | ||
73 | Syuje7mlq0XIK7DUO2T+6Luwvhu97gu7iya7qVu97Fu5khtZ5ju+2ru94uu8v6ux1Oe/BUG8ema8 | ||
74 | A+y9T8Zg9suZCGqZjtu4pfm4wUu/68u8FqzAFwa8H7bBjgZVyAi+vDuo8xvAIVy/F5y++Eu7dZaI | ||
75 | wym/sQvDL6xc2IvBLFy7C6zBJfxECPV9BIZe+ru/CZy96DfEWHm/DDxGFYyZ1luqcfa+EPy8MQy6 | ||
76 | SsyqXLbCPeti5fq74gq62JWtSMTFwavFUgyPFShlKVxkV7y8ienCkPvEEhzBEkzDS4zEBaq+ZXxp | ||
77 | +RtopEs1MQYwCIzAQJzEZ1zFBPq/8evGiOzEWUbFR4zChZzG5bvHkoz+aWRmyZRsw5mMxRl8w51M | ||
78 | sYcMvYrsZqFMwiq8xpp8yptcyavMynw8yXrcyqksy7d7x5D8yA46ymScyzKcyKUcySfsyWpMy5Z2 | ||
79 | yZjsyrGMzOBoxlYcsrXsyMHMum28yKSsyz8cub9cw8Kczc1MzK+szHl8zMX8zXVcuNh8uIT8zJ/c | ||
80 | utUsvVHMyxTszA3MxOWMw8mMx+BcxOIczsY8y9s8zOZsy9DcvOv8zrvcy+zcgI0sz+RsugBdvPic | ||
81 | z/Z8zxmSoqNT0aq4a1JiI92Q0bm2aqeqt3cb0qk20q1W0iYttbR4ax3N0RsNBBdNQ114QjCNQzLd | ||
82 | AjRttDmt0zvN0z1u7dM/DdRBLdRDTdRFbdRHjdRJrdRLzdRN7dRPDdVRLdVTTdVVbdVXjdVfVBkx | ||
83 | +APSnNU5bZaaCsVfPdQnR8TkJwlnTdZAnSwXJIidutZBHbhrqpqnuKpx/a9c3RdvndZ43dO+pCSY | ||
84 | E9gqF8bNWgAAOw== | ||
diff --git a/Documentation/DocBook/media/vbi_625.gif.b64 b/Documentation/DocBook/media/vbi_625.gif.b64 new file mode 100644 index 000000000000..831f49a02821 --- /dev/null +++ b/Documentation/DocBook/media/vbi_625.gif.b64 | |||
@@ -0,0 +1,90 @@ | |||
1 | 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 | ||
90 | ehjmPs7laf58XB7Fau6DR56aBQAAOw== | ||
diff --git a/Documentation/DocBook/media/vbi_hsync.gif.b64 b/Documentation/DocBook/media/vbi_hsync.gif.b64 new file mode 100644 index 000000000000..cdafabed5c11 --- /dev/null +++ b/Documentation/DocBook/media/vbi_hsync.gif.b64 | |||
@@ -0,0 +1,43 @@ | |||
1 | R0lGODlhBwHJAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O | ||
2 | Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh | ||
3 | ISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0 | ||
4 | NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdH | ||
5 | R0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpa | ||
6 | WltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1t | ||
7 | bW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CA | ||
8 | gIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOT | ||
9 | k5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaam | ||
10 | pqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5 | ||
11 | ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zM | ||
12 | zM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f | ||
13 | 3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy | ||
14 | 8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///ywAAAAABwHJAAAI/gD/CRxI | ||
15 | sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN | ||
16 | mzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVqyQBYN1aVSvXr1C9gh2rVOxCsV4B | ||
17 | mE2b0GxDt2TjtnWo9l9du2rrar2bl+BavQL3ApZLeC5du3j77g2MF/FAtIv1AoZb+Gfey5gza97M | ||
18 | ua/ByJ4XI8b8+PHl0ZkrE6XsuCDr1xD5ip7d2m9pv6IZqxYK+zPC3g/T0mabGLdk4YEH7wYK3PZB | ||
19 | yqyXSw/++3l139OzS4R+Hbtr7eCp/nv/bp18+PMKuZcfj7792fXm47ufz/52fd308zu/X3u/fv3N | ||
20 | +Sfgf/MFaJ98BLpnIH4IJojegv0d6GB7EEI4oXYVdnfhgxoOyOCG4WXIH4jTidggiSV2KOGHKGa3 | ||
21 | oIUtqvaiijEuNyN8NUp344g5EqYef9H1KNePJwYpJFlEehjhkT7iuCKLTMZl4olRgjWlklV+deWT | ||
22 | WWpJ45JgdrnVllCKOeaXMJrZFZpfqmkVmWG6SRWcRsoZFZl12hkWmzxemCdXeAr555lOgjnof4de | ||
23 | tSOVG0KWaFl3GVponH52ZumlmGaq6aaY0pjmhJppmRqQbTaKm6gewgnio2uSOumq/jpO+qmDrE5F | ||
24 | p6AtSZZeSrf2WOtEoZEmm2C/Astnn6CapKtjbClWZki95lhsbLcRtxmlHkVb47TBWcuYcGvxeiyj | ||
25 | fp7kGbOJEZscStrGyK1T7bb4blPxojgvU4Hiulu+vto4Lpck3rvUoljCuq+npZp6cKGz0uovwwmX | ||
26 | u3CRESc7sZINJyhwWbJW7PDFXGZM4MZI1WsvyCF7rDHKZYqMKMuSvmqwS5yOypHJAcP0K8k4z5xr | ||
27 | RTz/C7DPLO2crdDPEr2S0R31rDDNQB/dMbISQ01R0FOT+/TPV0vtqtZVc21s0wjLLONFJG8XNdkQ | ||
28 | y5z2UNy+TW3XbN8Ho9xBxa3z/to3lz0i3nljBPhbfG+UZMoqG5db2+KJ9O7gDDHd99dUstpscsgR | ||
29 | x6CzqC0O0uN70z05xVlHdNpwgvUHGWrFef5RppGHPjawNddue3nB5nYufsKmu/vrhL/3kuRqq1Tr | ||
30 | 6pd/G+6HymGLdvC7Dl+46cYD7aywoSleXGOtj5RnnZALP3vx7Bb2J/iyk6++subTZanz2ZJ2te2R | ||
31 | st8+9NaFHx/x1Jff5GFz0Z9/+Dc3c9EnSK4ryfLG1z89GaY6AjwQARvnQLfBr24XpFrizGSk+tlv | ||
32 | aOJbXwULxj3/gTB6DBwhCD2oQLBtkIR66mAEVTe9AqqQhCzMigvNhsIbrnCG/m6ZIAB9+MPqwfCB | ||
33 | IryhDI14QiQ2kIiUyqH3dqhBHtoJfSZs4gu16CYsGpCKYDyinLz4QS5W8YwcjF0WkxbCJxKRjC0M | ||
34 | oxnlmCU46tA19BPiCO04xZjM8IBq/GL63hjIMloNitiS4uv+aMUxRk5/ihQXIhMJSUaiUUzgq6RM | ||
35 | LEmhR5qLk2LsoieVBco5YnKUCiwlG2OIyqyoMoNpPIsm/TjJRMKya698JYZiB7kELq2W6OvlLT8H | ||
36 | TF62MJfM+R3+lnnIAB5zk8zBHOZks7/BqEuXwXwmLS1DzestDnmNud5MsqlDZPKGWMkzT+9CBc33 | ||
37 | 5PGd8IynPOfJwkilLp37/gniN8dZyDgOcienCadudnc6anavnT30p/SKokvH9fOO/+RmqxIK0YUi | ||
38 | EosBNVz2tnnRR9KzUxyFYjAzqpHehZSQbdxYEBEqUhcVM0WTbGhNZBor+7xNj8SMaT7TJc1Tgcug | ||
39 | Bf2LNZnlKODp1KYCbR64ujcZ0OBxe5FR3jAfqsSdNiujucMnPnl3uaxiraNI3ep3hro8161uNLbB | ||
40 | G00fNk3abG+aAiXqcKqlGG8Oy6hgLang+HnUjERyiBFV4VpZitKa5rWEgKJjldgpKs5d9KOQjeym | ||
41 | XkrSMdnzpYatpWY3y1l6NXGB3RlsZ9eDzp7ydKmnW1dAlTnaQ94zruEkS2tUnfra1iIUdRvlHueu | ||
42 | iS7N2daic1VncEEz3N/6MbVyNU1TV0tUdL3VuF6aKnQhJdrpWve62M2udrfL3e5697vgDa94x0ve | ||
43 | 8lIkIAA7 | ||
diff --git a/Documentation/DocBook/media.tmpl b/Documentation/DocBook/media_api.tmpl index 88f2cc680cc2..4e8e8985cc17 100644 --- a/Documentation/DocBook/media.tmpl +++ b/Documentation/DocBook/media_api.tmpl | |||
@@ -8,7 +8,8 @@ | |||
8 | <!ENTITY ie "i. e."> | 8 | <!ENTITY ie "i. e."> |
9 | <!ENTITY fd "File descriptor returned by <link linkend='func-open'><function>open()</function></link>."> | 9 | <!ENTITY fd "File descriptor returned by <link linkend='func-open'><function>open()</function></link>."> |
10 | <!ENTITY i2c "I<superscript>2</superscript>C"> | 10 | <!ENTITY i2c "I<superscript>2</superscript>C"> |
11 | <!ENTITY return-value "<title>Return Value</title><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately:</para>"> | 11 | <!ENTITY return-value "<title>Return Value</title><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately. The generic error codes are described at the <link linkend='gen-errors'>Generic Error Codes</link> chapter.</para>"> |
12 | <!ENTITY return-value-dvb "<para>RETURN VALUE</para><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately. The generic error codes are described at the <link linkend='gen-errors'>Generic Error Codes</link> chapter.</para>"> | ||
12 | <!ENTITY manvol "<manvolnum>2</manvolnum>"> | 13 | <!ENTITY manvol "<manvolnum>2</manvolnum>"> |
13 | 14 | ||
14 | <!-- Table templates: structs, structs w/union, defines. --> | 15 | <!-- Table templates: structs, structs w/union, defines. --> |
@@ -110,6 +111,11 @@ Foundation. A copy of the license is included in the chapter entitled | |||
110 | &sub-media-controller; | 111 | &sub-media-controller; |
111 | </part> | 112 | </part> |
112 | 113 | ||
114 | <chapter id="gen_errors"> | ||
115 | &sub-gen-errors; | ||
116 | </chapter> | ||
117 | |||
118 | |||
113 | &sub-fdl-appendix; | 119 | &sub-fdl-appendix; |
114 | 120 | ||
115 | </book> | 121 | </book> |
diff --git a/Documentation/DocBook/v4l/bayer.pdf b/Documentation/DocBook/v4l/bayer.pdf deleted file mode 100644 index 905e60e6cd42..000000000000 --- a/Documentation/DocBook/v4l/bayer.pdf +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/bayer.png b/Documentation/DocBook/v4l/bayer.png deleted file mode 100644 index 9b15fb22e817..000000000000 --- a/Documentation/DocBook/v4l/bayer.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/crop.gif b/Documentation/DocBook/v4l/crop.gif deleted file mode 100644 index 3b9e7d836d4b..000000000000 --- a/Documentation/DocBook/v4l/crop.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/dev-event.xml b/Documentation/DocBook/v4l/dev-event.xml deleted file mode 100644 index be5a98fb4fab..000000000000 --- a/Documentation/DocBook/v4l/dev-event.xml +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | <title>Event Interface</title> | ||
2 | |||
3 | <para>The V4L2 event interface provides means for user to get | ||
4 | immediately notified on certain conditions taking place on a device. | ||
5 | This might include start of frame or loss of signal events, for | ||
6 | example. | ||
7 | </para> | ||
8 | |||
9 | <para>To receive events, the events the user is interested in first must | ||
10 | be subscribed using the &VIDIOC-SUBSCRIBE-EVENT; ioctl. Once an event is | ||
11 | subscribed, the events of subscribed types are dequeueable using the | ||
12 | &VIDIOC-DQEVENT; ioctl. Events may be unsubscribed using | ||
13 | VIDIOC_UNSUBSCRIBE_EVENT ioctl. The special event type V4L2_EVENT_ALL may | ||
14 | be used to unsubscribe all the events the driver supports.</para> | ||
15 | |||
16 | <para>The event subscriptions and event queues are specific to file | ||
17 | handles. Subscribing an event on one file handle does not affect | ||
18 | other file handles. | ||
19 | </para> | ||
20 | |||
21 | <para>The information on dequeueable events is obtained by using select or | ||
22 | poll system calls on video devices. The V4L2 events use POLLPRI events on | ||
23 | poll system call and exceptions on select system call. </para> | ||
24 | |||
25 | <!-- | ||
26 | Local Variables: | ||
27 | mode: sgml | ||
28 | sgml-parent-document: "v4l2.sgml" | ||
29 | indent-tabs-mode: nil | ||
30 | End: | ||
31 | --> | ||
diff --git a/Documentation/DocBook/v4l/fieldseq_bt.gif b/Documentation/DocBook/v4l/fieldseq_bt.gif deleted file mode 100644 index 60e8569a76c9..000000000000 --- a/Documentation/DocBook/v4l/fieldseq_bt.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/fieldseq_tb.gif b/Documentation/DocBook/v4l/fieldseq_tb.gif deleted file mode 100644 index 718492f1cfc7..000000000000 --- a/Documentation/DocBook/v4l/fieldseq_tb.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/func-ioctl.xml b/Documentation/DocBook/v4l/func-ioctl.xml deleted file mode 100644 index b60fd37a6295..000000000000 --- a/Documentation/DocBook/v4l/func-ioctl.xml +++ /dev/null | |||
@@ -1,145 +0,0 @@ | |||
1 | <refentry id="func-ioctl"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2 ioctl()</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>v4l2-ioctl</refname> | ||
9 | <refpurpose>Program a V4L2 device</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcsynopsisinfo>#include <sys/ioctl.h></funcsynopsisinfo> | ||
15 | <funcprototype> | ||
16 | <funcdef>int <function>ioctl</function></funcdef> | ||
17 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
18 | <paramdef>int <parameter>request</parameter></paramdef> | ||
19 | <paramdef>void *<parameter>argp</parameter></paramdef> | ||
20 | </funcprototype> | ||
21 | </funcsynopsis> | ||
22 | </refsynopsisdiv> | ||
23 | |||
24 | <refsect1> | ||
25 | <title>Arguments</title> | ||
26 | |||
27 | <variablelist> | ||
28 | <varlistentry> | ||
29 | <term><parameter>fd</parameter></term> | ||
30 | <listitem> | ||
31 | <para>&fd;</para> | ||
32 | </listitem> | ||
33 | </varlistentry> | ||
34 | <varlistentry> | ||
35 | <term><parameter>request</parameter></term> | ||
36 | <listitem> | ||
37 | <para>V4L2 ioctl request code as defined in the <filename>videodev2.h</filename> header file, for example | ||
38 | VIDIOC_QUERYCAP.</para> | ||
39 | </listitem> | ||
40 | </varlistentry> | ||
41 | <varlistentry> | ||
42 | <term><parameter>argp</parameter></term> | ||
43 | <listitem> | ||
44 | <para>Pointer to a function parameter, usually a structure.</para> | ||
45 | </listitem> | ||
46 | </varlistentry> | ||
47 | </variablelist> | ||
48 | </refsect1> | ||
49 | |||
50 | <refsect1> | ||
51 | <title>Description</title> | ||
52 | |||
53 | <para>The <function>ioctl()</function> function is used to program | ||
54 | V4L2 devices. The argument <parameter>fd</parameter> must be an open | ||
55 | file descriptor. An ioctl <parameter>request</parameter> has encoded | ||
56 | in it whether the argument is an input, output or read/write | ||
57 | parameter, and the size of the argument <parameter>argp</parameter> in | ||
58 | bytes. Macros and defines specifying V4L2 ioctl requests are located | ||
59 | in the <filename>videodev2.h</filename> header file. | ||
60 | Applications should use their own copy, not include the version in the | ||
61 | kernel sources on the system they compile on. All V4L2 ioctl requests, | ||
62 | their respective function and parameters are specified in <xref | ||
63 | linkend="user-func" />.</para> | ||
64 | </refsect1> | ||
65 | |||
66 | <refsect1> | ||
67 | <title>Return Value</title> | ||
68 | |||
69 | <para>On success the <function>ioctl()</function> function returns | ||
70 | <returnvalue>0</returnvalue> and does not reset the | ||
71 | <varname>errno</varname> variable. On failure | ||
72 | <returnvalue>-1</returnvalue> is returned, when the ioctl takes an | ||
73 | output or read/write parameter it remains unmodified, and the | ||
74 | <varname>errno</varname> variable is set appropriately. See below for | ||
75 | possible error codes. Generic errors like <errorcode>EBADF</errorcode> | ||
76 | or <errorcode>EFAULT</errorcode> are not listed in the sections | ||
77 | discussing individual ioctl requests.</para> | ||
78 | <para>Note ioctls may return undefined error codes. Since errors | ||
79 | may have side effects such as a driver reset applications should | ||
80 | abort on unexpected errors.</para> | ||
81 | |||
82 | <variablelist> | ||
83 | <varlistentry> | ||
84 | <term><errorcode>EBADF</errorcode></term> | ||
85 | <listitem> | ||
86 | <para><parameter>fd</parameter> is not a valid open file | ||
87 | descriptor.</para> | ||
88 | </listitem> | ||
89 | </varlistentry> | ||
90 | <varlistentry> | ||
91 | <term><errorcode>EBUSY</errorcode></term> | ||
92 | <listitem> | ||
93 | <para>The property cannot be changed right now. Typically | ||
94 | this error code is returned when I/O is in progress or the driver | ||
95 | supports multiple opens and another process locked the property.</para> | ||
96 | </listitem> | ||
97 | </varlistentry> | ||
98 | <varlistentry> | ||
99 | <term><errorcode>EFAULT</errorcode></term> | ||
100 | <listitem> | ||
101 | <para><parameter>argp</parameter> references an inaccessible | ||
102 | memory area.</para> | ||
103 | </listitem> | ||
104 | </varlistentry> | ||
105 | <varlistentry> | ||
106 | <term><errorcode>ENOTTY</errorcode></term> | ||
107 | <listitem> | ||
108 | <para><parameter>fd</parameter> is not associated with a | ||
109 | character special device.</para> | ||
110 | </listitem> | ||
111 | </varlistentry> | ||
112 | <varlistentry> | ||
113 | <term><errorcode>EINVAL</errorcode></term> | ||
114 | <listitem> | ||
115 | <para>The <parameter>request</parameter> or the data pointed | ||
116 | to by <parameter>argp</parameter> is not valid. This is a very common | ||
117 | error code, see the individual ioctl requests listed in <xref | ||
118 | linkend="user-func" /> for actual causes.</para> | ||
119 | </listitem> | ||
120 | </varlistentry> | ||
121 | <varlistentry> | ||
122 | <term><errorcode>ENOMEM</errorcode></term> | ||
123 | <listitem> | ||
124 | <para>Not enough physical or virtual memory was available to | ||
125 | complete the request.</para> | ||
126 | </listitem> | ||
127 | </varlistentry> | ||
128 | <varlistentry> | ||
129 | <term><errorcode>ERANGE</errorcode></term> | ||
130 | <listitem> | ||
131 | <para>The application attempted to set a control with the | ||
132 | &VIDIOC-S-CTRL; ioctl to a value which is out of bounds.</para> | ||
133 | </listitem> | ||
134 | </varlistentry> | ||
135 | </variablelist> | ||
136 | </refsect1> | ||
137 | </refentry> | ||
138 | |||
139 | <!-- | ||
140 | Local Variables: | ||
141 | mode: sgml | ||
142 | sgml-parent-document: "v4l2.sgml" | ||
143 | indent-tabs-mode: nil | ||
144 | End: | ||
145 | --> | ||
diff --git a/Documentation/DocBook/v4l/nv12mt.gif b/Documentation/DocBook/v4l/nv12mt.gif deleted file mode 100644 index ef2d4cf8367b..000000000000 --- a/Documentation/DocBook/v4l/nv12mt.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/nv12mt_example.gif b/Documentation/DocBook/v4l/nv12mt_example.gif deleted file mode 100644 index df81d68108ee..000000000000 --- a/Documentation/DocBook/v4l/nv12mt_example.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/pipeline.png b/Documentation/DocBook/v4l/pipeline.png deleted file mode 100644 index f19b86c2c24d..000000000000 --- a/Documentation/DocBook/v4l/pipeline.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/vbi_525.gif b/Documentation/DocBook/v4l/vbi_525.gif deleted file mode 100644 index 5580b690d504..000000000000 --- a/Documentation/DocBook/v4l/vbi_525.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/vbi_625.gif b/Documentation/DocBook/v4l/vbi_625.gif deleted file mode 100644 index 34e3251983c4..000000000000 --- a/Documentation/DocBook/v4l/vbi_625.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/vbi_hsync.gif b/Documentation/DocBook/v4l/vbi_hsync.gif deleted file mode 100644 index b02434d3b356..000000000000 --- a/Documentation/DocBook/v4l/vbi_hsync.gif +++ /dev/null | |||
Binary files differ | |||
diff --git a/Documentation/DocBook/v4l/videodev2.h.xml b/Documentation/DocBook/v4l/videodev2.h.xml deleted file mode 100644 index c50536a4f596..000000000000 --- a/Documentation/DocBook/v4l/videodev2.h.xml +++ /dev/null | |||
@@ -1,1946 +0,0 @@ | |||
1 | <programlisting> | ||
2 | /* | ||
3 | * Video for Linux Two header file | ||
4 | * | ||
5 | * Copyright (C) 1999-2007 the contributors | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * Alternatively you can redistribute this file under the terms of the | ||
18 | * BSD license as stated below: | ||
19 | * | ||
20 | * Redistribution and use in source and binary forms, with or without | ||
21 | * modification, are permitted provided that the following conditions | ||
22 | * are met: | ||
23 | * 1. Redistributions of source code must retain the above copyright | ||
24 | * notice, this list of conditions and the following disclaimer. | ||
25 | * 2. Redistributions in binary form must reproduce the above copyright | ||
26 | * notice, this list of conditions and the following disclaimer in | ||
27 | * the documentation and/or other materials provided with the | ||
28 | * distribution. | ||
29 | * 3. The names of its contributors may not be used to endorse or promote | ||
30 | * products derived from this software without specific prior written | ||
31 | * permission. | ||
32 | * | ||
33 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
34 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
35 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
36 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
37 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
38 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | ||
39 | * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | ||
40 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||
41 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||
42 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
43 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
44 | * | ||
45 | * Header file for v4l or V4L2 drivers and applications | ||
46 | * with public API. | ||
47 | * All kernel-specific stuff were moved to media/v4l2-dev.h, so | ||
48 | * no #if __KERNEL tests are allowed here | ||
49 | * | ||
50 | * See http://linuxtv.org for more info | ||
51 | * | ||
52 | * Author: Bill Dirks <bill@thedirks.org> | ||
53 | * Justin Schoeman | ||
54 | * Hans Verkuil <hverkuil@xs4all.nl> | ||
55 | * et al. | ||
56 | */ | ||
57 | #ifndef __LINUX_VIDEODEV2_H | ||
58 | #define __LINUX_VIDEODEV2_H | ||
59 | |||
60 | #ifdef __KERNEL__ | ||
61 | #include <linux/time.h> /* need struct timeval */ | ||
62 | #else | ||
63 | #include <sys/time.h> | ||
64 | #endif | ||
65 | #include <linux/compiler.h> | ||
66 | #include <linux/ioctl.h> | ||
67 | #include <linux/types.h> | ||
68 | |||
69 | /* | ||
70 | * Common stuff for both V4L1 and V4L2 | ||
71 | * Moved from videodev.h | ||
72 | */ | ||
73 | #define VIDEO_MAX_FRAME 32 | ||
74 | #define VIDEO_MAX_PLANES 8 | ||
75 | |||
76 | #ifndef __KERNEL__ | ||
77 | |||
78 | /* These defines are V4L1 specific and should not be used with the V4L2 API! | ||
79 | They will be removed from this header in the future. */ | ||
80 | |||
81 | #define VID_TYPE_CAPTURE 1 /* Can capture */ | ||
82 | #define VID_TYPE_TUNER 2 /* Can tune */ | ||
83 | #define VID_TYPE_TELETEXT 4 /* Does teletext */ | ||
84 | #define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */ | ||
85 | #define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */ | ||
86 | #define VID_TYPE_CLIPPING 32 /* Can clip */ | ||
87 | #define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */ | ||
88 | #define VID_TYPE_SCALES 128 /* Scalable */ | ||
89 | #define VID_TYPE_MONOCHROME 256 /* Monochrome only */ | ||
90 | #define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */ | ||
91 | #define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */ | ||
92 | #define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */ | ||
93 | #define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */ | ||
94 | #define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */ | ||
95 | #endif | ||
96 | |||
97 | /* | ||
98 | * M I S C E L L A N E O U S | ||
99 | */ | ||
100 | |||
101 | /* Four-character-code (FOURCC) */ | ||
102 | #define v4l2_fourcc(a, b, c, d)\ | ||
103 | ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) | ||
104 | |||
105 | /* | ||
106 | * E N U M S | ||
107 | */ | ||
108 | enum <link linkend="v4l2-field">v4l2_field</link> { | ||
109 | V4L2_FIELD_ANY = 0, /* driver can choose from none, | ||
110 | top, bottom, interlaced | ||
111 | depending on whatever it thinks | ||
112 | is approximate ... */ | ||
113 | V4L2_FIELD_NONE = 1, /* this device has no fields ... */ | ||
114 | V4L2_FIELD_TOP = 2, /* top field only */ | ||
115 | V4L2_FIELD_BOTTOM = 3, /* bottom field only */ | ||
116 | V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ | ||
117 | V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one | ||
118 | buffer, top-bottom order */ | ||
119 | V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */ | ||
120 | V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into | ||
121 | separate buffers */ | ||
122 | V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field | ||
123 | first and the top field is | ||
124 | transmitted first */ | ||
125 | V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field | ||
126 | first and the bottom field is | ||
127 | transmitted first */ | ||
128 | }; | ||
129 | #define V4L2_FIELD_HAS_TOP(field) \ | ||
130 | ((field) == V4L2_FIELD_TOP ||\ | ||
131 | (field) == V4L2_FIELD_INTERLACED ||\ | ||
132 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | ||
133 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | ||
134 | (field) == V4L2_FIELD_SEQ_TB ||\ | ||
135 | (field) == V4L2_FIELD_SEQ_BT) | ||
136 | #define V4L2_FIELD_HAS_BOTTOM(field) \ | ||
137 | ((field) == V4L2_FIELD_BOTTOM ||\ | ||
138 | (field) == V4L2_FIELD_INTERLACED ||\ | ||
139 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | ||
140 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | ||
141 | (field) == V4L2_FIELD_SEQ_TB ||\ | ||
142 | (field) == V4L2_FIELD_SEQ_BT) | ||
143 | #define V4L2_FIELD_HAS_BOTH(field) \ | ||
144 | ((field) == V4L2_FIELD_INTERLACED ||\ | ||
145 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | ||
146 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | ||
147 | (field) == V4L2_FIELD_SEQ_TB ||\ | ||
148 | (field) == V4L2_FIELD_SEQ_BT) | ||
149 | |||
150 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> { | ||
151 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, | ||
152 | V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, | ||
153 | V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, | ||
154 | V4L2_BUF_TYPE_VBI_CAPTURE = 4, | ||
155 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, | ||
156 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, | ||
157 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, | ||
158 | #if 1 | ||
159 | /* Experimental */ | ||
160 | V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, | ||
161 | #endif | ||
162 | V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, | ||
163 | V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10, | ||
164 | V4L2_BUF_TYPE_PRIVATE = 0x80, | ||
165 | }; | ||
166 | |||
167 | #define V4L2_TYPE_IS_MULTIPLANAR(type) \ | ||
168 | ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \ | ||
169 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) | ||
170 | |||
171 | #define V4L2_TYPE_IS_OUTPUT(type) \ | ||
172 | ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \ | ||
173 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \ | ||
174 | || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \ | ||
175 | || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \ | ||
176 | || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \ | ||
177 | || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT) | ||
178 | |||
179 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> { | ||
180 | V4L2_TUNER_RADIO = 1, | ||
181 | V4L2_TUNER_ANALOG_TV = 2, | ||
182 | V4L2_TUNER_DIGITAL_TV = 3, | ||
183 | }; | ||
184 | |||
185 | enum <link linkend="v4l2-memory">v4l2_memory</link> { | ||
186 | V4L2_MEMORY_MMAP = 1, | ||
187 | V4L2_MEMORY_USERPTR = 2, | ||
188 | V4L2_MEMORY_OVERLAY = 3, | ||
189 | }; | ||
190 | |||
191 | /* see also http://vektor.theorem.ca/graphics/ycbcr/ */ | ||
192 | enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> { | ||
193 | /* ITU-R 601 -- broadcast NTSC/PAL */ | ||
194 | V4L2_COLORSPACE_SMPTE170M = 1, | ||
195 | |||
196 | /* 1125-Line (US) HDTV */ | ||
197 | V4L2_COLORSPACE_SMPTE240M = 2, | ||
198 | |||
199 | /* HD and modern captures. */ | ||
200 | V4L2_COLORSPACE_REC709 = 3, | ||
201 | |||
202 | /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ | ||
203 | V4L2_COLORSPACE_BT878 = 4, | ||
204 | |||
205 | /* These should be useful. Assume 601 extents. */ | ||
206 | V4L2_COLORSPACE_470_SYSTEM_M = 5, | ||
207 | V4L2_COLORSPACE_470_SYSTEM_BG = 6, | ||
208 | |||
209 | /* I know there will be cameras that send this. So, this is | ||
210 | * unspecified chromaticities and full 0-255 on each of the | ||
211 | * Y'CbCr components | ||
212 | */ | ||
213 | V4L2_COLORSPACE_JPEG = 7, | ||
214 | |||
215 | /* For RGB colourspaces, this is probably a good start. */ | ||
216 | V4L2_COLORSPACE_SRGB = 8, | ||
217 | }; | ||
218 | |||
219 | enum <link linkend="v4l2-priority">v4l2_priority</link> { | ||
220 | V4L2_PRIORITY_UNSET = 0, /* not initialized */ | ||
221 | V4L2_PRIORITY_BACKGROUND = 1, | ||
222 | V4L2_PRIORITY_INTERACTIVE = 2, | ||
223 | V4L2_PRIORITY_RECORD = 3, | ||
224 | V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE, | ||
225 | }; | ||
226 | |||
227 | struct <link linkend="v4l2-rect">v4l2_rect</link> { | ||
228 | __s32 left; | ||
229 | __s32 top; | ||
230 | __s32 width; | ||
231 | __s32 height; | ||
232 | }; | ||
233 | |||
234 | struct <link linkend="v4l2-fract">v4l2_fract</link> { | ||
235 | __u32 numerator; | ||
236 | __u32 denominator; | ||
237 | }; | ||
238 | |||
239 | /* | ||
240 | * D R I V E R C A P A B I L I T I E S | ||
241 | */ | ||
242 | struct <link linkend="v4l2-capability">v4l2_capability</link> { | ||
243 | __u8 driver[16]; /* i.e.ie; "bttv" */ | ||
244 | __u8 card[32]; /* i.e.ie; "Hauppauge WinTV" */ | ||
245 | __u8 bus_info[32]; /* "PCI:" + pci_name(pci_dev) */ | ||
246 | __u32 version; /* should use KERNEL_VERSION() */ | ||
247 | __u32 capabilities; /* Device capabilities */ | ||
248 | __u32 reserved[4]; | ||
249 | }; | ||
250 | |||
251 | /* Values for 'capabilities' field */ | ||
252 | #define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */ | ||
253 | #define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */ | ||
254 | #define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */ | ||
255 | #define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a raw VBI capture device */ | ||
256 | #define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a raw VBI output device */ | ||
257 | #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */ | ||
258 | #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */ | ||
259 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ | ||
260 | #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ | ||
261 | #define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ | ||
262 | #define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */ | ||
263 | |||
264 | /* Is a video capture device that supports multiplanar formats */ | ||
265 | #define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000 | ||
266 | /* Is a video output device that supports multiplanar formats */ | ||
267 | #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000 | ||
268 | |||
269 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | ||
270 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | ||
271 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ | ||
272 | #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ | ||
273 | |||
274 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ | ||
275 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ | ||
276 | #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ | ||
277 | |||
278 | /* | ||
279 | * V I D E O I M A G E F O R M A T | ||
280 | */ | ||
281 | struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | ||
282 | __u32 width; | ||
283 | __u32 height; | ||
284 | __u32 pixelformat; | ||
285 | enum <link linkend="v4l2-field">v4l2_field</link> field; | ||
286 | __u32 bytesperline; /* for padding, zero if unused */ | ||
287 | __u32 sizeimage; | ||
288 | enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> colorspace; | ||
289 | __u32 priv; /* private data, depends on pixelformat */ | ||
290 | }; | ||
291 | |||
292 | /* Pixel format FOURCC depth Description */ | ||
293 | |||
294 | /* RGB formats */ | ||
295 | #define <link linkend="V4L2-PIX-FMT-RGB332">V4L2_PIX_FMT_RGB332</link> v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ | ||
296 | #define <link linkend="V4L2-PIX-FMT-RGB444">V4L2_PIX_FMT_RGB444</link> v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ | ||
297 | #define <link linkend="V4L2-PIX-FMT-RGB555">V4L2_PIX_FMT_RGB555</link> v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ | ||
298 | #define <link linkend="V4L2-PIX-FMT-RGB565">V4L2_PIX_FMT_RGB565</link> v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ | ||
299 | #define <link linkend="V4L2-PIX-FMT-RGB555X">V4L2_PIX_FMT_RGB555X</link> v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ | ||
300 | #define <link linkend="V4L2-PIX-FMT-RGB565X">V4L2_PIX_FMT_RGB565X</link> v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ | ||
301 | #define <link linkend="V4L2-PIX-FMT-BGR666">V4L2_PIX_FMT_BGR666</link> v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ | ||
302 | #define <link linkend="V4L2-PIX-FMT-BGR24">V4L2_PIX_FMT_BGR24</link> v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ | ||
303 | #define <link linkend="V4L2-PIX-FMT-RGB24">V4L2_PIX_FMT_RGB24</link> v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ | ||
304 | #define <link linkend="V4L2-PIX-FMT-BGR32">V4L2_PIX_FMT_BGR32</link> v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ | ||
305 | #define <link linkend="V4L2-PIX-FMT-RGB32">V4L2_PIX_FMT_RGB32</link> v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ | ||
306 | |||
307 | /* Grey formats */ | ||
308 | #define <link linkend="V4L2-PIX-FMT-GREY">V4L2_PIX_FMT_GREY</link> v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ | ||
309 | #define <link linkend="V4L2-PIX-FMT-Y4">V4L2_PIX_FMT_Y4</link> v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ | ||
310 | #define <link linkend="V4L2-PIX-FMT-Y6">V4L2_PIX_FMT_Y6</link> v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ | ||
311 | #define <link linkend="V4L2-PIX-FMT-Y10">V4L2_PIX_FMT_Y10</link> v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ | ||
312 | #define <link linkend="V4L2-PIX-FMT-Y16">V4L2_PIX_FMT_Y16</link> v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | ||
313 | |||
314 | /* Grey bit-packed formats */ | ||
315 | #define <link linkend="V4L2-PIX-FMT-Y10BPACK">V4L2_PIX_FMT_Y10BPACK</link> v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ | ||
316 | |||
317 | /* Palette formats */ | ||
318 | #define <link linkend="V4L2-PIX-FMT-PAL8">V4L2_PIX_FMT_PAL8</link> v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ | ||
319 | |||
320 | /* Luminance+Chrominance formats */ | ||
321 | #define <link linkend="V4L2-PIX-FMT-YVU410">V4L2_PIX_FMT_YVU410</link> v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ | ||
322 | #define <link linkend="V4L2-PIX-FMT-YVU420">V4L2_PIX_FMT_YVU420</link> v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ | ||
323 | #define <link linkend="V4L2-PIX-FMT-YUYV">V4L2_PIX_FMT_YUYV</link> v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ | ||
324 | #define <link linkend="V4L2-PIX-FMT-YYUV">V4L2_PIX_FMT_YYUV</link> v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ | ||
325 | #define <link linkend="V4L2-PIX-FMT-YVYU">V4L2_PIX_FMT_YVYU</link> v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | ||
326 | #define <link linkend="V4L2-PIX-FMT-UYVY">V4L2_PIX_FMT_UYVY</link> v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ | ||
327 | #define <link linkend="V4L2-PIX-FMT-VYUY">V4L2_PIX_FMT_VYUY</link> v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ | ||
328 | #define <link linkend="V4L2-PIX-FMT-YUV422P">V4L2_PIX_FMT_YUV422P</link> v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ | ||
329 | #define <link linkend="V4L2-PIX-FMT-YUV411P">V4L2_PIX_FMT_YUV411P</link> v4l2_fourcc('4', '1', '1', 'P') /* 16 YVU411 planar */ | ||
330 | #define <link linkend="V4L2-PIX-FMT-Y41P">V4L2_PIX_FMT_Y41P</link> v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */ | ||
331 | #define <link linkend="V4L2-PIX-FMT-YUV444">V4L2_PIX_FMT_YUV444</link> v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */ | ||
332 | #define <link linkend="V4L2-PIX-FMT-YUV555">V4L2_PIX_FMT_YUV555</link> v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ | ||
333 | #define <link linkend="V4L2-PIX-FMT-YUV565">V4L2_PIX_FMT_YUV565</link> v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ | ||
334 | #define <link linkend="V4L2-PIX-FMT-YUV32">V4L2_PIX_FMT_YUV32</link> v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ | ||
335 | #define <link linkend="V4L2-PIX-FMT-YUV410">V4L2_PIX_FMT_YUV410</link> v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ | ||
336 | #define <link linkend="V4L2-PIX-FMT-YUV420">V4L2_PIX_FMT_YUV420</link> v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | ||
337 | #define <link linkend="V4L2-PIX-FMT-HI240">V4L2_PIX_FMT_HI240</link> v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | ||
338 | #define <link linkend="V4L2-PIX-FMT-HM12">V4L2_PIX_FMT_HM12</link> v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | ||
339 | #define <link linkend="V4L2-PIX-FMT-M420">V4L2_PIX_FMT_M420</link> v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ | ||
340 | |||
341 | /* two planes -- one Y, one Cr + Cb interleaved */ | ||
342 | #define <link linkend="V4L2-PIX-FMT-NV12">V4L2_PIX_FMT_NV12</link> v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ | ||
343 | #define <link linkend="V4L2-PIX-FMT-NV21">V4L2_PIX_FMT_NV21</link> v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ | ||
344 | #define <link linkend="V4L2-PIX-FMT-NV16">V4L2_PIX_FMT_NV16</link> v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ | ||
345 | #define <link linkend="V4L2-PIX-FMT-NV61">V4L2_PIX_FMT_NV61</link> v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ | ||
346 | |||
347 | /* two non contiguous planes - one Y, one Cr + Cb interleaved */ | ||
348 | #define <link linkend="V4L2-PIX-FMT-NV12M">V4L2_PIX_FMT_NV12M</link> v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ | ||
349 | #define <link linkend="V4L2-PIX-FMT-NV12MT">V4L2_PIX_FMT_NV12MT</link> v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ | ||
350 | |||
351 | /* three non contiguous planes - Y, Cb, Cr */ | ||
352 | #define <link linkend="V4L2-PIX-FMT-YUV420M">V4L2_PIX_FMT_YUV420M</link> v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ | ||
353 | |||
354 | /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ | ||
355 | #define <link linkend="V4L2-PIX-FMT-SBGGR8">V4L2_PIX_FMT_SBGGR8</link> v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ | ||
356 | #define <link linkend="V4L2-PIX-FMT-SGBRG8">V4L2_PIX_FMT_SGBRG8</link> v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ | ||
357 | #define <link linkend="V4L2-PIX-FMT-SGRBG8">V4L2_PIX_FMT_SGRBG8</link> v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ | ||
358 | #define <link linkend="V4L2-PIX-FMT-SRGGB8">V4L2_PIX_FMT_SRGGB8</link> v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ | ||
359 | #define <link linkend="V4L2-PIX-FMT-SBGGR10">V4L2_PIX_FMT_SBGGR10</link> v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */ | ||
360 | #define <link linkend="V4L2-PIX-FMT-SGBRG10">V4L2_PIX_FMT_SGBRG10</link> v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ | ||
361 | #define <link linkend="V4L2-PIX-FMT-SGRBG10">V4L2_PIX_FMT_SGRBG10</link> v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ | ||
362 | #define <link linkend="V4L2-PIX-FMT-SRGGB10">V4L2_PIX_FMT_SRGGB10</link> v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ | ||
363 | /* 10bit raw bayer DPCM compressed to 8 bits */ | ||
364 | #define <link linkend="V4L2-PIX-FMT-SGRBG10DPCM8">V4L2_PIX_FMT_SGRBG10DPCM8</link> v4l2_fourcc('B', 'D', '1', '0') | ||
365 | /* | ||
366 | * 10bit raw bayer, expanded to 16 bits | ||
367 | * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... | ||
368 | */ | ||
369 | #define <link linkend="V4L2-PIX-FMT-SBGGR16">V4L2_PIX_FMT_SBGGR16</link> v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ | ||
370 | |||
371 | /* compressed formats */ | ||
372 | #define <link linkend="V4L2-PIX-FMT-MJPEG">V4L2_PIX_FMT_MJPEG</link> v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */ | ||
373 | #define <link linkend="V4L2-PIX-FMT-JPEG">V4L2_PIX_FMT_JPEG</link> v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */ | ||
374 | #define <link linkend="V4L2-PIX-FMT-DV">V4L2_PIX_FMT_DV</link> v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */ | ||
375 | #define <link linkend="V4L2-PIX-FMT-MPEG">V4L2_PIX_FMT_MPEG</link> v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 */ | ||
376 | |||
377 | /* Vendor-specific formats */ | ||
378 | #define <link linkend="V4L2-PIX-FMT-CPIA1">V4L2_PIX_FMT_CPIA1</link> v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ | ||
379 | #define <link linkend="V4L2-PIX-FMT-WNVA">V4L2_PIX_FMT_WNVA</link> v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ | ||
380 | #define <link linkend="V4L2-PIX-FMT-SN9C10X">V4L2_PIX_FMT_SN9C10X</link> v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ | ||
381 | #define <link linkend="V4L2-PIX-FMT-SN9C20X-I420">V4L2_PIX_FMT_SN9C20X_I420</link> v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ | ||
382 | #define <link linkend="V4L2-PIX-FMT-PWC1">V4L2_PIX_FMT_PWC1</link> v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ | ||
383 | #define <link linkend="V4L2-PIX-FMT-PWC2">V4L2_PIX_FMT_PWC2</link> v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ | ||
384 | #define <link linkend="V4L2-PIX-FMT-ET61X251">V4L2_PIX_FMT_ET61X251</link> v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ | ||
385 | #define <link linkend="V4L2-PIX-FMT-SPCA501">V4L2_PIX_FMT_SPCA501</link> v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */ | ||
386 | #define <link linkend="V4L2-PIX-FMT-SPCA505">V4L2_PIX_FMT_SPCA505</link> v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */ | ||
387 | #define <link linkend="V4L2-PIX-FMT-SPCA508">V4L2_PIX_FMT_SPCA508</link> v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */ | ||
388 | #define <link linkend="V4L2-PIX-FMT-SPCA561">V4L2_PIX_FMT_SPCA561</link> v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ | ||
389 | #define <link linkend="V4L2-PIX-FMT-PAC207">V4L2_PIX_FMT_PAC207</link> v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */ | ||
390 | #define <link linkend="V4L2-PIX-FMT-MR97310A">V4L2_PIX_FMT_MR97310A</link> v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ | ||
391 | #define <link linkend="V4L2-PIX-FMT-SN9C2028">V4L2_PIX_FMT_SN9C2028</link> v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */ | ||
392 | #define <link linkend="V4L2-PIX-FMT-SQ905C">V4L2_PIX_FMT_SQ905C</link> v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ | ||
393 | #define <link linkend="V4L2-PIX-FMT-PJPG">V4L2_PIX_FMT_PJPG</link> v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ | ||
394 | #define <link linkend="V4L2-PIX-FMT-OV511">V4L2_PIX_FMT_OV511</link> v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ | ||
395 | #define <link linkend="V4L2-PIX-FMT-OV518">V4L2_PIX_FMT_OV518</link> v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | ||
396 | #define <link linkend="V4L2-PIX-FMT-STV0680">V4L2_PIX_FMT_STV0680</link> v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ | ||
397 | #define <link linkend="V4L2-PIX-FMT-TM6000">V4L2_PIX_FMT_TM6000</link> v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ | ||
398 | #define <link linkend="V4L2-PIX-FMT-CIT-YYVYUY">V4L2_PIX_FMT_CIT_YYVYUY</link> v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ | ||
399 | #define <link linkend="V4L2-PIX-FMT-KONICA420">V4L2_PIX_FMT_KONICA420</link> v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ | ||
400 | |||
401 | /* | ||
402 | * F O R M A T E N U M E R A T I O N | ||
403 | */ | ||
404 | struct <link linkend="v4l2-fmtdesc">v4l2_fmtdesc</link> { | ||
405 | __u32 index; /* Format number */ | ||
406 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; /* buffer type */ | ||
407 | __u32 flags; | ||
408 | __u8 description[32]; /* Description string */ | ||
409 | __u32 pixelformat; /* Format fourcc */ | ||
410 | __u32 reserved[4]; | ||
411 | }; | ||
412 | |||
413 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | ||
414 | #define V4L2_FMT_FLAG_EMULATED 0x0002 | ||
415 | |||
416 | #if 1 | ||
417 | /* Experimental Frame Size and frame rate enumeration */ | ||
418 | /* | ||
419 | * F R A M E S I Z E E N U M E R A T I O N | ||
420 | */ | ||
421 | enum <link linkend="v4l2-frmsizetypes">v4l2_frmsizetypes</link> { | ||
422 | V4L2_FRMSIZE_TYPE_DISCRETE = 1, | ||
423 | V4L2_FRMSIZE_TYPE_CONTINUOUS = 2, | ||
424 | V4L2_FRMSIZE_TYPE_STEPWISE = 3, | ||
425 | }; | ||
426 | |||
427 | struct <link linkend="v4l2-frmsize-discrete">v4l2_frmsize_discrete</link> { | ||
428 | __u32 width; /* Frame width [pixel] */ | ||
429 | __u32 height; /* Frame height [pixel] */ | ||
430 | }; | ||
431 | |||
432 | struct <link linkend="v4l2-frmsize-stepwise">v4l2_frmsize_stepwise</link> { | ||
433 | __u32 min_width; /* Minimum frame width [pixel] */ | ||
434 | __u32 max_width; /* Maximum frame width [pixel] */ | ||
435 | __u32 step_width; /* Frame width step size [pixel] */ | ||
436 | __u32 min_height; /* Minimum frame height [pixel] */ | ||
437 | __u32 max_height; /* Maximum frame height [pixel] */ | ||
438 | __u32 step_height; /* Frame height step size [pixel] */ | ||
439 | }; | ||
440 | |||
441 | struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link> { | ||
442 | __u32 index; /* Frame size number */ | ||
443 | __u32 pixel_format; /* Pixel format */ | ||
444 | __u32 type; /* Frame size type the device supports. */ | ||
445 | |||
446 | union { /* Frame size */ | ||
447 | struct <link linkend="v4l2-frmsize-discrete">v4l2_frmsize_discrete</link> discrete; | ||
448 | struct <link linkend="v4l2-frmsize-stepwise">v4l2_frmsize_stepwise</link> stepwise; | ||
449 | }; | ||
450 | |||
451 | __u32 reserved[2]; /* Reserved space for future use */ | ||
452 | }; | ||
453 | |||
454 | /* | ||
455 | * F R A M E R A T E E N U M E R A T I O N | ||
456 | */ | ||
457 | enum <link linkend="v4l2-frmivaltypes">v4l2_frmivaltypes</link> { | ||
458 | V4L2_FRMIVAL_TYPE_DISCRETE = 1, | ||
459 | V4L2_FRMIVAL_TYPE_CONTINUOUS = 2, | ||
460 | V4L2_FRMIVAL_TYPE_STEPWISE = 3, | ||
461 | }; | ||
462 | |||
463 | struct <link linkend="v4l2-frmival-stepwise">v4l2_frmival_stepwise</link> { | ||
464 | struct <link linkend="v4l2-fract">v4l2_fract</link> min; /* Minimum frame interval [s] */ | ||
465 | struct <link linkend="v4l2-fract">v4l2_fract</link> max; /* Maximum frame interval [s] */ | ||
466 | struct <link linkend="v4l2-fract">v4l2_fract</link> step; /* Frame interval step size [s] */ | ||
467 | }; | ||
468 | |||
469 | struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link> { | ||
470 | __u32 index; /* Frame format index */ | ||
471 | __u32 pixel_format; /* Pixel format */ | ||
472 | __u32 width; /* Frame width */ | ||
473 | __u32 height; /* Frame height */ | ||
474 | __u32 type; /* Frame interval type the device supports. */ | ||
475 | |||
476 | union { /* Frame interval */ | ||
477 | struct <link linkend="v4l2-fract">v4l2_fract</link> discrete; | ||
478 | struct <link linkend="v4l2-frmival-stepwise">v4l2_frmival_stepwise</link> stepwise; | ||
479 | }; | ||
480 | |||
481 | __u32 reserved[2]; /* Reserved space for future use */ | ||
482 | }; | ||
483 | #endif | ||
484 | |||
485 | /* | ||
486 | * T I M E C O D E | ||
487 | */ | ||
488 | struct <link linkend="v4l2-timecode">v4l2_timecode</link> { | ||
489 | __u32 type; | ||
490 | __u32 flags; | ||
491 | __u8 frames; | ||
492 | __u8 seconds; | ||
493 | __u8 minutes; | ||
494 | __u8 hours; | ||
495 | __u8 userbits[4]; | ||
496 | }; | ||
497 | |||
498 | /* Type */ | ||
499 | #define V4L2_TC_TYPE_24FPS 1 | ||
500 | #define V4L2_TC_TYPE_25FPS 2 | ||
501 | #define V4L2_TC_TYPE_30FPS 3 | ||
502 | #define V4L2_TC_TYPE_50FPS 4 | ||
503 | #define V4L2_TC_TYPE_60FPS 5 | ||
504 | |||
505 | /* Flags */ | ||
506 | #define V4L2_TC_FLAG_DROPFRAME 0x0001 /* "drop-frame" mode */ | ||
507 | #define V4L2_TC_FLAG_COLORFRAME 0x0002 | ||
508 | #define V4L2_TC_USERBITS_field 0x000C | ||
509 | #define V4L2_TC_USERBITS_USERDEFINED 0x0000 | ||
510 | #define V4L2_TC_USERBITS_8BITCHARS 0x0008 | ||
511 | /* The above is based on SMPTE timecodes */ | ||
512 | |||
513 | struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link> { | ||
514 | int quality; | ||
515 | |||
516 | int APPn; /* Number of APP segment to be written, | ||
517 | * must be 0..15 */ | ||
518 | int APP_len; /* Length of data in JPEG APPn segment */ | ||
519 | char APP_data[60]; /* Data in the JPEG APPn segment. */ | ||
520 | |||
521 | int COM_len; /* Length of data in JPEG COM segment */ | ||
522 | char COM_data[60]; /* Data in JPEG COM segment */ | ||
523 | |||
524 | __u32 jpeg_markers; /* Which markers should go into the JPEG | ||
525 | * output. Unless you exactly know what | ||
526 | * you do, leave them untouched. | ||
527 | * Inluding less markers will make the | ||
528 | * resulting code smaller, but there will | ||
529 | * be fewer applications which can read it. | ||
530 | * The presence of the APP and COM marker | ||
531 | * is influenced by APP_len and COM_len | ||
532 | * ONLY, not by this property! */ | ||
533 | |||
534 | #define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ | ||
535 | #define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ | ||
536 | #define V4L2_JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */ | ||
537 | #define V4L2_JPEG_MARKER_COM (1<<6) /* Comment segment */ | ||
538 | #define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will | ||
539 | * allways use APP0 */ | ||
540 | }; | ||
541 | |||
542 | /* | ||
543 | * M E M O R Y - M A P P I N G B U F F E R S | ||
544 | */ | ||
545 | struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> { | ||
546 | __u32 count; | ||
547 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; | ||
548 | enum <link linkend="v4l2-memory">v4l2_memory</link> memory; | ||
549 | __u32 reserved[2]; | ||
550 | }; | ||
551 | |||
552 | /** | ||
553 | * struct <link linkend="v4l2-plane">v4l2_plane</link> - plane info for multi-planar buffers | ||
554 | * @bytesused: number of bytes occupied by data in the plane (payload) | ||
555 | * @length: size of this plane (NOT the payload) in bytes | ||
556 | * @mem_offset: when memory in the associated struct <link linkend="v4l2-buffer">v4l2_buffer</link> is | ||
557 | * V4L2_MEMORY_MMAP, equals the offset from the start of | ||
558 | * the device memory for this plane (or is a "cookie" that | ||
559 | * should be passed to mmap() called on the video node) | ||
560 | * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer | ||
561 | * pointing to this plane | ||
562 | * @data_offset: offset in the plane to the start of data; usually 0, | ||
563 | * unless there is a header in front of the data | ||
564 | * | ||
565 | * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer | ||
566 | * with two planes can have one plane for Y, and another for interleaved CbCr | ||
567 | * components. Each plane can reside in a separate memory buffer, or even in | ||
568 | * a completely separate memory node (e.g. in embedded devices). | ||
569 | */ | ||
570 | struct <link linkend="v4l2-plane">v4l2_plane</link> { | ||
571 | __u32 bytesused; | ||
572 | __u32 length; | ||
573 | union { | ||
574 | __u32 mem_offset; | ||
575 | unsigned long userptr; | ||
576 | } m; | ||
577 | __u32 data_offset; | ||
578 | __u32 reserved[11]; | ||
579 | }; | ||
580 | |||
581 | /** | ||
582 | * struct <link linkend="v4l2-buffer">v4l2_buffer</link> - video buffer info | ||
583 | * @index: id number of the buffer | ||
584 | * @type: buffer type (type == *_MPLANE for multiplanar buffers) | ||
585 | * @bytesused: number of bytes occupied by data in the buffer (payload); | ||
586 | * unused (set to 0) for multiplanar buffers | ||
587 | * @flags: buffer informational flags | ||
588 | * @field: field order of the image in the buffer | ||
589 | * @timestamp: frame timestamp | ||
590 | * @timecode: frame timecode | ||
591 | * @sequence: sequence count of this frame | ||
592 | * @memory: the method, in which the actual video data is passed | ||
593 | * @offset: for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP; | ||
594 | * offset from the start of the device memory for this plane, | ||
595 | * (or a "cookie" that should be passed to mmap() as offset) | ||
596 | * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; | ||
597 | * a userspace pointer pointing to this buffer | ||
598 | * @planes: for multiplanar buffers; userspace pointer to the array of plane | ||
599 | * info structs for this buffer | ||
600 | * @length: size in bytes of the buffer (NOT its payload) for single-plane | ||
601 | * buffers (when type != *_MPLANE); number of elements in the | ||
602 | * planes array for multi-plane buffers | ||
603 | * @input: input number from which the video data has has been captured | ||
604 | * | ||
605 | * Contains data exchanged by application and driver using one of the Streaming | ||
606 | * I/O methods. | ||
607 | */ | ||
608 | struct <link linkend="v4l2-buffer">v4l2_buffer</link> { | ||
609 | __u32 index; | ||
610 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; | ||
611 | __u32 bytesused; | ||
612 | __u32 flags; | ||
613 | enum <link linkend="v4l2-field">v4l2_field</link> field; | ||
614 | struct timeval timestamp; | ||
615 | struct <link linkend="v4l2-timecode">v4l2_timecode</link> timecode; | ||
616 | __u32 sequence; | ||
617 | |||
618 | /* memory location */ | ||
619 | enum <link linkend="v4l2-memory">v4l2_memory</link> memory; | ||
620 | union { | ||
621 | __u32 offset; | ||
622 | unsigned long userptr; | ||
623 | struct <link linkend="v4l2-plane">v4l2_plane</link> *planes; | ||
624 | } m; | ||
625 | __u32 length; | ||
626 | __u32 input; | ||
627 | __u32 reserved; | ||
628 | }; | ||
629 | |||
630 | /* Flags for 'flags' field */ | ||
631 | #define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */ | ||
632 | #define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */ | ||
633 | #define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */ | ||
634 | #define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */ | ||
635 | #define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */ | ||
636 | #define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */ | ||
637 | /* Buffer is ready, but the data contained within is corrupted. */ | ||
638 | #define V4L2_BUF_FLAG_ERROR 0x0040 | ||
639 | #define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */ | ||
640 | #define V4L2_BUF_FLAG_INPUT 0x0200 /* input field is valid */ | ||
641 | |||
642 | /* | ||
643 | * O V E R L A Y P R E V I E W | ||
644 | */ | ||
645 | struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link> { | ||
646 | __u32 capability; | ||
647 | __u32 flags; | ||
648 | /* FIXME: in theory we should pass something like PCI device + memory | ||
649 | * region + offset instead of some physical address */ | ||
650 | void *base; | ||
651 | struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> fmt; | ||
652 | }; | ||
653 | /* Flags for the 'capability' field. Read only */ | ||
654 | #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001 | ||
655 | #define V4L2_FBUF_CAP_CHROMAKEY 0x0002 | ||
656 | #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004 | ||
657 | #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008 | ||
658 | #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010 | ||
659 | #define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020 | ||
660 | #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040 | ||
661 | #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080 | ||
662 | /* Flags for the 'flags' field. */ | ||
663 | #define V4L2_FBUF_FLAG_PRIMARY 0x0001 | ||
664 | #define V4L2_FBUF_FLAG_OVERLAY 0x0002 | ||
665 | #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004 | ||
666 | #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008 | ||
667 | #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010 | ||
668 | #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020 | ||
669 | #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040 | ||
670 | |||
671 | struct <link linkend="v4l2-clip">v4l2_clip</link> { | ||
672 | struct <link linkend="v4l2-rect">v4l2_rect</link> c; | ||
673 | struct <link linkend="v4l2-clip">v4l2_clip</link> __user *next; | ||
674 | }; | ||
675 | |||
676 | struct <link linkend="v4l2-window">v4l2_window</link> { | ||
677 | struct <link linkend="v4l2-rect">v4l2_rect</link> w; | ||
678 | enum <link linkend="v4l2-field">v4l2_field</link> field; | ||
679 | __u32 chromakey; | ||
680 | struct <link linkend="v4l2-clip">v4l2_clip</link> __user *clips; | ||
681 | __u32 clipcount; | ||
682 | void __user *bitmap; | ||
683 | __u8 global_alpha; | ||
684 | }; | ||
685 | |||
686 | /* | ||
687 | * C A P T U R E P A R A M E T E R S | ||
688 | */ | ||
689 | struct <link linkend="v4l2-captureparm">v4l2_captureparm</link> { | ||
690 | __u32 capability; /* Supported modes */ | ||
691 | __u32 capturemode; /* Current mode */ | ||
692 | struct <link linkend="v4l2-fract">v4l2_fract</link> timeperframe; /* Time per frame in .1us units */ | ||
693 | __u32 extendedmode; /* Driver-specific extensions */ | ||
694 | __u32 readbuffers; /* # of buffers for read */ | ||
695 | __u32 reserved[4]; | ||
696 | }; | ||
697 | |||
698 | /* Flags for 'capability' and 'capturemode' fields */ | ||
699 | #define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */ | ||
700 | #define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */ | ||
701 | |||
702 | struct <link linkend="v4l2-outputparm">v4l2_outputparm</link> { | ||
703 | __u32 capability; /* Supported modes */ | ||
704 | __u32 outputmode; /* Current mode */ | ||
705 | struct <link linkend="v4l2-fract">v4l2_fract</link> timeperframe; /* Time per frame in seconds */ | ||
706 | __u32 extendedmode; /* Driver-specific extensions */ | ||
707 | __u32 writebuffers; /* # of buffers for write */ | ||
708 | __u32 reserved[4]; | ||
709 | }; | ||
710 | |||
711 | /* | ||
712 | * I N P U T I M A G E C R O P P I N G | ||
713 | */ | ||
714 | struct <link linkend="v4l2-cropcap">v4l2_cropcap</link> { | ||
715 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; | ||
716 | struct <link linkend="v4l2-rect">v4l2_rect</link> bounds; | ||
717 | struct <link linkend="v4l2-rect">v4l2_rect</link> defrect; | ||
718 | struct <link linkend="v4l2-fract">v4l2_fract</link> pixelaspect; | ||
719 | }; | ||
720 | |||
721 | struct <link linkend="v4l2-crop">v4l2_crop</link> { | ||
722 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; | ||
723 | struct <link linkend="v4l2-rect">v4l2_rect</link> c; | ||
724 | }; | ||
725 | |||
726 | /* | ||
727 | * A N A L O G V I D E O S T A N D A R D | ||
728 | */ | ||
729 | |||
730 | typedef __u64 v4l2_std_id; | ||
731 | |||
732 | /* one bit for each */ | ||
733 | #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001) | ||
734 | #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002) | ||
735 | #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004) | ||
736 | #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008) | ||
737 | #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010) | ||
738 | #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020) | ||
739 | #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040) | ||
740 | #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080) | ||
741 | |||
742 | #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100) | ||
743 | #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200) | ||
744 | #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400) | ||
745 | #define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800) | ||
746 | |||
747 | #define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000) | ||
748 | #define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000) | ||
749 | #define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000) | ||
750 | #define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000) | ||
751 | |||
752 | #define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000) | ||
753 | #define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000) | ||
754 | #define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000) | ||
755 | #define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000) | ||
756 | #define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000) | ||
757 | #define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000) | ||
758 | #define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000) | ||
759 | #define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000) | ||
760 | |||
761 | /* ATSC/HDTV */ | ||
762 | #define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000) | ||
763 | #define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000) | ||
764 | |||
765 | /* FIXME: | ||
766 | Although std_id is 64 bits, there is an issue on PPC32 architecture that | ||
767 | makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding | ||
768 | this value to 32 bits. | ||
769 | As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide), | ||
770 | it should work fine. However, if needed to add more than two standards, | ||
771 | v4l2-common.c should be fixed. | ||
772 | */ | ||
773 | |||
774 | /* some merged standards */ | ||
775 | #define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC) | ||
776 | #define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B) | ||
777 | #define V4L2_STD_GH (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H) | ||
778 | #define V4L2_STD_DK (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK) | ||
779 | |||
780 | /* some common needed stuff */ | ||
781 | #define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\ | ||
782 | V4L2_STD_PAL_B1 |\ | ||
783 | V4L2_STD_PAL_G) | ||
784 | #define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\ | ||
785 | V4L2_STD_PAL_D1 |\ | ||
786 | V4L2_STD_PAL_K) | ||
787 | #define V4L2_STD_PAL (V4L2_STD_PAL_BG |\ | ||
788 | V4L2_STD_PAL_DK |\ | ||
789 | V4L2_STD_PAL_H |\ | ||
790 | V4L2_STD_PAL_I) | ||
791 | #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ | ||
792 | V4L2_STD_NTSC_M_JP |\ | ||
793 | V4L2_STD_NTSC_M_KR) | ||
794 | #define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\ | ||
795 | V4L2_STD_SECAM_K |\ | ||
796 | V4L2_STD_SECAM_K1) | ||
797 | #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ | ||
798 | V4L2_STD_SECAM_G |\ | ||
799 | V4L2_STD_SECAM_H |\ | ||
800 | V4L2_STD_SECAM_DK |\ | ||
801 | V4L2_STD_SECAM_L |\ | ||
802 | V4L2_STD_SECAM_LC) | ||
803 | |||
804 | #define V4L2_STD_525_60 (V4L2_STD_PAL_M |\ | ||
805 | V4L2_STD_PAL_60 |\ | ||
806 | V4L2_STD_NTSC |\ | ||
807 | V4L2_STD_NTSC_443) | ||
808 | #define V4L2_STD_625_50 (V4L2_STD_PAL |\ | ||
809 | V4L2_STD_PAL_N |\ | ||
810 | V4L2_STD_PAL_Nc |\ | ||
811 | V4L2_STD_SECAM) | ||
812 | #define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\ | ||
813 | V4L2_STD_ATSC_16_VSB) | ||
814 | |||
815 | #define V4L2_STD_UNKNOWN 0 | ||
816 | #define V4L2_STD_ALL (V4L2_STD_525_60 |\ | ||
817 | V4L2_STD_625_50) | ||
818 | |||
819 | struct <link linkend="v4l2-standard">v4l2_standard</link> { | ||
820 | __u32 index; | ||
821 | v4l2_std_id id; | ||
822 | __u8 name[24]; | ||
823 | struct <link linkend="v4l2-fract">v4l2_fract</link> frameperiod; /* Frames, not fields */ | ||
824 | __u32 framelines; | ||
825 | __u32 reserved[4]; | ||
826 | }; | ||
827 | |||
828 | /* | ||
829 | * V I D E O T I M I N G S D V P R E S E T | ||
830 | */ | ||
831 | struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link> { | ||
832 | __u32 preset; | ||
833 | __u32 reserved[4]; | ||
834 | }; | ||
835 | |||
836 | /* | ||
837 | * D V P R E S E T S E N U M E R A T I O N | ||
838 | */ | ||
839 | struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link> { | ||
840 | __u32 index; | ||
841 | __u32 preset; | ||
842 | __u8 name[32]; /* Name of the preset timing */ | ||
843 | __u32 width; | ||
844 | __u32 height; | ||
845 | __u32 reserved[4]; | ||
846 | }; | ||
847 | |||
848 | /* | ||
849 | * D V P R E S E T V A L U E S | ||
850 | */ | ||
851 | #define V4L2_DV_INVALID 0 | ||
852 | #define V4L2_DV_480P59_94 1 /* BT.1362 */ | ||
853 | #define V4L2_DV_576P50 2 /* BT.1362 */ | ||
854 | #define V4L2_DV_720P24 3 /* SMPTE 296M */ | ||
855 | #define V4L2_DV_720P25 4 /* SMPTE 296M */ | ||
856 | #define V4L2_DV_720P30 5 /* SMPTE 296M */ | ||
857 | #define V4L2_DV_720P50 6 /* SMPTE 296M */ | ||
858 | #define V4L2_DV_720P59_94 7 /* SMPTE 274M */ | ||
859 | #define V4L2_DV_720P60 8 /* SMPTE 274M/296M */ | ||
860 | #define V4L2_DV_1080I29_97 9 /* BT.1120/ SMPTE 274M */ | ||
861 | #define V4L2_DV_1080I30 10 /* BT.1120/ SMPTE 274M */ | ||
862 | #define V4L2_DV_1080I25 11 /* BT.1120 */ | ||
863 | #define V4L2_DV_1080I50 12 /* SMPTE 296M */ | ||
864 | #define V4L2_DV_1080I60 13 /* SMPTE 296M */ | ||
865 | #define V4L2_DV_1080P24 14 /* SMPTE 296M */ | ||
866 | #define V4L2_DV_1080P25 15 /* SMPTE 296M */ | ||
867 | #define V4L2_DV_1080P30 16 /* SMPTE 296M */ | ||
868 | #define V4L2_DV_1080P50 17 /* BT.1120 */ | ||
869 | #define V4L2_DV_1080P60 18 /* BT.1120 */ | ||
870 | |||
871 | /* | ||
872 | * D V B T T I M I N G S | ||
873 | */ | ||
874 | |||
875 | /* BT.656/BT.1120 timing data */ | ||
876 | struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> { | ||
877 | __u32 width; /* width in pixels */ | ||
878 | __u32 height; /* height in lines */ | ||
879 | __u32 interlaced; /* Interlaced or progressive */ | ||
880 | __u32 polarities; /* Positive or negative polarity */ | ||
881 | __u64 pixelclock; /* Pixel clock in HZ. Ex. 74.25MHz->74250000 */ | ||
882 | __u32 hfrontporch; /* Horizpontal front porch in pixels */ | ||
883 | __u32 hsync; /* Horizontal Sync length in pixels */ | ||
884 | __u32 hbackporch; /* Horizontal back porch in pixels */ | ||
885 | __u32 vfrontporch; /* Vertical front porch in pixels */ | ||
886 | __u32 vsync; /* Vertical Sync length in lines */ | ||
887 | __u32 vbackporch; /* Vertical back porch in lines */ | ||
888 | __u32 il_vfrontporch; /* Vertical front porch for bottom field of | ||
889 | * interlaced field formats | ||
890 | */ | ||
891 | __u32 il_vsync; /* Vertical sync length for bottom field of | ||
892 | * interlaced field formats | ||
893 | */ | ||
894 | __u32 il_vbackporch; /* Vertical back porch for bottom field of | ||
895 | * interlaced field formats | ||
896 | */ | ||
897 | __u32 reserved[16]; | ||
898 | } __attribute__ ((packed)); | ||
899 | |||
900 | /* Interlaced or progressive format */ | ||
901 | #define V4L2_DV_PROGRESSIVE 0 | ||
902 | #define V4L2_DV_INTERLACED 1 | ||
903 | |||
904 | /* Polarities. If bit is not set, it is assumed to be negative polarity */ | ||
905 | #define V4L2_DV_VSYNC_POS_POL 0x00000001 | ||
906 | #define V4L2_DV_HSYNC_POS_POL 0x00000002 | ||
907 | |||
908 | |||
909 | /* DV timings */ | ||
910 | struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link> { | ||
911 | __u32 type; | ||
912 | union { | ||
913 | struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> bt; | ||
914 | __u32 reserved[32]; | ||
915 | }; | ||
916 | } __attribute__ ((packed)); | ||
917 | |||
918 | /* Values for the type field */ | ||
919 | #define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */ | ||
920 | |||
921 | /* | ||
922 | * V I D E O I N P U T S | ||
923 | */ | ||
924 | struct <link linkend="v4l2-input">v4l2_input</link> { | ||
925 | __u32 index; /* Which input */ | ||
926 | __u8 name[32]; /* Label */ | ||
927 | __u32 type; /* Type of input */ | ||
928 | __u32 audioset; /* Associated audios (bitfield) */ | ||
929 | __u32 tuner; /* Associated tuner */ | ||
930 | v4l2_std_id std; | ||
931 | __u32 status; | ||
932 | __u32 capabilities; | ||
933 | __u32 reserved[3]; | ||
934 | }; | ||
935 | |||
936 | /* Values for the 'type' field */ | ||
937 | #define V4L2_INPUT_TYPE_TUNER 1 | ||
938 | #define V4L2_INPUT_TYPE_CAMERA 2 | ||
939 | |||
940 | /* field 'status' - general */ | ||
941 | #define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */ | ||
942 | #define V4L2_IN_ST_NO_SIGNAL 0x00000002 | ||
943 | #define V4L2_IN_ST_NO_COLOR 0x00000004 | ||
944 | |||
945 | /* field 'status' - sensor orientation */ | ||
946 | /* If sensor is mounted upside down set both bits */ | ||
947 | #define V4L2_IN_ST_HFLIP 0x00000010 /* Frames are flipped horizontally */ | ||
948 | #define V4L2_IN_ST_VFLIP 0x00000020 /* Frames are flipped vertically */ | ||
949 | |||
950 | /* field 'status' - analog */ | ||
951 | #define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */ | ||
952 | #define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active */ | ||
953 | |||
954 | /* field 'status' - digital */ | ||
955 | #define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */ | ||
956 | #define V4L2_IN_ST_NO_EQU 0x00020000 /* No equalizer lock */ | ||
957 | #define V4L2_IN_ST_NO_CARRIER 0x00040000 /* Carrier recovery failed */ | ||
958 | |||
959 | /* field 'status' - VCR and set-top box */ | ||
960 | #define V4L2_IN_ST_MACROVISION 0x01000000 /* Macrovision detected */ | ||
961 | #define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */ | ||
962 | #define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */ | ||
963 | |||
964 | /* capabilities flags */ | ||
965 | #define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */ | ||
966 | #define V4L2_IN_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ | ||
967 | #define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */ | ||
968 | |||
969 | /* | ||
970 | * V I D E O O U T P U T S | ||
971 | */ | ||
972 | struct <link linkend="v4l2-output">v4l2_output</link> { | ||
973 | __u32 index; /* Which output */ | ||
974 | __u8 name[32]; /* Label */ | ||
975 | __u32 type; /* Type of output */ | ||
976 | __u32 audioset; /* Associated audios (bitfield) */ | ||
977 | __u32 modulator; /* Associated modulator */ | ||
978 | v4l2_std_id std; | ||
979 | __u32 capabilities; | ||
980 | __u32 reserved[3]; | ||
981 | }; | ||
982 | /* Values for the 'type' field */ | ||
983 | #define V4L2_OUTPUT_TYPE_MODULATOR 1 | ||
984 | #define V4L2_OUTPUT_TYPE_ANALOG 2 | ||
985 | #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3 | ||
986 | |||
987 | /* capabilities flags */ | ||
988 | #define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */ | ||
989 | #define V4L2_OUT_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ | ||
990 | #define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */ | ||
991 | |||
992 | /* | ||
993 | * C O N T R O L S | ||
994 | */ | ||
995 | struct <link linkend="v4l2-control">v4l2_control</link> { | ||
996 | __u32 id; | ||
997 | __s32 value; | ||
998 | }; | ||
999 | |||
1000 | struct <link linkend="v4l2-ext-control">v4l2_ext_control</link> { | ||
1001 | __u32 id; | ||
1002 | __u32 size; | ||
1003 | __u32 reserved2[1]; | ||
1004 | union { | ||
1005 | __s32 value; | ||
1006 | __s64 value64; | ||
1007 | char *string; | ||
1008 | }; | ||
1009 | } __attribute__ ((packed)); | ||
1010 | |||
1011 | struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link> { | ||
1012 | __u32 ctrl_class; | ||
1013 | __u32 count; | ||
1014 | __u32 error_idx; | ||
1015 | __u32 reserved[2]; | ||
1016 | struct <link linkend="v4l2-ext-control">v4l2_ext_control</link> *controls; | ||
1017 | }; | ||
1018 | |||
1019 | /* Values for ctrl_class field */ | ||
1020 | #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ | ||
1021 | #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ | ||
1022 | #define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */ | ||
1023 | #define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */ | ||
1024 | |||
1025 | #define V4L2_CTRL_ID_MASK (0x0fffffff) | ||
1026 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) | ||
1027 | #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) | ||
1028 | |||
1029 | enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> { | ||
1030 | V4L2_CTRL_TYPE_INTEGER = 1, | ||
1031 | V4L2_CTRL_TYPE_BOOLEAN = 2, | ||
1032 | V4L2_CTRL_TYPE_MENU = 3, | ||
1033 | V4L2_CTRL_TYPE_BUTTON = 4, | ||
1034 | V4L2_CTRL_TYPE_INTEGER64 = 5, | ||
1035 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | ||
1036 | V4L2_CTRL_TYPE_STRING = 7, | ||
1037 | }; | ||
1038 | |||
1039 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ | ||
1040 | struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link> { | ||
1041 | __u32 id; | ||
1042 | enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> type; | ||
1043 | __u8 name[32]; /* Whatever */ | ||
1044 | __s32 minimum; /* Note signedness */ | ||
1045 | __s32 maximum; | ||
1046 | __s32 step; | ||
1047 | __s32 default_value; | ||
1048 | __u32 flags; | ||
1049 | __u32 reserved[2]; | ||
1050 | }; | ||
1051 | |||
1052 | /* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */ | ||
1053 | struct <link linkend="v4l2-querymenu">v4l2_querymenu</link> { | ||
1054 | __u32 id; | ||
1055 | __u32 index; | ||
1056 | __u8 name[32]; /* Whatever */ | ||
1057 | __u32 reserved; | ||
1058 | }; | ||
1059 | |||
1060 | /* Control flags */ | ||
1061 | #define V4L2_CTRL_FLAG_DISABLED 0x0001 | ||
1062 | #define V4L2_CTRL_FLAG_GRABBED 0x0002 | ||
1063 | #define V4L2_CTRL_FLAG_READ_ONLY 0x0004 | ||
1064 | #define V4L2_CTRL_FLAG_UPDATE 0x0008 | ||
1065 | #define V4L2_CTRL_FLAG_INACTIVE 0x0010 | ||
1066 | #define V4L2_CTRL_FLAG_SLIDER 0x0020 | ||
1067 | #define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040 | ||
1068 | |||
1069 | /* Query flag, to be ORed with the control ID */ | ||
1070 | #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000 | ||
1071 | |||
1072 | /* User-class control IDs defined by V4L2 */ | ||
1073 | #define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900) | ||
1074 | #define V4L2_CID_USER_BASE V4L2_CID_BASE | ||
1075 | /* IDs reserved for driver specific controls */ | ||
1076 | #define V4L2_CID_PRIVATE_BASE 0x08000000 | ||
1077 | |||
1078 | #define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1) | ||
1079 | #define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0) | ||
1080 | #define V4L2_CID_CONTRAST (V4L2_CID_BASE+1) | ||
1081 | #define V4L2_CID_SATURATION (V4L2_CID_BASE+2) | ||
1082 | #define V4L2_CID_HUE (V4L2_CID_BASE+3) | ||
1083 | #define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5) | ||
1084 | #define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6) | ||
1085 | #define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7) | ||
1086 | #define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8) | ||
1087 | #define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9) | ||
1088 | #define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10) | ||
1089 | #define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11) /* Deprecated */ | ||
1090 | #define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12) | ||
1091 | #define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13) | ||
1092 | #define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14) | ||
1093 | #define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15) | ||
1094 | #define V4L2_CID_GAMMA (V4L2_CID_BASE+16) | ||
1095 | #define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* Deprecated */ | ||
1096 | #define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17) | ||
1097 | #define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18) | ||
1098 | #define V4L2_CID_GAIN (V4L2_CID_BASE+19) | ||
1099 | #define V4L2_CID_HFLIP (V4L2_CID_BASE+20) | ||
1100 | #define V4L2_CID_VFLIP (V4L2_CID_BASE+21) | ||
1101 | |||
1102 | /* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */ | ||
1103 | #define V4L2_CID_HCENTER (V4L2_CID_BASE+22) | ||
1104 | #define V4L2_CID_VCENTER (V4L2_CID_BASE+23) | ||
1105 | |||
1106 | #define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24) | ||
1107 | enum <link linkend="v4l2-power-line-frequency">v4l2_power_line_frequency</link> { | ||
1108 | V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0, | ||
1109 | V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1, | ||
1110 | V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2, | ||
1111 | }; | ||
1112 | #define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25) | ||
1113 | #define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26) | ||
1114 | #define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27) | ||
1115 | #define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28) | ||
1116 | #define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29) | ||
1117 | #define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30) | ||
1118 | #define V4L2_CID_COLORFX (V4L2_CID_BASE+31) | ||
1119 | enum <link linkend="v4l2-colorfx">v4l2_colorfx</link> { | ||
1120 | V4L2_COLORFX_NONE = 0, | ||
1121 | V4L2_COLORFX_BW = 1, | ||
1122 | V4L2_COLORFX_SEPIA = 2, | ||
1123 | V4L2_COLORFX_NEGATIVE = 3, | ||
1124 | V4L2_COLORFX_EMBOSS = 4, | ||
1125 | V4L2_COLORFX_SKETCH = 5, | ||
1126 | V4L2_COLORFX_SKY_BLUE = 6, | ||
1127 | V4L2_COLORFX_GRASS_GREEN = 7, | ||
1128 | V4L2_COLORFX_SKIN_WHITEN = 8, | ||
1129 | V4L2_COLORFX_VIVID = 9, | ||
1130 | }; | ||
1131 | #define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32) | ||
1132 | #define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33) | ||
1133 | |||
1134 | #define V4L2_CID_ROTATE (V4L2_CID_BASE+34) | ||
1135 | #define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35) | ||
1136 | |||
1137 | #define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36) | ||
1138 | |||
1139 | #define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37) | ||
1140 | #define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38) | ||
1141 | |||
1142 | /* last CID + 1 */ | ||
1143 | #define V4L2_CID_LASTP1 (V4L2_CID_BASE+39) | ||
1144 | |||
1145 | /* MPEG-class control IDs defined by V4L2 */ | ||
1146 | #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900) | ||
1147 | #define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1) | ||
1148 | |||
1149 | /* MPEG streams */ | ||
1150 | #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0) | ||
1151 | enum <link linkend="v4l2-mpeg-stream-type">v4l2_mpeg_stream_type</link> { | ||
1152 | V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */ | ||
1153 | V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */ | ||
1154 | V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */ | ||
1155 | V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */ | ||
1156 | V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */ | ||
1157 | V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */ | ||
1158 | }; | ||
1159 | #define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1) | ||
1160 | #define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2) | ||
1161 | #define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3) | ||
1162 | #define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4) | ||
1163 | #define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5) | ||
1164 | #define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6) | ||
1165 | #define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7) | ||
1166 | enum <link linkend="v4l2-mpeg-stream-vbi-fmt">v4l2_mpeg_stream_vbi_fmt</link> { | ||
1167 | V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */ | ||
1168 | V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */ | ||
1169 | }; | ||
1170 | |||
1171 | /* MPEG audio */ | ||
1172 | #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100) | ||
1173 | enum <link linkend="v4l2-mpeg-audio-sampling-freq">v4l2_mpeg_audio_sampling_freq</link> { | ||
1174 | V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0, | ||
1175 | V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1, | ||
1176 | V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2, | ||
1177 | }; | ||
1178 | #define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101) | ||
1179 | enum <link linkend="v4l2-mpeg-audio-encoding">v4l2_mpeg_audio_encoding</link> { | ||
1180 | V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0, | ||
1181 | V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1, | ||
1182 | V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2, | ||
1183 | V4L2_MPEG_AUDIO_ENCODING_AAC = 3, | ||
1184 | V4L2_MPEG_AUDIO_ENCODING_AC3 = 4, | ||
1185 | }; | ||
1186 | #define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102) | ||
1187 | enum <link linkend="v4l2-mpeg-audio-l1-bitrate">v4l2_mpeg_audio_l1_bitrate</link> { | ||
1188 | V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0, | ||
1189 | V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1, | ||
1190 | V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2, | ||
1191 | V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3, | ||
1192 | V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4, | ||
1193 | V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5, | ||
1194 | V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6, | ||
1195 | V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7, | ||
1196 | V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8, | ||
1197 | V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9, | ||
1198 | V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10, | ||
1199 | V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11, | ||
1200 | V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12, | ||
1201 | V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13, | ||
1202 | }; | ||
1203 | #define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103) | ||
1204 | enum <link linkend="v4l2-mpeg-audio-l2-bitrate">v4l2_mpeg_audio_l2_bitrate</link> { | ||
1205 | V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0, | ||
1206 | V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1, | ||
1207 | V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2, | ||
1208 | V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3, | ||
1209 | V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4, | ||
1210 | V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5, | ||
1211 | V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6, | ||
1212 | V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7, | ||
1213 | V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8, | ||
1214 | V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9, | ||
1215 | V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10, | ||
1216 | V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11, | ||
1217 | V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12, | ||
1218 | V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13, | ||
1219 | }; | ||
1220 | #define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104) | ||
1221 | enum <link linkend="v4l2-mpeg-audio-l3-bitrate">v4l2_mpeg_audio_l3_bitrate</link> { | ||
1222 | V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0, | ||
1223 | V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1, | ||
1224 | V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2, | ||
1225 | V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3, | ||
1226 | V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4, | ||
1227 | V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5, | ||
1228 | V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6, | ||
1229 | V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7, | ||
1230 | V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8, | ||
1231 | V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9, | ||
1232 | V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10, | ||
1233 | V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11, | ||
1234 | V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12, | ||
1235 | V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13, | ||
1236 | }; | ||
1237 | #define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105) | ||
1238 | enum <link linkend="v4l2-mpeg-audio-mode">v4l2_mpeg_audio_mode</link> { | ||
1239 | V4L2_MPEG_AUDIO_MODE_STEREO = 0, | ||
1240 | V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1, | ||
1241 | V4L2_MPEG_AUDIO_MODE_DUAL = 2, | ||
1242 | V4L2_MPEG_AUDIO_MODE_MONO = 3, | ||
1243 | }; | ||
1244 | #define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106) | ||
1245 | enum <link linkend="v4l2-mpeg-audio-mode-extension">v4l2_mpeg_audio_mode_extension</link> { | ||
1246 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0, | ||
1247 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1, | ||
1248 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2, | ||
1249 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3, | ||
1250 | }; | ||
1251 | #define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107) | ||
1252 | enum <link linkend="v4l2-mpeg-audio-emphasis">v4l2_mpeg_audio_emphasis</link> { | ||
1253 | V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0, | ||
1254 | V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1, | ||
1255 | V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2, | ||
1256 | }; | ||
1257 | #define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108) | ||
1258 | enum <link linkend="v4l2-mpeg-audio-crc">v4l2_mpeg_audio_crc</link> { | ||
1259 | V4L2_MPEG_AUDIO_CRC_NONE = 0, | ||
1260 | V4L2_MPEG_AUDIO_CRC_CRC16 = 1, | ||
1261 | }; | ||
1262 | #define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109) | ||
1263 | #define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110) | ||
1264 | #define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111) | ||
1265 | enum <link linkend="v4l2-mpeg-audio-ac3-bitrate">v4l2_mpeg_audio_ac3_bitrate</link> { | ||
1266 | V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0, | ||
1267 | V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1, | ||
1268 | V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2, | ||
1269 | V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3, | ||
1270 | V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4, | ||
1271 | V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5, | ||
1272 | V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6, | ||
1273 | V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7, | ||
1274 | V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8, | ||
1275 | V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9, | ||
1276 | V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10, | ||
1277 | V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11, | ||
1278 | V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12, | ||
1279 | V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13, | ||
1280 | V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14, | ||
1281 | V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15, | ||
1282 | V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16, | ||
1283 | V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17, | ||
1284 | V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18, | ||
1285 | }; | ||
1286 | |||
1287 | /* MPEG video */ | ||
1288 | #define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200) | ||
1289 | enum <link linkend="v4l2-mpeg-video-encoding">v4l2_mpeg_video_encoding</link> { | ||
1290 | V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0, | ||
1291 | V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1, | ||
1292 | V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2, | ||
1293 | }; | ||
1294 | #define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201) | ||
1295 | enum <link linkend="v4l2-mpeg-video-aspect">v4l2_mpeg_video_aspect</link> { | ||
1296 | V4L2_MPEG_VIDEO_ASPECT_1x1 = 0, | ||
1297 | V4L2_MPEG_VIDEO_ASPECT_4x3 = 1, | ||
1298 | V4L2_MPEG_VIDEO_ASPECT_16x9 = 2, | ||
1299 | V4L2_MPEG_VIDEO_ASPECT_221x100 = 3, | ||
1300 | }; | ||
1301 | #define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202) | ||
1302 | #define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203) | ||
1303 | #define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204) | ||
1304 | #define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205) | ||
1305 | #define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206) | ||
1306 | enum <link linkend="v4l2-mpeg-video-bitrate-mode">v4l2_mpeg_video_bitrate_mode</link> { | ||
1307 | V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0, | ||
1308 | V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1, | ||
1309 | }; | ||
1310 | #define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207) | ||
1311 | #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208) | ||
1312 | #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209) | ||
1313 | #define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210) | ||
1314 | #define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211) | ||
1315 | |||
1316 | /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ | ||
1317 | #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) | ||
1318 | #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0) | ||
1319 | enum <link linkend="v4l2-mpeg-cx2341x-video-spatial-filter-mode">v4l2_mpeg_cx2341x_video_spatial_filter_mode</link> { | ||
1320 | V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0, | ||
1321 | V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1, | ||
1322 | }; | ||
1323 | #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1) | ||
1324 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2) | ||
1325 | enum <link linkend="luma-spatial-filter-type">v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</link> { | ||
1326 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0, | ||
1327 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, | ||
1328 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2, | ||
1329 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3, | ||
1330 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4, | ||
1331 | }; | ||
1332 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3) | ||
1333 | enum <link linkend="chroma-spatial-filter-type">v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</link> { | ||
1334 | V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0, | ||
1335 | V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, | ||
1336 | }; | ||
1337 | #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4) | ||
1338 | enum <link linkend="v4l2-mpeg-cx2341x-video-temporal-filter-mode">v4l2_mpeg_cx2341x_video_temporal_filter_mode</link> { | ||
1339 | V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0, | ||
1340 | V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1, | ||
1341 | }; | ||
1342 | #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5) | ||
1343 | #define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6) | ||
1344 | enum <link linkend="v4l2-mpeg-cx2341x-video-median-filter-type">v4l2_mpeg_cx2341x_video_median_filter_type</link> { | ||
1345 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0, | ||
1346 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1, | ||
1347 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2, | ||
1348 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3, | ||
1349 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4, | ||
1350 | }; | ||
1351 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7) | ||
1352 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8) | ||
1353 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9) | ||
1354 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10) | ||
1355 | #define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11) | ||
1356 | |||
1357 | /* Camera class control IDs */ | ||
1358 | #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900) | ||
1359 | #define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1) | ||
1360 | |||
1361 | #define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1) | ||
1362 | enum <link linkend="v4l2-exposure-auto-type">v4l2_exposure_auto_type</link> { | ||
1363 | V4L2_EXPOSURE_AUTO = 0, | ||
1364 | V4L2_EXPOSURE_MANUAL = 1, | ||
1365 | V4L2_EXPOSURE_SHUTTER_PRIORITY = 2, | ||
1366 | V4L2_EXPOSURE_APERTURE_PRIORITY = 3 | ||
1367 | }; | ||
1368 | #define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2) | ||
1369 | #define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3) | ||
1370 | |||
1371 | #define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4) | ||
1372 | #define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5) | ||
1373 | #define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6) | ||
1374 | #define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7) | ||
1375 | |||
1376 | #define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8) | ||
1377 | #define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9) | ||
1378 | |||
1379 | #define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10) | ||
1380 | #define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11) | ||
1381 | #define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12) | ||
1382 | |||
1383 | #define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13) | ||
1384 | #define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14) | ||
1385 | #define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15) | ||
1386 | |||
1387 | #define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16) | ||
1388 | |||
1389 | #define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17) | ||
1390 | #define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18) | ||
1391 | |||
1392 | /* FM Modulator class control IDs */ | ||
1393 | #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) | ||
1394 | #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1) | ||
1395 | |||
1396 | #define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1) | ||
1397 | #define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2) | ||
1398 | #define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3) | ||
1399 | #define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5) | ||
1400 | #define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6) | ||
1401 | |||
1402 | #define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64) | ||
1403 | #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65) | ||
1404 | #define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66) | ||
1405 | |||
1406 | #define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80) | ||
1407 | #define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81) | ||
1408 | #define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82) | ||
1409 | #define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83) | ||
1410 | #define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84) | ||
1411 | |||
1412 | #define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96) | ||
1413 | #define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97) | ||
1414 | #define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98) | ||
1415 | |||
1416 | #define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112) | ||
1417 | enum <link linkend="v4l2-preemphasis">v4l2_preemphasis</link> { | ||
1418 | V4L2_PREEMPHASIS_DISABLED = 0, | ||
1419 | V4L2_PREEMPHASIS_50_uS = 1, | ||
1420 | V4L2_PREEMPHASIS_75_uS = 2, | ||
1421 | }; | ||
1422 | #define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113) | ||
1423 | #define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114) | ||
1424 | |||
1425 | /* | ||
1426 | * T U N I N G | ||
1427 | */ | ||
1428 | struct <link linkend="v4l2-tuner">v4l2_tuner</link> { | ||
1429 | __u32 index; | ||
1430 | __u8 name[32]; | ||
1431 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; | ||
1432 | __u32 capability; | ||
1433 | __u32 rangelow; | ||
1434 | __u32 rangehigh; | ||
1435 | __u32 rxsubchans; | ||
1436 | __u32 audmode; | ||
1437 | __s32 signal; | ||
1438 | __s32 afc; | ||
1439 | __u32 reserved[4]; | ||
1440 | }; | ||
1441 | |||
1442 | struct <link linkend="v4l2-modulator">v4l2_modulator</link> { | ||
1443 | __u32 index; | ||
1444 | __u8 name[32]; | ||
1445 | __u32 capability; | ||
1446 | __u32 rangelow; | ||
1447 | __u32 rangehigh; | ||
1448 | __u32 txsubchans; | ||
1449 | __u32 reserved[4]; | ||
1450 | }; | ||
1451 | |||
1452 | /* Flags for the 'capability' field */ | ||
1453 | #define V4L2_TUNER_CAP_LOW 0x0001 | ||
1454 | #define V4L2_TUNER_CAP_NORM 0x0002 | ||
1455 | #define V4L2_TUNER_CAP_STEREO 0x0010 | ||
1456 | #define V4L2_TUNER_CAP_LANG2 0x0020 | ||
1457 | #define V4L2_TUNER_CAP_SAP 0x0020 | ||
1458 | #define V4L2_TUNER_CAP_LANG1 0x0040 | ||
1459 | #define V4L2_TUNER_CAP_RDS 0x0080 | ||
1460 | #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100 | ||
1461 | #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200 | ||
1462 | |||
1463 | /* Flags for the 'rxsubchans' field */ | ||
1464 | #define V4L2_TUNER_SUB_MONO 0x0001 | ||
1465 | #define V4L2_TUNER_SUB_STEREO 0x0002 | ||
1466 | #define V4L2_TUNER_SUB_LANG2 0x0004 | ||
1467 | #define V4L2_TUNER_SUB_SAP 0x0004 | ||
1468 | #define V4L2_TUNER_SUB_LANG1 0x0008 | ||
1469 | #define V4L2_TUNER_SUB_RDS 0x0010 | ||
1470 | |||
1471 | /* Values for the 'audmode' field */ | ||
1472 | #define V4L2_TUNER_MODE_MONO 0x0000 | ||
1473 | #define V4L2_TUNER_MODE_STEREO 0x0001 | ||
1474 | #define V4L2_TUNER_MODE_LANG2 0x0002 | ||
1475 | #define V4L2_TUNER_MODE_SAP 0x0002 | ||
1476 | #define V4L2_TUNER_MODE_LANG1 0x0003 | ||
1477 | #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004 | ||
1478 | |||
1479 | struct <link linkend="v4l2-frequency">v4l2_frequency</link> { | ||
1480 | __u32 tuner; | ||
1481 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; | ||
1482 | __u32 frequency; | ||
1483 | __u32 reserved[8]; | ||
1484 | }; | ||
1485 | |||
1486 | struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link> { | ||
1487 | __u32 tuner; | ||
1488 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; | ||
1489 | __u32 seek_upward; | ||
1490 | __u32 wrap_around; | ||
1491 | __u32 spacing; | ||
1492 | __u32 reserved[7]; | ||
1493 | }; | ||
1494 | |||
1495 | /* | ||
1496 | * R D S | ||
1497 | */ | ||
1498 | |||
1499 | struct <link linkend="v4l2-rds-data">v4l2_rds_data</link> { | ||
1500 | __u8 lsb; | ||
1501 | __u8 msb; | ||
1502 | __u8 block; | ||
1503 | } __attribute__ ((packed)); | ||
1504 | |||
1505 | #define V4L2_RDS_BLOCK_MSK 0x7 | ||
1506 | #define V4L2_RDS_BLOCK_A 0 | ||
1507 | #define V4L2_RDS_BLOCK_B 1 | ||
1508 | #define V4L2_RDS_BLOCK_C 2 | ||
1509 | #define V4L2_RDS_BLOCK_D 3 | ||
1510 | #define V4L2_RDS_BLOCK_C_ALT 4 | ||
1511 | #define V4L2_RDS_BLOCK_INVALID 7 | ||
1512 | |||
1513 | #define V4L2_RDS_BLOCK_CORRECTED 0x40 | ||
1514 | #define V4L2_RDS_BLOCK_ERROR 0x80 | ||
1515 | |||
1516 | /* | ||
1517 | * A U D I O | ||
1518 | */ | ||
1519 | struct <link linkend="v4l2-audio">v4l2_audio</link> { | ||
1520 | __u32 index; | ||
1521 | __u8 name[32]; | ||
1522 | __u32 capability; | ||
1523 | __u32 mode; | ||
1524 | __u32 reserved[2]; | ||
1525 | }; | ||
1526 | |||
1527 | /* Flags for the 'capability' field */ | ||
1528 | #define V4L2_AUDCAP_STEREO 0x00001 | ||
1529 | #define V4L2_AUDCAP_AVL 0x00002 | ||
1530 | |||
1531 | /* Flags for the 'mode' field */ | ||
1532 | #define V4L2_AUDMODE_AVL 0x00001 | ||
1533 | |||
1534 | struct <link linkend="v4l2-audioout">v4l2_audioout</link> { | ||
1535 | __u32 index; | ||
1536 | __u8 name[32]; | ||
1537 | __u32 capability; | ||
1538 | __u32 mode; | ||
1539 | __u32 reserved[2]; | ||
1540 | }; | ||
1541 | |||
1542 | /* | ||
1543 | * M P E G S E R V I C E S | ||
1544 | * | ||
1545 | * NOTE: EXPERIMENTAL API | ||
1546 | */ | ||
1547 | #if 1 | ||
1548 | #define V4L2_ENC_IDX_FRAME_I (0) | ||
1549 | #define V4L2_ENC_IDX_FRAME_P (1) | ||
1550 | #define V4L2_ENC_IDX_FRAME_B (2) | ||
1551 | #define V4L2_ENC_IDX_FRAME_MASK (0xf) | ||
1552 | |||
1553 | struct <link linkend="v4l2-enc-idx-entry">v4l2_enc_idx_entry</link> { | ||
1554 | __u64 offset; | ||
1555 | __u64 pts; | ||
1556 | __u32 length; | ||
1557 | __u32 flags; | ||
1558 | __u32 reserved[2]; | ||
1559 | }; | ||
1560 | |||
1561 | #define V4L2_ENC_IDX_ENTRIES (64) | ||
1562 | struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link> { | ||
1563 | __u32 entries; | ||
1564 | __u32 entries_cap; | ||
1565 | __u32 reserved[4]; | ||
1566 | struct <link linkend="v4l2-enc-idx-entry">v4l2_enc_idx_entry</link> entry[V4L2_ENC_IDX_ENTRIES]; | ||
1567 | }; | ||
1568 | |||
1569 | |||
1570 | #define V4L2_ENC_CMD_START (0) | ||
1571 | #define V4L2_ENC_CMD_STOP (1) | ||
1572 | #define V4L2_ENC_CMD_PAUSE (2) | ||
1573 | #define V4L2_ENC_CMD_RESUME (3) | ||
1574 | |||
1575 | /* Flags for V4L2_ENC_CMD_STOP */ | ||
1576 | #define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0) | ||
1577 | |||
1578 | struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link> { | ||
1579 | __u32 cmd; | ||
1580 | __u32 flags; | ||
1581 | union { | ||
1582 | struct { | ||
1583 | __u32 data[8]; | ||
1584 | } raw; | ||
1585 | }; | ||
1586 | }; | ||
1587 | |||
1588 | #endif | ||
1589 | |||
1590 | |||
1591 | /* | ||
1592 | * D A T A S E R V I C E S ( V B I ) | ||
1593 | * | ||
1594 | * Data services API by Michael Schimek | ||
1595 | */ | ||
1596 | |||
1597 | /* Raw VBI */ | ||
1598 | struct <link linkend="v4l2-vbi-format">v4l2_vbi_format</link> { | ||
1599 | __u32 sampling_rate; /* in 1 Hz */ | ||
1600 | __u32 offset; | ||
1601 | __u32 samples_per_line; | ||
1602 | __u32 sample_format; /* V4L2_PIX_FMT_* */ | ||
1603 | __s32 start[2]; | ||
1604 | __u32 count[2]; | ||
1605 | __u32 flags; /* V4L2_VBI_* */ | ||
1606 | __u32 reserved[2]; /* must be zero */ | ||
1607 | }; | ||
1608 | |||
1609 | /* VBI flags */ | ||
1610 | #define V4L2_VBI_UNSYNC (1 << 0) | ||
1611 | #define V4L2_VBI_INTERLACED (1 << 1) | ||
1612 | |||
1613 | /* Sliced VBI | ||
1614 | * | ||
1615 | * This implements is a proposal V4L2 API to allow SLICED VBI | ||
1616 | * required for some hardware encoders. It should change without | ||
1617 | * notice in the definitive implementation. | ||
1618 | */ | ||
1619 | |||
1620 | struct <link linkend="v4l2-sliced-vbi-format">v4l2_sliced_vbi_format</link> { | ||
1621 | __u16 service_set; | ||
1622 | /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field | ||
1623 | service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field | ||
1624 | (equals frame lines 313-336 for 625 line video | ||
1625 | standards, 263-286 for 525 line standards) */ | ||
1626 | __u16 service_lines[2][24]; | ||
1627 | __u32 io_size; | ||
1628 | __u32 reserved[2]; /* must be zero */ | ||
1629 | }; | ||
1630 | |||
1631 | /* Teletext World System Teletext | ||
1632 | (WST), defined on ITU-R BT.653-2 */ | ||
1633 | #define V4L2_SLICED_TELETEXT_B (0x0001) | ||
1634 | /* Video Program System, defined on ETS 300 231*/ | ||
1635 | #define V4L2_SLICED_VPS (0x0400) | ||
1636 | /* Closed Caption, defined on EIA-608 */ | ||
1637 | #define V4L2_SLICED_CAPTION_525 (0x1000) | ||
1638 | /* Wide Screen System, defined on ITU-R BT1119.1 */ | ||
1639 | #define V4L2_SLICED_WSS_625 (0x4000) | ||
1640 | |||
1641 | #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525) | ||
1642 | #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625) | ||
1643 | |||
1644 | struct <link linkend="v4l2-sliced-vbi-cap">v4l2_sliced_vbi_cap</link> { | ||
1645 | __u16 service_set; | ||
1646 | /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field | ||
1647 | service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field | ||
1648 | (equals frame lines 313-336 for 625 line video | ||
1649 | standards, 263-286 for 525 line standards) */ | ||
1650 | __u16 service_lines[2][24]; | ||
1651 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; | ||
1652 | __u32 reserved[3]; /* must be 0 */ | ||
1653 | }; | ||
1654 | |||
1655 | struct <link linkend="v4l2-sliced-vbi-data">v4l2_sliced_vbi_data</link> { | ||
1656 | __u32 id; | ||
1657 | __u32 field; /* 0: first field, 1: second field */ | ||
1658 | __u32 line; /* 1-23 */ | ||
1659 | __u32 reserved; /* must be 0 */ | ||
1660 | __u8 data[48]; | ||
1661 | }; | ||
1662 | |||
1663 | /* | ||
1664 | * Sliced VBI data inserted into MPEG Streams | ||
1665 | */ | ||
1666 | |||
1667 | /* | ||
1668 | * V4L2_MPEG_STREAM_VBI_FMT_IVTV: | ||
1669 | * | ||
1670 | * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an | ||
1671 | * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI | ||
1672 | * data | ||
1673 | * | ||
1674 | * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header | ||
1675 | * definitions are not included here. See the MPEG-2 specifications for details | ||
1676 | * on these headers. | ||
1677 | */ | ||
1678 | |||
1679 | /* Line type IDs */ | ||
1680 | #define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1) | ||
1681 | #define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4) | ||
1682 | #define V4L2_MPEG_VBI_IVTV_WSS_625 (5) | ||
1683 | #define V4L2_MPEG_VBI_IVTV_VPS (7) | ||
1684 | |||
1685 | struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> { | ||
1686 | __u8 id; /* One of V4L2_MPEG_VBI_IVTV_* above */ | ||
1687 | __u8 data[42]; /* Sliced VBI data for the line */ | ||
1688 | } __attribute__ ((packed)); | ||
1689 | |||
1690 | struct <link linkend="v4l2-mpeg-vbi-itv0">v4l2_mpeg_vbi_itv0</link> { | ||
1691 | __le32 linemask[2]; /* Bitmasks of VBI service lines present */ | ||
1692 | struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> line[35]; | ||
1693 | } __attribute__ ((packed)); | ||
1694 | |||
1695 | struct <link linkend="v4l2-mpeg-vbi-itv0-1">v4l2_mpeg_vbi_ITV0</link> { | ||
1696 | struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> line[36]; | ||
1697 | } __attribute__ ((packed)); | ||
1698 | |||
1699 | #define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0" | ||
1700 | #define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0" | ||
1701 | |||
1702 | struct <link linkend="v4l2-mpeg-vbi-fmt-ivtv">v4l2_mpeg_vbi_fmt_ivtv</link> { | ||
1703 | __u8 magic[4]; | ||
1704 | union { | ||
1705 | struct <link linkend="v4l2-mpeg-vbi-itv0">v4l2_mpeg_vbi_itv0</link> itv0; | ||
1706 | struct <link linkend="v4l2-mpeg-vbi-itv0-1">v4l2_mpeg_vbi_ITV0</link> ITV0; | ||
1707 | }; | ||
1708 | } __attribute__ ((packed)); | ||
1709 | |||
1710 | /* | ||
1711 | * A G G R E G A T E S T R U C T U R E S | ||
1712 | */ | ||
1713 | |||
1714 | /** | ||
1715 | * struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> - additional, per-plane format definition | ||
1716 | * @sizeimage: maximum size in bytes required for data, for which | ||
1717 | * this plane will be used | ||
1718 | * @bytesperline: distance in bytes between the leftmost pixels in two | ||
1719 | * adjacent lines | ||
1720 | */ | ||
1721 | struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> { | ||
1722 | __u32 sizeimage; | ||
1723 | __u16 bytesperline; | ||
1724 | __u16 reserved[7]; | ||
1725 | } __attribute__ ((packed)); | ||
1726 | |||
1727 | /** | ||
1728 | * struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> - multiplanar format definition | ||
1729 | * @width: image width in pixels | ||
1730 | * @height: image height in pixels | ||
1731 | * @pixelformat: little endian four character code (fourcc) | ||
1732 | * @field: field order (for interlaced video) | ||
1733 | * @colorspace: supplemental to pixelformat | ||
1734 | * @plane_fmt: per-plane information | ||
1735 | * @num_planes: number of planes for this format | ||
1736 | */ | ||
1737 | struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> { | ||
1738 | __u32 width; | ||
1739 | __u32 height; | ||
1740 | __u32 pixelformat; | ||
1741 | enum <link linkend="v4l2-field">v4l2_field</link> field; | ||
1742 | enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> colorspace; | ||
1743 | |||
1744 | struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> plane_fmt[VIDEO_MAX_PLANES]; | ||
1745 | __u8 num_planes; | ||
1746 | __u8 reserved[11]; | ||
1747 | } __attribute__ ((packed)); | ||
1748 | |||
1749 | /** | ||
1750 | * struct <link linkend="v4l2-format">v4l2_format</link> - stream data format | ||
1751 | * @type: type of the data stream | ||
1752 | * @pix: definition of an image format | ||
1753 | * @pix_mp: definition of a multiplanar image format | ||
1754 | * @win: definition of an overlaid image | ||
1755 | * @vbi: raw VBI capture or output parameters | ||
1756 | * @sliced: sliced VBI capture or output parameters | ||
1757 | * @raw_data: placeholder for future extensions and custom formats | ||
1758 | */ | ||
1759 | struct <link linkend="v4l2-format">v4l2_format</link> { | ||
1760 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; | ||
1761 | union { | ||
1762 | struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ | ||
1763 | struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> pix_mp; /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */ | ||
1764 | struct <link linkend="v4l2-window">v4l2_window</link> win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ | ||
1765 | struct <link linkend="v4l2-vbi-format">v4l2_vbi_format</link> vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ | ||
1766 | struct <link linkend="v4l2-sliced-vbi-format">v4l2_sliced_vbi_format</link> sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ | ||
1767 | __u8 raw_data[200]; /* user-defined */ | ||
1768 | } fmt; | ||
1769 | }; | ||
1770 | |||
1771 | /* Stream type-dependent parameters | ||
1772 | */ | ||
1773 | struct <link linkend="v4l2-streamparm">v4l2_streamparm</link> { | ||
1774 | enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; | ||
1775 | union { | ||
1776 | struct <link linkend="v4l2-captureparm">v4l2_captureparm</link> capture; | ||
1777 | struct <link linkend="v4l2-outputparm">v4l2_outputparm</link> output; | ||
1778 | __u8 raw_data[200]; /* user-defined */ | ||
1779 | } parm; | ||
1780 | }; | ||
1781 | |||
1782 | /* | ||
1783 | * E V E N T S | ||
1784 | */ | ||
1785 | |||
1786 | #define V4L2_EVENT_ALL 0 | ||
1787 | #define V4L2_EVENT_VSYNC 1 | ||
1788 | #define V4L2_EVENT_EOS 2 | ||
1789 | #define V4L2_EVENT_PRIVATE_START 0x08000000 | ||
1790 | |||
1791 | /* Payload for V4L2_EVENT_VSYNC */ | ||
1792 | struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> { | ||
1793 | /* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */ | ||
1794 | __u8 field; | ||
1795 | } __attribute__ ((packed)); | ||
1796 | |||
1797 | struct <link linkend="v4l2-event">v4l2_event</link> { | ||
1798 | __u32 type; | ||
1799 | union { | ||
1800 | struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> vsync; | ||
1801 | __u8 data[64]; | ||
1802 | } u; | ||
1803 | __u32 pending; | ||
1804 | __u32 sequence; | ||
1805 | struct timespec timestamp; | ||
1806 | __u32 reserved[9]; | ||
1807 | }; | ||
1808 | |||
1809 | struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link> { | ||
1810 | __u32 type; | ||
1811 | __u32 reserved[7]; | ||
1812 | }; | ||
1813 | |||
1814 | /* | ||
1815 | * A D V A N C E D D E B U G G I N G | ||
1816 | * | ||
1817 | * NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS! | ||
1818 | * FOR DEBUGGING, TESTING AND INTERNAL USE ONLY! | ||
1819 | */ | ||
1820 | |||
1821 | /* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */ | ||
1822 | |||
1823 | #define V4L2_CHIP_MATCH_HOST 0 /* Match against chip ID on host (0 for the host) */ | ||
1824 | #define V4L2_CHIP_MATCH_I2C_DRIVER 1 /* Match against I2C driver name */ | ||
1825 | #define V4L2_CHIP_MATCH_I2C_ADDR 2 /* Match against I2C 7-bit address */ | ||
1826 | #define V4L2_CHIP_MATCH_AC97 3 /* Match against anciliary AC97 chip */ | ||
1827 | |||
1828 | struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> { | ||
1829 | __u32 type; /* Match type */ | ||
1830 | union { /* Match this chip, meaning determined by type */ | ||
1831 | __u32 addr; | ||
1832 | char name[32]; | ||
1833 | }; | ||
1834 | } __attribute__ ((packed)); | ||
1835 | |||
1836 | struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link> { | ||
1837 | struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> match; | ||
1838 | __u32 size; /* register size in bytes */ | ||
1839 | __u64 reg; | ||
1840 | __u64 val; | ||
1841 | } __attribute__ ((packed)); | ||
1842 | |||
1843 | /* VIDIOC_DBG_G_CHIP_IDENT */ | ||
1844 | struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link> { | ||
1845 | struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> match; | ||
1846 | __u32 ident; /* chip identifier as specified in <media/v4l2-chip-ident.h> */ | ||
1847 | __u32 revision; /* chip revision, chip specific */ | ||
1848 | } __attribute__ ((packed)); | ||
1849 | |||
1850 | /* | ||
1851 | * I O C T L C O D E S F O R V I D E O D E V I C E S | ||
1852 | * | ||
1853 | */ | ||
1854 | #define VIDIOC_QUERYCAP _IOR('V', 0, struct <link linkend="v4l2-capability">v4l2_capability</link>) | ||
1855 | #define VIDIOC_RESERVED _IO('V', 1) | ||
1856 | #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct <link linkend="v4l2-fmtdesc">v4l2_fmtdesc</link>) | ||
1857 | #define VIDIOC_G_FMT _IOWR('V', 4, struct <link linkend="v4l2-format">v4l2_format</link>) | ||
1858 | #define VIDIOC_S_FMT _IOWR('V', 5, struct <link linkend="v4l2-format">v4l2_format</link>) | ||
1859 | #define VIDIOC_REQBUFS _IOWR('V', 8, struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link>) | ||
1860 | #define VIDIOC_QUERYBUF _IOWR('V', 9, struct <link linkend="v4l2-buffer">v4l2_buffer</link>) | ||
1861 | #define VIDIOC_G_FBUF _IOR('V', 10, struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link>) | ||
1862 | #define VIDIOC_S_FBUF _IOW('V', 11, struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link>) | ||
1863 | #define VIDIOC_OVERLAY _IOW('V', 14, int) | ||
1864 | #define VIDIOC_QBUF _IOWR('V', 15, struct <link linkend="v4l2-buffer">v4l2_buffer</link>) | ||
1865 | #define VIDIOC_DQBUF _IOWR('V', 17, struct <link linkend="v4l2-buffer">v4l2_buffer</link>) | ||
1866 | #define VIDIOC_STREAMON _IOW('V', 18, int) | ||
1867 | #define VIDIOC_STREAMOFF _IOW('V', 19, int) | ||
1868 | #define VIDIOC_G_PARM _IOWR('V', 21, struct <link linkend="v4l2-streamparm">v4l2_streamparm</link>) | ||
1869 | #define VIDIOC_S_PARM _IOWR('V', 22, struct <link linkend="v4l2-streamparm">v4l2_streamparm</link>) | ||
1870 | #define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id) | ||
1871 | #define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id) | ||
1872 | #define VIDIOC_ENUMSTD _IOWR('V', 25, struct <link linkend="v4l2-standard">v4l2_standard</link>) | ||
1873 | #define VIDIOC_ENUMINPUT _IOWR('V', 26, struct <link linkend="v4l2-input">v4l2_input</link>) | ||
1874 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct <link linkend="v4l2-control">v4l2_control</link>) | ||
1875 | #define VIDIOC_S_CTRL _IOWR('V', 28, struct <link linkend="v4l2-control">v4l2_control</link>) | ||
1876 | #define VIDIOC_G_TUNER _IOWR('V', 29, struct <link linkend="v4l2-tuner">v4l2_tuner</link>) | ||
1877 | #define VIDIOC_S_TUNER _IOW('V', 30, struct <link linkend="v4l2-tuner">v4l2_tuner</link>) | ||
1878 | #define VIDIOC_G_AUDIO _IOR('V', 33, struct <link linkend="v4l2-audio">v4l2_audio</link>) | ||
1879 | #define VIDIOC_S_AUDIO _IOW('V', 34, struct <link linkend="v4l2-audio">v4l2_audio</link>) | ||
1880 | #define VIDIOC_QUERYCTRL _IOWR('V', 36, struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link>) | ||
1881 | #define VIDIOC_QUERYMENU _IOWR('V', 37, struct <link linkend="v4l2-querymenu">v4l2_querymenu</link>) | ||
1882 | #define VIDIOC_G_INPUT _IOR('V', 38, int) | ||
1883 | #define VIDIOC_S_INPUT _IOWR('V', 39, int) | ||
1884 | #define VIDIOC_G_OUTPUT _IOR('V', 46, int) | ||
1885 | #define VIDIOC_S_OUTPUT _IOWR('V', 47, int) | ||
1886 | #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct <link linkend="v4l2-output">v4l2_output</link>) | ||
1887 | #define VIDIOC_G_AUDOUT _IOR('V', 49, struct <link linkend="v4l2-audioout">v4l2_audioout</link>) | ||
1888 | #define VIDIOC_S_AUDOUT _IOW('V', 50, struct <link linkend="v4l2-audioout">v4l2_audioout</link>) | ||
1889 | #define VIDIOC_G_MODULATOR _IOWR('V', 54, struct <link linkend="v4l2-modulator">v4l2_modulator</link>) | ||
1890 | #define VIDIOC_S_MODULATOR _IOW('V', 55, struct <link linkend="v4l2-modulator">v4l2_modulator</link>) | ||
1891 | #define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct <link linkend="v4l2-frequency">v4l2_frequency</link>) | ||
1892 | #define VIDIOC_S_FREQUENCY _IOW('V', 57, struct <link linkend="v4l2-frequency">v4l2_frequency</link>) | ||
1893 | #define VIDIOC_CROPCAP _IOWR('V', 58, struct <link linkend="v4l2-cropcap">v4l2_cropcap</link>) | ||
1894 | #define VIDIOC_G_CROP _IOWR('V', 59, struct <link linkend="v4l2-crop">v4l2_crop</link>) | ||
1895 | #define VIDIOC_S_CROP _IOW('V', 60, struct <link linkend="v4l2-crop">v4l2_crop</link>) | ||
1896 | #define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link>) | ||
1897 | #define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link>) | ||
1898 | #define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id) | ||
1899 | #define VIDIOC_TRY_FMT _IOWR('V', 64, struct <link linkend="v4l2-format">v4l2_format</link>) | ||
1900 | #define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct <link linkend="v4l2-audio">v4l2_audio</link>) | ||
1901 | #define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct <link linkend="v4l2-audioout">v4l2_audioout</link>) | ||
1902 | #define VIDIOC_G_PRIORITY _IOR('V', 67, enum <link linkend="v4l2-priority">v4l2_priority</link>) | ||
1903 | #define VIDIOC_S_PRIORITY _IOW('V', 68, enum <link linkend="v4l2-priority">v4l2_priority</link>) | ||
1904 | #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct <link linkend="v4l2-sliced-vbi-cap">v4l2_sliced_vbi_cap</link>) | ||
1905 | #define VIDIOC_LOG_STATUS _IO('V', 70) | ||
1906 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) | ||
1907 | #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) | ||
1908 | #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) | ||
1909 | #if 1 | ||
1910 | #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link>) | ||
1911 | #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link>) | ||
1912 | #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link>) | ||
1913 | #define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>) | ||
1914 | #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>) | ||
1915 | #endif | ||
1916 | |||
1917 | #if 1 | ||
1918 | /* Experimental, meant for debugging, testing and internal use. | ||
1919 | Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined. | ||
1920 | You must be root to use these ioctls. Never use these in applications! */ | ||
1921 | #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link>) | ||
1922 | #define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link>) | ||
1923 | |||
1924 | /* Experimental, meant for debugging, testing and internal use. | ||
1925 | Never use this ioctl in applications! */ | ||
1926 | #define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link>) | ||
1927 | #endif | ||
1928 | |||
1929 | #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link>) | ||
1930 | #define VIDIOC_ENUM_DV_PRESETS _IOWR('V', 83, struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link>) | ||
1931 | #define VIDIOC_S_DV_PRESET _IOWR('V', 84, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) | ||
1932 | #define VIDIOC_G_DV_PRESET _IOWR('V', 85, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) | ||
1933 | #define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) | ||
1934 | #define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) | ||
1935 | #define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) | ||
1936 | #define VIDIOC_DQEVENT _IOR('V', 89, struct <link linkend="v4l2-event">v4l2_event</link>) | ||
1937 | #define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>) | ||
1938 | #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>) | ||
1939 | |||
1940 | /* Reminder: when adding new ioctls please add support for them to | ||
1941 | drivers/media/video/v4l2-compat-ioctl32.c as well! */ | ||
1942 | |||
1943 | #define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ | ||
1944 | |||
1945 | #endif /* __LINUX_VIDEODEV2_H */ | ||
1946 | </programlisting> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/v4l/vidioc-subscribe-event.xml deleted file mode 100644 index 8b501791aa68..000000000000 --- a/Documentation/DocBook/v4l/vidioc-subscribe-event.xml +++ /dev/null | |||
@@ -1,133 +0,0 @@ | |||
1 | <refentry id="vidioc-subscribe-event"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refname> | ||
9 | <refpurpose>Subscribe or unsubscribe event</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcprototype> | ||
15 | <funcdef>int <function>ioctl</function></funcdef> | ||
16 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
17 | <paramdef>int <parameter>request</parameter></paramdef> | ||
18 | <paramdef>struct v4l2_event_subscription | ||
19 | *<parameter>argp</parameter></paramdef> | ||
20 | </funcprototype> | ||
21 | </funcsynopsis> | ||
22 | </refsynopsisdiv> | ||
23 | |||
24 | <refsect1> | ||
25 | <title>Arguments</title> | ||
26 | |||
27 | <variablelist> | ||
28 | <varlistentry> | ||
29 | <term><parameter>fd</parameter></term> | ||
30 | <listitem> | ||
31 | <para>&fd;</para> | ||
32 | </listitem> | ||
33 | </varlistentry> | ||
34 | <varlistentry> | ||
35 | <term><parameter>request</parameter></term> | ||
36 | <listitem> | ||
37 | <para>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</para> | ||
38 | </listitem> | ||
39 | </varlistentry> | ||
40 | <varlistentry> | ||
41 | <term><parameter>argp</parameter></term> | ||
42 | <listitem> | ||
43 | <para></para> | ||
44 | </listitem> | ||
45 | </varlistentry> | ||
46 | </variablelist> | ||
47 | </refsect1> | ||
48 | |||
49 | <refsect1> | ||
50 | <title>Description</title> | ||
51 | |||
52 | <para>Subscribe or unsubscribe V4L2 event. Subscribed events are | ||
53 | dequeued by using the &VIDIOC-DQEVENT; ioctl.</para> | ||
54 | |||
55 | <table frame="none" pgwide="1" id="v4l2-event-subscription"> | ||
56 | <title>struct <structname>v4l2_event_subscription</structname></title> | ||
57 | <tgroup cols="3"> | ||
58 | &cs-str; | ||
59 | <tbody valign="top"> | ||
60 | <row> | ||
61 | <entry>__u32</entry> | ||
62 | <entry><structfield>type</structfield></entry> | ||
63 | <entry>Type of the event.</entry> | ||
64 | </row> | ||
65 | <row> | ||
66 | <entry>__u32</entry> | ||
67 | <entry><structfield>reserved</structfield>[7]</entry> | ||
68 | <entry>Reserved for future extensions. Drivers and applications | ||
69 | must set the array to zero.</entry> | ||
70 | </row> | ||
71 | </tbody> | ||
72 | </tgroup> | ||
73 | </table> | ||
74 | |||
75 | <table frame="none" pgwide="1" id="event-type"> | ||
76 | <title>Event Types</title> | ||
77 | <tgroup cols="3"> | ||
78 | &cs-def; | ||
79 | <tbody valign="top"> | ||
80 | <row> | ||
81 | <entry><constant>V4L2_EVENT_ALL</constant></entry> | ||
82 | <entry>0</entry> | ||
83 | <entry>All events. V4L2_EVENT_ALL is valid only for | ||
84 | VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once. | ||
85 | </entry> | ||
86 | </row> | ||
87 | <row> | ||
88 | <entry><constant>V4L2_EVENT_VSYNC</constant></entry> | ||
89 | <entry>1</entry> | ||
90 | <entry>This event is triggered on the vertical sync. | ||
91 | This event has &v4l2-event-vsync; associated with it. | ||
92 | </entry> | ||
93 | </row> | ||
94 | <row> | ||
95 | <entry><constant>V4L2_EVENT_EOS</constant></entry> | ||
96 | <entry>2</entry> | ||
97 | <entry>This event is triggered when the end of a stream is reached. | ||
98 | This is typically used with MPEG decoders to report to the application | ||
99 | when the last of the MPEG stream has been decoded. | ||
100 | </entry> | ||
101 | </row> | ||
102 | <row> | ||
103 | <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry> | ||
104 | <entry>0x08000000</entry> | ||
105 | <entry>Base event number for driver-private events.</entry> | ||
106 | </row> | ||
107 | </tbody> | ||
108 | </tgroup> | ||
109 | </table> | ||
110 | |||
111 | <table frame="none" pgwide="1" id="v4l2-event-vsync"> | ||
112 | <title>struct <structname>v4l2_event_vsync</structname></title> | ||
113 | <tgroup cols="3"> | ||
114 | &cs-str; | ||
115 | <tbody valign="top"> | ||
116 | <row> | ||
117 | <entry>__u8</entry> | ||
118 | <entry><structfield>field</structfield></entry> | ||
119 | <entry>The upcoming field. See &v4l2-field;.</entry> | ||
120 | </row> | ||
121 | </tbody> | ||
122 | </tgroup> | ||
123 | </table> | ||
124 | |||
125 | </refsect1> | ||
126 | </refentry> | ||
127 | <!-- | ||
128 | Local Variables: | ||
129 | mode: sgml | ||
130 | sgml-parent-document: "v4l2.sgml" | ||
131 | indent-tabs-mode: nil | ||
132 | End: | ||
133 | --> | ||
diff --git a/Documentation/PCI/MSI-HOWTO.txt b/Documentation/PCI/MSI-HOWTO.txt index 3f5e0b09bed5..53e6fca146d7 100644 --- a/Documentation/PCI/MSI-HOWTO.txt +++ b/Documentation/PCI/MSI-HOWTO.txt | |||
@@ -45,7 +45,7 @@ arrived in memory (this becomes more likely with devices behind PCI-PCI | |||
45 | bridges). In order to ensure that all the data has arrived in memory, | 45 | bridges). In order to ensure that all the data has arrived in memory, |
46 | the interrupt handler must read a register on the device which raised | 46 | the interrupt handler must read a register on the device which raised |
47 | the interrupt. PCI transaction ordering rules require that all the data | 47 | the interrupt. PCI transaction ordering rules require that all the data |
48 | arrives in memory before the value can be returned from the register. | 48 | arrive in memory before the value may be returned from the register. |
49 | Using MSIs avoids this problem as the interrupt-generating write cannot | 49 | Using MSIs avoids this problem as the interrupt-generating write cannot |
50 | pass the data writes, so by the time the interrupt is raised, the driver | 50 | pass the data writes, so by the time the interrupt is raised, the driver |
51 | knows that all the data has arrived in memory. | 51 | knows that all the data has arrived in memory. |
@@ -86,13 +86,13 @@ device. | |||
86 | 86 | ||
87 | int pci_enable_msi(struct pci_dev *dev) | 87 | int pci_enable_msi(struct pci_dev *dev) |
88 | 88 | ||
89 | A successful call will allocate ONE interrupt to the device, regardless | 89 | A successful call allocates ONE interrupt to the device, regardless |
90 | of how many MSIs the device supports. The device will be switched from | 90 | of how many MSIs the device supports. The device is switched from |
91 | pin-based interrupt mode to MSI mode. The dev->irq number is changed | 91 | pin-based interrupt mode to MSI mode. The dev->irq number is changed |
92 | to a new number which represents the message signaled interrupt. | 92 | to a new number which represents the message signaled interrupt; |
93 | This function should be called before the driver calls request_irq() | 93 | consequently, this function should be called before the driver calls |
94 | since enabling MSIs disables the pin-based IRQ and the driver will not | 94 | request_irq(), because an MSI is delivered via a vector that is |
95 | receive interrupts on the old interrupt. | 95 | different from the vector of a pin-based interrupt. |
96 | 96 | ||
97 | 4.2.2 pci_enable_msi_block | 97 | 4.2.2 pci_enable_msi_block |
98 | 98 | ||
@@ -111,20 +111,20 @@ the device are in the range dev->irq to dev->irq + count - 1. | |||
111 | 111 | ||
112 | If this function returns a negative number, it indicates an error and | 112 | If this function returns a negative number, it indicates an error and |
113 | the driver should not attempt to request any more MSI interrupts for | 113 | the driver should not attempt to request any more MSI interrupts for |
114 | this device. If this function returns a positive number, it will be | 114 | this device. If this function returns a positive number, it is |
115 | less than 'count' and indicate the number of interrupts that could have | 115 | less than 'count' and indicates the number of interrupts that could have |
116 | been allocated. In neither case will the irq value have been | 116 | been allocated. In neither case is the irq value updated or the device |
117 | updated, nor will the device have been switched into MSI mode. | 117 | switched into MSI mode. |
118 | 118 | ||
119 | The device driver must decide what action to take if | 119 | The device driver must decide what action to take if |
120 | pci_enable_msi_block() returns a value less than the number asked for. | 120 | pci_enable_msi_block() returns a value less than the number requested. |
121 | Some devices can make use of fewer interrupts than the maximum they | 121 | For instance, the driver could still make use of fewer interrupts; |
122 | request; in this case the driver should call pci_enable_msi_block() | 122 | in this case the driver should call pci_enable_msi_block() |
123 | again. Note that it is not guaranteed to succeed, even when the | 123 | again. Note that it is not guaranteed to succeed, even when the |
124 | 'count' has been reduced to the value returned from a previous call to | 124 | 'count' has been reduced to the value returned from a previous call to |
125 | pci_enable_msi_block(). This is because there are multiple constraints | 125 | pci_enable_msi_block(). This is because there are multiple constraints |
126 | on the number of vectors that can be allocated; pci_enable_msi_block() | 126 | on the number of vectors that can be allocated; pci_enable_msi_block() |
127 | will return as soon as it finds any constraint that doesn't allow the | 127 | returns as soon as it finds any constraint that doesn't allow the |
128 | call to succeed. | 128 | call to succeed. |
129 | 129 | ||
130 | 4.2.3 pci_disable_msi | 130 | 4.2.3 pci_disable_msi |
@@ -137,10 +137,10 @@ interrupt number and frees the previously allocated message signaled | |||
137 | interrupt(s). The interrupt may subsequently be assigned to another | 137 | interrupt(s). The interrupt may subsequently be assigned to another |
138 | device, so drivers should not cache the value of dev->irq. | 138 | device, so drivers should not cache the value of dev->irq. |
139 | 139 | ||
140 | A device driver must always call free_irq() on the interrupt(s) | 140 | Before calling this function, a device driver must always call free_irq() |
141 | for which it has called request_irq() before calling this function. | 141 | on any interrupt for which it previously called request_irq(). |
142 | Failure to do so will result in a BUG_ON(), the device will be left with | 142 | Failure to do so results in a BUG_ON(), leaving the device with |
143 | MSI enabled and will leak its vector. | 143 | MSI enabled and thus leaking its vector. |
144 | 144 | ||
145 | 4.3 Using MSI-X | 145 | 4.3 Using MSI-X |
146 | 146 | ||
@@ -155,10 +155,10 @@ struct msix_entry { | |||
155 | }; | 155 | }; |
156 | 156 | ||
157 | This allows for the device to use these interrupts in a sparse fashion; | 157 | This allows for the device to use these interrupts in a sparse fashion; |
158 | for example it could use interrupts 3 and 1027 and allocate only a | 158 | for example, it could use interrupts 3 and 1027 and yet allocate only a |
159 | two-element array. The driver is expected to fill in the 'entry' value | 159 | two-element array. The driver is expected to fill in the 'entry' value |
160 | in each element of the array to indicate which entries it wants the kernel | 160 | in each element of the array to indicate for which entries the kernel |
161 | to assign interrupts for. It is invalid to fill in two entries with the | 161 | should assign interrupts; it is invalid to fill in two entries with the |
162 | same number. | 162 | same number. |
163 | 163 | ||
164 | 4.3.1 pci_enable_msix | 164 | 4.3.1 pci_enable_msix |
@@ -168,10 +168,11 @@ int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec) | |||
168 | Calling this function asks the PCI subsystem to allocate 'nvec' MSIs. | 168 | Calling this function asks the PCI subsystem to allocate 'nvec' MSIs. |
169 | The 'entries' argument is a pointer to an array of msix_entry structs | 169 | The 'entries' argument is a pointer to an array of msix_entry structs |
170 | which should be at least 'nvec' entries in size. On success, the | 170 | which should be at least 'nvec' entries in size. On success, the |
171 | function will return 0 and the device will have been switched into | 171 | device is switched into MSI-X mode and the function returns 0. |
172 | MSI-X interrupt mode. The 'vector' elements in each entry will have | 172 | The 'vector' member in each entry is populated with the interrupt number; |
173 | been filled in with the interrupt number. The driver should then call | 173 | the driver should then call request_irq() for each 'vector' that it |
174 | request_irq() for each 'vector' that it decides to use. | 174 | decides to use. The device driver is responsible for keeping track of the |
175 | interrupts assigned to the MSI-X vectors so it can free them again later. | ||
175 | 176 | ||
176 | If this function returns a negative number, it indicates an error and | 177 | If this function returns a negative number, it indicates an error and |
177 | the driver should not attempt to allocate any more MSI-X interrupts for | 178 | the driver should not attempt to allocate any more MSI-X interrupts for |
@@ -181,16 +182,14 @@ below. | |||
181 | 182 | ||
182 | This function, in contrast with pci_enable_msi(), does not adjust | 183 | This function, in contrast with pci_enable_msi(), does not adjust |
183 | dev->irq. The device will not generate interrupts for this interrupt | 184 | dev->irq. The device will not generate interrupts for this interrupt |
184 | number once MSI-X is enabled. The device driver is responsible for | 185 | number once MSI-X is enabled. |
185 | keeping track of the interrupts assigned to the MSI-X vectors so it can | ||
186 | free them again later. | ||
187 | 186 | ||
188 | Device drivers should normally call this function once per device | 187 | Device drivers should normally call this function once per device |
189 | during the initialization phase. | 188 | during the initialization phase. |
190 | 189 | ||
191 | It is ideal if drivers can cope with a variable number of MSI-X interrupts, | 190 | It is ideal if drivers can cope with a variable number of MSI-X interrupts; |
192 | there are many reasons why the platform may not be able to provide the | 191 | there are many reasons why the platform may not be able to provide the |
193 | exact number a driver asks for. | 192 | exact number that a driver asks for. |
194 | 193 | ||
195 | A request loop to achieve that might look like: | 194 | A request loop to achieve that might look like: |
196 | 195 | ||
@@ -212,15 +211,15 @@ static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) | |||
212 | 211 | ||
213 | void pci_disable_msix(struct pci_dev *dev) | 212 | void pci_disable_msix(struct pci_dev *dev) |
214 | 213 | ||
215 | This API should be used to undo the effect of pci_enable_msix(). It frees | 214 | This function should be used to undo the effect of pci_enable_msix(). It frees |
216 | the previously allocated message signaled interrupts. The interrupts may | 215 | the previously allocated message signaled interrupts. The interrupts may |
217 | subsequently be assigned to another device, so drivers should not cache | 216 | subsequently be assigned to another device, so drivers should not cache |
218 | the value of the 'vector' elements over a call to pci_disable_msix(). | 217 | the value of the 'vector' elements over a call to pci_disable_msix(). |
219 | 218 | ||
220 | A device driver must always call free_irq() on the interrupt(s) | 219 | Before calling this function, a device driver must always call free_irq() |
221 | for which it has called request_irq() before calling this function. | 220 | on any interrupt for which it previously called request_irq(). |
222 | Failure to do so will result in a BUG_ON(), the device will be left with | 221 | Failure to do so results in a BUG_ON(), leaving the device with |
223 | MSI enabled and will leak its vector. | 222 | MSI-X enabled and thus leaking its vector. |
224 | 223 | ||
225 | 4.3.3 The MSI-X Table | 224 | 4.3.3 The MSI-X Table |
226 | 225 | ||
@@ -232,10 +231,10 @@ mask or unmask an interrupt, it should call disable_irq() / enable_irq(). | |||
232 | 4.4 Handling devices implementing both MSI and MSI-X capabilities | 231 | 4.4 Handling devices implementing both MSI and MSI-X capabilities |
233 | 232 | ||
234 | If a device implements both MSI and MSI-X capabilities, it can | 233 | If a device implements both MSI and MSI-X capabilities, it can |
235 | run in either MSI mode or MSI-X mode but not both simultaneously. | 234 | run in either MSI mode or MSI-X mode, but not both simultaneously. |
236 | This is a requirement of the PCI spec, and it is enforced by the | 235 | This is a requirement of the PCI spec, and it is enforced by the |
237 | PCI layer. Calling pci_enable_msi() when MSI-X is already enabled or | 236 | PCI layer. Calling pci_enable_msi() when MSI-X is already enabled or |
238 | pci_enable_msix() when MSI is already enabled will result in an error. | 237 | pci_enable_msix() when MSI is already enabled results in an error. |
239 | If a device driver wishes to switch between MSI and MSI-X at runtime, | 238 | If a device driver wishes to switch between MSI and MSI-X at runtime, |
240 | it must first quiesce the device, then switch it back to pin-interrupt | 239 | it must first quiesce the device, then switch it back to pin-interrupt |
241 | mode, before calling pci_enable_msi() or pci_enable_msix() and resuming | 240 | mode, before calling pci_enable_msi() or pci_enable_msix() and resuming |
@@ -251,7 +250,7 @@ the MSI-X facilities in preference to the MSI facilities. As mentioned | |||
251 | above, MSI-X supports any number of interrupts between 1 and 2048. | 250 | above, MSI-X supports any number of interrupts between 1 and 2048. |
252 | In constrast, MSI is restricted to a maximum of 32 interrupts (and | 251 | In constrast, MSI is restricted to a maximum of 32 interrupts (and |
253 | must be a power of two). In addition, the MSI interrupt vectors must | 252 | must be a power of two). In addition, the MSI interrupt vectors must |
254 | be allocated consecutively, so the system may not be able to allocate | 253 | be allocated consecutively, so the system might not be able to allocate |
255 | as many vectors for MSI as it could for MSI-X. On some platforms, MSI | 254 | as many vectors for MSI as it could for MSI-X. On some platforms, MSI |
256 | interrupts must all be targeted at the same set of CPUs whereas MSI-X | 255 | interrupts must all be targeted at the same set of CPUs whereas MSI-X |
257 | interrupts can all be targeted at different CPUs. | 256 | interrupts can all be targeted at different CPUs. |
@@ -281,7 +280,7 @@ disabled to enabled and back again. | |||
281 | 280 | ||
282 | Using 'lspci -v' (as root) may show some devices with "MSI", "Message | 281 | Using 'lspci -v' (as root) may show some devices with "MSI", "Message |
283 | Signalled Interrupts" or "MSI-X" capabilities. Each of these capabilities | 282 | Signalled Interrupts" or "MSI-X" capabilities. Each of these capabilities |
284 | has an 'Enable' flag which will be followed with either "+" (enabled) | 283 | has an 'Enable' flag which is followed with either "+" (enabled) |
285 | or "-" (disabled). | 284 | or "-" (disabled). |
286 | 285 | ||
287 | 286 | ||
@@ -298,7 +297,7 @@ The PCI stack provides three ways to disable MSIs: | |||
298 | 297 | ||
299 | Some host chipsets simply don't support MSIs properly. If we're | 298 | Some host chipsets simply don't support MSIs properly. If we're |
300 | lucky, the manufacturer knows this and has indicated it in the ACPI | 299 | lucky, the manufacturer knows this and has indicated it in the ACPI |
301 | FADT table. In this case, Linux will automatically disable MSIs. | 300 | FADT table. In this case, Linux automatically disables MSIs. |
302 | Some boards don't include this information in the table and so we have | 301 | Some boards don't include this information in the table and so we have |
303 | to detect them ourselves. The complete list of these is found near the | 302 | to detect them ourselves. The complete list of these is found near the |
304 | quirk_disable_all_msi() function in drivers/pci/quirks.c. | 303 | quirk_disable_all_msi() function in drivers/pci/quirks.c. |
@@ -317,7 +316,7 @@ Some bridges allow you to enable MSIs by changing some bits in their | |||
317 | PCI configuration space (especially the Hypertransport chipsets such | 316 | PCI configuration space (especially the Hypertransport chipsets such |
318 | as the nVidia nForce and Serverworks HT2000). As with host chipsets, | 317 | as the nVidia nForce and Serverworks HT2000). As with host chipsets, |
319 | Linux mostly knows about them and automatically enables MSIs if it can. | 318 | Linux mostly knows about them and automatically enables MSIs if it can. |
320 | If you have a bridge which Linux doesn't yet know about, you can enable | 319 | If you have a bridge unknown to Linux, you can enable |
321 | MSIs in configuration space using whatever method you know works, then | 320 | MSIs in configuration space using whatever method you know works, then |
322 | enable MSIs on that bridge by doing: | 321 | enable MSIs on that bridge by doing: |
323 | 322 | ||
@@ -327,7 +326,7 @@ where $bridge is the PCI address of the bridge you've enabled (eg | |||
327 | 0000:00:0e.0). | 326 | 0000:00:0e.0). |
328 | 327 | ||
329 | To disable MSIs, echo 0 instead of 1. Changing this value should be | 328 | To disable MSIs, echo 0 instead of 1. Changing this value should be |
330 | done with caution as it can break interrupt handling for all devices | 329 | done with caution as it could break interrupt handling for all devices |
331 | below this bridge. | 330 | below this bridge. |
332 | 331 | ||
333 | Again, please notify linux-pci@vger.kernel.org of any bridges that need | 332 | Again, please notify linux-pci@vger.kernel.org of any bridges that need |
@@ -336,7 +335,7 @@ special handling. | |||
336 | 5.3. Disabling MSIs on a single device | 335 | 5.3. Disabling MSIs on a single device |
337 | 336 | ||
338 | Some devices are known to have faulty MSI implementations. Usually this | 337 | Some devices are known to have faulty MSI implementations. Usually this |
339 | is handled in the individual device driver but occasionally it's necessary | 338 | is handled in the individual device driver, but occasionally it's necessary |
340 | to handle this with a quirk. Some drivers have an option to disable use | 339 | to handle this with a quirk. Some drivers have an option to disable use |
341 | of MSI. While this is a convenient workaround for the driver author, | 340 | of MSI. While this is a convenient workaround for the driver author, |
342 | it is not good practise, and should not be emulated. | 341 | it is not good practise, and should not be emulated. |
@@ -350,7 +349,7 @@ for your machine. You should also check your .config to be sure you | |||
350 | have enabled CONFIG_PCI_MSI. | 349 | have enabled CONFIG_PCI_MSI. |
351 | 350 | ||
352 | Then, 'lspci -t' gives the list of bridges above a device. Reading | 351 | Then, 'lspci -t' gives the list of bridges above a device. Reading |
353 | /sys/bus/pci/devices/*/msi_bus will tell you whether MSI are enabled (1) | 352 | /sys/bus/pci/devices/*/msi_bus will tell you whether MSIs are enabled (1) |
354 | or disabled (0). If 0 is found in any of the msi_bus files belonging | 353 | or disabled (0). If 0 is found in any of the msi_bus files belonging |
355 | to bridges between the PCI root and the device, MSIs are disabled. | 354 | to bridges between the PCI root and the device, MSIs are disabled. |
356 | 355 | ||
diff --git a/Documentation/SubmittingDrivers b/Documentation/SubmittingDrivers index 319baa8b60dd..36d16bbf72c6 100644 --- a/Documentation/SubmittingDrivers +++ b/Documentation/SubmittingDrivers | |||
@@ -130,7 +130,7 @@ Linux kernel master tree: | |||
130 | ftp.??.kernel.org:/pub/linux/kernel/... | 130 | ftp.??.kernel.org:/pub/linux/kernel/... |
131 | ?? == your country code, such as "us", "uk", "fr", etc. | 131 | ?? == your country code, such as "us", "uk", "fr", etc. |
132 | 132 | ||
133 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git | 133 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git |
134 | 134 | ||
135 | Linux kernel mailing list: | 135 | Linux kernel mailing list: |
136 | linux-kernel@vger.kernel.org | 136 | linux-kernel@vger.kernel.org |
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 569f3532e138..4468ce24427c 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
@@ -303,7 +303,7 @@ patches that are being emailed around. | |||
303 | 303 | ||
304 | The sign-off is a simple line at the end of the explanation for the | 304 | The sign-off is a simple line at the end of the explanation for the |
305 | patch, which certifies that you wrote it or otherwise have the right to | 305 | patch, which certifies that you wrote it or otherwise have the right to |
306 | pass it on as a open-source patch. The rules are pretty simple: if you | 306 | pass it on as an open-source patch. The rules are pretty simple: if you |
307 | can certify the below: | 307 | can certify the below: |
308 | 308 | ||
309 | Developer's Certificate of Origin 1.1 | 309 | Developer's Certificate of Origin 1.1 |
diff --git a/Documentation/acpi/apei/einj.txt b/Documentation/acpi/apei/einj.txt index dfab71848dc8..5cc699ba5453 100644 --- a/Documentation/acpi/apei/einj.txt +++ b/Documentation/acpi/apei/einj.txt | |||
@@ -48,12 +48,19 @@ directory apei/einj. The following files are provided. | |||
48 | - param1 | 48 | - param1 |
49 | This file is used to set the first error parameter value. Effect of | 49 | This file is used to set the first error parameter value. Effect of |
50 | parameter depends on error_type specified. For memory error, this is | 50 | parameter depends on error_type specified. For memory error, this is |
51 | physical memory address. | 51 | physical memory address. Only available if param_extension module |
52 | parameter is specified. | ||
52 | 53 | ||
53 | - param2 | 54 | - param2 |
54 | This file is used to set the second error parameter value. Effect of | 55 | This file is used to set the second error parameter value. Effect of |
55 | parameter depends on error_type specified. For memory error, this is | 56 | parameter depends on error_type specified. For memory error, this is |
56 | physical memory address mask. | 57 | physical memory address mask. Only available if param_extension |
58 | module parameter is specified. | ||
59 | |||
60 | Injecting parameter support is a BIOS version specific extension, that | ||
61 | is, it only works on some BIOS version. If you want to use it, please | ||
62 | make sure your BIOS version has the proper support and specify | ||
63 | "param_extension=y" in module parameter. | ||
57 | 64 | ||
58 | For more information about EINJ, please refer to ACPI specification | 65 | For more information about EINJ, please refer to ACPI specification |
59 | version 4.0, section 17.5. | 66 | version 4.0, section 17.5. |
diff --git a/Documentation/block/cfq-iosched.txt b/Documentation/block/cfq-iosched.txt index e578feed6d81..6d670f570451 100644 --- a/Documentation/block/cfq-iosched.txt +++ b/Documentation/block/cfq-iosched.txt | |||
@@ -43,3 +43,74 @@ If one sets slice_idle=0 and if storage supports NCQ, CFQ internally switches | |||
43 | to IOPS mode and starts providing fairness in terms of number of requests | 43 | to IOPS mode and starts providing fairness in terms of number of requests |
44 | dispatched. Note that this mode switching takes effect only for group | 44 | dispatched. Note that this mode switching takes effect only for group |
45 | scheduling. For non-cgroup users nothing should change. | 45 | scheduling. For non-cgroup users nothing should change. |
46 | |||
47 | CFQ IO scheduler Idling Theory | ||
48 | =============================== | ||
49 | Idling on a queue is primarily about waiting for the next request to come | ||
50 | on same queue after completion of a request. In this process CFQ will not | ||
51 | dispatch requests from other cfq queues even if requests are pending there. | ||
52 | |||
53 | The rationale behind idling is that it can cut down on number of seeks | ||
54 | on rotational media. For example, if a process is doing dependent | ||
55 | sequential reads (next read will come on only after completion of previous | ||
56 | one), then not dispatching request from other queue should help as we | ||
57 | did not move the disk head and kept on dispatching sequential IO from | ||
58 | one queue. | ||
59 | |||
60 | CFQ has following service trees and various queues are put on these trees. | ||
61 | |||
62 | sync-idle sync-noidle async | ||
63 | |||
64 | All cfq queues doing synchronous sequential IO go on to sync-idle tree. | ||
65 | On this tree we idle on each queue individually. | ||
66 | |||
67 | All synchronous non-sequential queues go on sync-noidle tree. Also any | ||
68 | request which are marked with REQ_NOIDLE go on this service tree. On this | ||
69 | tree we do not idle on individual queues instead idle on the whole group | ||
70 | of queues or the tree. So if there are 4 queues waiting for IO to dispatch | ||
71 | we will idle only once last queue has dispatched the IO and there is | ||
72 | no more IO on this service tree. | ||
73 | |||
74 | All async writes go on async service tree. There is no idling on async | ||
75 | queues. | ||
76 | |||
77 | CFQ has some optimizations for SSDs and if it detects a non-rotational | ||
78 | media which can support higher queue depth (multiple requests at in | ||
79 | flight at a time), then it cuts down on idling of individual queues and | ||
80 | all the queues move to sync-noidle tree and only tree idle remains. This | ||
81 | tree idling provides isolation with buffered write queues on async tree. | ||
82 | |||
83 | FAQ | ||
84 | === | ||
85 | Q1. Why to idle at all on queues marked with REQ_NOIDLE. | ||
86 | |||
87 | A1. We only do tree idle (all queues on sync-noidle tree) on queues marked | ||
88 | with REQ_NOIDLE. This helps in providing isolation with all the sync-idle | ||
89 | queues. Otherwise in presence of many sequential readers, other | ||
90 | synchronous IO might not get fair share of disk. | ||
91 | |||
92 | For example, if there are 10 sequential readers doing IO and they get | ||
93 | 100ms each. If a REQ_NOIDLE request comes in, it will be scheduled | ||
94 | roughly after 1 second. If after completion of REQ_NOIDLE request we | ||
95 | do not idle, and after a couple of milli seconds a another REQ_NOIDLE | ||
96 | request comes in, again it will be scheduled after 1second. Repeat it | ||
97 | and notice how a workload can lose its disk share and suffer due to | ||
98 | multiple sequential readers. | ||
99 | |||
100 | fsync can generate dependent IO where bunch of data is written in the | ||
101 | context of fsync, and later some journaling data is written. Journaling | ||
102 | data comes in only after fsync has finished its IO (atleast for ext4 | ||
103 | that seemed to be the case). Now if one decides not to idle on fsync | ||
104 | thread due to REQ_NOIDLE, then next journaling write will not get | ||
105 | scheduled for another second. A process doing small fsync, will suffer | ||
106 | badly in presence of multiple sequential readers. | ||
107 | |||
108 | Hence doing tree idling on threads using REQ_NOIDLE flag on requests | ||
109 | provides isolation from multiple sequential readers and at the same | ||
110 | time we do not idle on individual threads. | ||
111 | |||
112 | Q2. When to specify REQ_NOIDLE | ||
113 | A2. I would think whenever one is doing synchronous write and not expecting | ||
114 | more writes to be dispatched from same context soon, should be able | ||
115 | to specify REQ_NOIDLE on writes and that probably should work well for | ||
116 | most of the cases. | ||
diff --git a/Documentation/device-mapper/dm-crypt.txt b/Documentation/device-mapper/dm-crypt.txt index 6b5c42dbbe84..2c656ae43ba7 100644 --- a/Documentation/device-mapper/dm-crypt.txt +++ b/Documentation/device-mapper/dm-crypt.txt | |||
@@ -4,7 +4,8 @@ dm-crypt | |||
4 | Device-Mapper's "crypt" target provides transparent encryption of block devices | 4 | Device-Mapper's "crypt" target provides transparent encryption of block devices |
5 | using the kernel crypto API. | 5 | using the kernel crypto API. |
6 | 6 | ||
7 | Parameters: <cipher> <key> <iv_offset> <device path> <offset> | 7 | Parameters: <cipher> <key> <iv_offset> <device path> \ |
8 | <offset> [<#opt_params> <opt_params>] | ||
8 | 9 | ||
9 | <cipher> | 10 | <cipher> |
10 | Encryption cipher and an optional IV generation mode. | 11 | Encryption cipher and an optional IV generation mode. |
@@ -37,6 +38,24 @@ Parameters: <cipher> <key> <iv_offset> <device path> <offset> | |||
37 | <offset> | 38 | <offset> |
38 | Starting sector within the device where the encrypted data begins. | 39 | Starting sector within the device where the encrypted data begins. |
39 | 40 | ||
41 | <#opt_params> | ||
42 | Number of optional parameters. If there are no optional parameters, | ||
43 | the optional paramaters section can be skipped or #opt_params can be zero. | ||
44 | Otherwise #opt_params is the number of following arguments. | ||
45 | |||
46 | Example of optional parameters section: | ||
47 | 1 allow_discards | ||
48 | |||
49 | allow_discards | ||
50 | Block discard requests (a.k.a. TRIM) are passed through the crypt device. | ||
51 | The default is to ignore discard requests. | ||
52 | |||
53 | WARNING: Assess the specific security risks carefully before enabling this | ||
54 | option. For example, allowing discards on encrypted devices may lead to | ||
55 | the leak of information about the ciphertext device (filesystem type, | ||
56 | used space etc.) if the discarded blocks can be located easily on the | ||
57 | device later. | ||
58 | |||
40 | Example scripts | 59 | Example scripts |
41 | =============== | 60 | =============== |
42 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk | 61 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk |
diff --git a/Documentation/device-mapper/dm-flakey.txt b/Documentation/device-mapper/dm-flakey.txt index c8efdfd19a65..6ff5c2327227 100644 --- a/Documentation/device-mapper/dm-flakey.txt +++ b/Documentation/device-mapper/dm-flakey.txt | |||
@@ -1,17 +1,53 @@ | |||
1 | dm-flakey | 1 | dm-flakey |
2 | ========= | 2 | ========= |
3 | 3 | ||
4 | This target is the same as the linear target except that it returns I/O | 4 | This target is the same as the linear target except that it exhibits |
5 | errors periodically. It's been found useful in simulating failing | 5 | unreliable behaviour periodically. It's been found useful in simulating |
6 | devices for testing purposes. | 6 | failing devices for testing purposes. |
7 | 7 | ||
8 | Starting from the time the table is loaded, the device is available for | 8 | Starting from the time the table is loaded, the device is available for |
9 | <up interval> seconds, then returns errors for <down interval> seconds, | 9 | <up interval> seconds, then exhibits unreliable behaviour for <down |
10 | and then this cycle repeats. | 10 | interval> seconds, and then this cycle repeats. |
11 | 11 | ||
12 | Parameters: <dev path> <offset> <up interval> <down interval> | 12 | Also, consider using this in combination with the dm-delay target too, |
13 | which can delay reads and writes and/or send them to different | ||
14 | underlying devices. | ||
15 | |||
16 | Table parameters | ||
17 | ---------------- | ||
18 | <dev path> <offset> <up interval> <down interval> \ | ||
19 | [<num_features> [<feature arguments>]] | ||
20 | |||
21 | Mandatory parameters: | ||
13 | <dev path>: Full pathname to the underlying block-device, or a | 22 | <dev path>: Full pathname to the underlying block-device, or a |
14 | "major:minor" device-number. | 23 | "major:minor" device-number. |
15 | <offset>: Starting sector within the device. | 24 | <offset>: Starting sector within the device. |
16 | <up interval>: Number of seconds device is available. | 25 | <up interval>: Number of seconds device is available. |
17 | <down interval>: Number of seconds device returns errors. | 26 | <down interval>: Number of seconds device returns errors. |
27 | |||
28 | Optional feature parameters: | ||
29 | If no feature parameters are present, during the periods of | ||
30 | unreliability, all I/O returns errors. | ||
31 | |||
32 | drop_writes: | ||
33 | All write I/O is silently ignored. | ||
34 | Read I/O is handled correctly. | ||
35 | |||
36 | corrupt_bio_byte <Nth_byte> <direction> <value> <flags>: | ||
37 | During <down interval>, replace <Nth_byte> of the data of | ||
38 | each matching bio with <value>. | ||
39 | |||
40 | <Nth_byte>: The offset of the byte to replace. | ||
41 | Counting starts at 1, to replace the first byte. | ||
42 | <direction>: Either 'r' to corrupt reads or 'w' to corrupt writes. | ||
43 | 'w' is incompatible with drop_writes. | ||
44 | <value>: The value (from 0-255) to write. | ||
45 | <flags>: Perform the replacement only if bio->bi_rw has all the | ||
46 | selected flags set. | ||
47 | |||
48 | Examples: | ||
49 | corrupt_bio_byte 32 r 1 0 | ||
50 | - replaces the 32nd byte of READ bios with the value 1 | ||
51 | |||
52 | corrupt_bio_byte 224 w 0 32 | ||
53 | - replaces the 224th byte of REQ_META (=32) bios with the value 0 | ||
diff --git a/Documentation/device-mapper/dm-raid.txt b/Documentation/device-mapper/dm-raid.txt index 33b6b7071ac8..2a8c11331d2d 100644 --- a/Documentation/device-mapper/dm-raid.txt +++ b/Documentation/device-mapper/dm-raid.txt | |||
@@ -1,70 +1,108 @@ | |||
1 | Device-mapper RAID (dm-raid) is a bridge from DM to MD. It | 1 | dm-raid |
2 | provides a way to use device-mapper interfaces to access the MD RAID | 2 | ------- |
3 | drivers. | ||
4 | 3 | ||
5 | As with all device-mapper targets, the nominal public interfaces are the | 4 | The device-mapper RAID (dm-raid) target provides a bridge from DM to MD. |
6 | constructor (CTR) tables and the status outputs (both STATUSTYPE_INFO | 5 | It allows the MD RAID drivers to be accessed using a device-mapper |
7 | and STATUSTYPE_TABLE). The CTR table looks like the following: | 6 | interface. |
8 | 7 | ||
9 | 1: <s> <l> raid \ | 8 | The target is named "raid" and it accepts the following parameters: |
10 | 2: <raid_type> <#raid_params> <raid_params> \ | 9 | |
11 | 3: <#raid_devs> <meta_dev1> <dev1> .. <meta_devN> <devN> | 10 | <raid_type> <#raid_params> <raid_params> \ |
12 | 11 | <#raid_devs> <metadata_dev0> <dev0> [.. <metadata_devN> <devN>] | |
13 | Line 1 contains the standard first three arguments to any device-mapper | 12 | |
14 | target - the start, length, and target type fields. The target type in | 13 | <raid_type>: |
15 | this case is "raid". | 14 | raid1 RAID1 mirroring |
16 | 15 | raid4 RAID4 dedicated parity disk | |
17 | Line 2 contains the arguments that define the particular raid | 16 | raid5_la RAID5 left asymmetric |
18 | type/personality/level, the required arguments for that raid type, and | 17 | - rotating parity 0 with data continuation |
19 | any optional arguments. Possible raid types include: raid4, raid5_la, | 18 | raid5_ra RAID5 right asymmetric |
20 | raid5_ls, raid5_rs, raid6_zr, raid6_nr, and raid6_nc. (raid1 is | 19 | - rotating parity N with data continuation |
21 | planned for the future.) The list of required and optional parameters | 20 | raid5_ls RAID5 left symmetric |
22 | is the same for all the current raid types. The required parameters are | 21 | - rotating parity 0 with data restart |
23 | positional, while the optional parameters are given as key/value pairs. | 22 | raid5_rs RAID5 right symmetric |
24 | The possible parameters are as follows: | 23 | - rotating parity N with data restart |
25 | <chunk_size> Chunk size in sectors. | 24 | raid6_zr RAID6 zero restart |
26 | [[no]sync] Force/Prevent RAID initialization | 25 | - rotating parity zero (left-to-right) with data restart |
27 | [rebuild <idx>] Rebuild the drive indicated by the index | 26 | raid6_nr RAID6 N restart |
28 | [daemon_sleep <ms>] Time between bitmap daemon work to clear bits | 27 | - rotating parity N (right-to-left) with data restart |
29 | [min_recovery_rate <kB/sec/disk>] Throttle RAID initialization | 28 | raid6_nc RAID6 N continue |
30 | [max_recovery_rate <kB/sec/disk>] Throttle RAID initialization | 29 | - rotating parity N (right-to-left) with data continuation |
31 | [max_write_behind <sectors>] See '-write-behind=' (man mdadm) | 30 | |
32 | [stripe_cache <sectors>] Stripe cache size for higher RAIDs | 31 | Refererence: Chapter 4 of |
33 | 32 | http://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf | |
34 | Line 3 contains the list of devices that compose the array in | 33 | |
35 | metadata/data device pairs. If the metadata is stored separately, a '-' | 34 | <#raid_params>: The number of parameters that follow. |
36 | is given for the metadata device position. If a drive has failed or is | 35 | |
37 | missing at creation time, a '-' can be given for both the metadata and | 36 | <raid_params> consists of |
38 | data drives for a given position. | 37 | Mandatory parameters: |
39 | 38 | <chunk_size>: Chunk size in sectors. This parameter is often known as | |
40 | NB. Currently all metadata devices must be specified as '-'. | 39 | "stripe size". It is the only mandatory parameter and |
41 | 40 | is placed first. | |
42 | Examples: | 41 | |
43 | # RAID4 - 4 data drives, 1 parity | 42 | followed by optional parameters (in any order): |
43 | [sync|nosync] Force or prevent RAID initialization. | ||
44 | |||
45 | [rebuild <idx>] Rebuild drive number idx (first drive is 0). | ||
46 | |||
47 | [daemon_sleep <ms>] | ||
48 | Interval between runs of the bitmap daemon that | ||
49 | clear bits. A longer interval means less bitmap I/O but | ||
50 | resyncing after a failure is likely to take longer. | ||
51 | |||
52 | [min_recovery_rate <kB/sec/disk>] Throttle RAID initialization | ||
53 | [max_recovery_rate <kB/sec/disk>] Throttle RAID initialization | ||
54 | [write_mostly <idx>] Drive index is write-mostly | ||
55 | [max_write_behind <sectors>] See '-write-behind=' (man mdadm) | ||
56 | [stripe_cache <sectors>] Stripe cache size (higher RAIDs only) | ||
57 | [region_size <sectors>] | ||
58 | The region_size multiplied by the number of regions is the | ||
59 | logical size of the array. The bitmap records the device | ||
60 | synchronisation state for each region. | ||
61 | |||
62 | <#raid_devs>: The number of devices composing the array. | ||
63 | Each device consists of two entries. The first is the device | ||
64 | containing the metadata (if any); the second is the one containing the | ||
65 | data. | ||
66 | |||
67 | If a drive has failed or is missing at creation time, a '-' can be | ||
68 | given for both the metadata and data drives for a given position. | ||
69 | |||
70 | |||
71 | Example tables | ||
72 | -------------- | ||
73 | # RAID4 - 4 data drives, 1 parity (no metadata devices) | ||
44 | # No metadata devices specified to hold superblock/bitmap info | 74 | # No metadata devices specified to hold superblock/bitmap info |
45 | # Chunk size of 1MiB | 75 | # Chunk size of 1MiB |
46 | # (Lines separated for easy reading) | 76 | # (Lines separated for easy reading) |
77 | |||
47 | 0 1960893648 raid \ | 78 | 0 1960893648 raid \ |
48 | raid4 1 2048 \ | 79 | raid4 1 2048 \ |
49 | 5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81 | 80 | 5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81 |
50 | 81 | ||
51 | # RAID4 - 4 data drives, 1 parity (no metadata devices) | 82 | # RAID4 - 4 data drives, 1 parity (with metadata devices) |
52 | # Chunk size of 1MiB, force RAID initialization, | 83 | # Chunk size of 1MiB, force RAID initialization, |
53 | # min recovery rate at 20 kiB/sec/disk | 84 | # min recovery rate at 20 kiB/sec/disk |
85 | |||
54 | 0 1960893648 raid \ | 86 | 0 1960893648 raid \ |
55 | raid4 4 2048 min_recovery_rate 20 sync\ | 87 | raid4 4 2048 sync min_recovery_rate 20 \ |
56 | 5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81 | 88 | 5 8:17 8:18 8:33 8:34 8:49 8:50 8:65 8:66 8:81 8:82 |
57 | 89 | ||
58 | Performing a 'dmsetup table' should display the CTR table used to | 90 | 'dmsetup table' displays the table used to construct the mapping. |
59 | construct the mapping (with possible reordering of optional | 91 | The optional parameters are always printed in the order listed |
60 | parameters). | 92 | above with "sync" or "nosync" always output ahead of the other |
93 | arguments, regardless of the order used when originally loading the table. | ||
94 | Arguments that can be repeated are ordered by value. | ||
61 | 95 | ||
62 | Performing a 'dmsetup status' will yield information on the state and | 96 | 'dmsetup status' yields information on the state and health of the |
63 | health of the array. The output is as follows: | 97 | array. |
98 | The output is as follows: | ||
64 | 1: <s> <l> raid \ | 99 | 1: <s> <l> raid \ |
65 | 2: <raid_type> <#devices> <1 health char for each dev> <resync_ratio> | 100 | 2: <raid_type> <#devices> <1 health char for each dev> <resync_ratio> |
66 | 101 | ||
67 | Line 1 is standard DM output. Line 2 is best shown by example: | 102 | Line 1 is the standard output produced by device-mapper. |
103 | Line 2 is produced by the raid target, and best explained by example: | ||
68 | 0 1960893648 raid raid4 5 AAAAA 2/490221568 | 104 | 0 1960893648 raid raid4 5 AAAAA 2/490221568 |
69 | Here we can see the RAID type is raid4, there are 5 devices - all of | 105 | Here we can see the RAID type is raid4, there are 5 devices - all of |
70 | which are 'A'live, and the array is 2/490221568 complete with recovery. | 106 | which are 'A'live, and the array is 2/490221568 complete with recovery. |
107 | Faulty or missing devices are marked 'D'. Devices that are out-of-sync | ||
108 | are marked 'a'. | ||
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards new file mode 100644 index 000000000000..91f26148af79 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/arm-boards | |||
@@ -0,0 +1,20 @@ | |||
1 | ARM Versatile Application and Platform Baseboards | ||
2 | ------------------------------------------------- | ||
3 | ARM's development hardware platform with connectors for customizable | ||
4 | core tiles. The hardware configuration of the Versatile boards is | ||
5 | highly customizable. | ||
6 | |||
7 | Required properties (in root node): | ||
8 | compatible = "arm,versatile-ab"; /* Application baseboard */ | ||
9 | compatible = "arm,versatile-pb"; /* Platform baseboard */ | ||
10 | |||
11 | Interrupt controllers: | ||
12 | - VIC required properties: | ||
13 | compatible = "arm,versatile-vic"; | ||
14 | interrupt-controller; | ||
15 | #interrupt-cells = <1>; | ||
16 | |||
17 | - SIC required properties: | ||
18 | compatible = "arm,versatile-sic"; | ||
19 | interrupt-controller; | ||
20 | #interrupt-cells = <1>; | ||
diff --git a/Documentation/devicetree/bindings/arm/sirf.txt b/Documentation/devicetree/bindings/arm/sirf.txt new file mode 100644 index 000000000000..6b07f65b32de --- /dev/null +++ b/Documentation/devicetree/bindings/arm/sirf.txt | |||
@@ -0,0 +1,3 @@ | |||
1 | prima2 "cb" evalutation board | ||
2 | Required root node properties: | ||
3 | - compatible = "sirf,prima2-cb", "sirf,prima2"; | ||
diff --git a/Documentation/devicetree/bindings/arm/xilinx.txt b/Documentation/devicetree/bindings/arm/xilinx.txt new file mode 100644 index 000000000000..6f1ed830b4f7 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/xilinx.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Xilinx Zynq EP107 Emulation Platform board | ||
2 | |||
3 | This board is an emulation platform for the Zynq product which is | ||
4 | based on an ARM Cortex A9 processor. | ||
5 | |||
6 | Required root node properties: | ||
7 | - compatible = "xlnx,zynq-ep107"; | ||
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt new file mode 100644 index 000000000000..d1e3f443e205 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,<chip>-sdma" | ||
5 | - reg : Should contain SDMA registers location and length | ||
6 | - interrupts : Should contain SDMA interrupt | ||
7 | - fsl,sdma-ram-script-name : Should contain the full path of SDMA RAM | ||
8 | scripts firmware | ||
9 | |||
10 | Examples: | ||
11 | |||
12 | sdma@83fb0000 { | ||
13 | compatible = "fsl,imx51-sdma", "fsl,imx35-sdma"; | ||
14 | reg = <0x83fb0000 0x4000>; | ||
15 | interrupts = <6>; | ||
16 | fsl,sdma-ram-script-name = "sdma-imx51.bin"; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio_keys.txt b/Documentation/devicetree/bindings/gpio/gpio_keys.txt new file mode 100644 index 000000000000..5c2c02140a62 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio_keys.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | Device-Tree bindings for input/gpio_keys.c keyboard driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible = "gpio-keys"; | ||
5 | |||
6 | Optional properties: | ||
7 | - autorepeat: Boolean, Enable auto repeat feature of Linux input | ||
8 | subsystem. | ||
9 | |||
10 | Each button (key) is represented as a sub-node of "gpio-keys": | ||
11 | Subnode properties: | ||
12 | |||
13 | - gpios: OF device-tree gpio specification. | ||
14 | - label: Descriptive name of the key. | ||
15 | - linux,code: Keycode to emit. | ||
16 | |||
17 | Optional subnode-properties: | ||
18 | - linux,input-type: Specify event type this button/key generates. | ||
19 | If not specified defaults to <1> == EV_KEY. | ||
20 | - debounce-interval: Debouncing interval time in milliseconds. | ||
21 | If not specified defaults to 5. | ||
22 | - gpio-key,wakeup: Boolean, button can wake-up the system. | ||
23 | |||
24 | Example nodes: | ||
25 | |||
26 | gpio_keys { | ||
27 | compatible = "gpio-keys"; | ||
28 | #address-cells = <1>; | ||
29 | #size-cells = <0>; | ||
30 | autorepeat; | ||
31 | button@21 { | ||
32 | label = "GPIO Key UP"; | ||
33 | linux,code = <103>; | ||
34 | gpios = <&gpio1 0 1>; | ||
35 | }; | ||
36 | ... | ||
diff --git a/Documentation/devicetree/bindings/i2c/arm-versatile.txt b/Documentation/devicetree/bindings/i2c/arm-versatile.txt new file mode 100644 index 000000000000..361d31c51b6f --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/arm-versatile.txt | |||
@@ -0,0 +1,10 @@ | |||
1 | i2c Controller on ARM Versatile platform: | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Must be "arm,versatile-i2c"; | ||
5 | - reg | ||
6 | - #address-cells = <1>; | ||
7 | - #size-cells = <0>; | ||
8 | |||
9 | Optional properties: | ||
10 | - Child nodes conforming to i2c bus binding | ||
diff --git a/Documentation/devicetree/bindings/input/fsl-mma8450.txt b/Documentation/devicetree/bindings/input/fsl-mma8450.txt new file mode 100644 index 000000000000..a00c94ccbdee --- /dev/null +++ b/Documentation/devicetree/bindings/input/fsl-mma8450.txt | |||
@@ -0,0 +1,11 @@ | |||
1 | * Freescale MMA8450 3-Axis Accelerometer | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "fsl,mma8450". | ||
5 | |||
6 | Example: | ||
7 | |||
8 | accelerometer: mma8450@1c { | ||
9 | compatible = "fsl,mma8450"; | ||
10 | reg = <0x1c>; | ||
11 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt new file mode 100644 index 000000000000..ab22fe6e73ab --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | * Freescale Enhanced Secure Digital Host Controller (eSDHC) for i.MX | ||
2 | |||
3 | The Enhanced Secure Digital Host Controller on Freescale i.MX family | ||
4 | provides an interface for MMC, SD, and SDIO types of memory cards. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : Should be "fsl,<chip>-esdhc" | ||
8 | - reg : Should contain eSDHC registers location and length | ||
9 | - interrupts : Should contain eSDHC interrupt | ||
10 | |||
11 | Optional properties: | ||
12 | - fsl,card-wired : Indicate the card is wired to host permanently | ||
13 | - fsl,cd-internal : Indicate to use controller internal card detection | ||
14 | - fsl,wp-internal : Indicate to use controller internal write protection | ||
15 | - cd-gpios : Specify GPIOs for card detection | ||
16 | - wp-gpios : Specify GPIOs for write protection | ||
17 | |||
18 | Examples: | ||
19 | |||
20 | esdhc@70004000 { | ||
21 | compatible = "fsl,imx51-esdhc"; | ||
22 | reg = <0x70004000 0x4000>; | ||
23 | interrupts = <1>; | ||
24 | fsl,cd-internal; | ||
25 | fsl,wp-internal; | ||
26 | }; | ||
27 | |||
28 | esdhc@70008000 { | ||
29 | compatible = "fsl,imx51-esdhc"; | ||
30 | reg = <0x70008000 0x4000>; | ||
31 | interrupts = <2>; | ||
32 | cd-gpios = <&gpio0 6 0>; /* GPIO1_6 */ | ||
33 | wp-gpios = <&gpio0 5 0>; /* GPIO1_5 */ | ||
34 | }; | ||
diff --git a/Documentation/devicetree/bindings/mtd/arm-versatile.txt b/Documentation/devicetree/bindings/mtd/arm-versatile.txt new file mode 100644 index 000000000000..476845db94d0 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/arm-versatile.txt | |||
@@ -0,0 +1,8 @@ | |||
1 | Flash device on ARM Versatile board | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : must be "arm,versatile-flash"; | ||
5 | - bank-width : width in bytes of flash interface. | ||
6 | |||
7 | Optional properties: | ||
8 | - Subnode partition map from mtd flash binding | ||
diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt new file mode 100644 index 000000000000..de439517dff0 --- /dev/null +++ b/Documentation/devicetree/bindings/net/fsl-fec.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | * Freescale Fast Ethernet Controller (FEC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,<soc>-fec" | ||
5 | - reg : Address and length of the register set for the device | ||
6 | - interrupts : Should contain fec interrupt | ||
7 | - phy-mode : String, operation mode of the PHY interface. | ||
8 | Supported values are: "mii", "gmii", "sgmii", "tbi", "rmii", | ||
9 | "rgmii", "rgmii-id", "rgmii-rxid", "rgmii-txid", "rtbi", "smii". | ||
10 | - phy-reset-gpios : Should specify the gpio for phy reset | ||
11 | |||
12 | Optional properties: | ||
13 | - local-mac-address : 6 bytes, mac address | ||
14 | |||
15 | Example: | ||
16 | |||
17 | fec@83fec000 { | ||
18 | compatible = "fsl,imx51-fec", "fsl,imx27-fec"; | ||
19 | reg = <0x83fec000 0x4000>; | ||
20 | interrupts = <87>; | ||
21 | phy-mode = "mii"; | ||
22 | phy-reset-gpios = <&gpio1 14 0>; /* GPIO2_14 */ | ||
23 | local-mac-address = [00 04 9F 01 1B B9]; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/smsc-lan91c111.txt b/Documentation/devicetree/bindings/net/smsc-lan91c111.txt new file mode 100644 index 000000000000..953049b4248a --- /dev/null +++ b/Documentation/devicetree/bindings/net/smsc-lan91c111.txt | |||
@@ -0,0 +1,10 @@ | |||
1 | SMSC LAN91c111 Ethernet mac | ||
2 | |||
3 | Required properties: | ||
4 | - compatible = "smsc,lan91c111"; | ||
5 | - reg : physical address and size of registers | ||
6 | - interrupts : interrupt connection | ||
7 | |||
8 | Optional properties: | ||
9 | - phy-device : phandle to Ethernet phy | ||
10 | - local-mac-address : Ethernet mac address to use | ||
diff --git a/Documentation/devicetree/bindings/rtc/olpc-xo1-rtc.txt b/Documentation/devicetree/bindings/rtc/olpc-xo1-rtc.txt new file mode 100644 index 000000000000..a2891ceb6344 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/olpc-xo1-rtc.txt | |||
@@ -0,0 +1,5 @@ | |||
1 | OLPC XO-1 RTC | ||
2 | ~~~~~~~~~~~~~ | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : "olpc,xo1-rtc" | ||
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt new file mode 100644 index 000000000000..a9c0406280e8 --- /dev/null +++ b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,<soc>-uart" | ||
5 | - reg : Address and length of the register set for the device | ||
6 | - interrupts : Should contain uart interrupt | ||
7 | |||
8 | Optional properties: | ||
9 | - fsl,uart-has-rtscts : Indicate the uart has rts and cts | ||
10 | - fsl,irda-mode : Indicate the uart supports irda mode | ||
11 | |||
12 | Example: | ||
13 | |||
14 | uart@73fbc000 { | ||
15 | compatible = "fsl,imx51-uart", "fsl,imx21-uart"; | ||
16 | reg = <0x73fbc000 0x4000>; | ||
17 | interrupts = <31>; | ||
18 | fsl,uart-has-rtscts; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt b/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt new file mode 100644 index 000000000000..2144af1a5264 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | * Freescale i.MX Watchdog Timer (WDT) Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,<soc>-wdt" | ||
5 | - reg : Should contain WDT registers location and length | ||
6 | - interrupts : Should contain WDT interrupt | ||
7 | |||
8 | Examples: | ||
9 | |||
10 | wdt@73f98000 { | ||
11 | compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; | ||
12 | reg = <0x73f98000 0x4000>; | ||
13 | interrupts = <58>; | ||
14 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt new file mode 100644 index 000000000000..79ead8263ae4 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt | |||
@@ -0,0 +1,11 @@ | |||
1 | * Samsung's Watchdog Timer Controller | ||
2 | |||
3 | The Samsung's Watchdog controller is used for resuming system operation | ||
4 | after a preset amount of time during which the WDT reset event has not | ||
5 | occured. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible : should be "samsung,s3c2410-wdt" | ||
9 | - reg : base physical address of the controller and length of memory mapped | ||
10 | region. | ||
11 | - interrupts : interrupt number to the cpu. | ||
diff --git a/Documentation/dmaengine.txt b/Documentation/dmaengine.txt index 5a0cb1ef6164..94b7e0f96b38 100644 --- a/Documentation/dmaengine.txt +++ b/Documentation/dmaengine.txt | |||
@@ -10,87 +10,181 @@ NOTE: For DMA Engine usage in async_tx please see: | |||
10 | Below is a guide to device driver writers on how to use the Slave-DMA API of the | 10 | Below is a guide to device driver writers on how to use the Slave-DMA API of the |
11 | DMA Engine. This is applicable only for slave DMA usage only. | 11 | DMA Engine. This is applicable only for slave DMA usage only. |
12 | 12 | ||
13 | The slave DMA usage consists of following steps | 13 | The slave DMA usage consists of following steps: |
14 | 1. Allocate a DMA slave channel | 14 | 1. Allocate a DMA slave channel |
15 | 2. Set slave and controller specific parameters | 15 | 2. Set slave and controller specific parameters |
16 | 3. Get a descriptor for transaction | 16 | 3. Get a descriptor for transaction |
17 | 4. Submit the transaction and wait for callback notification | 17 | 4. Submit the transaction |
18 | 5. Issue pending requests and wait for callback notification | ||
18 | 19 | ||
19 | 1. Allocate a DMA slave channel | 20 | 1. Allocate a DMA slave channel |
20 | Channel allocation is slightly different in the slave DMA context, client | 21 | |
21 | drivers typically need a channel from a particular DMA controller only and even | 22 | Channel allocation is slightly different in the slave DMA context, |
22 | in some cases a specific channel is desired. To request a channel | 23 | client drivers typically need a channel from a particular DMA |
23 | dma_request_channel() API is used. | 24 | controller only and even in some cases a specific channel is desired. |
24 | 25 | To request a channel dma_request_channel() API is used. | |
25 | Interface: | 26 | |
26 | struct dma_chan *dma_request_channel(dma_cap_mask_t mask, | 27 | Interface: |
27 | dma_filter_fn filter_fn, | 28 | struct dma_chan *dma_request_channel(dma_cap_mask_t mask, |
28 | void *filter_param); | 29 | dma_filter_fn filter_fn, |
29 | where dma_filter_fn is defined as: | 30 | void *filter_param); |
30 | typedef bool (*dma_filter_fn)(struct dma_chan *chan, void *filter_param); | 31 | where dma_filter_fn is defined as: |
31 | 32 | typedef bool (*dma_filter_fn)(struct dma_chan *chan, void *filter_param); | |
32 | When the optional 'filter_fn' parameter is set to NULL dma_request_channel | 33 | |
33 | simply returns the first channel that satisfies the capability mask. Otherwise, | 34 | The 'filter_fn' parameter is optional, but highly recommended for |
34 | when the mask parameter is insufficient for specifying the necessary channel, | 35 | slave and cyclic channels as they typically need to obtain a specific |
35 | the filter_fn routine can be used to disposition the available channels in the | 36 | DMA channel. |
36 | system. The filter_fn routine is called once for each free channel in the | 37 | |
37 | system. Upon seeing a suitable channel filter_fn returns DMA_ACK which flags | 38 | When the optional 'filter_fn' parameter is NULL, dma_request_channel() |
38 | that channel to be the return value from dma_request_channel. A channel | 39 | simply returns the first channel that satisfies the capability mask. |
39 | allocated via this interface is exclusive to the caller, until | 40 | |
40 | dma_release_channel() is called. | 41 | Otherwise, the 'filter_fn' routine will be called once for each free |
42 | channel which has a capability in 'mask'. 'filter_fn' is expected to | ||
43 | return 'true' when the desired DMA channel is found. | ||
44 | |||
45 | A channel allocated via this interface is exclusive to the caller, | ||
46 | until dma_release_channel() is called. | ||
41 | 47 | ||
42 | 2. Set slave and controller specific parameters | 48 | 2. Set slave and controller specific parameters |
43 | Next step is always to pass some specific information to the DMA driver. Most of | 49 | |
44 | the generic information which a slave DMA can use is in struct dma_slave_config. | 50 | Next step is always to pass some specific information to the DMA |
45 | It allows the clients to specify DMA direction, DMA addresses, bus widths, DMA | 51 | driver. Most of the generic information which a slave DMA can use |
46 | burst lengths etc. If some DMA controllers have more parameters to be sent then | 52 | is in struct dma_slave_config. This allows the clients to specify |
47 | they should try to embed struct dma_slave_config in their controller specific | 53 | DMA direction, DMA addresses, bus widths, DMA burst lengths etc |
48 | structure. That gives flexibility to client to pass more parameters, if | 54 | for the peripheral. |
49 | required. | 55 | |
50 | 56 | If some DMA controllers have more parameters to be sent then they | |
51 | Interface: | 57 | should try to embed struct dma_slave_config in their controller |
52 | int dmaengine_slave_config(struct dma_chan *chan, | 58 | specific structure. That gives flexibility to client to pass more |
53 | struct dma_slave_config *config) | 59 | parameters, if required. |
60 | |||
61 | Interface: | ||
62 | int dmaengine_slave_config(struct dma_chan *chan, | ||
63 | struct dma_slave_config *config) | ||
64 | |||
65 | Please see the dma_slave_config structure definition in dmaengine.h | ||
66 | for a detailed explaination of the struct members. Please note | ||
67 | that the 'direction' member will be going away as it duplicates the | ||
68 | direction given in the prepare call. | ||
54 | 69 | ||
55 | 3. Get a descriptor for transaction | 70 | 3. Get a descriptor for transaction |
56 | For slave usage the various modes of slave transfers supported by the | 71 | |
57 | DMA-engine are: | 72 | For slave usage the various modes of slave transfers supported by the |
58 | slave_sg - DMA a list of scatter gather buffers from/to a peripheral | 73 | DMA-engine are: |
59 | dma_cyclic - Perform a cyclic DMA operation from/to a peripheral till the | 74 | |
75 | slave_sg - DMA a list of scatter gather buffers from/to a peripheral | ||
76 | dma_cyclic - Perform a cyclic DMA operation from/to a peripheral till the | ||
60 | operation is explicitly stopped. | 77 | operation is explicitly stopped. |
61 | The non NULL return of this transfer API represents a "descriptor" for the given | 78 | |
62 | transaction. | 79 | A non-NULL return of this transfer API represents a "descriptor" for |
63 | 80 | the given transaction. | |
64 | Interface: | 81 | |
65 | struct dma_async_tx_descriptor *(*chan->device->device_prep_dma_sg)( | 82 | Interface: |
66 | struct dma_chan *chan, | 83 | struct dma_async_tx_descriptor *(*chan->device->device_prep_slave_sg)( |
67 | struct scatterlist *dst_sg, unsigned int dst_nents, | 84 | struct dma_chan *chan, struct scatterlist *sgl, |
68 | struct scatterlist *src_sg, unsigned int src_nents, | 85 | unsigned int sg_len, enum dma_data_direction direction, |
69 | unsigned long flags); | 86 | unsigned long flags); |
70 | struct dma_async_tx_descriptor *(*chan->device->device_prep_dma_cyclic)( | 87 | |
88 | struct dma_async_tx_descriptor *(*chan->device->device_prep_dma_cyclic)( | ||
71 | struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, | 89 | struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, |
72 | size_t period_len, enum dma_data_direction direction); | 90 | size_t period_len, enum dma_data_direction direction); |
73 | 91 | ||
74 | 4. Submit the transaction and wait for callback notification | 92 | The peripheral driver is expected to have mapped the scatterlist for |
75 | To schedule the transaction to be scheduled by dma device, the "descriptor" | 93 | the DMA operation prior to calling device_prep_slave_sg, and must |
76 | returned in above (3) needs to be submitted. | 94 | keep the scatterlist mapped until the DMA operation has completed. |
77 | To tell the dma driver that a transaction is ready to be serviced, the | 95 | The scatterlist must be mapped using the DMA struct device. So, |
78 | descriptor->submit() callback needs to be invoked. This chains the descriptor to | 96 | normal setup should look like this: |
79 | the pending queue. | 97 | |
80 | The transactions in the pending queue can be activated by calling the | 98 | nr_sg = dma_map_sg(chan->device->dev, sgl, sg_len); |
81 | issue_pending API. If channel is idle then the first transaction in queue is | 99 | if (nr_sg == 0) |
82 | started and subsequent ones queued up. | 100 | /* error */ |
83 | On completion of the DMA operation the next in queue is submitted and a tasklet | 101 | |
84 | triggered. The tasklet would then call the client driver completion callback | 102 | desc = chan->device->device_prep_slave_sg(chan, sgl, nr_sg, |
85 | routine for notification, if set. | 103 | direction, flags); |
86 | Interface: | 104 | |
87 | void dma_async_issue_pending(struct dma_chan *chan); | 105 | Once a descriptor has been obtained, the callback information can be |
88 | 106 | added and the descriptor must then be submitted. Some DMA engine | |
89 | ============================================================================== | 107 | drivers may hold a spinlock between a successful preparation and |
90 | 108 | submission so it is important that these two operations are closely | |
91 | Additional usage notes for dma driver writers | 109 | paired. |
92 | 1/ Although DMA engine specifies that completion callback routines cannot submit | 110 | |
93 | any new operations, but typically for slave DMA subsequent transaction may not | 111 | Note: |
94 | be available for submit prior to callback routine being called. This requirement | 112 | Although the async_tx API specifies that completion callback |
95 | is not a requirement for DMA-slave devices. But they should take care to drop | 113 | routines cannot submit any new operations, this is not the |
96 | the spin-lock they might be holding before calling the callback routine | 114 | case for slave/cyclic DMA. |
115 | |||
116 | For slave DMA, the subsequent transaction may not be available | ||
117 | for submission prior to callback function being invoked, so | ||
118 | slave DMA callbacks are permitted to prepare and submit a new | ||
119 | transaction. | ||
120 | |||
121 | For cyclic DMA, a callback function may wish to terminate the | ||
122 | DMA via dmaengine_terminate_all(). | ||
123 | |||
124 | Therefore, it is important that DMA engine drivers drop any | ||
125 | locks before calling the callback function which may cause a | ||
126 | deadlock. | ||
127 | |||
128 | Note that callbacks will always be invoked from the DMA | ||
129 | engines tasklet, never from interrupt context. | ||
130 | |||
131 | 4. Submit the transaction | ||
132 | |||
133 | Once the descriptor has been prepared and the callback information | ||
134 | added, it must be placed on the DMA engine drivers pending queue. | ||
135 | |||
136 | Interface: | ||
137 | dma_cookie_t dmaengine_submit(struct dma_async_tx_descriptor *desc) | ||
138 | |||
139 | This returns a cookie can be used to check the progress of DMA engine | ||
140 | activity via other DMA engine calls not covered in this document. | ||
141 | |||
142 | dmaengine_submit() will not start the DMA operation, it merely adds | ||
143 | it to the pending queue. For this, see step 5, dma_async_issue_pending. | ||
144 | |||
145 | 5. Issue pending DMA requests and wait for callback notification | ||
146 | |||
147 | The transactions in the pending queue can be activated by calling the | ||
148 | issue_pending API. If channel is idle then the first transaction in | ||
149 | queue is started and subsequent ones queued up. | ||
150 | |||
151 | On completion of each DMA operation, the next in queue is started and | ||
152 | a tasklet triggered. The tasklet will then call the client driver | ||
153 | completion callback routine for notification, if set. | ||
154 | |||
155 | Interface: | ||
156 | void dma_async_issue_pending(struct dma_chan *chan); | ||
157 | |||
158 | Further APIs: | ||
159 | |||
160 | 1. int dmaengine_terminate_all(struct dma_chan *chan) | ||
161 | |||
162 | This causes all activity for the DMA channel to be stopped, and may | ||
163 | discard data in the DMA FIFO which hasn't been fully transferred. | ||
164 | No callback functions will be called for any incomplete transfers. | ||
165 | |||
166 | 2. int dmaengine_pause(struct dma_chan *chan) | ||
167 | |||
168 | This pauses activity on the DMA channel without data loss. | ||
169 | |||
170 | 3. int dmaengine_resume(struct dma_chan *chan) | ||
171 | |||
172 | Resume a previously paused DMA channel. It is invalid to resume a | ||
173 | channel which is not currently paused. | ||
174 | |||
175 | 4. enum dma_status dma_async_is_tx_complete(struct dma_chan *chan, | ||
176 | dma_cookie_t cookie, dma_cookie_t *last, dma_cookie_t *used) | ||
177 | |||
178 | This can be used to check the status of the channel. Please see | ||
179 | the documentation in include/linux/dmaengine.h for a more complete | ||
180 | description of this API. | ||
181 | |||
182 | This can be used in conjunction with dma_async_is_complete() and | ||
183 | the cookie returned from 'descriptor->submit()' to check for | ||
184 | completion of a specific DMA transaction. | ||
185 | |||
186 | Note: | ||
187 | Not all DMA engine drivers can return reliable information for | ||
188 | a running DMA channel. It is recommended that DMA engine users | ||
189 | pause or stop (via dmaengine_terminate_all) the channel before | ||
190 | using this API. | ||
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index 3348d313fbe0..c466f5831f15 100644..100755 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware | |||
@@ -27,7 +27,7 @@ use IO::Handle; | |||
27 | "or51211", "or51132_qam", "or51132_vsb", "bluebird", | 27 | "or51211", "or51132_qam", "or51132_vsb", "bluebird", |
28 | "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", | 28 | "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", |
29 | "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", | 29 | "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", |
30 | "lme2510c_s7395_old"); | 30 | "lme2510c_s7395_old", "drxk", "drxk_terratec_h5"); |
31 | 31 | ||
32 | # Check args | 32 | # Check args |
33 | syntax() if (scalar(@ARGV) != 1); | 33 | syntax() if (scalar(@ARGV) != 1); |
@@ -634,6 +634,37 @@ sub lme2510c_s7395_old { | |||
634 | $outfile; | 634 | $outfile; |
635 | } | 635 | } |
636 | 636 | ||
637 | sub drxk { | ||
638 | my $url = "http://l4m-daten.de/files/"; | ||
639 | my $zipfile = "DDTuner.zip"; | ||
640 | my $hash = "f5a37b9a20a3534997997c0b1382a3e5"; | ||
641 | my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); | ||
642 | my $drvfile = "DDTuner.sys"; | ||
643 | my $fwfile = "drxk_a3.mc"; | ||
644 | |||
645 | checkstandard(); | ||
646 | |||
647 | wgetfile($zipfile, $url . $zipfile); | ||
648 | verify($zipfile, $hash); | ||
649 | unzip($zipfile, $tmpdir); | ||
650 | extract("$tmpdir/$drvfile", 0x14dd8, 15634, "$fwfile"); | ||
651 | |||
652 | "$fwfile" | ||
653 | } | ||
654 | |||
655 | sub drxk_terratec_h5 { | ||
656 | my $url = "http://www.linuxtv.org/downloads/firmware/"; | ||
657 | my $hash = "19000dada8e2741162ccc50cc91fa7f1"; | ||
658 | my $fwfile = "dvb-usb-terratec-h5-drxk.fw"; | ||
659 | |||
660 | checkstandard(); | ||
661 | |||
662 | wgetfile($fwfile, $url . $fwfile); | ||
663 | verify($fwfile, $hash); | ||
664 | |||
665 | "$fwfile" | ||
666 | } | ||
667 | |||
637 | # --------------------------------------------------------------- | 668 | # --------------------------------------------------------------- |
638 | # Utilities | 669 | # Utilities |
639 | 670 | ||
diff --git a/Documentation/email-clients.txt b/Documentation/email-clients.txt index a0b58e29f911..860c29a472ad 100644 --- a/Documentation/email-clients.txt +++ b/Documentation/email-clients.txt | |||
@@ -199,18 +199,16 @@ to coerce it into behaving. | |||
199 | 199 | ||
200 | To beat some sense out of the internal editor, do this: | 200 | To beat some sense out of the internal editor, do this: |
201 | 201 | ||
202 | - Under account settings, composition and addressing, uncheck "Compose | ||
203 | messages in HTML format". | ||
204 | |||
205 | - Edit your Thunderbird config settings so that it won't use format=flowed. | 202 | - Edit your Thunderbird config settings so that it won't use format=flowed. |
206 | Go to "edit->preferences->advanced->config editor" to bring up the | 203 | Go to "edit->preferences->advanced->config editor" to bring up the |
207 | thunderbird's registry editor, and set "mailnews.send_plaintext_flowed" to | 204 | thunderbird's registry editor, and set "mailnews.send_plaintext_flowed" to |
208 | "false". | 205 | "false". |
209 | 206 | ||
210 | - Enable "preformat" mode: Shft-click on the Write icon to bring up the HTML | 207 | - Disable HTML Format: Set "mail.identity.id1.compose_html" to "false". |
211 | composer, select "Preformat" from the drop-down box just under the subject | 208 | |
212 | line, then close the message without saving. (This setting also applies to | 209 | - Enable "preformat" mode: Set "editor.quotesPreformatted" to "true". |
213 | the text composer, but the only control for it is in the HTML composer.) | 210 | |
211 | - Enable UTF8: Set "prefs.converted-to-utf8" to "true". | ||
214 | 212 | ||
215 | - Install the "toggle wordwrap" extension. Download the file from: | 213 | - Install the "toggle wordwrap" extension. Download the file from: |
216 | https://addons.mozilla.org/thunderbird/addon/2351/ | 214 | https://addons.mozilla.org/thunderbird/addon/2351/ |
diff --git a/Documentation/fault-injection/fault-injection.txt b/Documentation/fault-injection/fault-injection.txt index 7be15e44d481..82a5d250d75e 100644 --- a/Documentation/fault-injection/fault-injection.txt +++ b/Documentation/fault-injection/fault-injection.txt | |||
@@ -143,8 +143,7 @@ o provide a way to configure fault attributes | |||
143 | failslab, fail_page_alloc, and fail_make_request use this way. | 143 | failslab, fail_page_alloc, and fail_make_request use this way. |
144 | Helper functions: | 144 | Helper functions: |
145 | 145 | ||
146 | init_fault_attr_dentries(entries, attr, name); | 146 | fault_create_debugfs_attr(name, parent, attr); |
147 | void cleanup_fault_attr_dentries(entries); | ||
148 | 147 | ||
149 | - module parameters | 148 | - module parameters |
150 | 149 | ||
diff --git a/Documentation/fb/modedb.txt b/Documentation/fb/modedb.txt index ec4dee75a354..16aa08453911 100644 --- a/Documentation/fb/modedb.txt +++ b/Documentation/fb/modedb.txt | |||
@@ -20,7 +20,7 @@ in a video= option, fbmem considers that to be a global video mode option. | |||
20 | 20 | ||
21 | Valid mode specifiers (mode_option argument): | 21 | Valid mode specifiers (mode_option argument): |
22 | 22 | ||
23 | <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m] | 23 | <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd] |
24 | <name>[-<bpp>][@<refresh>] | 24 | <name>[-<bpp>][@<refresh>] |
25 | 25 | ||
26 | with <xres>, <yres>, <bpp> and <refresh> decimal numbers and <name> a string. | 26 | with <xres>, <yres>, <bpp> and <refresh> decimal numbers and <name> a string. |
@@ -36,6 +36,21 @@ pixels and 1.8% of yres). | |||
36 | 36 | ||
37 | Sample usage: 1024x768M@60m - CVT timing with margins | 37 | Sample usage: 1024x768M@60m - CVT timing with margins |
38 | 38 | ||
39 | DRM drivers also add options to enable or disable outputs: | ||
40 | |||
41 | 'e' will force the display to be enabled, i.e. it will override the detection | ||
42 | if a display is connected. 'D' will force the display to be enabled and use | ||
43 | digital output. This is useful for outputs that have both analog and digital | ||
44 | signals (e.g. HDMI and DVI-I). For other outputs it behaves like 'e'. If 'd' | ||
45 | is specified the output is disabled. | ||
46 | |||
47 | You can additionally specify which output the options matches to. | ||
48 | To force the VGA output to be enabled and drive a specific mode say: | ||
49 | video=VGA-1:1280x1024@60me | ||
50 | |||
51 | Specifying the option multiple times for different ports is possible, e.g.: | ||
52 | video=LVDS-1:d video=HDMI-1:D | ||
53 | |||
39 | ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** | 54 | ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** oOo ***** |
40 | 55 | ||
41 | What is the VESA(TM) Coordinated Video Timings (CVT)? | 56 | What is the VESA(TM) Coordinated Video Timings (CVT)? |
@@ -132,5 +147,5 @@ There may be more modes. | |||
132 | tridentfb - Trident (Cyber)blade chipset frame buffer | 147 | tridentfb - Trident (Cyber)blade chipset frame buffer |
133 | vt8623fb - VIA 8623 frame buffer | 148 | vt8623fb - VIA 8623 frame buffer |
134 | 149 | ||
135 | BTW, only a few drivers use this at the moment. Others are to follow | 150 | BTW, only a few fb drivers use this at the moment. Others are to follow |
136 | (feel free to send patches). | 151 | (feel free to send patches). The DRM drivers also support this. |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index f10014fa1d14..4dc465477665 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -296,15 +296,6 @@ Who: Ravikiran Thirumalai <kiran@scalex86.org> | |||
296 | 296 | ||
297 | --------------------------- | 297 | --------------------------- |
298 | 298 | ||
299 | What: CONFIG_THERMAL_HWMON | ||
300 | When: January 2009 | ||
301 | Why: This option was introduced just to allow older lm-sensors userspace | ||
302 | to keep working over the upgrade to 2.6.26. At the scheduled time of | ||
303 | removal fixed lm-sensors (2.x or 3.x) should be readily available. | ||
304 | Who: Rene Herman <rene.herman@gmail.com> | ||
305 | |||
306 | --------------------------- | ||
307 | |||
308 | What: Code that is now under CONFIG_WIRELESS_EXT_SYSFS | 299 | What: Code that is now under CONFIG_WIRELESS_EXT_SYSFS |
309 | (in net/core/net-sysfs.c) | 300 | (in net/core/net-sysfs.c) |
310 | When: After the only user (hal) has seen a release with the patches | 301 | When: After the only user (hal) has seen a release with the patches |
@@ -460,13 +451,6 @@ Who: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | |||
460 | 451 | ||
461 | ---------------------------- | 452 | ---------------------------- |
462 | 453 | ||
463 | What: DMA_xxBIT_MASK macros | ||
464 | When: Jun 2011 | ||
465 | Why: DMA_xxBIT_MASK macros were replaced with DMA_BIT_MASK() macros. | ||
466 | Who: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | ||
467 | |||
468 | ---------------------------- | ||
469 | |||
470 | What: iwlwifi disable_hw_scan module parameters | 454 | What: iwlwifi disable_hw_scan module parameters |
471 | When: 3.0 | 455 | When: 3.0 |
472 | Why: Hareware scan is the prefer method for iwlwifi devices for | 456 | Why: Hareware scan is the prefer method for iwlwifi devices for |
@@ -534,6 +518,41 @@ Who: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | |||
534 | 518 | ||
535 | ---------------------------- | 519 | ---------------------------- |
536 | 520 | ||
521 | What: Support for driver specific ioctls in the pwc driver (everything | ||
522 | defined in media/pwc-ioctl.h) | ||
523 | When: 3.3 | ||
524 | Why: This stems from the v4l1 era, with v4l2 everything can be done with | ||
525 | standardized v4l2 API calls | ||
526 | Who: Hans de Goede <hdegoede@redhat.com> | ||
527 | |||
528 | ---------------------------- | ||
529 | |||
530 | What: Driver specific sysfs API in the pwc driver | ||
531 | When: 3.3 | ||
532 | Why: Setting pan/tilt should be done with v4l2 controls, like with other | ||
533 | cams. The button is available as a standard input device | ||
534 | Who: Hans de Goede <hdegoede@redhat.com> | ||
535 | |||
536 | ---------------------------- | ||
537 | |||
538 | What: Driver specific use of pixfmt.priv in the pwc driver | ||
539 | When: 3.3 | ||
540 | Why: The .priv field never was intended for this, setting a framerate is | ||
541 | support using the standardized S_PARM ioctl | ||
542 | Who: Hans de Goede <hdegoede@redhat.com> | ||
543 | |||
544 | ---------------------------- | ||
545 | |||
546 | What: Software emulation of arbritary resolutions in the pwc driver | ||
547 | When: 3.3 | ||
548 | Why: The pwc driver claims to support any resolution between 160x120 | ||
549 | and 640x480, but emulates this by simply drawing a black border | ||
550 | around the image. Userspace can draw its own black border if it | ||
551 | really wants one. | ||
552 | Who: Hans de Goede <hdegoede@redhat.com> | ||
553 | |||
554 | ---------------------------- | ||
555 | |||
537 | What: For VIDIOC_S_FREQUENCY the type field must match the device node's type. | 556 | What: For VIDIOC_S_FREQUENCY the type field must match the device node's type. |
538 | If not, return -EINVAL. | 557 | If not, return -EINVAL. |
539 | When: 3.2 | 558 | When: 3.2 |
@@ -562,3 +581,22 @@ Why: This driver has been superseded by g_mass_storage. | |||
562 | Who: Alan Stern <stern@rowland.harvard.edu> | 581 | Who: Alan Stern <stern@rowland.harvard.edu> |
563 | 582 | ||
564 | ---------------------------- | 583 | ---------------------------- |
584 | |||
585 | What: threeg and interface sysfs files in /sys/devices/platform/acer-wmi | ||
586 | When: 2012 | ||
587 | Why: In 3.0, we can now autodetect internal 3G device and already have | ||
588 | the threeg rfkill device. So, we plan to remove threeg sysfs support | ||
589 | for it's no longer necessary. | ||
590 | |||
591 | We also plan to remove interface sysfs file that exposed which ACPI-WMI | ||
592 | interface that was used by acer-wmi driver. It will replaced by | ||
593 | information log when acer-wmi initial. | ||
594 | Who: Lee, Chun-Yi <jlee@novell.com> | ||
595 | |||
596 | ---------------------------- | ||
597 | What: The XFS nodelaylog mount option | ||
598 | When: 3.3 | ||
599 | Why: The delaylog mode that has been the default since 2.6.39 has proven | ||
600 | stable, and the old code is in the way of additional improvements in | ||
601 | the log code. | ||
602 | Who: Christoph Hellwig <hch@lst.de> | ||
diff --git a/Documentation/filesystems/befs.txt b/Documentation/filesystems/befs.txt index 6e49c363938e..da45e6c842b8 100644 --- a/Documentation/filesystems/befs.txt +++ b/Documentation/filesystems/befs.txt | |||
@@ -27,7 +27,7 @@ His original code can still be found at: | |||
27 | Does anyone know of a more current email address for Makoto? He doesn't | 27 | Does anyone know of a more current email address for Makoto? He doesn't |
28 | respond to the address given above... | 28 | respond to the address given above... |
29 | 29 | ||
30 | Current maintainer: Sergey S. Kostyliov <rathamahata@php4.ru> | 30 | This filesystem doesn't have a maintainer. |
31 | 31 | ||
32 | WHAT IS THIS DRIVER? | 32 | WHAT IS THIS DRIVER? |
33 | ================== | 33 | ================== |
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt index 272f80d5f966..22f3a0eda1d2 100644 --- a/Documentation/filesystems/ext3.txt +++ b/Documentation/filesystems/ext3.txt | |||
@@ -147,15 +147,6 @@ grpjquota=<file> during journal replay. They replace the above | |||
147 | package for more details | 147 | package for more details |
148 | (http://sourceforge.net/projects/linuxquota). | 148 | (http://sourceforge.net/projects/linuxquota). |
149 | 149 | ||
150 | bh (*) ext3 associates buffer heads to data pages to | ||
151 | nobh (a) cache disk block mapping information | ||
152 | (b) link pages into transaction to provide | ||
153 | ordering guarantees. | ||
154 | "bh" option forces use of buffer heads. | ||
155 | "nobh" option tries to avoid associating buffer | ||
156 | heads (supported only for "writeback" mode). | ||
157 | |||
158 | |||
159 | Specification | 150 | Specification |
160 | ============= | 151 | ============= |
161 | Ext3 shares all disk implementation with the ext2 filesystem, and adds | 152 | Ext3 shares all disk implementation with the ext2 filesystem, and adds |
@@ -227,5 +218,5 @@ kernel source: <file:fs/ext3/> | |||
227 | programs: http://e2fsprogs.sourceforge.net/ | 218 | programs: http://e2fsprogs.sourceforge.net/ |
228 | http://ext2resize.sourceforge.net | 219 | http://ext2resize.sourceforge.net |
229 | 220 | ||
230 | useful links: http://www.ibm.com/developerworks/library/l-fs7.html | 221 | useful links: http://www.ibm.com/developerworks/library/l-fs7/index.html |
231 | http://www.ibm.com/developerworks/library/l-fs8.html | 222 | http://www.ibm.com/developerworks/library/l-fs8/index.html |
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index 3ae9bc94352a..232a575a0c48 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -68,12 +68,12 @@ Note: More extensive information for getting started with ext4 can be | |||
68 | '-o barriers=[0|1]' mount option for both ext3 and ext4 filesystems | 68 | '-o barriers=[0|1]' mount option for both ext3 and ext4 filesystems |
69 | for a fair comparison. When tuning ext3 for best benchmark numbers, | 69 | for a fair comparison. When tuning ext3 for best benchmark numbers, |
70 | it is often worthwhile to try changing the data journaling mode; '-o | 70 | it is often worthwhile to try changing the data journaling mode; '-o |
71 | data=writeback,nobh' can be faster for some workloads. (Note | 71 | data=writeback' can be faster for some workloads. (Note however that |
72 | however that running mounted with data=writeback can potentially | 72 | running mounted with data=writeback can potentially leave stale data |
73 | leave stale data exposed in recently written files in case of an | 73 | exposed in recently written files in case of an unclean shutdown, |
74 | unclean shutdown, which could be a security exposure in some | 74 | which could be a security exposure in some situations.) Configuring |
75 | situations.) Configuring the filesystem with a large journal can | 75 | the filesystem with a large journal can also be helpful for |
76 | also be helpful for metadata-intensive workloads. | 76 | metadata-intensive workloads. |
77 | 77 | ||
78 | 2. Features | 78 | 2. Features |
79 | =========== | 79 | =========== |
@@ -272,14 +272,6 @@ grpjquota=<file> during journal replay. They replace the above | |||
272 | package for more details | 272 | package for more details |
273 | (http://sourceforge.net/projects/linuxquota). | 273 | (http://sourceforge.net/projects/linuxquota). |
274 | 274 | ||
275 | bh (*) ext4 associates buffer heads to data pages to | ||
276 | nobh (a) cache disk block mapping information | ||
277 | (b) link pages into transaction to provide | ||
278 | ordering guarantees. | ||
279 | "bh" option forces use of buffer heads. | ||
280 | "nobh" option tries to avoid associating buffer | ||
281 | heads (supported only for "writeback" mode). | ||
282 | |||
283 | stripe=n Number of filesystem blocks that mballoc will try | 275 | stripe=n Number of filesystem blocks that mballoc will try |
284 | to use for allocation size and alignment. For RAID5/6 | 276 | to use for allocation size and alignment. For RAID5/6 |
285 | systems this should be the number of data | 277 | systems this should be the number of data |
@@ -393,8 +385,7 @@ dioread_nolock locking. If the dioread_nolock option is specified | |||
393 | write and convert the extent to initialized after IO | 385 | write and convert the extent to initialized after IO |
394 | completes. This approach allows ext4 code to avoid | 386 | completes. This approach allows ext4 code to avoid |
395 | using inode mutex, which improves scalability on high | 387 | using inode mutex, which improves scalability on high |
396 | speed storages. However this does not work with nobh | 388 | speed storages. However this does not work with |
397 | option and the mount will fail. Nor does it work with | ||
398 | data journaling and dioread_nolock option will be | 389 | data journaling and dioread_nolock option will be |
399 | ignored with kernel warning. Note that dioread_nolock | 390 | ignored with kernel warning. Note that dioread_nolock |
400 | code path is only used for extent-based files. | 391 | code path is only used for extent-based files. |
diff --git a/Documentation/filesystems/nfs/Exporting b/Documentation/filesystems/nfs/Exporting index 87019d2b5981..09994c247289 100644 --- a/Documentation/filesystems/nfs/Exporting +++ b/Documentation/filesystems/nfs/Exporting | |||
@@ -92,7 +92,14 @@ For a filesystem to be exportable it must: | |||
92 | 1/ provide the filehandle fragment routines described below. | 92 | 1/ provide the filehandle fragment routines described below. |
93 | 2/ make sure that d_splice_alias is used rather than d_add | 93 | 2/ make sure that d_splice_alias is used rather than d_add |
94 | when ->lookup finds an inode for a given parent and name. | 94 | when ->lookup finds an inode for a given parent and name. |
95 | Typically the ->lookup routine will end with a: | 95 | |
96 | If inode is NULL, d_splice_alias(inode, dentry) is eqivalent to | ||
97 | |||
98 | d_add(dentry, inode), NULL | ||
99 | |||
100 | Similarly, d_splice_alias(ERR_PTR(err), dentry) = ERR_PTR(err) | ||
101 | |||
102 | Typically the ->lookup routine will simply end with a: | ||
96 | 103 | ||
97 | return d_splice_alias(inode, dentry); | 104 | return d_splice_alias(inode, dentry); |
98 | } | 105 | } |
diff --git a/Documentation/frv/booting.txt b/Documentation/frv/booting.txt index ace200b7c214..37c4d84a0e57 100644 --- a/Documentation/frv/booting.txt +++ b/Documentation/frv/booting.txt | |||
@@ -106,13 +106,20 @@ separated by spaces: | |||
106 | To use the first on-chip serial port at baud rate 115200, no parity, 8 | 106 | To use the first on-chip serial port at baud rate 115200, no parity, 8 |
107 | bits, and no flow control. | 107 | bits, and no flow control. |
108 | 108 | ||
109 | (*) root=/dev/<xxxx> | 109 | (*) root=<xxxx> |
110 | 110 | ||
111 | This specifies the device upon which the root filesystem resides. For | 111 | This specifies the device upon which the root filesystem resides. It |
112 | example: | 112 | may be specified by major and minor number, device path, or even |
113 | partition uuid, if supported. For example: | ||
113 | 114 | ||
114 | /dev/nfs NFS root filesystem | 115 | /dev/nfs NFS root filesystem |
115 | /dev/mtdblock3 Fourth RedBoot partition on the System Flash | 116 | /dev/mtdblock3 Fourth RedBoot partition on the System Flash |
117 | PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF/PARTNROFF=1 | ||
118 | first partition after the partition with the given UUID | ||
119 | 253:0 Device with major 253 and minor 0 | ||
120 | |||
121 | Authoritative information can be found in | ||
122 | "Documentation/kernel-parameters.txt". | ||
116 | 123 | ||
117 | (*) rw | 124 | (*) rw |
118 | 125 | ||
diff --git a/Documentation/hwmon/adm1275 b/Documentation/hwmon/adm1275 index 6a3a6476cf20..097b3ccc4be7 100644 --- a/Documentation/hwmon/adm1275 +++ b/Documentation/hwmon/adm1275 | |||
@@ -43,8 +43,8 @@ Documentation/hwmon/pmbus for details. | |||
43 | Sysfs entries | 43 | Sysfs entries |
44 | ------------- | 44 | ------------- |
45 | 45 | ||
46 | The following attributes are supported. Limits are read-write; all other | 46 | The following attributes are supported. Limits are read-write, history reset |
47 | attributes are read-only. | 47 | attributes are write-only, all other attributes are read-only. |
48 | 48 | ||
49 | in1_label "vin1" or "vout1" depending on chip variant and | 49 | in1_label "vin1" or "vout1" depending on chip variant and |
50 | configuration. | 50 | configuration. |
@@ -53,8 +53,12 @@ in1_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register. | |||
53 | in1_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. | 53 | in1_max Maximum voltage. From VOUT_OV_WARN_LIMIT register. |
54 | in1_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | 54 | in1_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. |
55 | in1_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 55 | in1_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
56 | in1_highest Historical maximum voltage. | ||
57 | in1_reset_history Write any value to reset history. | ||
56 | 58 | ||
57 | curr1_label "iout1" | 59 | curr1_label "iout1" |
58 | curr1_input Measured current. From READ_IOUT register. | 60 | curr1_input Measured current. From READ_IOUT register. |
59 | curr1_max Maximum current. From IOUT_OC_WARN_LIMIT register. | 61 | curr1_max Maximum current. From IOUT_OC_WARN_LIMIT register. |
60 | curr1_max_alarm Current high alarm. From IOUT_OC_WARN_LIMIT register. | 62 | curr1_max_alarm Current high alarm. From IOUT_OC_WARN_LIMIT register. |
63 | curr1_highest Historical maximum current. | ||
64 | curr1_reset_history Write any value to reset history. | ||
diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp index f85e913a3401..fa8776ab9b18 100644 --- a/Documentation/hwmon/coretemp +++ b/Documentation/hwmon/coretemp | |||
@@ -35,6 +35,13 @@ the Out-Of-Spec bit. Following table summarizes the exported sysfs files: | |||
35 | All Sysfs entries are named with their core_id (represented here by 'X'). | 35 | All Sysfs entries are named with their core_id (represented here by 'X'). |
36 | tempX_input - Core temperature (in millidegrees Celsius). | 36 | tempX_input - Core temperature (in millidegrees Celsius). |
37 | tempX_max - All cooling devices should be turned on (on Core2). | 37 | tempX_max - All cooling devices should be turned on (on Core2). |
38 | Initialized with IA32_THERM_INTERRUPT. When the CPU | ||
39 | temperature reaches this temperature, an interrupt is | ||
40 | generated and tempX_max_alarm is set. | ||
41 | tempX_max_hyst - If the CPU temperature falls below than temperature, | ||
42 | an interrupt is generated and tempX_max_alarm is reset. | ||
43 | tempX_max_alarm - Set if the temperature reaches or exceeds tempX_max. | ||
44 | Reset if the temperature drops to or below tempX_max_hyst. | ||
38 | tempX_crit - Maximum junction temperature (in millidegrees Celsius). | 45 | tempX_crit - Maximum junction temperature (in millidegrees Celsius). |
39 | tempX_crit_alarm - Set when Out-of-spec bit is set, never clears. | 46 | tempX_crit_alarm - Set when Out-of-spec bit is set, never clears. |
40 | Correct CPU operation is no longer guaranteed. | 47 | Correct CPU operation is no longer guaranteed. |
diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066 new file mode 100644 index 000000000000..a21db81c4591 --- /dev/null +++ b/Documentation/hwmon/lm25066 | |||
@@ -0,0 +1,90 @@ | |||
1 | Kernel driver max8688 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * National Semiconductor LM25066 | ||
6 | Prefix: 'lm25066' | ||
7 | Addresses scanned: - | ||
8 | Datasheets: | ||
9 | http://www.national.com/pf/LM/LM25066.html | ||
10 | http://www.national.com/pf/LM/LM25066A.html | ||
11 | * National Semiconductor LM5064 | ||
12 | Prefix: 'lm5064' | ||
13 | Addresses scanned: - | ||
14 | Datasheet: | ||
15 | http://www.national.com/pf/LM/LM5064.html | ||
16 | * National Semiconductor LM5066 | ||
17 | Prefix: 'lm5066' | ||
18 | Addresses scanned: - | ||
19 | Datasheet: | ||
20 | http://www.national.com/pf/LM/LM5066.html | ||
21 | |||
22 | Author: Guenter Roeck <guenter.roeck@ericsson.com> | ||
23 | |||
24 | |||
25 | Description | ||
26 | ----------- | ||
27 | |||
28 | This driver supports hardware montoring for National Semiconductor LM25066, | ||
29 | LM5064, and LM5064 Power Management, Monitoring, Control, and Protection ICs. | ||
30 | |||
31 | The driver is a client driver to the core PMBus driver. Please see | ||
32 | Documentation/hwmon/pmbus for details on PMBus client drivers. | ||
33 | |||
34 | |||
35 | Usage Notes | ||
36 | ----------- | ||
37 | |||
38 | This driver does not auto-detect devices. You will have to instantiate the | ||
39 | devices explicitly. Please see Documentation/i2c/instantiating-devices for | ||
40 | details. | ||
41 | |||
42 | |||
43 | Platform data support | ||
44 | --------------------- | ||
45 | |||
46 | The driver supports standard PMBus driver platform data. | ||
47 | |||
48 | |||
49 | Sysfs entries | ||
50 | ------------- | ||
51 | |||
52 | The following attributes are supported. Limits are read-write; all other | ||
53 | attributes are read-only. | ||
54 | |||
55 | in1_label "vin" | ||
56 | in1_input Measured input voltage. | ||
57 | in1_average Average measured input voltage. | ||
58 | in1_min Minimum input voltage. | ||
59 | in1_max Maximum input voltage. | ||
60 | in1_min_alarm Input voltage low alarm. | ||
61 | in1_max_alarm Input voltage high alarm. | ||
62 | |||
63 | in2_label "vout1" | ||
64 | in2_input Measured output voltage. | ||
65 | in2_average Average measured output voltage. | ||
66 | in2_min Minimum output voltage. | ||
67 | in2_min_alarm Output voltage low alarm. | ||
68 | |||
69 | in3_label "vout2" | ||
70 | in3_input Measured voltage on vaux pin | ||
71 | |||
72 | curr1_label "iin" | ||
73 | curr1_input Measured input current. | ||
74 | curr1_average Average measured input current. | ||
75 | curr1_max Maximum input current. | ||
76 | curr1_max_alarm Input current high alarm. | ||
77 | |||
78 | power1_label "pin" | ||
79 | power1_input Measured input power. | ||
80 | power1_average Average measured input power. | ||
81 | power1_max Maximum input power limit. | ||
82 | power1_alarm Input power alarm | ||
83 | power1_input_highest Historical maximum power. | ||
84 | power1_reset_history Write any value to reset maximum power history. | ||
85 | |||
86 | temp1_input Measured temperature. | ||
87 | temp1_max Maximum temperature. | ||
88 | temp1_crit Critical high temperature. | ||
89 | temp1_max_alarm Chip temperature high alarm. | ||
90 | temp1_crit_alarm Chip temperature critical high alarm. | ||
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index f3efd18e87f4..9cd14cfe6515 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
@@ -113,7 +113,11 @@ Supported chips: | |||
113 | Prefix: 'w83l771' | 113 | Prefix: 'w83l771' |
114 | Addresses scanned: I2C 0x4c | 114 | Addresses scanned: I2C 0x4c |
115 | Datasheet: Not publicly available, can be requested from Nuvoton | 115 | Datasheet: Not publicly available, can be requested from Nuvoton |
116 | 116 | * Philips/NXP SA56004X | |
117 | Prefix: 'sa56004' | ||
118 | Addresses scanned: I2C 0x48 through 0x4F | ||
119 | Datasheet: Publicly available at NXP website | ||
120 | http://ics.nxp.com/products/interface/datasheet/sa56004x.pdf | ||
117 | 121 | ||
118 | Author: Jean Delvare <khali@linux-fr.org> | 122 | Author: Jean Delvare <khali@linux-fr.org> |
119 | 123 | ||
@@ -193,6 +197,9 @@ W83L771AWG/ASG | |||
193 | * The AWG and ASG variants only differ in package format. | 197 | * The AWG and ASG variants only differ in package format. |
194 | * Diode ideality factor configuration (remote sensor) at 0xE3 | 198 | * Diode ideality factor configuration (remote sensor) at 0xE3 |
195 | 199 | ||
200 | SA56004X: | ||
201 | * Better local resolution | ||
202 | |||
196 | All temperature values are given in degrees Celsius. Resolution | 203 | All temperature values are given in degrees Celsius. Resolution |
197 | is 1.0 degree for the local temperature, 0.125 degree for the remote | 204 | is 1.0 degree for the local temperature, 0.125 degree for the remote |
198 | temperature, except for the MAX6657, MAX6658 and MAX6659 which have a | 205 | temperature, except for the MAX6657, MAX6658 and MAX6659 which have a |
diff --git a/Documentation/hwmon/lm95245 b/Documentation/hwmon/lm95245 new file mode 100644 index 000000000000..cbd8aeab7124 --- /dev/null +++ b/Documentation/hwmon/lm95245 | |||
@@ -0,0 +1,33 @@ | |||
1 | Kernel driver lm95245 | ||
2 | ================== | ||
3 | |||
4 | Supported chips: | ||
5 | * National Semiconductor LM95245 | ||
6 | Addresses scanned: I2C 0x18, 0x19, 0x29, 0x4c, 0x4d | ||
7 | Datasheet: Publicly available at the National Semiconductor website | ||
8 | http://www.national.com/mpf/LM/LM95245.html | ||
9 | |||
10 | |||
11 | Author: Alexander Stein <alexander.stein@systec-electronic.com> | ||
12 | |||
13 | Description | ||
14 | ----------- | ||
15 | |||
16 | The LM95245 is an 11-bit digital temperature sensor with a 2-wire System | ||
17 | Management Bus (SMBus) interface and TruTherm technology that can monitor | ||
18 | the temperature of a remote diode as well as its own temperature. | ||
19 | The LM95245 can be used to very accurately monitor the temperature of | ||
20 | external devices such as microprocessors. | ||
21 | |||
22 | All temperature values are given in millidegrees Celsius. Local temperature | ||
23 | is given within a range of -127 to +127.875 degrees. Remote temperatures are | ||
24 | given within a range of -127 to +255 degrees. Resolution depends on | ||
25 | temperature input and range. | ||
26 | |||
27 | Each sensor has its own critical limit, but the hysteresis is common to all | ||
28 | two channels. | ||
29 | |||
30 | The lm95245 driver can change its update interval to a fixed set of values. | ||
31 | It will round up to the next selectable interval. See the datasheet for exact | ||
32 | values. Reading sensor values more often will do no harm, but will return | ||
33 | 'old' values. | ||
diff --git a/Documentation/hwmon/max16064 b/Documentation/hwmon/max16064 index 41728999e142..f6e8bcbfaccf 100644 --- a/Documentation/hwmon/max16064 +++ b/Documentation/hwmon/max16064 | |||
@@ -50,6 +50,8 @@ in[1-4]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | |||
50 | in[1-4]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 50 | in[1-4]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
51 | in[1-4]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. | 51 | in[1-4]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. |
52 | in[1-4]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. | 52 | in[1-4]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. |
53 | in[1-4]_highest Historical maximum voltage. | ||
54 | in[1-4]_reset_history Write any value to reset history. | ||
53 | 55 | ||
54 | temp1_input Measured temperature. From READ_TEMPERATURE_1 register. | 56 | temp1_input Measured temperature. From READ_TEMPERATURE_1 register. |
55 | temp1_max Maximum temperature. From OT_WARN_LIMIT register. | 57 | temp1_max Maximum temperature. From OT_WARN_LIMIT register. |
@@ -60,3 +62,5 @@ temp1_max_alarm Chip temperature high alarm. Set by comparing | |||
60 | temp1_crit_alarm Chip temperature critical high alarm. Set by comparing | 62 | temp1_crit_alarm Chip temperature critical high alarm. Set by comparing |
61 | READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT | 63 | READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT |
62 | status is set. | 64 | status is set. |
65 | temp1_highest Historical maximum temperature. | ||
66 | temp1_reset_history Write any value to reset history. | ||
diff --git a/Documentation/hwmon/max16065 b/Documentation/hwmon/max16065 index 44b4f61e04f9..c11f64a1f2ad 100644 --- a/Documentation/hwmon/max16065 +++ b/Documentation/hwmon/max16065 | |||
@@ -62,6 +62,13 @@ can be safely used to identify the chip. You will have to instantiate | |||
62 | the devices explicitly. Please see Documentation/i2c/instantiating-devices for | 62 | the devices explicitly. Please see Documentation/i2c/instantiating-devices for |
63 | details. | 63 | details. |
64 | 64 | ||
65 | WARNING: Do not access chip registers using the i2cdump command, and do not use | ||
66 | any of the i2ctools commands on a command register (0xa5 to 0xac). The chips | ||
67 | supported by this driver interpret any access to a command register (including | ||
68 | read commands) as request to execute the command in question. This may result in | ||
69 | power loss, board resets, and/or Flash corruption. Worst case, your board may | ||
70 | turn into a brick. | ||
71 | |||
65 | 72 | ||
66 | Sysfs entries | 73 | Sysfs entries |
67 | ------------- | 74 | ------------- |
diff --git a/Documentation/hwmon/max1668 b/Documentation/hwmon/max1668 new file mode 100644 index 000000000000..0616ed9758df --- /dev/null +++ b/Documentation/hwmon/max1668 | |||
@@ -0,0 +1,60 @@ | |||
1 | Kernel driver max1668 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Maxim MAX1668, MAX1805 and MAX1989 | ||
6 | Prefix: 'max1668' | ||
7 | Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e | ||
8 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX1668-MAX1989.pdf | ||
9 | |||
10 | Author: | ||
11 | David George <david.george@ska.ac.za> | ||
12 | |||
13 | Description | ||
14 | ----------- | ||
15 | |||
16 | This driver implements support for the Maxim MAX1668, MAX1805 and MAX1989 | ||
17 | chips. | ||
18 | |||
19 | The three devices are very similar, but the MAX1805 has a reduced feature | ||
20 | set; only two remote temperature inputs vs the four avaible on the other | ||
21 | two ICs. | ||
22 | |||
23 | The driver is able to distinguish between the devices and creates sysfs | ||
24 | entries as follows: | ||
25 | |||
26 | MAX1805, MAX1668 and MAX1989: | ||
27 | |||
28 | temp1_input ro local (ambient) temperature | ||
29 | temp1_max rw local temperature maximum threshold for alarm | ||
30 | temp1_max_alarm ro local temperature maximum threshold alarm | ||
31 | temp1_min rw local temperature minimum threshold for alarm | ||
32 | temp1_min_alarm ro local temperature minimum threshold alarm | ||
33 | temp2_input ro remote temperature 1 | ||
34 | temp2_max rw remote temperature 1 maximum threshold for alarm | ||
35 | temp2_max_alarm ro remote temperature 1 maximum threshold alarm | ||
36 | temp2_min rw remote temperature 1 minimum threshold for alarm | ||
37 | temp2_min_alarm ro remote temperature 1 minimum threshold alarm | ||
38 | temp3_input ro remote temperature 2 | ||
39 | temp3_max rw remote temperature 2 maximum threshold for alarm | ||
40 | temp3_max_alarm ro remote temperature 2 maximum threshold alarm | ||
41 | temp3_min rw remote temperature 2 minimum threshold for alarm | ||
42 | temp3_min_alarm ro remote temperature 2 minimum threshold alarm | ||
43 | |||
44 | MAX1668 and MAX1989 only: | ||
45 | temp4_input ro remote temperature 3 | ||
46 | temp4_max rw remote temperature 3 maximum threshold for alarm | ||
47 | temp4_max_alarm ro remote temperature 3 maximum threshold alarm | ||
48 | temp4_min rw remote temperature 3 minimum threshold for alarm | ||
49 | temp4_min_alarm ro remote temperature 3 minimum threshold alarm | ||
50 | temp5_input ro remote temperature 4 | ||
51 | temp5_max rw remote temperature 4 maximum threshold for alarm | ||
52 | temp5_max_alarm ro remote temperature 4 maximum threshold alarm | ||
53 | temp5_min rw remote temperature 4 minimum threshold for alarm | ||
54 | temp5_min_alarm ro remote temperature 4 minimum threshold alarm | ||
55 | |||
56 | Module Parameters | ||
57 | ----------------- | ||
58 | |||
59 | * read_only: int | ||
60 | Set to non-zero if you wish to prevent write access to alarm thresholds. | ||
diff --git a/Documentation/hwmon/max34440 b/Documentation/hwmon/max34440 index 6c525dd07d59..8ab51536a1eb 100644 --- a/Documentation/hwmon/max34440 +++ b/Documentation/hwmon/max34440 | |||
@@ -56,6 +56,8 @@ in[1-6]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | |||
56 | in[1-6]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 56 | in[1-6]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
57 | in[1-6]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. | 57 | in[1-6]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. |
58 | in[1-6]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. | 58 | in[1-6]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. |
59 | in[1-6]_highest Historical maximum voltage. | ||
60 | in[1-6]_reset_history Write any value to reset history. | ||
59 | 61 | ||
60 | curr[1-6]_label "iout[1-6]". | 62 | curr[1-6]_label "iout[1-6]". |
61 | curr[1-6]_input Measured current. From READ_IOUT register. | 63 | curr[1-6]_input Measured current. From READ_IOUT register. |
@@ -63,6 +65,8 @@ curr[1-6]_max Maximum current. From IOUT_OC_WARN_LIMIT register. | |||
63 | curr[1-6]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. | 65 | curr[1-6]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. |
64 | curr[1-6]_max_alarm Current high alarm. From IOUT_OC_WARNING status. | 66 | curr[1-6]_max_alarm Current high alarm. From IOUT_OC_WARNING status. |
65 | curr[1-6]_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status. | 67 | curr[1-6]_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status. |
68 | curr[1-6]_highest Historical maximum current. | ||
69 | curr[1-6]_reset_history Write any value to reset history. | ||
66 | 70 | ||
67 | in6 and curr6 attributes only exist for MAX34440. | 71 | in6 and curr6 attributes only exist for MAX34440. |
68 | 72 | ||
@@ -75,5 +79,7 @@ temp[1-8]_max Maximum temperature. From OT_WARN_LIMIT register. | |||
75 | temp[1-8]_crit Critical high temperature. From OT_FAULT_LIMIT register. | 79 | temp[1-8]_crit Critical high temperature. From OT_FAULT_LIMIT register. |
76 | temp[1-8]_max_alarm Temperature high alarm. | 80 | temp[1-8]_max_alarm Temperature high alarm. |
77 | temp[1-8]_crit_alarm Temperature critical high alarm. | 81 | temp[1-8]_crit_alarm Temperature critical high alarm. |
82 | temp[1-8]_highest Historical maximum temperature. | ||
83 | temp[1-8]_reset_history Write any value to reset history. | ||
78 | 84 | ||
79 | temp7 and temp8 attributes only exist for MAX34440. | 85 | temp7 and temp8 attributes only exist for MAX34440. |
diff --git a/Documentation/hwmon/max8688 b/Documentation/hwmon/max8688 index 0ddd3a412030..71ed10a3c94e 100644 --- a/Documentation/hwmon/max8688 +++ b/Documentation/hwmon/max8688 | |||
@@ -50,6 +50,8 @@ in1_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | |||
50 | in1_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | 50 | in1_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. |
51 | in1_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. | 51 | in1_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status. |
52 | in1_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. | 52 | in1_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status. |
53 | in1_highest Historical maximum voltage. | ||
54 | in1_reset_history Write any value to reset history. | ||
53 | 55 | ||
54 | curr1_label "iout1" | 56 | curr1_label "iout1" |
55 | curr1_input Measured current. From READ_IOUT register. | 57 | curr1_input Measured current. From READ_IOUT register. |
@@ -57,6 +59,8 @@ curr1_max Maximum current. From IOUT_OC_WARN_LIMIT register. | |||
57 | curr1_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. | 59 | curr1_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. |
58 | curr1_max_alarm Current high alarm. From IOUT_OC_WARN_LIMIT register. | 60 | curr1_max_alarm Current high alarm. From IOUT_OC_WARN_LIMIT register. |
59 | curr1_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status. | 61 | curr1_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status. |
62 | curr1_highest Historical maximum current. | ||
63 | curr1_reset_history Write any value to reset history. | ||
60 | 64 | ||
61 | temp1_input Measured temperature. From READ_TEMPERATURE_1 register. | 65 | temp1_input Measured temperature. From READ_TEMPERATURE_1 register. |
62 | temp1_max Maximum temperature. From OT_WARN_LIMIT register. | 66 | temp1_max Maximum temperature. From OT_WARN_LIMIT register. |
@@ -67,3 +71,5 @@ temp1_max_alarm Chip temperature high alarm. Set by comparing | |||
67 | temp1_crit_alarm Chip temperature critical high alarm. Set by comparing | 71 | temp1_crit_alarm Chip temperature critical high alarm. Set by comparing |
68 | READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT | 72 | READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT |
69 | status is set. | 73 | status is set. |
74 | temp1_highest Historical maximum temperature. | ||
75 | temp1_reset_history Write any value to reset history. | ||
diff --git a/Documentation/hwmon/ntc_thermistor b/Documentation/hwmon/ntc_thermistor new file mode 100644 index 000000000000..3bfda94096fd --- /dev/null +++ b/Documentation/hwmon/ntc_thermistor | |||
@@ -0,0 +1,93 @@ | |||
1 | Kernel driver ntc_thermistor | ||
2 | ================= | ||
3 | |||
4 | Supported thermistors: | ||
5 | * Murata NTC Thermistors NCP15WB473, NCP18WB473, NCP21WB473, NCP03WB473, NCP15WL333 | ||
6 | Prefixes: 'ncp15wb473', 'ncp18wb473', 'ncp21wb473', 'ncp03wb473', 'ncp15wl333' | ||
7 | Datasheet: Publicly available at Murata | ||
8 | |||
9 | Other NTC thermistors can be supported simply by adding compensation | ||
10 | tables; e.g., NCP15WL333 support is added by the table ncpXXwl333. | ||
11 | |||
12 | Authors: | ||
13 | MyungJoo Ham <myungjoo.ham@samsung.com> | ||
14 | |||
15 | Description | ||
16 | ----------- | ||
17 | |||
18 | The NTC thermistor is a simple thermistor that requires users to provide the | ||
19 | resistance and lookup the corresponding compensation table to get the | ||
20 | temperature input. | ||
21 | |||
22 | The NTC driver provides lookup tables with a linear approximation function | ||
23 | and four circuit models with an option not to use any of the four models. | ||
24 | |||
25 | The four circuit models provided are: | ||
26 | |||
27 | $: resister, [TH]: the thermistor | ||
28 | |||
29 | 1. connect = NTC_CONNECTED_POSITIVE, pullup_ohm > 0 | ||
30 | |||
31 | [pullup_uV] | ||
32 | | | | ||
33 | [TH] $ (pullup_ohm) | ||
34 | | | | ||
35 | +----+-----------------------[read_uV] | ||
36 | | | ||
37 | $ (pulldown_ohm) | ||
38 | | | ||
39 | --- (ground) | ||
40 | |||
41 | 2. connect = NTC_CONNECTED_POSITIVE, pullup_ohm = 0 (not-connected) | ||
42 | |||
43 | [pullup_uV] | ||
44 | | | ||
45 | [TH] | ||
46 | | | ||
47 | +----------------------------[read_uV] | ||
48 | | | ||
49 | $ (pulldown_ohm) | ||
50 | | | ||
51 | --- (ground) | ||
52 | |||
53 | 3. connect = NTC_CONNECTED_GROUND, pulldown_ohm > 0 | ||
54 | |||
55 | [pullup_uV] | ||
56 | | | ||
57 | $ (pullup_ohm) | ||
58 | | | ||
59 | +----+-----------------------[read_uV] | ||
60 | | | | ||
61 | [TH] $ (pulldown_ohm) | ||
62 | | | | ||
63 | -------- (ground) | ||
64 | |||
65 | 4. connect = NTC_CONNECTED_GROUND, pulldown_ohm = 0 (not-connected) | ||
66 | |||
67 | [pullup_uV] | ||
68 | | | ||
69 | $ (pullup_ohm) | ||
70 | | | ||
71 | +----------------------------[read_uV] | ||
72 | | | ||
73 | [TH] | ||
74 | | | ||
75 | --- (ground) | ||
76 | |||
77 | When one of the four circuit models is used, read_uV, pullup_uV, pullup_ohm, | ||
78 | pulldown_ohm, and connect should be provided. When none of the four models | ||
79 | are suitable or the user can get the resistance directly, the user should | ||
80 | provide read_ohm and _not_ provide the others. | ||
81 | |||
82 | Sysfs Interface | ||
83 | --------------- | ||
84 | name the mandatory global attribute, the thermistor name. | ||
85 | |||
86 | temp1_type always 4 (thermistor) | ||
87 | RO | ||
88 | |||
89 | temp1_input measure the temperature and provide the measured value. | ||
90 | (reading this file initiates the reading procedure.) | ||
91 | RO | ||
92 | |||
93 | Note that each NTC thermistor has only _one_ thermistor; thus, only temp1 exists. | ||
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus index 5e462fc7f99b..c36c1c1a62bb 100644 --- a/Documentation/hwmon/pmbus +++ b/Documentation/hwmon/pmbus | |||
@@ -13,6 +13,13 @@ Supported chips: | |||
13 | Prefix: 'ltc2978' | 13 | Prefix: 'ltc2978' |
14 | Addresses scanned: - | 14 | Addresses scanned: - |
15 | Datasheet: http://cds.linear.com/docs/Datasheet/2978fa.pdf | 15 | Datasheet: http://cds.linear.com/docs/Datasheet/2978fa.pdf |
16 | * ON Semiconductor ADP4000, NCP4200, NCP4208 | ||
17 | Prefixes: 'adp4000', 'ncp4200', 'ncp4208' | ||
18 | Addresses scanned: - | ||
19 | Datasheets: | ||
20 | http://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF | ||
21 | http://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF | ||
22 | http://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF | ||
16 | * Generic PMBus devices | 23 | * Generic PMBus devices |
17 | Prefix: 'pmbus' | 24 | Prefix: 'pmbus' |
18 | Addresses scanned: - | 25 | Addresses scanned: - |
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface index 8f63c244f1aa..a4aa8f600e09 100644 --- a/Documentation/hwmon/sysfs-interface +++ b/Documentation/hwmon/sysfs-interface | |||
@@ -139,6 +139,29 @@ in[0-*]_input Voltage input value. | |||
139 | thumb: drivers should report the voltage values at the | 139 | thumb: drivers should report the voltage values at the |
140 | "pins" of the chip. | 140 | "pins" of the chip. |
141 | 141 | ||
142 | in[0-*]_average | ||
143 | Average voltage | ||
144 | Unit: millivolt | ||
145 | RO | ||
146 | |||
147 | in[0-*]_lowest | ||
148 | Historical minimum voltage | ||
149 | Unit: millivolt | ||
150 | RO | ||
151 | |||
152 | in[0-*]_highest | ||
153 | Historical maximum voltage | ||
154 | Unit: millivolt | ||
155 | RO | ||
156 | |||
157 | in[0-*]_reset_history | ||
158 | Reset inX_lowest and inX_highest | ||
159 | WO | ||
160 | |||
161 | in_reset_history | ||
162 | Reset inX_lowest and inX_highest for all sensors | ||
163 | WO | ||
164 | |||
142 | in[0-*]_label Suggested voltage channel label. | 165 | in[0-*]_label Suggested voltage channel label. |
143 | Text string | 166 | Text string |
144 | Should only be created if the driver has hints about what | 167 | Should only be created if the driver has hints about what |
@@ -407,6 +430,29 @@ curr[1-*]_input Current input value | |||
407 | Unit: milliampere | 430 | Unit: milliampere |
408 | RO | 431 | RO |
409 | 432 | ||
433 | curr[1-*]_average | ||
434 | Average current use | ||
435 | Unit: milliampere | ||
436 | RO | ||
437 | |||
438 | curr[1-*]_lowest | ||
439 | Historical minimum current | ||
440 | Unit: milliampere | ||
441 | RO | ||
442 | |||
443 | curr[1-*]_highest | ||
444 | Historical maximum current | ||
445 | Unit: milliampere | ||
446 | RO | ||
447 | |||
448 | curr[1-*]_reset_history | ||
449 | Reset currX_lowest and currX_highest | ||
450 | WO | ||
451 | |||
452 | curr_reset_history | ||
453 | Reset currX_lowest and currX_highest for all sensors | ||
454 | WO | ||
455 | |||
410 | Also see the Alarms section for status flags associated with currents. | 456 | Also see the Alarms section for status flags associated with currents. |
411 | 457 | ||
412 | ********* | 458 | ********* |
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 72ba8d51dbc1..54078ed96b37 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -292,6 +292,7 @@ Code Seq#(hex) Include File Comments | |||
292 | <mailto:buk@buks.ipn.de> | 292 | <mailto:buk@buks.ipn.de> |
293 | 0xA0 all linux/sdp/sdp.h Industrial Device Project | 293 | 0xA0 all linux/sdp/sdp.h Industrial Device Project |
294 | <mailto:kenji@bitgate.com> | 294 | <mailto:kenji@bitgate.com> |
295 | 0xA2 00-0F arch/tile/include/asm/hardwall.h | ||
295 | 0xA3 80-8F Port ACL in development: | 296 | 0xA3 80-8F Port ACL in development: |
296 | <mailto:tlewis@mindspring.com> | 297 | <mailto:tlewis@mindspring.com> |
297 | 0xA3 90-9F linux/dtlk.h | 298 | 0xA3 90-9F linux/dtlk.h |
@@ -318,4 +319,6 @@ Code Seq#(hex) Include File Comments | |||
318 | <mailto:thomas@winischhofer.net> | 319 | <mailto:thomas@winischhofer.net> |
319 | 0xF4 00-1F video/mbxfb.h mbxfb | 320 | 0xF4 00-1F video/mbxfb.h mbxfb |
320 | <mailto:raph@8d.com> | 321 | <mailto:raph@8d.com> |
322 | 0xF6 all LTTng Linux Trace Toolkit Next Generation | ||
323 | <mailto:mathieu.desnoyers@efficios.com> | ||
321 | 0xFD all linux/dm-ioctl.h | 324 | 0xFD all linux/dm-ioctl.h |
diff --git a/Documentation/kernel-docs.txt b/Documentation/kernel-docs.txt index 9a8674629a07..0e0734b509d8 100644 --- a/Documentation/kernel-docs.txt +++ b/Documentation/kernel-docs.txt | |||
@@ -620,17 +620,6 @@ | |||
620 | (including this document itself) have been moved there, and might | 620 | (including this document itself) have been moved there, and might |
621 | be more up to date than the web version. | 621 | be more up to date than the web version. |
622 | 622 | ||
623 | * Name: "Linux Source Driver" | ||
624 | URL: http://lsd.linux.cz | ||
625 | Keywords: Browsing source code. | ||
626 | Description: "Linux Source Driver (LSD) is an application, which | ||
627 | can make browsing source codes of Linux kernel easier than you can | ||
628 | imagine. You can select between multiple versions of kernel (e.g. | ||
629 | 0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD | ||
630 | you can search Linux kernel (fulltext, macros, types, functions | ||
631 | and variables) and LSD can generate patches for you on the fly | ||
632 | (files, directories or kernel)". | ||
633 | |||
634 | * Name: "Linux Kernel Source Reference" | 623 | * Name: "Linux Kernel Source Reference" |
635 | Author: Thomas Graichen. | 624 | Author: Thomas Graichen. |
636 | URL: http://marc.info/?l=linux-kernel&m=96446640102205&w=4 | 625 | URL: http://marc.info/?l=linux-kernel&m=96446640102205&w=4 |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index a70e43edcb65..854ed5ca7e3f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -40,6 +40,7 @@ parameter is applicable: | |||
40 | ALSA ALSA sound support is enabled. | 40 | ALSA ALSA sound support is enabled. |
41 | APIC APIC support is enabled. | 41 | APIC APIC support is enabled. |
42 | APM Advanced Power Management support is enabled. | 42 | APM Advanced Power Management support is enabled. |
43 | ARM ARM architecture is enabled. | ||
43 | AVR32 AVR32 architecture is enabled. | 44 | AVR32 AVR32 architecture is enabled. |
44 | AX25 Appropriate AX.25 support is enabled. | 45 | AX25 Appropriate AX.25 support is enabled. |
45 | BLACKFIN Blackfin architecture is enabled. | 46 | BLACKFIN Blackfin architecture is enabled. |
@@ -49,6 +50,7 @@ parameter is applicable: | |||
49 | EFI EFI Partitioning (GPT) is enabled | 50 | EFI EFI Partitioning (GPT) is enabled |
50 | EIDE EIDE/ATAPI support is enabled. | 51 | EIDE EIDE/ATAPI support is enabled. |
51 | FB The frame buffer device is enabled. | 52 | FB The frame buffer device is enabled. |
53 | FTRACE Function tracing enabled. | ||
52 | GCOV GCOV profiling is enabled. | 54 | GCOV GCOV profiling is enabled. |
53 | HW Appropriate hardware is enabled. | 55 | HW Appropriate hardware is enabled. |
54 | IA-64 IA-64 architecture is enabled. | 56 | IA-64 IA-64 architecture is enabled. |
@@ -69,6 +71,7 @@ parameter is applicable: | |||
69 | Documentation/m68k/kernel-options.txt. | 71 | Documentation/m68k/kernel-options.txt. |
70 | MCA MCA bus support is enabled. | 72 | MCA MCA bus support is enabled. |
71 | MDA MDA console support is enabled. | 73 | MDA MDA console support is enabled. |
74 | MIPS MIPS architecture is enabled. | ||
72 | MOUSE Appropriate mouse support is enabled. | 75 | MOUSE Appropriate mouse support is enabled. |
73 | MSI Message Signaled Interrupts (PCI). | 76 | MSI Message Signaled Interrupts (PCI). |
74 | MTD MTD (Memory Technology Device) support is enabled. | 77 | MTD MTD (Memory Technology Device) support is enabled. |
@@ -100,7 +103,6 @@ parameter is applicable: | |||
100 | SPARC Sparc architecture is enabled. | 103 | SPARC Sparc architecture is enabled. |
101 | SWSUSP Software suspend (hibernation) is enabled. | 104 | SWSUSP Software suspend (hibernation) is enabled. |
102 | SUSPEND System suspend states are enabled. | 105 | SUSPEND System suspend states are enabled. |
103 | FTRACE Function tracing enabled. | ||
104 | TPM TPM drivers are enabled. | 106 | TPM TPM drivers are enabled. |
105 | TS Appropriate touchscreen support is enabled. | 107 | TS Appropriate touchscreen support is enabled. |
106 | UMS USB Mass Storage support is enabled. | 108 | UMS USB Mass Storage support is enabled. |
@@ -115,7 +117,7 @@ parameter is applicable: | |||
115 | X86-64 X86-64 architecture is enabled. | 117 | X86-64 X86-64 architecture is enabled. |
116 | More X86-64 boot options can be found in | 118 | More X86-64 boot options can be found in |
117 | Documentation/x86/x86_64/boot-options.txt . | 119 | Documentation/x86/x86_64/boot-options.txt . |
118 | X86 Either 32bit or 64bit x86 (same as X86-32+X86-64) | 120 | X86 Either 32-bit or 64-bit x86 (same as X86-32+X86-64) |
119 | XEN Xen support is enabled | 121 | XEN Xen support is enabled |
120 | 122 | ||
121 | In addition, the following text indicates that the option: | 123 | In addition, the following text indicates that the option: |
@@ -163,6 +165,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
163 | 165 | ||
164 | See also Documentation/power/pm.txt, pci=noacpi | 166 | See also Documentation/power/pm.txt, pci=noacpi |
165 | 167 | ||
168 | acpi_rsdp= [ACPI,EFI,KEXEC] | ||
169 | Pass the RSDP address to the kernel, mostly used | ||
170 | on machines running EFI runtime service to boot the | ||
171 | second kernel for kdump. | ||
172 | |||
166 | acpi_apic_instance= [ACPI, IOAPIC] | 173 | acpi_apic_instance= [ACPI, IOAPIC] |
167 | Format: <int> | 174 | Format: <int> |
168 | 2: use 2nd APIC table, if available | 175 | 2: use 2nd APIC table, if available |
@@ -371,7 +378,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
371 | atkbd.softrepeat= [HW] | 378 | atkbd.softrepeat= [HW] |
372 | Use software keyboard repeat | 379 | Use software keyboard repeat |
373 | 380 | ||
374 | autotest [IA64] | 381 | autotest [IA-64] |
375 | 382 | ||
376 | baycom_epp= [HW,AX25] | 383 | baycom_epp= [HW,AX25] |
377 | Format: <io>,<mode> | 384 | Format: <io>,<mode> |
@@ -546,6 +553,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
546 | /proc/<pid>/coredump_filter. | 553 | /proc/<pid>/coredump_filter. |
547 | See also Documentation/filesystems/proc.txt. | 554 | See also Documentation/filesystems/proc.txt. |
548 | 555 | ||
556 | cpuidle.off=1 [CPU_IDLE] | ||
557 | disable the cpuidle sub-system | ||
558 | |||
549 | cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver | 559 | cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver |
550 | Format: | 560 | Format: |
551 | <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] | 561 | <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] |
@@ -673,8 +683,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
673 | uart[8250],mmio32,<addr>[,options] | 683 | uart[8250],mmio32,<addr>[,options] |
674 | Start an early, polled-mode console on the 8250/16550 | 684 | Start an early, polled-mode console on the 8250/16550 |
675 | UART at the specified I/O port or MMIO address. | 685 | UART at the specified I/O port or MMIO address. |
676 | MMIO inter-register address stride is either 8bit (mmio) | 686 | MMIO inter-register address stride is either 8-bit |
677 | or 32bit (mmio32). | 687 | (mmio) or 32-bit (mmio32). |
678 | The options are the same as for ttyS, above. | 688 | The options are the same as for ttyS, above. |
679 | 689 | ||
680 | earlyprintk= [X86,SH,BLACKFIN] | 690 | earlyprintk= [X86,SH,BLACKFIN] |
@@ -717,7 +727,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
717 | See Documentation/block/as-iosched.txt and | 727 | See Documentation/block/as-iosched.txt and |
718 | Documentation/block/deadline-iosched.txt for details. | 728 | Documentation/block/deadline-iosched.txt for details. |
719 | 729 | ||
720 | elfcorehdr= [IA64,PPC,SH,X86] | 730 | elfcorehdr= [IA-64,PPC,SH,X86] |
721 | Specifies physical address of start of kernel core | 731 | Specifies physical address of start of kernel core |
722 | image elf header. Generally kexec loader will | 732 | image elf header. Generally kexec loader will |
723 | pass this option to capture kernel. | 733 | pass this option to capture kernel. |
@@ -783,7 +793,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
783 | tracer at boot up. function-list is a comma separated | 793 | tracer at boot up. function-list is a comma separated |
784 | list of functions. This list can be changed at run | 794 | list of functions. This list can be changed at run |
785 | time by the set_ftrace_filter file in the debugfs | 795 | time by the set_ftrace_filter file in the debugfs |
786 | tracing directory. | 796 | tracing directory. |
787 | 797 | ||
788 | ftrace_notrace=[function-list] | 798 | ftrace_notrace=[function-list] |
789 | [FTRACE] Do not trace the functions specified in | 799 | [FTRACE] Do not trace the functions specified in |
@@ -821,7 +831,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
821 | 831 | ||
822 | hashdist= [KNL,NUMA] Large hashes allocated during boot | 832 | hashdist= [KNL,NUMA] Large hashes allocated during boot |
823 | are distributed across NUMA nodes. Defaults on | 833 | are distributed across NUMA nodes. Defaults on |
824 | for 64bit NUMA, off otherwise. | 834 | for 64-bit NUMA, off otherwise. |
825 | Format: 0 | 1 (for off | on) | 835 | Format: 0 | 1 (for off | on) |
826 | 836 | ||
827 | hcl= [IA-64] SGI's Hardware Graph compatibility layer | 837 | hcl= [IA-64] SGI's Hardware Graph compatibility layer |
@@ -990,10 +1000,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
990 | DMA. | 1000 | DMA. |
991 | forcedac [x86_64] | 1001 | forcedac [x86_64] |
992 | With this option iommu will not optimize to look | 1002 | With this option iommu will not optimize to look |
993 | for io virtual address below 32 bit forcing dual | 1003 | for io virtual address below 32-bit forcing dual |
994 | address cycle on pci bus for cards supporting greater | 1004 | address cycle on pci bus for cards supporting greater |
995 | than 32 bit addressing. The default is to look | 1005 | than 32-bit addressing. The default is to look |
996 | for translation below 32 bit and if not available | 1006 | for translation below 32-bit and if not available |
997 | then look in the higher range. | 1007 | then look in the higher range. |
998 | strict [Default Off] | 1008 | strict [Default Off] |
999 | With this option on every unmap_single operation will | 1009 | With this option on every unmap_single operation will |
@@ -1009,7 +1019,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1009 | off disable Interrupt Remapping | 1019 | off disable Interrupt Remapping |
1010 | nosid disable Source ID checking | 1020 | nosid disable Source ID checking |
1011 | 1021 | ||
1012 | inttest= [IA64] | 1022 | inttest= [IA-64] |
1013 | 1023 | ||
1014 | iomem= Disable strict checking of access to MMIO memory | 1024 | iomem= Disable strict checking of access to MMIO memory |
1015 | strict regions from userspace. | 1025 | strict regions from userspace. |
@@ -1026,7 +1036,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1026 | nomerge | 1036 | nomerge |
1027 | forcesac | 1037 | forcesac |
1028 | soft | 1038 | soft |
1029 | pt [x86, IA64] | 1039 | pt [x86, IA-64] |
1030 | 1040 | ||
1031 | io7= [HW] IO7 for Marvel based alpha systems | 1041 | io7= [HW] IO7 for Marvel based alpha systems |
1032 | See comment before marvel_specify_io7 in | 1042 | See comment before marvel_specify_io7 in |
@@ -1157,7 +1167,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1157 | 1167 | ||
1158 | kvm-amd.npt= [KVM,AMD] Disable nested paging (virtualized MMU) | 1168 | kvm-amd.npt= [KVM,AMD] Disable nested paging (virtualized MMU) |
1159 | for all guests. | 1169 | for all guests. |
1160 | Default is 1 (enabled) if in 64bit or 32bit-PAE mode | 1170 | Default is 1 (enabled) if in 64-bit or 32-bit PAE mode. |
1161 | 1171 | ||
1162 | kvm-intel.ept= [KVM,Intel] Disable extended page tables | 1172 | kvm-intel.ept= [KVM,Intel] Disable extended page tables |
1163 | (virtualized MMU) support on capable Intel chips. | 1173 | (virtualized MMU) support on capable Intel chips. |
@@ -1194,10 +1204,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1194 | libata.dma=0 Disable all PATA and SATA DMA | 1204 | libata.dma=0 Disable all PATA and SATA DMA |
1195 | libata.dma=1 PATA and SATA Disk DMA only | 1205 | libata.dma=1 PATA and SATA Disk DMA only |
1196 | libata.dma=2 ATAPI (CDROM) DMA only | 1206 | libata.dma=2 ATAPI (CDROM) DMA only |
1197 | libata.dma=4 Compact Flash DMA only | 1207 | libata.dma=4 Compact Flash DMA only |
1198 | Combinations also work, so libata.dma=3 enables DMA | 1208 | Combinations also work, so libata.dma=3 enables DMA |
1199 | for disks and CDROMs, but not CFs. | 1209 | for disks and CDROMs, but not CFs. |
1200 | 1210 | ||
1201 | libata.ignore_hpa= [LIBATA] Ignore HPA limit | 1211 | libata.ignore_hpa= [LIBATA] Ignore HPA limit |
1202 | libata.ignore_hpa=0 keep BIOS limits (default) | 1212 | libata.ignore_hpa=0 keep BIOS limits (default) |
1203 | libata.ignore_hpa=1 ignore limits, using full disk | 1213 | libata.ignore_hpa=1 ignore limits, using full disk |
@@ -1323,7 +1333,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1323 | ltpc= [NET] | 1333 | ltpc= [NET] |
1324 | Format: <io>,<irq>,<dma> | 1334 | Format: <io>,<irq>,<dma> |
1325 | 1335 | ||
1326 | machvec= [IA64] Force the use of a particular machine-vector | 1336 | machvec= [IA-64] Force the use of a particular machine-vector |
1327 | (machvec) in a generic kernel. | 1337 | (machvec) in a generic kernel. |
1328 | Example: machvec=hpzx1_swiotlb | 1338 | Example: machvec=hpzx1_swiotlb |
1329 | 1339 | ||
@@ -1340,9 +1350,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1340 | it is equivalent to "nosmp", which also disables | 1350 | it is equivalent to "nosmp", which also disables |
1341 | the IO APIC. | 1351 | the IO APIC. |
1342 | 1352 | ||
1343 | max_loop= [LOOP] Maximum number of loopback devices that can | 1353 | max_loop= [LOOP] The number of loop block devices that get |
1344 | be mounted | 1354 | (loop.max_loop) unconditionally pre-created at init time. The default |
1345 | Format: <1-256> | 1355 | number is configured by BLK_DEV_LOOP_MIN_COUNT. Instead |
1356 | of statically allocating a predefined number, loop | ||
1357 | devices can be requested on-demand with the | ||
1358 | /dev/loop-control interface. | ||
1346 | 1359 | ||
1347 | mcatest= [IA-64] | 1360 | mcatest= [IA-64] |
1348 | 1361 | ||
@@ -1726,7 +1739,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1726 | 1739 | ||
1727 | nointroute [IA-64] | 1740 | nointroute [IA-64] |
1728 | 1741 | ||
1729 | nojitter [IA64] Disables jitter checking for ITC timers. | 1742 | nojitter [IA-64] Disables jitter checking for ITC timers. |
1730 | 1743 | ||
1731 | no-kvmclock [X86,KVM] Disable paravirtualized KVM clock driver | 1744 | no-kvmclock [X86,KVM] Disable paravirtualized KVM clock driver |
1732 | 1745 | ||
@@ -1792,7 +1805,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1792 | 1805 | ||
1793 | nox2apic [X86-64,APIC] Do not enable x2APIC mode. | 1806 | nox2apic [X86-64,APIC] Do not enable x2APIC mode. |
1794 | 1807 | ||
1795 | nptcg= [IA64] Override max number of concurrent global TLB | 1808 | nptcg= [IA-64] Override max number of concurrent global TLB |
1796 | purges which is reported from either PAL_VM_SUMMARY or | 1809 | purges which is reported from either PAL_VM_SUMMARY or |
1797 | SAL PALO. | 1810 | SAL PALO. |
1798 | 1811 | ||
@@ -1846,7 +1859,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1846 | See Documentation/sound/oss/oss-parameters.txt | 1859 | See Documentation/sound/oss/oss-parameters.txt |
1847 | 1860 | ||
1848 | panic= [KNL] Kernel behaviour on panic: delay <timeout> | 1861 | panic= [KNL] Kernel behaviour on panic: delay <timeout> |
1849 | seconds before rebooting | 1862 | timeout > 0: seconds before rebooting |
1863 | timeout = 0: wait forever | ||
1864 | timeout < 0: reboot immediately | ||
1850 | Format: <timeout> | 1865 | Format: <timeout> |
1851 | 1866 | ||
1852 | parkbd.port= [HW] Parallel port number the keyboard adapter is | 1867 | parkbd.port= [HW] Parallel port number the keyboard adapter is |
@@ -2067,13 +2082,16 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2067 | Format: { parport<nr> | timid | 0 } | 2082 | Format: { parport<nr> | timid | 0 } |
2068 | See also Documentation/parport.txt. | 2083 | See also Documentation/parport.txt. |
2069 | 2084 | ||
2070 | pmtmr= [X86] Manual setup of pmtmr I/O Port. | 2085 | pmtmr= [X86] Manual setup of pmtmr I/O Port. |
2071 | Override pmtimer IOPort with a hex value. | 2086 | Override pmtimer IOPort with a hex value. |
2072 | e.g. pmtmr=0x508 | 2087 | e.g. pmtmr=0x508 |
2073 | 2088 | ||
2074 | pnp.debug [PNP] | 2089 | pnp.debug=1 [PNP] |
2075 | Enable PNP debug messages. This depends on the | 2090 | Enable PNP debug messages (depends on the |
2076 | CONFIG_PNP_DEBUG_MESSAGES option. | 2091 | CONFIG_PNP_DEBUG_MESSAGES option). Change at run-time |
2092 | via /sys/module/pnp/parameters/debug. We always show | ||
2093 | current resource usage; turning this on also shows | ||
2094 | possible settings and some assignment information. | ||
2077 | 2095 | ||
2078 | pnpacpi= [ACPI] | 2096 | pnpacpi= [ACPI] |
2079 | { off } | 2097 | { off } |
@@ -2151,6 +2169,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2151 | [HW,MOUSE] Controls Logitech smartscroll autorepeat. | 2169 | [HW,MOUSE] Controls Logitech smartscroll autorepeat. |
2152 | 0 = disabled, 1 = enabled (default). | 2170 | 0 = disabled, 1 = enabled (default). |
2153 | 2171 | ||
2172 | pstore.backend= Specify the name of the pstore backend to use | ||
2173 | |||
2154 | pt. [PARIDE] | 2174 | pt. [PARIDE] |
2155 | See Documentation/blockdev/paride.txt. | 2175 | See Documentation/blockdev/paride.txt. |
2156 | 2176 | ||
@@ -2236,6 +2256,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2236 | ro [KNL] Mount root device read-only on boot | 2256 | ro [KNL] Mount root device read-only on boot |
2237 | 2257 | ||
2238 | root= [KNL] Root filesystem | 2258 | root= [KNL] Root filesystem |
2259 | See name_to_dev_t comment in init/do_mounts.c. | ||
2239 | 2260 | ||
2240 | rootdelay= [KNL] Delay (in seconds) to pause before attempting to | 2261 | rootdelay= [KNL] Delay (in seconds) to pause before attempting to |
2241 | mount the root filesystem | 2262 | mount the root filesystem |
@@ -2622,6 +2643,16 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2622 | medium is write-protected). | 2643 | medium is write-protected). |
2623 | Example: quirks=0419:aaf5:rl,0421:0433:rc | 2644 | Example: quirks=0419:aaf5:rl,0421:0433:rc |
2624 | 2645 | ||
2646 | user_debug= [KNL,ARM] | ||
2647 | Format: <int> | ||
2648 | See arch/arm/Kconfig.debug help text. | ||
2649 | 1 - undefined instruction events | ||
2650 | 2 - system calls | ||
2651 | 4 - invalid data aborts | ||
2652 | 8 - SIGSEGV faults | ||
2653 | 16 - SIGBUS faults | ||
2654 | Example: user_debug=31 | ||
2655 | |||
2625 | userpte= | 2656 | userpte= |
2626 | [X86] Flags controlling user PTE allocations. | 2657 | [X86] Flags controlling user PTE allocations. |
2627 | 2658 | ||
@@ -2667,6 +2698,27 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2667 | vmpoff= [KNL,S390] Perform z/VM CP command after power off. | 2698 | vmpoff= [KNL,S390] Perform z/VM CP command after power off. |
2668 | Format: <command> | 2699 | Format: <command> |
2669 | 2700 | ||
2701 | vsyscall= [X86-64] | ||
2702 | Controls the behavior of vsyscalls (i.e. calls to | ||
2703 | fixed addresses of 0xffffffffff600x00 from legacy | ||
2704 | code). Most statically-linked binaries and older | ||
2705 | versions of glibc use these calls. Because these | ||
2706 | functions are at fixed addresses, they make nice | ||
2707 | targets for exploits that can control RIP. | ||
2708 | |||
2709 | emulate [default] Vsyscalls turn into traps and are | ||
2710 | emulated reasonably safely. | ||
2711 | |||
2712 | native Vsyscalls are native syscall instructions. | ||
2713 | This is a little bit faster than trapping | ||
2714 | and makes a few dynamic recompilers work | ||
2715 | better than they would in emulation mode. | ||
2716 | It also makes exploits much easier to write. | ||
2717 | |||
2718 | none Vsyscalls don't work at all. This makes | ||
2719 | them quite hard to use for exploits but | ||
2720 | might break your system. | ||
2721 | |||
2670 | vt.cur_default= [VT] Default cursor shape. | 2722 | vt.cur_default= [VT] Default cursor shape. |
2671 | Format: 0xCCBBAA, where AA, BB, and CC are the same as | 2723 | Format: 0xCCBBAA, where AA, BB, and CC are the same as |
2672 | the parameters of the <Esc>[?A;B;Cc escape sequence; | 2724 | the parameters of the <Esc>[?A;B;Cc escape sequence; |
diff --git a/Documentation/m68k/kernel-options.txt b/Documentation/m68k/kernel-options.txt index c93bed66e25d..97d45f276fe6 100644 --- a/Documentation/m68k/kernel-options.txt +++ b/Documentation/m68k/kernel-options.txt | |||
@@ -129,6 +129,20 @@ decimal 11 is the major of SCSI CD-ROMs, and the minor 0 stands for | |||
129 | the first of these. You can find out all valid major numbers by | 129 | the first of these. You can find out all valid major numbers by |
130 | looking into include/linux/major.h. | 130 | looking into include/linux/major.h. |
131 | 131 | ||
132 | In addition to major and minor numbers, if the device containing your | ||
133 | root partition uses a partition table format with unique partition | ||
134 | identifiers, then you may use them. For instance, | ||
135 | "root=PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF". It is also | ||
136 | possible to reference another partition on the same device using a | ||
137 | known partition UUID as the starting point. For example, | ||
138 | if partition 5 of the device has the UUID of | ||
139 | 00112233-4455-6677-8899-AABBCCDDEEFF then partition 3 may be found as | ||
140 | follows: | ||
141 | PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF/PARTNROFF=-2 | ||
142 | |||
143 | Authoritative information can be found in | ||
144 | "Documentation/kernel-parameters.txt". | ||
145 | |||
132 | 146 | ||
133 | 2.2) ro, rw | 147 | 2.2) ro, rw |
134 | ----------- | 148 | ----------- |
diff --git a/Documentation/md.txt b/Documentation/md.txt index f0eee83ff78a..fc94770f44ab 100644 --- a/Documentation/md.txt +++ b/Documentation/md.txt | |||
@@ -360,18 +360,20 @@ Each directory contains: | |||
360 | A file recording the current state of the device in the array | 360 | A file recording the current state of the device in the array |
361 | which can be a comma separated list of | 361 | which can be a comma separated list of |
362 | faulty - device has been kicked from active use due to | 362 | faulty - device has been kicked from active use due to |
363 | a detected fault | 363 | a detected fault or it has unacknowledged bad |
364 | blocks | ||
364 | in_sync - device is a fully in-sync member of the array | 365 | in_sync - device is a fully in-sync member of the array |
365 | writemostly - device will only be subject to read | 366 | writemostly - device will only be subject to read |
366 | requests if there are no other options. | 367 | requests if there are no other options. |
367 | This applies only to raid1 arrays. | 368 | This applies only to raid1 arrays. |
368 | blocked - device has failed, metadata is "external", | 369 | blocked - device has failed, and the failure hasn't been |
369 | and the failure hasn't been acknowledged yet. | 370 | acknowledged yet by the metadata handler. |
370 | Writes that would write to this device if | 371 | Writes that would write to this device if |
371 | it were not faulty are blocked. | 372 | it were not faulty are blocked. |
372 | spare - device is working, but not a full member. | 373 | spare - device is working, but not a full member. |
373 | This includes spares that are in the process | 374 | This includes spares that are in the process |
374 | of being recovered to | 375 | of being recovered to |
376 | write_error - device has ever seen a write error. | ||
375 | This list may grow in future. | 377 | This list may grow in future. |
376 | This can be written to. | 378 | This can be written to. |
377 | Writing "faulty" simulates a failure on the device. | 379 | Writing "faulty" simulates a failure on the device. |
@@ -379,9 +381,11 @@ Each directory contains: | |||
379 | Writing "writemostly" sets the writemostly flag. | 381 | Writing "writemostly" sets the writemostly flag. |
380 | Writing "-writemostly" clears the writemostly flag. | 382 | Writing "-writemostly" clears the writemostly flag. |
381 | Writing "blocked" sets the "blocked" flag. | 383 | Writing "blocked" sets the "blocked" flag. |
382 | Writing "-blocked" clears the "blocked" flag and allows writes | 384 | Writing "-blocked" clears the "blocked" flags and allows writes |
383 | to complete. | 385 | to complete and possibly simulates an error. |
384 | Writing "in_sync" sets the in_sync flag. | 386 | Writing "in_sync" sets the in_sync flag. |
387 | Writing "write_error" sets writeerrorseen flag. | ||
388 | Writing "-write_error" clears writeerrorseen flag. | ||
385 | 389 | ||
386 | This file responds to select/poll. Any change to 'faulty' | 390 | This file responds to select/poll. Any change to 'faulty' |
387 | or 'blocked' causes an event. | 391 | or 'blocked' causes an event. |
@@ -419,7 +423,6 @@ Each directory contains: | |||
419 | written, it will be rejected. | 423 | written, it will be rejected. |
420 | 424 | ||
421 | recovery_start | 425 | recovery_start |
422 | |||
423 | When the device is not 'in_sync', this records the number of | 426 | When the device is not 'in_sync', this records the number of |
424 | sectors from the start of the device which are known to be | 427 | sectors from the start of the device which are known to be |
425 | correct. This is normally zero, but during a recovery | 428 | correct. This is normally zero, but during a recovery |
@@ -435,6 +438,20 @@ Each directory contains: | |||
435 | Setting this to 'none' is equivalent to setting 'in_sync'. | 438 | Setting this to 'none' is equivalent to setting 'in_sync'. |
436 | Setting to any other value also clears the 'in_sync' flag. | 439 | Setting to any other value also clears the 'in_sync' flag. |
437 | 440 | ||
441 | bad_blocks | ||
442 | This gives the list of all known bad blocks in the form of | ||
443 | start address and length (in sectors respectively). If output | ||
444 | is too big to fit in a page, it will be truncated. Writing | ||
445 | "sector length" to this file adds new acknowledged (i.e. | ||
446 | recorded to disk safely) bad blocks. | ||
447 | |||
448 | unacknowledged_bad_blocks | ||
449 | This gives the list of known-but-not-yet-saved-to-disk bad | ||
450 | blocks in the same form of 'bad_blocks'. If output is too big | ||
451 | to fit in a page, it will be truncated. Writing to this file | ||
452 | adds bad blocks without acknowledging them. This is largely | ||
453 | for testing. | ||
454 | |||
438 | 455 | ||
439 | 456 | ||
440 | An active md device will also contain and entry for each active device | 457 | An active md device will also contain and entry for each active device |
diff --git a/Documentation/media-framework.txt b/Documentation/media-framework.txt index 76a2087db205..669b5fb03a86 100644 --- a/Documentation/media-framework.txt +++ b/Documentation/media-framework.txt | |||
@@ -310,7 +310,7 @@ is non-immutable. The operation must either configure the hardware or store | |||
310 | the configuration information to be applied later. | 310 | the configuration information to be applied later. |
311 | 311 | ||
312 | Link configuration must not have any side effect on other links. If an enabled | 312 | Link configuration must not have any side effect on other links. If an enabled |
313 | link at a sink pad prevents another link at the same pad from being disabled, | 313 | link at a sink pad prevents another link at the same pad from being enabled, |
314 | the link_setup operation must return -EBUSY and can't implicitly disable the | 314 | the link_setup operation must return -EBUSY and can't implicitly disable the |
315 | first enabled link. | 315 | first enabled link. |
316 | 316 | ||
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX index 4edd78dfb362..bbce1215434a 100644 --- a/Documentation/networking/00-INDEX +++ b/Documentation/networking/00-INDEX | |||
@@ -1,13 +1,21 @@ | |||
1 | 00-INDEX | 1 | 00-INDEX |
2 | - this file | 2 | - this file |
3 | 3c359.txt | ||
4 | - information on the 3Com TokenLink Velocity XL (3c5359) driver. | ||
3 | 3c505.txt | 5 | 3c505.txt |
4 | - information on the 3Com EtherLink Plus (3c505) driver. | 6 | - information on the 3Com EtherLink Plus (3c505) driver. |
7 | 3c509.txt | ||
8 | - information on the 3Com Etherlink III Series Ethernet cards. | ||
5 | 6pack.txt | 9 | 6pack.txt |
6 | - info on the 6pack protocol, an alternative to KISS for AX.25 | 10 | - info on the 6pack protocol, an alternative to KISS for AX.25 |
7 | DLINK.txt | 11 | DLINK.txt |
8 | - info on the D-Link DE-600/DE-620 parallel port pocket adapters | 12 | - info on the D-Link DE-600/DE-620 parallel port pocket adapters |
9 | PLIP.txt | 13 | PLIP.txt |
10 | - PLIP: The Parallel Line Internet Protocol device driver | 14 | - PLIP: The Parallel Line Internet Protocol device driver |
15 | README.ipw2100 | ||
16 | - README for the Intel PRO/Wireless 2100 driver. | ||
17 | README.ipw2200 | ||
18 | - README for the Intel PRO/Wireless 2915ABG and 2200BG driver. | ||
11 | README.sb1000 | 19 | README.sb1000 |
12 | - info on General Instrument/NextLevel SURFboard1000 cable modem. | 20 | - info on General Instrument/NextLevel SURFboard1000 cable modem. |
13 | alias.txt | 21 | alias.txt |
@@ -20,8 +28,12 @@ atm.txt | |||
20 | - info on where to get ATM programs and support for Linux. | 28 | - info on where to get ATM programs and support for Linux. |
21 | ax25.txt | 29 | ax25.txt |
22 | - info on using AX.25 and NET/ROM code for Linux | 30 | - info on using AX.25 and NET/ROM code for Linux |
31 | batman-adv.txt | ||
32 | - B.A.T.M.A.N routing protocol on top of layer 2 Ethernet Frames. | ||
23 | baycom.txt | 33 | baycom.txt |
24 | - info on the driver for Baycom style amateur radio modems | 34 | - info on the driver for Baycom style amateur radio modems |
35 | bonding.txt | ||
36 | - Linux Ethernet Bonding Driver HOWTO: link aggregation in Linux. | ||
25 | bridge.txt | 37 | bridge.txt |
26 | - where to get user space programs for ethernet bridging with Linux. | 38 | - where to get user space programs for ethernet bridging with Linux. |
27 | can.txt | 39 | can.txt |
@@ -34,32 +46,60 @@ cxacru.txt | |||
34 | - Conexant AccessRunner USB ADSL Modem | 46 | - Conexant AccessRunner USB ADSL Modem |
35 | cxacru-cf.py | 47 | cxacru-cf.py |
36 | - Conexant AccessRunner USB ADSL Modem configuration file parser | 48 | - Conexant AccessRunner USB ADSL Modem configuration file parser |
49 | cxgb.txt | ||
50 | - Release Notes for the Chelsio N210 Linux device driver. | ||
51 | dccp.txt | ||
52 | - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42). | ||
37 | de4x5.txt | 53 | de4x5.txt |
38 | - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver | 54 | - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver |
39 | decnet.txt | 55 | decnet.txt |
40 | - info on using the DECnet networking layer in Linux. | 56 | - info on using the DECnet networking layer in Linux. |
41 | depca.txt | 57 | depca.txt |
42 | - the Digital DEPCA/EtherWORKS DE1?? and DE2?? LANCE Ethernet driver | 58 | - the Digital DEPCA/EtherWORKS DE1?? and DE2?? LANCE Ethernet driver |
59 | dl2k.txt | ||
60 | - README for D-Link DL2000-based Gigabit Ethernet Adapters (dl2k.ko). | ||
61 | dm9000.txt | ||
62 | - README for the Simtec DM9000 Network driver. | ||
43 | dmfe.txt | 63 | dmfe.txt |
44 | - info on the Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver. | 64 | - info on the Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver. |
65 | dns_resolver.txt | ||
66 | - The DNS resolver module allows kernel servies to make DNS queries. | ||
67 | driver.txt | ||
68 | - Softnet driver issues. | ||
45 | e100.txt | 69 | e100.txt |
46 | - info on Intel's EtherExpress PRO/100 line of 10/100 boards | 70 | - info on Intel's EtherExpress PRO/100 line of 10/100 boards |
47 | e1000.txt | 71 | e1000.txt |
48 | - info on Intel's E1000 line of gigabit ethernet boards | 72 | - info on Intel's E1000 line of gigabit ethernet boards |
73 | e1000e.txt | ||
74 | - README for the Intel Gigabit Ethernet Driver (e1000e). | ||
49 | eql.txt | 75 | eql.txt |
50 | - serial IP load balancing | 76 | - serial IP load balancing |
51 | ewrk3.txt | 77 | ewrk3.txt |
52 | - the Digital EtherWORKS 3 DE203/4/5 Ethernet driver | 78 | - the Digital EtherWORKS 3 DE203/4/5 Ethernet driver |
79 | fib_trie.txt | ||
80 | - Level Compressed Trie (LC-trie) notes: a structure for routing. | ||
53 | filter.txt | 81 | filter.txt |
54 | - Linux Socket Filtering | 82 | - Linux Socket Filtering |
55 | fore200e.txt | 83 | fore200e.txt |
56 | - FORE Systems PCA-200E/SBA-200E ATM NIC driver info. | 84 | - FORE Systems PCA-200E/SBA-200E ATM NIC driver info. |
57 | framerelay.txt | 85 | framerelay.txt |
58 | - info on using Frame Relay/Data Link Connection Identifier (DLCI). | 86 | - info on using Frame Relay/Data Link Connection Identifier (DLCI). |
87 | gen_stats.txt | ||
88 | - Generic networking statistics for netlink users. | ||
89 | generic_hdlc.txt | ||
90 | - The generic High Level Data Link Control (HDLC) layer. | ||
59 | generic_netlink.txt | 91 | generic_netlink.txt |
60 | - info on Generic Netlink | 92 | - info on Generic Netlink |
93 | gianfar.txt | ||
94 | - Gianfar Ethernet Driver. | ||
61 | ieee802154.txt | 95 | ieee802154.txt |
62 | - Linux IEEE 802.15.4 implementation, API and drivers | 96 | - Linux IEEE 802.15.4 implementation, API and drivers |
97 | ifenslave.c | ||
98 | - Configure network interfaces for parallel routing (bonding). | ||
99 | igb.txt | ||
100 | - README for the Intel Gigabit Ethernet Driver (igb). | ||
101 | igbvf.txt | ||
102 | - README for the Intel Gigabit Ethernet Driver (igbvf). | ||
63 | ip-sysctl.txt | 103 | ip-sysctl.txt |
64 | - /proc/sys/net/ipv4/* variables | 104 | - /proc/sys/net/ipv4/* variables |
65 | ip_dynaddr.txt | 105 | ip_dynaddr.txt |
@@ -68,41 +108,117 @@ ipddp.txt | |||
68 | - AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation | 108 | - AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation |
69 | iphase.txt | 109 | iphase.txt |
70 | - Interphase PCI ATM (i)Chip IA Linux driver info. | 110 | - Interphase PCI ATM (i)Chip IA Linux driver info. |
111 | ipv6.txt | ||
112 | - Options to the ipv6 kernel module. | ||
113 | ipvs-sysctl.txt | ||
114 | - Per-inode explanation of the /proc/sys/net/ipv4/vs interface. | ||
71 | irda.txt | 115 | irda.txt |
72 | - where to get IrDA (infrared) utilities and info for Linux. | 116 | - where to get IrDA (infrared) utilities and info for Linux. |
117 | ixgb.txt | ||
118 | - README for the Intel 10 Gigabit Ethernet Driver (ixgb). | ||
119 | ixgbe.txt | ||
120 | - README for the Intel 10 Gigabit Ethernet Driver (ixgbe). | ||
121 | ixgbevf.txt | ||
122 | - README for the Intel Virtual Function (VF) Driver (ixgbevf). | ||
123 | l2tp.txt | ||
124 | - User guide to the L2TP tunnel protocol. | ||
73 | lapb-module.txt | 125 | lapb-module.txt |
74 | - programming information of the LAPB module. | 126 | - programming information of the LAPB module. |
75 | ltpc.txt | 127 | ltpc.txt |
76 | - the Apple or Farallon LocalTalk PC card driver | 128 | - the Apple or Farallon LocalTalk PC card driver |
129 | mac80211-injection.txt | ||
130 | - HOWTO use packet injection with mac80211 | ||
77 | multicast.txt | 131 | multicast.txt |
78 | - Behaviour of cards under Multicast | 132 | - Behaviour of cards under Multicast |
133 | multiqueue.txt | ||
134 | - HOWTO for multiqueue network device support. | ||
135 | netconsole.txt | ||
136 | - The network console module netconsole.ko: configuration and notes. | ||
137 | netdev-features.txt | ||
138 | - Network interface features API description. | ||
79 | netdevices.txt | 139 | netdevices.txt |
80 | - info on network device driver functions exported to the kernel. | 140 | - info on network device driver functions exported to the kernel. |
141 | netif-msg.txt | ||
142 | - Design of the network interface message level setting (NETIF_MSG_*). | ||
143 | nfc.txt | ||
144 | - The Linux Near Field Communication (NFS) subsystem. | ||
81 | olympic.txt | 145 | olympic.txt |
82 | - IBM PCI Pit/Pit-Phy/Olympic Token Ring driver info. | 146 | - IBM PCI Pit/Pit-Phy/Olympic Token Ring driver info. |
147 | operstates.txt | ||
148 | - Overview of network interface operational states. | ||
149 | packet_mmap.txt | ||
150 | - User guide to memory mapped packet socket rings (PACKET_[RT]X_RING). | ||
151 | phonet.txt | ||
152 | - The Phonet packet protocol used in Nokia cellular modems. | ||
153 | phy.txt | ||
154 | - The PHY abstraction layer. | ||
155 | pktgen.txt | ||
156 | - User guide to the kernel packet generator (pktgen.ko). | ||
83 | policy-routing.txt | 157 | policy-routing.txt |
84 | - IP policy-based routing | 158 | - IP policy-based routing |
159 | ppp_generic.txt | ||
160 | - Information about the generic PPP driver. | ||
161 | proc_net_tcp.txt | ||
162 | - Per inode overview of the /proc/net/tcp and /proc/net/tcp6 interfaces. | ||
163 | radiotap-headers.txt | ||
164 | - Background on radiotap headers. | ||
85 | ray_cs.txt | 165 | ray_cs.txt |
86 | - Raylink Wireless LAN card driver info. | 166 | - Raylink Wireless LAN card driver info. |
167 | rds.txt | ||
168 | - Background on the reliable, ordered datagram delivery method RDS. | ||
169 | regulatory.txt | ||
170 | - Overview of the Linux wireless regulatory infrastructure. | ||
171 | rxrpc.txt | ||
172 | - Guide to the RxRPC protocol. | ||
173 | s2io.txt | ||
174 | - Release notes for Neterion Xframe I/II 10GbE driver. | ||
175 | scaling.txt | ||
176 | - Explanation of network scaling techniques: RSS, RPS, RFS, aRFS, XPS. | ||
177 | sctp.txt | ||
178 | - Notes on the Linux kernel implementation of the SCTP protocol. | ||
179 | secid.txt | ||
180 | - Explanation of the secid member in flow structures. | ||
87 | skfp.txt | 181 | skfp.txt |
88 | - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info. | 182 | - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info. |
89 | smc9.txt | 183 | smc9.txt |
90 | - the driver for SMC's 9000 series of Ethernet cards | 184 | - the driver for SMC's 9000 series of Ethernet cards |
91 | smctr.txt | 185 | smctr.txt |
92 | - SMC TokenCard TokenRing Linux driver info. | 186 | - SMC TokenCard TokenRing Linux driver info. |
187 | spider-net.txt | ||
188 | - README for the Spidernet Driver (as found in PS3 / Cell BE). | ||
189 | stmmac.txt | ||
190 | - README for the STMicro Synopsys Ethernet driver. | ||
191 | tc-actions-env-rules.txt | ||
192 | - rules for traffic control (tc) actions. | ||
193 | timestamping.txt | ||
194 | - overview of network packet timestamping variants. | ||
93 | tcp.txt | 195 | tcp.txt |
94 | - short blurb on how TCP output takes place. | 196 | - short blurb on how TCP output takes place. |
197 | tcp-thin.txt | ||
198 | - kernel tuning options for low rate 'thin' TCP streams. | ||
95 | tlan.txt | 199 | tlan.txt |
96 | - ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info. | 200 | - ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info. |
97 | tms380tr.txt | 201 | tms380tr.txt |
98 | - SysKonnect Token Ring ISA/PCI adapter driver info. | 202 | - SysKonnect Token Ring ISA/PCI adapter driver info. |
203 | tproxy.txt | ||
204 | - Transparent proxy support user guide. | ||
99 | tuntap.txt | 205 | tuntap.txt |
100 | - TUN/TAP device driver, allowing user space Rx/Tx of packets. | 206 | - TUN/TAP device driver, allowing user space Rx/Tx of packets. |
207 | udplite.txt | ||
208 | - UDP-Lite protocol (RFC 3828) introduction. | ||
101 | vortex.txt | 209 | vortex.txt |
102 | - info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards. | 210 | - info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards. |
211 | vxge.txt | ||
212 | - README for the Neterion X3100 PCIe Server Adapter. | ||
103 | x25.txt | 213 | x25.txt |
104 | - general info on X.25 development. | 214 | - general info on X.25 development. |
105 | x25-iface.txt | 215 | x25-iface.txt |
106 | - description of the X.25 Packet Layer to LAPB device interface. | 216 | - description of the X.25 Packet Layer to LAPB device interface. |
217 | xfrm_proc.txt | ||
218 | - description of the statistics package for XFRM. | ||
219 | xfrm_sync.txt | ||
220 | - sync patches for XFRM enable migration of an SA between hosts. | ||
221 | xfrm_sysctl.txt | ||
222 | - description of the XFRM configuration options. | ||
107 | z8530drv.txt | 223 | z8530drv.txt |
108 | - info about Linux driver for Z8530 based HDLC cards for AX.25 | 224 | - info about Linux driver for Z8530 based HDLC cards for AX.25 |
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 675612ff41ae..91df678fb7f8 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -238,6 +238,18 @@ ad_select | |||
238 | 238 | ||
239 | This option was added in bonding version 3.4.0. | 239 | This option was added in bonding version 3.4.0. |
240 | 240 | ||
241 | all_slaves_active | ||
242 | |||
243 | Specifies that duplicate frames (received on inactive ports) should be | ||
244 | dropped (0) or delivered (1). | ||
245 | |||
246 | Normally, bonding will drop duplicate frames (received on inactive | ||
247 | ports), which is desirable for most users. But there are some times | ||
248 | it is nice to allow duplicate frames to be delivered. | ||
249 | |||
250 | The default value is 0 (drop duplicate frames received on inactive | ||
251 | ports). | ||
252 | |||
241 | arp_interval | 253 | arp_interval |
242 | 254 | ||
243 | Specifies the ARP link monitoring frequency in milliseconds. | 255 | Specifies the ARP link monitoring frequency in milliseconds. |
@@ -433,6 +445,23 @@ miimon | |||
433 | determined. See the High Availability section for additional | 445 | determined. See the High Availability section for additional |
434 | information. The default value is 0. | 446 | information. The default value is 0. |
435 | 447 | ||
448 | min_links | ||
449 | |||
450 | Specifies the minimum number of links that must be active before | ||
451 | asserting carrier. It is similar to the Cisco EtherChannel min-links | ||
452 | feature. This allows setting the minimum number of member ports that | ||
453 | must be up (link-up state) before marking the bond device as up | ||
454 | (carrier on). This is useful for situations where higher level services | ||
455 | such as clustering want to ensure a minimum number of low bandwidth | ||
456 | links are active before switchover. This option only affect 802.3ad | ||
457 | mode. | ||
458 | |||
459 | The default value is 0. This will cause carrier to be asserted (for | ||
460 | 802.3ad mode) whenever there is an active aggregator, regardless of the | ||
461 | number of available links in that aggregator. Note that, because an | ||
462 | aggregator cannot be active without at least one available link, | ||
463 | setting this option to 0 or to 1 has the exact same effect. | ||
464 | |||
436 | mode | 465 | mode |
437 | 466 | ||
438 | Specifies one of the bonding policies. The default is | 467 | Specifies one of the bonding policies. The default is |
@@ -599,7 +628,7 @@ num_unsol_na | |||
599 | affect only the active-backup mode. These options were added for | 628 | affect only the active-backup mode. These options were added for |
600 | bonding versions 3.3.0 and 3.4.0 respectively. | 629 | bonding versions 3.3.0 and 3.4.0 respectively. |
601 | 630 | ||
602 | From Linux 2.6.40 and bonding version 3.7.1, these notifications | 631 | From Linux 3.0 and bonding version 3.7.1, these notifications |
603 | are generated by the ipv4 and ipv6 code and the numbers of | 632 | are generated by the ipv4 and ipv6 code and the numbers of |
604 | repetitions cannot be set independently. | 633 | repetitions cannot be set independently. |
605 | 634 | ||
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index db2a4067013c..81546990f41c 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -992,7 +992,7 @@ bindv6only - BOOLEAN | |||
992 | TRUE: disable IPv4-mapped address feature | 992 | TRUE: disable IPv4-mapped address feature |
993 | FALSE: enable IPv4-mapped address feature | 993 | FALSE: enable IPv4-mapped address feature |
994 | 994 | ||
995 | Default: FALSE (as specified in RFC2553bis) | 995 | Default: FALSE (as specified in RFC3493) |
996 | 996 | ||
997 | IPv6 Fragmentation: | 997 | IPv6 Fragmentation: |
998 | 998 | ||
diff --git a/Documentation/networking/scaling.txt b/Documentation/networking/scaling.txt new file mode 100644 index 000000000000..58fd7414e6c0 --- /dev/null +++ b/Documentation/networking/scaling.txt | |||
@@ -0,0 +1,378 @@ | |||
1 | Scaling in the Linux Networking Stack | ||
2 | |||
3 | |||
4 | Introduction | ||
5 | ============ | ||
6 | |||
7 | This document describes a set of complementary techniques in the Linux | ||
8 | networking stack to increase parallelism and improve performance for | ||
9 | multi-processor systems. | ||
10 | |||
11 | The following technologies are described: | ||
12 | |||
13 | RSS: Receive Side Scaling | ||
14 | RPS: Receive Packet Steering | ||
15 | RFS: Receive Flow Steering | ||
16 | Accelerated Receive Flow Steering | ||
17 | XPS: Transmit Packet Steering | ||
18 | |||
19 | |||
20 | RSS: Receive Side Scaling | ||
21 | ========================= | ||
22 | |||
23 | Contemporary NICs support multiple receive and transmit descriptor queues | ||
24 | (multi-queue). On reception, a NIC can send different packets to different | ||
25 | queues to distribute processing among CPUs. The NIC distributes packets by | ||
26 | applying a filter to each packet that assigns it to one of a small number | ||
27 | of logical flows. Packets for each flow are steered to a separate receive | ||
28 | queue, which in turn can be processed by separate CPUs. This mechanism is | ||
29 | generally known as “Receive-side Scaling” (RSS). The goal of RSS and | ||
30 | the other scaling techniques to increase performance uniformly. | ||
31 | Multi-queue distribution can also be used for traffic prioritization, but | ||
32 | that is not the focus of these techniques. | ||
33 | |||
34 | The filter used in RSS is typically a hash function over the network | ||
35 | and/or transport layer headers-- for example, a 4-tuple hash over | ||
36 | IP addresses and TCP ports of a packet. The most common hardware | ||
37 | implementation of RSS uses a 128-entry indirection table where each entry | ||
38 | stores a queue number. The receive queue for a packet is determined | ||
39 | by masking out the low order seven bits of the computed hash for the | ||
40 | packet (usually a Toeplitz hash), taking this number as a key into the | ||
41 | indirection table and reading the corresponding value. | ||
42 | |||
43 | Some advanced NICs allow steering packets to queues based on | ||
44 | programmable filters. For example, webserver bound TCP port 80 packets | ||
45 | can be directed to their own receive queue. Such “n-tuple” filters can | ||
46 | be configured from ethtool (--config-ntuple). | ||
47 | |||
48 | ==== RSS Configuration | ||
49 | |||
50 | The driver for a multi-queue capable NIC typically provides a kernel | ||
51 | module parameter for specifying the number of hardware queues to | ||
52 | configure. In the bnx2x driver, for instance, this parameter is called | ||
53 | num_queues. A typical RSS configuration would be to have one receive queue | ||
54 | for each CPU if the device supports enough queues, or otherwise at least | ||
55 | one for each memory domain, where a memory domain is a set of CPUs that | ||
56 | share a particular memory level (L1, L2, NUMA node, etc.). | ||
57 | |||
58 | The indirection table of an RSS device, which resolves a queue by masked | ||
59 | hash, is usually programmed by the driver at initialization. The | ||
60 | default mapping is to distribute the queues evenly in the table, but the | ||
61 | indirection table can be retrieved and modified at runtime using ethtool | ||
62 | commands (--show-rxfh-indir and --set-rxfh-indir). Modifying the | ||
63 | indirection table could be done to give different queues different | ||
64 | relative weights. | ||
65 | |||
66 | == RSS IRQ Configuration | ||
67 | |||
68 | Each receive queue has a separate IRQ associated with it. The NIC triggers | ||
69 | this to notify a CPU when new packets arrive on the given queue. The | ||
70 | signaling path for PCIe devices uses message signaled interrupts (MSI-X), | ||
71 | that can route each interrupt to a particular CPU. The active mapping | ||
72 | of queues to IRQs can be determined from /proc/interrupts. By default, | ||
73 | an IRQ may be handled on any CPU. Because a non-negligible part of packet | ||
74 | processing takes place in receive interrupt handling, it is advantageous | ||
75 | to spread receive interrupts between CPUs. To manually adjust the IRQ | ||
76 | affinity of each interrupt see Documentation/IRQ-affinity. Some systems | ||
77 | will be running irqbalance, a daemon that dynamically optimizes IRQ | ||
78 | assignments and as a result may override any manual settings. | ||
79 | |||
80 | == Suggested Configuration | ||
81 | |||
82 | RSS should be enabled when latency is a concern or whenever receive | ||
83 | interrupt processing forms a bottleneck. Spreading load between CPUs | ||
84 | decreases queue length. For low latency networking, the optimal setting | ||
85 | is to allocate as many queues as there are CPUs in the system (or the | ||
86 | NIC maximum, if lower). The most efficient high-rate configuration | ||
87 | is likely the one with the smallest number of receive queues where no | ||
88 | receive queue overflows due to a saturated CPU, because in default | ||
89 | mode with interrupt coalescing enabled, the aggregate number of | ||
90 | interrupts (and thus work) grows with each additional queue. | ||
91 | |||
92 | Per-cpu load can be observed using the mpstat utility, but note that on | ||
93 | processors with hyperthreading (HT), each hyperthread is represented as | ||
94 | a separate CPU. For interrupt handling, HT has shown no benefit in | ||
95 | initial tests, so limit the number of queues to the number of CPU cores | ||
96 | in the system. | ||
97 | |||
98 | |||
99 | RPS: Receive Packet Steering | ||
100 | ============================ | ||
101 | |||
102 | Receive Packet Steering (RPS) is logically a software implementation of | ||
103 | RSS. Being in software, it is necessarily called later in the datapath. | ||
104 | Whereas RSS selects the queue and hence CPU that will run the hardware | ||
105 | interrupt handler, RPS selects the CPU to perform protocol processing | ||
106 | above the interrupt handler. This is accomplished by placing the packet | ||
107 | on the desired CPU’s backlog queue and waking up the CPU for processing. | ||
108 | RPS has some advantages over RSS: 1) it can be used with any NIC, | ||
109 | 2) software filters can easily be added to hash over new protocols, | ||
110 | 3) it does not increase hardware device interrupt rate (although it does | ||
111 | introduce inter-processor interrupts (IPIs)). | ||
112 | |||
113 | RPS is called during bottom half of the receive interrupt handler, when | ||
114 | a driver sends a packet up the network stack with netif_rx() or | ||
115 | netif_receive_skb(). These call the get_rps_cpu() function, which | ||
116 | selects the queue that should process a packet. | ||
117 | |||
118 | The first step in determining the target CPU for RPS is to calculate a | ||
119 | flow hash over the packet’s addresses or ports (2-tuple or 4-tuple hash | ||
120 | depending on the protocol). This serves as a consistent hash of the | ||
121 | associated flow of the packet. The hash is either provided by hardware | ||
122 | or will be computed in the stack. Capable hardware can pass the hash in | ||
123 | the receive descriptor for the packet; this would usually be the same | ||
124 | hash used for RSS (e.g. computed Toeplitz hash). The hash is saved in | ||
125 | skb->rx_hash and can be used elsewhere in the stack as a hash of the | ||
126 | packet’s flow. | ||
127 | |||
128 | Each receive hardware queue has an associated list of CPUs to which | ||
129 | RPS may enqueue packets for processing. For each received packet, | ||
130 | an index into the list is computed from the flow hash modulo the size | ||
131 | of the list. The indexed CPU is the target for processing the packet, | ||
132 | and the packet is queued to the tail of that CPU’s backlog queue. At | ||
133 | the end of the bottom half routine, IPIs are sent to any CPUs for which | ||
134 | packets have been queued to their backlog queue. The IPI wakes backlog | ||
135 | processing on the remote CPU, and any queued packets are then processed | ||
136 | up the networking stack. | ||
137 | |||
138 | ==== RPS Configuration | ||
139 | |||
140 | RPS requires a kernel compiled with the CONFIG_RPS kconfig symbol (on | ||
141 | by default for SMP). Even when compiled in, RPS remains disabled until | ||
142 | explicitly configured. The list of CPUs to which RPS may forward traffic | ||
143 | can be configured for each receive queue using a sysfs file entry: | ||
144 | |||
145 | /sys/class/net/<dev>/queues/rx-<n>/rps_cpus | ||
146 | |||
147 | This file implements a bitmap of CPUs. RPS is disabled when it is zero | ||
148 | (the default), in which case packets are processed on the interrupting | ||
149 | CPU. Documentation/IRQ-affinity.txt explains how CPUs are assigned to | ||
150 | the bitmap. | ||
151 | |||
152 | == Suggested Configuration | ||
153 | |||
154 | For a single queue device, a typical RPS configuration would be to set | ||
155 | the rps_cpus to the CPUs in the same memory domain of the interrupting | ||
156 | CPU. If NUMA locality is not an issue, this could also be all CPUs in | ||
157 | the system. At high interrupt rate, it might be wise to exclude the | ||
158 | interrupting CPU from the map since that already performs much work. | ||
159 | |||
160 | For a multi-queue system, if RSS is configured so that a hardware | ||
161 | receive queue is mapped to each CPU, then RPS is probably redundant | ||
162 | and unnecessary. If there are fewer hardware queues than CPUs, then | ||
163 | RPS might be beneficial if the rps_cpus for each queue are the ones that | ||
164 | share the same memory domain as the interrupting CPU for that queue. | ||
165 | |||
166 | |||
167 | RFS: Receive Flow Steering | ||
168 | ========================== | ||
169 | |||
170 | While RPS steers packets solely based on hash, and thus generally | ||
171 | provides good load distribution, it does not take into account | ||
172 | application locality. This is accomplished by Receive Flow Steering | ||
173 | (RFS). The goal of RFS is to increase datacache hitrate by steering | ||
174 | kernel processing of packets to the CPU where the application thread | ||
175 | consuming the packet is running. RFS relies on the same RPS mechanisms | ||
176 | to enqueue packets onto the backlog of another CPU and to wake up that | ||
177 | CPU. | ||
178 | |||
179 | In RFS, packets are not forwarded directly by the value of their hash, | ||
180 | but the hash is used as index into a flow lookup table. This table maps | ||
181 | flows to the CPUs where those flows are being processed. The flow hash | ||
182 | (see RPS section above) is used to calculate the index into this table. | ||
183 | The CPU recorded in each entry is the one which last processed the flow. | ||
184 | If an entry does not hold a valid CPU, then packets mapped to that entry | ||
185 | are steered using plain RPS. Multiple table entries may point to the | ||
186 | same CPU. Indeed, with many flows and few CPUs, it is very likely that | ||
187 | a single application thread handles flows with many different flow hashes. | ||
188 | |||
189 | rps_sock_table is a global flow table that contains the *desired* CPU for | ||
190 | flows: the CPU that is currently processing the flow in userspace. Each | ||
191 | table value is a CPU index that is updated during calls to recvmsg and | ||
192 | sendmsg (specifically, inet_recvmsg(), inet_sendmsg(), inet_sendpage() | ||
193 | and tcp_splice_read()). | ||
194 | |||
195 | When the scheduler moves a thread to a new CPU while it has outstanding | ||
196 | receive packets on the old CPU, packets may arrive out of order. To | ||
197 | avoid this, RFS uses a second flow table to track outstanding packets | ||
198 | for each flow: rps_dev_flow_table is a table specific to each hardware | ||
199 | receive queue of each device. Each table value stores a CPU index and a | ||
200 | counter. The CPU index represents the *current* CPU onto which packets | ||
201 | for this flow are enqueued for further kernel processing. Ideally, kernel | ||
202 | and userspace processing occur on the same CPU, and hence the CPU index | ||
203 | in both tables is identical. This is likely false if the scheduler has | ||
204 | recently migrated a userspace thread while the kernel still has packets | ||
205 | enqueued for kernel processing on the old CPU. | ||
206 | |||
207 | The counter in rps_dev_flow_table values records the length of the current | ||
208 | CPU's backlog when a packet in this flow was last enqueued. Each backlog | ||
209 | queue has a head counter that is incremented on dequeue. A tail counter | ||
210 | is computed as head counter + queue length. In other words, the counter | ||
211 | in rps_dev_flow_table[i] records the last element in flow i that has | ||
212 | been enqueued onto the currently designated CPU for flow i (of course, | ||
213 | entry i is actually selected by hash and multiple flows may hash to the | ||
214 | same entry i). | ||
215 | |||
216 | And now the trick for avoiding out of order packets: when selecting the | ||
217 | CPU for packet processing (from get_rps_cpu()) the rps_sock_flow table | ||
218 | and the rps_dev_flow table of the queue that the packet was received on | ||
219 | are compared. If the desired CPU for the flow (found in the | ||
220 | rps_sock_flow table) matches the current CPU (found in the rps_dev_flow | ||
221 | table), the packet is enqueued onto that CPU’s backlog. If they differ, | ||
222 | the current CPU is updated to match the desired CPU if one of the | ||
223 | following is true: | ||
224 | |||
225 | - The current CPU's queue head counter >= the recorded tail counter | ||
226 | value in rps_dev_flow[i] | ||
227 | - The current CPU is unset (equal to NR_CPUS) | ||
228 | - The current CPU is offline | ||
229 | |||
230 | After this check, the packet is sent to the (possibly updated) current | ||
231 | CPU. These rules aim to ensure that a flow only moves to a new CPU when | ||
232 | there are no packets outstanding on the old CPU, as the outstanding | ||
233 | packets could arrive later than those about to be processed on the new | ||
234 | CPU. | ||
235 | |||
236 | ==== RFS Configuration | ||
237 | |||
238 | RFS is only available if the kconfig symbol CONFIG_RFS is enabled (on | ||
239 | by default for SMP). The functionality remains disabled until explicitly | ||
240 | configured. The number of entries in the global flow table is set through: | ||
241 | |||
242 | /proc/sys/net/core/rps_sock_flow_entries | ||
243 | |||
244 | The number of entries in the per-queue flow table are set through: | ||
245 | |||
246 | /sys/class/net/<dev>/queues/tx-<n>/rps_flow_cnt | ||
247 | |||
248 | == Suggested Configuration | ||
249 | |||
250 | Both of these need to be set before RFS is enabled for a receive queue. | ||
251 | Values for both are rounded up to the nearest power of two. The | ||
252 | suggested flow count depends on the expected number of active connections | ||
253 | at any given time, which may be significantly less than the number of open | ||
254 | connections. We have found that a value of 32768 for rps_sock_flow_entries | ||
255 | works fairly well on a moderately loaded server. | ||
256 | |||
257 | For a single queue device, the rps_flow_cnt value for the single queue | ||
258 | would normally be configured to the same value as rps_sock_flow_entries. | ||
259 | For a multi-queue device, the rps_flow_cnt for each queue might be | ||
260 | configured as rps_sock_flow_entries / N, where N is the number of | ||
261 | queues. So for instance, if rps_flow_entries is set to 32768 and there | ||
262 | are 16 configured receive queues, rps_flow_cnt for each queue might be | ||
263 | configured as 2048. | ||
264 | |||
265 | |||
266 | Accelerated RFS | ||
267 | =============== | ||
268 | |||
269 | Accelerated RFS is to RFS what RSS is to RPS: a hardware-accelerated load | ||
270 | balancing mechanism that uses soft state to steer flows based on where | ||
271 | the application thread consuming the packets of each flow is running. | ||
272 | Accelerated RFS should perform better than RFS since packets are sent | ||
273 | directly to a CPU local to the thread consuming the data. The target CPU | ||
274 | will either be the same CPU where the application runs, or at least a CPU | ||
275 | which is local to the application thread’s CPU in the cache hierarchy. | ||
276 | |||
277 | To enable accelerated RFS, the networking stack calls the | ||
278 | ndo_rx_flow_steer driver function to communicate the desired hardware | ||
279 | queue for packets matching a particular flow. The network stack | ||
280 | automatically calls this function every time a flow entry in | ||
281 | rps_dev_flow_table is updated. The driver in turn uses a device specific | ||
282 | method to program the NIC to steer the packets. | ||
283 | |||
284 | The hardware queue for a flow is derived from the CPU recorded in | ||
285 | rps_dev_flow_table. The stack consults a CPU to hardware queue map which | ||
286 | is maintained by the NIC driver. This is an auto-generated reverse map of | ||
287 | the IRQ affinity table shown by /proc/interrupts. Drivers can use | ||
288 | functions in the cpu_rmap (“CPU affinity reverse map”) kernel library | ||
289 | to populate the map. For each CPU, the corresponding queue in the map is | ||
290 | set to be one whose processing CPU is closest in cache locality. | ||
291 | |||
292 | ==== Accelerated RFS Configuration | ||
293 | |||
294 | Accelerated RFS is only available if the kernel is compiled with | ||
295 | CONFIG_RFS_ACCEL and support is provided by the NIC device and driver. | ||
296 | It also requires that ntuple filtering is enabled via ethtool. The map | ||
297 | of CPU to queues is automatically deduced from the IRQ affinities | ||
298 | configured for each receive queue by the driver, so no additional | ||
299 | configuration should be necessary. | ||
300 | |||
301 | == Suggested Configuration | ||
302 | |||
303 | This technique should be enabled whenever one wants to use RFS and the | ||
304 | NIC supports hardware acceleration. | ||
305 | |||
306 | XPS: Transmit Packet Steering | ||
307 | ============================= | ||
308 | |||
309 | Transmit Packet Steering is a mechanism for intelligently selecting | ||
310 | which transmit queue to use when transmitting a packet on a multi-queue | ||
311 | device. To accomplish this, a mapping from CPU to hardware queue(s) is | ||
312 | recorded. The goal of this mapping is usually to assign queues | ||
313 | exclusively to a subset of CPUs, where the transmit completions for | ||
314 | these queues are processed on a CPU within this set. This choice | ||
315 | provides two benefits. First, contention on the device queue lock is | ||
316 | significantly reduced since fewer CPUs contend for the same queue | ||
317 | (contention can be eliminated completely if each CPU has its own | ||
318 | transmit queue). Secondly, cache miss rate on transmit completion is | ||
319 | reduced, in particular for data cache lines that hold the sk_buff | ||
320 | structures. | ||
321 | |||
322 | XPS is configured per transmit queue by setting a bitmap of CPUs that | ||
323 | may use that queue to transmit. The reverse mapping, from CPUs to | ||
324 | transmit queues, is computed and maintained for each network device. | ||
325 | When transmitting the first packet in a flow, the function | ||
326 | get_xps_queue() is called to select a queue. This function uses the ID | ||
327 | of the running CPU as a key into the CPU-to-queue lookup table. If the | ||
328 | ID matches a single queue, that is used for transmission. If multiple | ||
329 | queues match, one is selected by using the flow hash to compute an index | ||
330 | into the set. | ||
331 | |||
332 | The queue chosen for transmitting a particular flow is saved in the | ||
333 | corresponding socket structure for the flow (e.g. a TCP connection). | ||
334 | This transmit queue is used for subsequent packets sent on the flow to | ||
335 | prevent out of order (ooo) packets. The choice also amortizes the cost | ||
336 | of calling get_xps_queues() over all packets in the flow. To avoid | ||
337 | ooo packets, the queue for a flow can subsequently only be changed if | ||
338 | skb->ooo_okay is set for a packet in the flow. This flag indicates that | ||
339 | there are no outstanding packets in the flow, so the transmit queue can | ||
340 | change without the risk of generating out of order packets. The | ||
341 | transport layer is responsible for setting ooo_okay appropriately. TCP, | ||
342 | for instance, sets the flag when all data for a connection has been | ||
343 | acknowledged. | ||
344 | |||
345 | ==== XPS Configuration | ||
346 | |||
347 | XPS is only available if the kconfig symbol CONFIG_XPS is enabled (on by | ||
348 | default for SMP). The functionality remains disabled until explicitly | ||
349 | configured. To enable XPS, the bitmap of CPUs that may use a transmit | ||
350 | queue is configured using the sysfs file entry: | ||
351 | |||
352 | /sys/class/net/<dev>/queues/tx-<n>/xps_cpus | ||
353 | |||
354 | == Suggested Configuration | ||
355 | |||
356 | For a network device with a single transmission queue, XPS configuration | ||
357 | has no effect, since there is no choice in this case. In a multi-queue | ||
358 | system, XPS is preferably configured so that each CPU maps onto one queue. | ||
359 | If there are as many queues as there are CPUs in the system, then each | ||
360 | queue can also map onto one CPU, resulting in exclusive pairings that | ||
361 | experience no contention. If there are fewer queues than CPUs, then the | ||
362 | best CPUs to share a given queue are probably those that share the cache | ||
363 | with the CPU that processes transmit completions for that queue | ||
364 | (transmit interrupts). | ||
365 | |||
366 | |||
367 | Further Information | ||
368 | =================== | ||
369 | RPS and RFS were introduced in kernel 2.6.35. XPS was incorporated into | ||
370 | 2.6.38. Original patches were submitted by Tom Herbert | ||
371 | (therbert@google.com) | ||
372 | |||
373 | Accelerated RFS was introduced in 2.6.35. Original patches were | ||
374 | submitted by Ben Hutchings (bhutchings@solarflare.com) | ||
375 | |||
376 | Authors: | ||
377 | Tom Herbert (therbert@google.com) | ||
378 | Willem de Bruijn (willemb@google.com) | ||
diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt index 14dd3c6ad97e..6066e3a6b9a9 100644 --- a/Documentation/power/runtime_pm.txt +++ b/Documentation/power/runtime_pm.txt | |||
@@ -54,11 +54,10 @@ referred to as subsystem-level callbacks in what follows. | |||
54 | By default, the callbacks are always invoked in process context with interrupts | 54 | By default, the callbacks are always invoked in process context with interrupts |
55 | enabled. However, subsystems can use the pm_runtime_irq_safe() helper function | 55 | enabled. However, subsystems can use the pm_runtime_irq_safe() helper function |
56 | to tell the PM core that a device's ->runtime_suspend() and ->runtime_resume() | 56 | to tell the PM core that a device's ->runtime_suspend() and ->runtime_resume() |
57 | callbacks should be invoked in atomic context with interrupts disabled | 57 | callbacks should be invoked in atomic context with interrupts disabled. |
58 | (->runtime_idle() is still invoked the default way). This implies that these | 58 | This implies that these callback routines must not block or sleep, but it also |
59 | callback routines must not block or sleep, but it also means that the | 59 | means that the synchronous helper functions listed at the end of Section 4 can |
60 | synchronous helper functions listed at the end of Section 4 can be used within | 60 | be used within an interrupt handler or in an atomic context. |
61 | an interrupt handler or in an atomic context. | ||
62 | 61 | ||
63 | The subsystem-level suspend callback is _entirely_ _responsible_ for handling | 62 | The subsystem-level suspend callback is _entirely_ _responsible_ for handling |
64 | the suspend of the device as appropriate, which may, but need not include | 63 | the suspend of the device as appropriate, which may, but need not include |
@@ -432,8 +431,7 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h: | |||
432 | 431 | ||
433 | void pm_runtime_irq_safe(struct device *dev); | 432 | void pm_runtime_irq_safe(struct device *dev); |
434 | - set the power.irq_safe flag for the device, causing the runtime-PM | 433 | - set the power.irq_safe flag for the device, causing the runtime-PM |
435 | suspend and resume callbacks (but not the idle callback) to be invoked | 434 | callbacks to be invoked with interrupts off |
436 | with interrupts disabled | ||
437 | 435 | ||
438 | void pm_runtime_mark_last_busy(struct device *dev); | 436 | void pm_runtime_mark_last_busy(struct device *dev); |
439 | - set the power.last_busy field to the current time | 437 | - set the power.last_busy field to the current time |
@@ -483,6 +481,7 @@ pm_runtime_suspend() | |||
483 | pm_runtime_autosuspend() | 481 | pm_runtime_autosuspend() |
484 | pm_runtime_resume() | 482 | pm_runtime_resume() |
485 | pm_runtime_get_sync() | 483 | pm_runtime_get_sync() |
484 | pm_runtime_put_sync() | ||
486 | pm_runtime_put_sync_suspend() | 485 | pm_runtime_put_sync_suspend() |
487 | 486 | ||
488 | 5. Runtime PM Initialization, Device Probing and Removal | 487 | 5. Runtime PM Initialization, Device Probing and Removal |
diff --git a/Documentation/ramoops.txt b/Documentation/ramoops.txt new file mode 100644 index 000000000000..8fb1ba7fe7bf --- /dev/null +++ b/Documentation/ramoops.txt | |||
@@ -0,0 +1,76 @@ | |||
1 | Ramoops oops/panic logger | ||
2 | ========================= | ||
3 | |||
4 | Sergiu Iordache <sergiu@chromium.org> | ||
5 | |||
6 | Updated: 8 August 2011 | ||
7 | |||
8 | 0. Introduction | ||
9 | |||
10 | Ramoops is an oops/panic logger that writes its logs to RAM before the system | ||
11 | crashes. It works by logging oopses and panics in a circular buffer. Ramoops | ||
12 | needs a system with persistent RAM so that the content of that area can | ||
13 | survive after a restart. | ||
14 | |||
15 | 1. Ramoops concepts | ||
16 | |||
17 | Ramoops uses a predefined memory area to store the dump. The start and size of | ||
18 | the memory area are set using two variables: | ||
19 | * "mem_address" for the start | ||
20 | * "mem_size" for the size. The memory size will be rounded down to a | ||
21 | power of two. | ||
22 | |||
23 | The memory area is divided into "record_size" chunks (also rounded down to | ||
24 | power of two) and each oops/panic writes a "record_size" chunk of | ||
25 | information. | ||
26 | |||
27 | Dumping both oopses and panics can be done by setting 1 in the "dump_oops" | ||
28 | variable while setting 0 in that variable dumps only the panics. | ||
29 | |||
30 | The module uses a counter to record multiple dumps but the counter gets reset | ||
31 | on restart (i.e. new dumps after the restart will overwrite old ones). | ||
32 | |||
33 | 2. Setting the parameters | ||
34 | |||
35 | Setting the ramoops parameters can be done in 2 different manners: | ||
36 | 1. Use the module parameters (which have the names of the variables described | ||
37 | as before). | ||
38 | 2. Use a platform device and set the platform data. The parameters can then | ||
39 | be set through that platform data. An example of doing that is: | ||
40 | |||
41 | #include <linux/ramoops.h> | ||
42 | [...] | ||
43 | |||
44 | static struct ramoops_platform_data ramoops_data = { | ||
45 | .mem_size = <...>, | ||
46 | .mem_address = <...>, | ||
47 | .record_size = <...>, | ||
48 | .dump_oops = <...>, | ||
49 | }; | ||
50 | |||
51 | static struct platform_device ramoops_dev = { | ||
52 | .name = "ramoops", | ||
53 | .dev = { | ||
54 | .platform_data = &ramoops_data, | ||
55 | }, | ||
56 | }; | ||
57 | |||
58 | [... inside a function ...] | ||
59 | int ret; | ||
60 | |||
61 | ret = platform_device_register(&ramoops_dev); | ||
62 | if (ret) { | ||
63 | printk(KERN_ERR "unable to register platform device\n"); | ||
64 | return ret; | ||
65 | } | ||
66 | |||
67 | 3. Dump format | ||
68 | |||
69 | The data dump begins with a header, currently defined as "====" followed by a | ||
70 | timestamp and a new line. The dump then continues with the actual data. | ||
71 | |||
72 | 4. Reading the data | ||
73 | |||
74 | The dump data can be read from memory (through /dev/mem or other means). | ||
75 | Getting the module parameters, which are needed in order to parse the data, can | ||
76 | be done through /sys/module/ramoops/parameters/* . | ||
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas index 9ed1d9d96783..1b6e27ddb7f3 100644 --- a/Documentation/scsi/ChangeLog.megaraid_sas +++ b/Documentation/scsi/ChangeLog.megaraid_sas | |||
@@ -1,3 +1,11 @@ | |||
1 | Release Date : Tue. Jul 26, 2011 17:00:00 PST 2010 - | ||
2 | (emaild-id:megaraidlinux@lsi.com) | ||
3 | Adam Radford | ||
4 | Current Version : 00.00.05.40-rc1 | ||
5 | Old Version : 00.00.05.38-rc1 | ||
6 | 1. Fix FastPath I/O to work with degraded RAID 1. | ||
7 | 2. Add .change_queue_depth support. | ||
8 | ------------------------------------------------------------------------------- | ||
1 | Release Date : Wed. May 11, 2011 17:00:00 PST 2010 - | 9 | Release Date : Wed. May 11, 2011 17:00:00 PST 2010 - |
2 | (emaild-id:megaraidlinux@lsi.com) | 10 | (emaild-id:megaraidlinux@lsi.com) |
3 | Adam Radford | 11 | Adam Radford |
diff --git a/Documentation/security/keys-ecryptfs.txt b/Documentation/security/keys-ecryptfs.txt new file mode 100644 index 000000000000..c3bbeba63562 --- /dev/null +++ b/Documentation/security/keys-ecryptfs.txt | |||
@@ -0,0 +1,68 @@ | |||
1 | Encrypted keys for the eCryptfs filesystem | ||
2 | |||
3 | ECryptfs is a stacked filesystem which transparently encrypts and decrypts each | ||
4 | file using a randomly generated File Encryption Key (FEK). | ||
5 | |||
6 | Each FEK is in turn encrypted with a File Encryption Key Encryption Key (FEFEK) | ||
7 | either in kernel space or in user space with a daemon called 'ecryptfsd'. In | ||
8 | the former case the operation is performed directly by the kernel CryptoAPI | ||
9 | using a key, the FEFEK, derived from a user prompted passphrase; in the latter | ||
10 | the FEK is encrypted by 'ecryptfsd' with the help of external libraries in order | ||
11 | to support other mechanisms like public key cryptography, PKCS#11 and TPM based | ||
12 | operations. | ||
13 | |||
14 | The data structure defined by eCryptfs to contain information required for the | ||
15 | FEK decryption is called authentication token and, currently, can be stored in a | ||
16 | kernel key of the 'user' type, inserted in the user's session specific keyring | ||
17 | by the userspace utility 'mount.ecryptfs' shipped with the package | ||
18 | 'ecryptfs-utils'. | ||
19 | |||
20 | The 'encrypted' key type has been extended with the introduction of the new | ||
21 | format 'ecryptfs' in order to be used in conjunction with the eCryptfs | ||
22 | filesystem. Encrypted keys of the newly introduced format store an | ||
23 | authentication token in its payload with a FEFEK randomly generated by the | ||
24 | kernel and protected by the parent master key. | ||
25 | |||
26 | In order to avoid known-plaintext attacks, the datablob obtained through | ||
27 | commands 'keyctl print' or 'keyctl pipe' does not contain the overall | ||
28 | authentication token, which content is well known, but only the FEFEK in | ||
29 | encrypted form. | ||
30 | |||
31 | The eCryptfs filesystem may really benefit from using encrypted keys in that the | ||
32 | required key can be securely generated by an Administrator and provided at boot | ||
33 | time after the unsealing of a 'trusted' key in order to perform the mount in a | ||
34 | controlled environment. Another advantage is that the key is not exposed to | ||
35 | threats of malicious software, because it is available in clear form only at | ||
36 | kernel level. | ||
37 | |||
38 | Usage: | ||
39 | keyctl add encrypted name "new ecryptfs key-type:master-key-name keylen" ring | ||
40 | keyctl add encrypted name "load hex_blob" ring | ||
41 | keyctl update keyid "update key-type:master-key-name" | ||
42 | |||
43 | name:= '<16 hexadecimal characters>' | ||
44 | key-type:= 'trusted' | 'user' | ||
45 | keylen:= 64 | ||
46 | |||
47 | |||
48 | Example of encrypted key usage with the eCryptfs filesystem: | ||
49 | |||
50 | Create an encrypted key "1000100010001000" of length 64 bytes with format | ||
51 | 'ecryptfs' and save it using a previously loaded user key "test": | ||
52 | |||
53 | $ keyctl add encrypted 1000100010001000 "new ecryptfs user:test 64" @u | ||
54 | 19184530 | ||
55 | |||
56 | $ keyctl print 19184530 | ||
57 | ecryptfs user:test 64 490045d4bfe48c99f0d465fbbbb79e7500da954178e2de0697 | ||
58 | dd85091f5450a0511219e9f7cd70dcd498038181466f78ac8d4c19504fcc72402bfc41c2 | ||
59 | f253a41b7507ccaa4b2b03fff19a69d1cc0b16e71746473f023a95488b6edfd86f7fdd40 | ||
60 | 9d292e4bacded1258880122dd553a661 | ||
61 | |||
62 | $ keyctl pipe 19184530 > ecryptfs.blob | ||
63 | |||
64 | Mount an eCryptfs filesystem using the created encrypted key "1000100010001000" | ||
65 | into the '/secret' directory: | ||
66 | |||
67 | $ mount -i -t ecryptfs -oecryptfs_sig=1000100010001000,\ | ||
68 | ecryptfs_cipher=aes,ecryptfs_key_bytes=32 /secret /secret | ||
diff --git a/Documentation/security/keys-trusted-encrypted.txt b/Documentation/security/keys-trusted-encrypted.txt index 8fb79bc1ac4b..5f50ccabfc8a 100644 --- a/Documentation/security/keys-trusted-encrypted.txt +++ b/Documentation/security/keys-trusted-encrypted.txt | |||
@@ -53,12 +53,19 @@ they are only as secure as the user key encrypting them. The master user key | |||
53 | should therefore be loaded in as secure a way as possible, preferably early in | 53 | should therefore be loaded in as secure a way as possible, preferably early in |
54 | boot. | 54 | boot. |
55 | 55 | ||
56 | The decrypted portion of encrypted keys can contain either a simple symmetric | ||
57 | key or a more complex structure. The format of the more complex structure is | ||
58 | application specific, which is identified by 'format'. | ||
59 | |||
56 | Usage: | 60 | Usage: |
57 | keyctl add encrypted name "new key-type:master-key-name keylen" ring | 61 | keyctl add encrypted name "new [format] key-type:master-key-name keylen" |
58 | keyctl add encrypted name "load hex_blob" ring | 62 | ring |
59 | keyctl update keyid "update key-type:master-key-name" | 63 | keyctl add encrypted name "load hex_blob" ring |
64 | keyctl update keyid "update key-type:master-key-name" | ||
65 | |||
66 | format:= 'default | ecryptfs' | ||
67 | key-type:= 'trusted' | 'user' | ||
60 | 68 | ||
61 | where 'key-type' is either 'trusted' or 'user'. | ||
62 | 69 | ||
63 | Examples of trusted and encrypted key usage: | 70 | Examples of trusted and encrypted key usage: |
64 | 71 | ||
@@ -114,15 +121,25 @@ Reseal a trusted key under new pcr values: | |||
114 | 7ef6a24defe4846104209bf0c3eced7fa1a672ed5b125fc9d8cd88b476a658a4434644ef | 121 | 7ef6a24defe4846104209bf0c3eced7fa1a672ed5b125fc9d8cd88b476a658a4434644ef |
115 | df8ae9a178e9f83ba9f08d10fa47e4226b98b0702f06b3b8 | 122 | df8ae9a178e9f83ba9f08d10fa47e4226b98b0702f06b3b8 |
116 | 123 | ||
117 | Create and save an encrypted key "evm" using the above trusted key "kmk": | 124 | The initial consumer of trusted keys is EVM, which at boot time needs a high |
125 | quality symmetric key for HMAC protection of file metadata. The use of a | ||
126 | trusted key provides strong guarantees that the EVM key has not been | ||
127 | compromised by a user level problem, and when sealed to specific boot PCR | ||
128 | values, protects against boot and offline attacks. Create and save an | ||
129 | encrypted key "evm" using the above trusted key "kmk": | ||
118 | 130 | ||
131 | option 1: omitting 'format' | ||
119 | $ keyctl add encrypted evm "new trusted:kmk 32" @u | 132 | $ keyctl add encrypted evm "new trusted:kmk 32" @u |
120 | 159771175 | 133 | 159771175 |
121 | 134 | ||
135 | option 2: explicitly defining 'format' as 'default' | ||
136 | $ keyctl add encrypted evm "new default trusted:kmk 32" @u | ||
137 | 159771175 | ||
138 | |||
122 | $ keyctl print 159771175 | 139 | $ keyctl print 159771175 |
123 | trusted:kmk 32 2375725ad57798846a9bbd240de8906f006e66c03af53b1b382dbbc55 | 140 | default trusted:kmk 32 2375725ad57798846a9bbd240de8906f006e66c03af53b1b3 |
124 | be2a44616e4959430436dc4f2a7a9659aa60bb4652aeb2120f149ed197c564e024717c64 | 141 | 82dbbc55be2a44616e4959430436dc4f2a7a9659aa60bb4652aeb2120f149ed197c564e0 |
125 | 5972dcb82ab2dde83376d82b2e3c09ffc | 142 | 24717c64 5972dcb82ab2dde83376d82b2e3c09ffc |
126 | 143 | ||
127 | $ keyctl pipe 159771175 > evm.blob | 144 | $ keyctl pipe 159771175 > evm.blob |
128 | 145 | ||
@@ -132,14 +149,11 @@ Load an encrypted key "evm" from saved blob: | |||
132 | 831684262 | 149 | 831684262 |
133 | 150 | ||
134 | $ keyctl print 831684262 | 151 | $ keyctl print 831684262 |
135 | trusted:kmk 32 2375725ad57798846a9bbd240de8906f006e66c03af53b1b382dbbc55 | 152 | default trusted:kmk 32 2375725ad57798846a9bbd240de8906f006e66c03af53b1b3 |
136 | be2a44616e4959430436dc4f2a7a9659aa60bb4652aeb2120f149ed197c564e024717c64 | 153 | 82dbbc55be2a44616e4959430436dc4f2a7a9659aa60bb4652aeb2120f149ed197c564e0 |
137 | 5972dcb82ab2dde83376d82b2e3c09ffc | 154 | 24717c64 5972dcb82ab2dde83376d82b2e3c09ffc |
138 | 155 | ||
139 | 156 | Other uses for trusted and encrypted keys, such as for disk and file encryption | |
140 | The initial consumer of trusted keys is EVM, which at boot time needs a high | 157 | are anticipated. In particular the new format 'ecryptfs' has been defined in |
141 | quality symmetric key for HMAC protection of file metadata. The use of a | 158 | in order to use encrypted keys to mount an eCryptfs filesystem. More details |
142 | trusted key provides strong guarantees that the EVM key has not been | 159 | about the usage can be found in the file 'Documentation/keys-ecryptfs.txt'. |
143 | compromised by a user level problem, and when sealed to specific boot PCR | ||
144 | values, protects against boot and offline attacks. Other uses for trusted and | ||
145 | encrypted keys, such as for disk and file encryption are anticipated. | ||
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 1c7fb0a94e28..704e474a93df 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -61,6 +61,7 @@ show up in /proc/sys/kernel: | |||
61 | - rtsig-nr | 61 | - rtsig-nr |
62 | - sem | 62 | - sem |
63 | - sg-big-buff [ generic SCSI device (sg) ] | 63 | - sg-big-buff [ generic SCSI device (sg) ] |
64 | - shm_rmid_forced | ||
64 | - shmall | 65 | - shmall |
65 | - shmmax [ sysv ipc ] | 66 | - shmmax [ sysv ipc ] |
66 | - shmmni | 67 | - shmmni |
@@ -518,6 +519,27 @@ kernel. This value defaults to SHMMAX. | |||
518 | 519 | ||
519 | ============================================================== | 520 | ============================================================== |
520 | 521 | ||
522 | shm_rmid_forced: | ||
523 | |||
524 | Linux lets you set resource limits, including how much memory one | ||
525 | process can consume, via setrlimit(2). Unfortunately, shared memory | ||
526 | segments are allowed to exist without association with any process, and | ||
527 | thus might not be counted against any resource limits. If enabled, | ||
528 | shared memory segments are automatically destroyed when their attach | ||
529 | count becomes zero after a detach or a process termination. It will | ||
530 | also destroy segments that were created, but never attached to, on exit | ||
531 | from the process. The only use left for IPC_RMID is to immediately | ||
532 | destroy an unattached segment. Of course, this breaks the way things are | ||
533 | defined, so some applications might stop working. Note that this | ||
534 | feature will do you no good unless you also configure your resource | ||
535 | limits (in particular, RLIMIT_AS and RLIMIT_NPROC). Most systems don't | ||
536 | need this. | ||
537 | |||
538 | Note that if you change this from 0 to 1, already created segments | ||
539 | without users and with a dead originative process will be destroyed. | ||
540 | |||
541 | ============================================================== | ||
542 | |||
521 | softlockup_thresh: | 543 | softlockup_thresh: |
522 | 544 | ||
523 | This value can be used to lower the softlockup tolerance threshold. The | 545 | This value can be used to lower the softlockup tolerance threshold. The |
diff --git a/Documentation/video4linux/API.html b/Documentation/video4linux/API.html index d72fd2aa9158..256f8efa992c 100644 --- a/Documentation/video4linux/API.html +++ b/Documentation/video4linux/API.html | |||
@@ -9,7 +9,7 @@ | |||
9 | <table border="0"> | 9 | <table border="0"> |
10 | <tr> | 10 | <tr> |
11 | <td> | 11 | <td> |
12 | <a href="http://www.linuxtv.org/downloads/video4linux/API/V4L1_API.html">V4L original API</a> | 12 | <a href="http://linuxtv.org/downloads/legacy/video4linux/API/V4L1_API.html">V4L original API</a> |
13 | </td> | 13 | </td> |
14 | <td> | 14 | <td> |
15 | Obsoleted by V4L2 API | 15 | Obsoleted by V4L2 API |
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885 index 87c46347bd63..8910449d23a8 100644 --- a/Documentation/video4linux/CARDLIST.cx23885 +++ b/Documentation/video4linux/CARDLIST.cx23885 | |||
@@ -27,3 +27,5 @@ | |||
27 | 26 -> Hauppauge WinTV-HVR1290 [0070:8551] | 27 | 26 -> Hauppauge WinTV-HVR1290 [0070:8551] |
28 | 27 -> Mygica X8558 PRO DMB-TH [14f1:8578] | 28 | 27 -> Mygica X8558 PRO DMB-TH [14f1:8578] |
29 | 28 -> LEADTEK WinFast PxTV1200 [107d:6f22] | 29 | 28 -> LEADTEK WinFast PxTV1200 [107d:6f22] |
30 | 29 -> GoTView X5 3D Hybrid [5654:2390] | ||
31 | 30 -> NetUP Dual DVB-T/C-CI RF [1b55:e2e4] | ||
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index 42517d9121de..d9c0f119196d 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -84,3 +84,4 @@ | |||
84 | 83 -> Prof 7301 DVB-S/S2 [b034:3034] | 84 | 83 -> Prof 7301 DVB-S/S2 [b034:3034] |
85 | 84 -> Samsung SMT 7020 DVB-S [18ac:dc00,18ac:dccd] | 85 | 84 -> Samsung SMT 7020 DVB-S [18ac:dc00,18ac:dccd] |
86 | 85 -> Twinhan VP-1027 DVB-S [1822:0023] | 86 | 85 -> Twinhan VP-1027 DVB-S [1822:0023] |
87 | 86 -> TeVii S464 DVB-S/S2 [d464:9022] | ||
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index 9aae449440dc..4a7b3df6d8bd 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -74,3 +74,5 @@ | |||
74 | 74 -> Actionmaster/LinXcel/Digitus VC211A (em2800) | 74 | 74 -> Actionmaster/LinXcel/Digitus VC211A (em2800) |
75 | 75 -> Dikom DK300 (em2882) | 75 | 75 -> Dikom DK300 (em2882) |
76 | 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] | 76 | 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] |
77 | 77 -> EM2874 Leadership ISDBT (em2874) | ||
78 | 78 -> PCTV nanoStick T2 290e (em28174) | ||
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index 6b4c72d8862d..7efae9bd73ed 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -182,3 +182,7 @@ | |||
182 | 181 -> TechoTrend TT-budget T-3000 [13c2:2804] | 182 | 181 -> TechoTrend TT-budget T-3000 [13c2:2804] |
183 | 182 -> Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid [17de:b136] | 183 | 182 -> Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid [17de:b136] |
184 | 183 -> Compro VideoMate Vista M1F [185b:c900] | 184 | 183 -> Compro VideoMate Vista M1F [185b:c900] |
185 | 184 -> Encore ENLTV-FM 3 [1a7f:2108] | ||
186 | 185 -> MagicPro ProHDTV Pro2 DMB-TH/Hybrid [17de:d136] | ||
187 | 186 -> Beholder BeholdTV 501 [5ace:5010] | ||
188 | 187 -> Beholder BeholdTV 503 FM [5ace:5030] | ||
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner index e67c1db96854..6323b7a20719 100644 --- a/Documentation/video4linux/CARDLIST.tuner +++ b/Documentation/video4linux/CARDLIST.tuner | |||
@@ -78,8 +78,10 @@ tuner=77 - TCL tuner MF02GIP-5N-E | |||
78 | tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner | 78 | tuner=78 - Philips FMD1216MEX MK3 Hybrid Tuner |
79 | tuner=79 - Philips PAL/SECAM multi (FM1216 MK5) | 79 | tuner=79 - Philips PAL/SECAM multi (FM1216 MK5) |
80 | tuner=80 - Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough | 80 | tuner=80 - Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough |
81 | tuner=81 - Xceive 4000 tuner | ||
81 | tuner=81 - Partsnic (Daewoo) PTI-5NF05 | 82 | tuner=81 - Partsnic (Daewoo) PTI-5NF05 |
82 | tuner=82 - Philips CU1216L | 83 | tuner=82 - Philips CU1216L |
83 | tuner=83 - NXP TDA18271 | 84 | tuner=83 - NXP TDA18271 |
84 | tuner=84 - Sony BTF-Pxn01Z | 85 | tuner=84 - Sony BTF-Pxn01Z |
85 | tuner=85 - Philips FQ1236 MK5 | 86 | tuner=85 - Philips FQ1236 MK5 |
87 | tuner=86 - Tena TNF5337 MFD | ||
diff --git a/Documentation/video4linux/CARDLIST.usbvision b/Documentation/video4linux/CARDLIST.usbvision index 0b72d3fee17e..6fd1af365142 100644 --- a/Documentation/video4linux/CARDLIST.usbvision +++ b/Documentation/video4linux/CARDLIST.usbvision | |||
@@ -63,3 +63,5 @@ | |||
63 | 62 -> Pinnacle PCTV Bungee USB (PAL) FM [2304:0419] | 63 | 62 -> Pinnacle PCTV Bungee USB (PAL) FM [2304:0419] |
64 | 63 -> Hauppauge WinTv-USB [2400:4200] | 64 | 63 -> Hauppauge WinTv-USB [2400:4200] |
65 | 64 -> Pinnacle Studio PCTV USB (NTSC) FM V3 [2304:0113] | 65 | 64 -> Pinnacle Studio PCTV USB (NTSC) FM V3 [2304:0113] |
66 | 65 -> Nogatech USB MicroCam NTSC (NV3000N) [0573:3000] | ||
67 | 66 -> Nogatech USB MicroCam PAL (NV3001P) [0573:3001] | ||
diff --git a/Documentation/video4linux/README.davinci-vpbe b/Documentation/video4linux/README.davinci-vpbe new file mode 100644 index 000000000000..7a460b0685bb --- /dev/null +++ b/Documentation/video4linux/README.davinci-vpbe | |||
@@ -0,0 +1,93 @@ | |||
1 | |||
2 | VPBE V4L2 driver design | ||
3 | ====================================================================== | ||
4 | |||
5 | File partitioning | ||
6 | ----------------- | ||
7 | V4L2 display device driver | ||
8 | drivers/media/video/davinci/vpbe_display.c | ||
9 | drivers/media/video/davinci/vpbe_display.h | ||
10 | |||
11 | VPBE display controller | ||
12 | drivers/media/video/davinci/vpbe.c | ||
13 | drivers/media/video/davinci/vpbe.h | ||
14 | |||
15 | VPBE venc sub device driver | ||
16 | drivers/media/video/davinci/vpbe_venc.c | ||
17 | drivers/media/video/davinci/vpbe_venc.h | ||
18 | drivers/media/video/davinci/vpbe_venc_regs.h | ||
19 | |||
20 | VPBE osd driver | ||
21 | drivers/media/video/davinci/vpbe_osd.c | ||
22 | drivers/media/video/davinci/vpbe_osd.h | ||
23 | drivers/media/video/davinci/vpbe_osd_regs.h | ||
24 | |||
25 | Functional partitioning | ||
26 | ----------------------- | ||
27 | |||
28 | Consists of the following (in the same order as the list under file | ||
29 | partitioning):- | ||
30 | |||
31 | 1. V4L2 display driver | ||
32 | Implements creation of video2 and video3 device nodes and | ||
33 | provides v4l2 device interface to manage VID0 and VID1 layers. | ||
34 | |||
35 | 2. Display controller | ||
36 | Loads up VENC, OSD and external encoders such as ths8200. It provides | ||
37 | a set of API calls to V4L2 drivers to set the output/standards | ||
38 | in the VENC or external sub devices. It also provides | ||
39 | a device object to access the services from OSD subdevice | ||
40 | using sub device ops. The connection of external encoders to VENC LCD | ||
41 | controller port is done at init time based on default output and standard | ||
42 | selection or at run time when application change the output through | ||
43 | V4L2 IOCTLs. | ||
44 | |||
45 | When connected to an external encoder, vpbe controller is also responsible | ||
46 | for setting up the interface between VENC and external encoders based on | ||
47 | board specific settings (specified in board-xxx-evm.c). This allows | ||
48 | interfacing external encoders such as ths8200. The setup_if_config() | ||
49 | is implemented for this as well as configure_venc() (part of the next patch) | ||
50 | API to set timings in VENC for a specific display resolution. As of this | ||
51 | patch series, the interconnection and enabling and setting of the external | ||
52 | encoders is not present, and would be a part of the next patch series. | ||
53 | |||
54 | 3. VENC subdevice module | ||
55 | Responsible for setting outputs provided through internal DACs and also | ||
56 | setting timings at LCD controller port when external encoders are connected | ||
57 | at the port or LCD panel timings required. When external encoder/LCD panel | ||
58 | is connected, the timings for a specific standard/preset is retrieved from | ||
59 | the board specific table and the values are used to set the timings in | ||
60 | venc using non-standard timing mode. | ||
61 | |||
62 | Support LCD Panel displays using the VENC. For example to support a Logic | ||
63 | PD display, it requires setting up the LCD controller port with a set of | ||
64 | timings for the resolution supported and setting the dot clock. So we could | ||
65 | add the available outputs as a board specific entry (i.e add the "LogicPD" | ||
66 | output name to board-xxx-evm.c). A table of timings for various LCDs | ||
67 | supported can be maintained in the board specific setup file to support | ||
68 | various LCD displays.As of this patch a basic driver is present, and this | ||
69 | support for external encoders and displays forms a part of the next | ||
70 | patch series. | ||
71 | |||
72 | 4. OSD module | ||
73 | OSD module implements all OSD layer management and hardware specific | ||
74 | features. The VPBE module interacts with the OSD for enabling and | ||
75 | disabling appropriate features of the OSD. | ||
76 | |||
77 | Current status:- | ||
78 | |||
79 | A fully functional working version of the V4L2 driver is available. This | ||
80 | driver has been tested with NTSC and PAL standards and buffer streaming. | ||
81 | |||
82 | Following are TBDs. | ||
83 | |||
84 | vpbe display controller | ||
85 | - Add support for external encoders. | ||
86 | - add support for selecting external encoder as default at probe time. | ||
87 | |||
88 | vpbe venc sub device | ||
89 | - add timings for supporting ths8200 | ||
90 | - add support for LogicPD LCD. | ||
91 | |||
92 | FB drivers | ||
93 | - Add support for fbdev drivers.- Ready and part of subsequent patches. | ||
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt index 881e7f44491b..9346fc8cbf2b 100644 --- a/Documentation/video4linux/v4l2-controls.txt +++ b/Documentation/video4linux/v4l2-controls.txt | |||
@@ -277,16 +277,13 @@ implement g_volatile_ctrl like this: | |||
277 | { | 277 | { |
278 | switch (ctrl->id) { | 278 | switch (ctrl->id) { |
279 | case V4L2_CID_BRIGHTNESS: | 279 | case V4L2_CID_BRIGHTNESS: |
280 | ctrl->cur.val = read_reg(0x123); | 280 | ctrl->val = read_reg(0x123); |
281 | break; | 281 | break; |
282 | } | 282 | } |
283 | } | 283 | } |
284 | 284 | ||
285 | The 'new value' union is not used in g_volatile_ctrl. In general controls | 285 | Note that you use the 'new value' union as well in g_volatile_ctrl. In general |
286 | that need to implement g_volatile_ctrl are read-only controls. | 286 | controls that need to implement g_volatile_ctrl are read-only controls. |
287 | |||
288 | Note that if one or more controls in a control cluster are marked as volatile, | ||
289 | then all the controls in the cluster are seen as volatile. | ||
290 | 287 | ||
291 | To mark a control as volatile you have to set the is_volatile flag: | 288 | To mark a control as volatile you have to set the is_volatile flag: |
292 | 289 | ||
@@ -453,6 +450,25 @@ In the example above the following are equivalent for the VOLUME case: | |||
453 | ctrl == ctrl->cluster[AUDIO_CL_VOLUME] == state->audio_cluster[AUDIO_CL_VOLUME] | 450 | ctrl == ctrl->cluster[AUDIO_CL_VOLUME] == state->audio_cluster[AUDIO_CL_VOLUME] |
454 | ctrl->cluster[AUDIO_CL_MUTE] == state->audio_cluster[AUDIO_CL_MUTE] | 451 | ctrl->cluster[AUDIO_CL_MUTE] == state->audio_cluster[AUDIO_CL_MUTE] |
455 | 452 | ||
453 | In practice using cluster arrays like this becomes very tiresome. So instead | ||
454 | the following equivalent method is used: | ||
455 | |||
456 | struct { | ||
457 | /* audio cluster */ | ||
458 | struct v4l2_ctrl *volume; | ||
459 | struct v4l2_ctrl *mute; | ||
460 | }; | ||
461 | |||
462 | The anonymous struct is used to clearly 'cluster' these two control pointers, | ||
463 | but it serves no other purpose. The effect is the same as creating an | ||
464 | array with two control pointers. So you can just do: | ||
465 | |||
466 | state->volume = v4l2_ctrl_new_std(&state->ctrl_handler, ...); | ||
467 | state->mute = v4l2_ctrl_new_std(&state->ctrl_handler, ...); | ||
468 | v4l2_ctrl_cluster(2, &state->volume); | ||
469 | |||
470 | And in foo_s_ctrl you can use these pointers directly: state->mute->val. | ||
471 | |||
456 | Note that controls in a cluster may be NULL. For example, if for some | 472 | Note that controls in a cluster may be NULL. For example, if for some |
457 | reason mute was never added (because the hardware doesn't support that | 473 | reason mute was never added (because the hardware doesn't support that |
458 | particular feature), then mute will be NULL. So in that case we have a | 474 | particular feature), then mute will be NULL. So in that case we have a |
@@ -475,6 +491,43 @@ controls, then the 'is_new' flag would be 1 for both controls. | |||
475 | The 'is_new' flag is always 1 when called from v4l2_ctrl_handler_setup(). | 491 | The 'is_new' flag is always 1 when called from v4l2_ctrl_handler_setup(). |
476 | 492 | ||
477 | 493 | ||
494 | Handling autogain/gain-type Controls with Auto Clusters | ||
495 | ======================================================= | ||
496 | |||
497 | A common type of control cluster is one that handles 'auto-foo/foo'-type | ||
498 | controls. Typical examples are autogain/gain, autoexposure/exposure, | ||
499 | autowhitebalance/red balance/blue balance. In all cases you have one controls | ||
500 | that determines whether another control is handled automatically by the hardware, | ||
501 | or whether it is under manual control from the user. | ||
502 | |||
503 | If the cluster is in automatic mode, then the manual controls should be | ||
504 | marked inactive. When the volatile controls are read the g_volatile_ctrl | ||
505 | operation should return the value that the hardware's automatic mode set up | ||
506 | automatically. | ||
507 | |||
508 | If the cluster is put in manual mode, then the manual controls should become | ||
509 | active again and the is_volatile flag should be ignored (so g_volatile_ctrl is | ||
510 | no longer called while in manual mode). | ||
511 | |||
512 | Finally the V4L2_CTRL_FLAG_UPDATE should be set for the auto control since | ||
513 | changing that control affects the control flags of the manual controls. | ||
514 | |||
515 | In order to simplify this a special variation of v4l2_ctrl_cluster was | ||
516 | introduced: | ||
517 | |||
518 | void v4l2_ctrl_auto_cluster(unsigned ncontrols, struct v4l2_ctrl **controls, | ||
519 | u8 manual_val, bool set_volatile); | ||
520 | |||
521 | The first two arguments are identical to v4l2_ctrl_cluster. The third argument | ||
522 | tells the framework which value switches the cluster into manual mode. The | ||
523 | last argument will optionally set the is_volatile flag for the non-auto controls. | ||
524 | |||
525 | The first control of the cluster is assumed to be the 'auto' control. | ||
526 | |||
527 | Using this function will ensure that you don't need to handle all the complex | ||
528 | flag and volatile handling. | ||
529 | |||
530 | |||
478 | VIDIOC_LOG_STATUS Support | 531 | VIDIOC_LOG_STATUS Support |
479 | ========================= | 532 | ========================= |
480 | 533 | ||
@@ -636,9 +689,7 @@ button controls are write-only controls. | |||
636 | -EINVAL as the spec says. | 689 | -EINVAL as the spec says. |
637 | 690 | ||
638 | 5) The spec does not mention what should happen when you try to set/get a | 691 | 5) The spec does not mention what should happen when you try to set/get a |
639 | control class controls. ivtv currently returns -EINVAL (indicating that the | 692 | control class controls. The framework will return -EACCES. |
640 | control ID does not exist) while the framework will return -EACCES, which | ||
641 | makes more sense. | ||
642 | 693 | ||
643 | 694 | ||
644 | Proposals for Extensions | 695 | Proposals for Extensions |
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt index cf21f7aae976..f8dcabf7852c 100644 --- a/Documentation/video4linux/v4l2-framework.txt +++ b/Documentation/video4linux/v4l2-framework.txt | |||
@@ -817,11 +817,7 @@ int my_open(struct file *file) | |||
817 | 817 | ||
818 | ... | 818 | ... |
819 | 819 | ||
820 | ret = v4l2_fh_init(&my_fh->fh, vfd); | 820 | v4l2_fh_init(&my_fh->fh, vfd); |
821 | if (ret) { | ||
822 | kfree(my_fh); | ||
823 | return ret; | ||
824 | } | ||
825 | 821 | ||
826 | ... | 822 | ... |
827 | 823 | ||
@@ -844,7 +840,7 @@ int my_release(struct file *file) | |||
844 | 840 | ||
845 | Below is a short description of the v4l2_fh functions used: | 841 | Below is a short description of the v4l2_fh functions used: |
846 | 842 | ||
847 | int v4l2_fh_init(struct v4l2_fh *fh, struct video_device *vdev) | 843 | void v4l2_fh_init(struct v4l2_fh *fh, struct video_device *vdev) |
848 | 844 | ||
849 | Initialise the file handle. This *MUST* be performed in the driver's | 845 | Initialise the file handle. This *MUST* be performed in the driver's |
850 | v4l2_file_operations->open() handler. | 846 | v4l2_file_operations->open() handler. |
@@ -901,14 +897,38 @@ V4L2 events | |||
901 | The V4L2 events provide a generic way to pass events to user space. | 897 | The V4L2 events provide a generic way to pass events to user space. |
902 | The driver must use v4l2_fh to be able to support V4L2 events. | 898 | The driver must use v4l2_fh to be able to support V4L2 events. |
903 | 899 | ||
904 | Useful functions: | 900 | Events are defined by a type and an optional ID. The ID may refer to a V4L2 |
901 | object such as a control ID. If unused, then the ID is 0. | ||
902 | |||
903 | When the user subscribes to an event the driver will allocate a number of | ||
904 | kevent structs for that event. So every (type, ID) event tuple will have | ||
905 | its own set of kevent structs. This guarantees that if a driver is generating | ||
906 | lots of events of one type in a short time, then that will not overwrite | ||
907 | events of another type. | ||
908 | |||
909 | But if you get more events of one type than the number of kevents that were | ||
910 | reserved, then the oldest event will be dropped and the new one added. | ||
911 | |||
912 | Furthermore, the internal struct v4l2_subscribed_event has merge() and | ||
913 | replace() callbacks which drivers can set. These callbacks are called when | ||
914 | a new event is raised and there is no more room. The replace() callback | ||
915 | allows you to replace the payload of the old event with that of the new event, | ||
916 | merging any relevant data from the old payload into the new payload that | ||
917 | replaces it. It is called when this event type has only one kevent struct | ||
918 | allocated. The merge() callback allows you to merge the oldest event payload | ||
919 | into that of the second-oldest event payload. It is called when there are two | ||
920 | or more kevent structs allocated. | ||
905 | 921 | ||
906 | - v4l2_event_alloc() | 922 | This way no status information is lost, just the intermediate steps leading |
923 | up to that state. | ||
907 | 924 | ||
908 | To use events, the driver must allocate events for the file handle. By | 925 | A good example of these replace/merge callbacks is in v4l2-event.c: |
909 | calling the function more than once, the driver may assure that at least n | 926 | ctrls_replace() and ctrls_merge() callbacks for the control event. |
910 | events in total have been allocated. The function may not be called in | 927 | |
911 | atomic context. | 928 | Note: these callbacks can be called from interrupt context, so they must be |
929 | fast. | ||
930 | |||
931 | Useful functions: | ||
912 | 932 | ||
913 | - v4l2_event_queue() | 933 | - v4l2_event_queue() |
914 | 934 | ||
@@ -920,7 +940,9 @@ Useful functions: | |||
920 | 940 | ||
921 | The video_device->ioctl_ops->vidioc_subscribe_event must check the driver | 941 | The video_device->ioctl_ops->vidioc_subscribe_event must check the driver |
922 | is able to produce events with specified event id. Then it calls | 942 | is able to produce events with specified event id. Then it calls |
923 | v4l2_event_subscribe() to subscribe the event. | 943 | v4l2_event_subscribe() to subscribe the event. The last argument is the |
944 | size of the event queue for this event. If it is 0, then the framework | ||
945 | will fill in a default value (this depends on the event type). | ||
924 | 946 | ||
925 | - v4l2_event_unsubscribe() | 947 | - v4l2_event_unsubscribe() |
926 | 948 | ||
@@ -935,14 +957,8 @@ Useful functions: | |||
935 | 957 | ||
936 | Returns the number of pending events. Useful when implementing poll. | 958 | Returns the number of pending events. Useful when implementing poll. |
937 | 959 | ||
938 | Drivers do not initialise events directly. The events are initialised | ||
939 | through v4l2_fh_init() if video_device->ioctl_ops->vidioc_subscribe_event is | ||
940 | non-NULL. This *MUST* be performed in the driver's | ||
941 | v4l2_file_operations->open() handler. | ||
942 | |||
943 | Events are delivered to user space through the poll system call. The driver | 960 | Events are delivered to user space through the poll system call. The driver |
944 | can use v4l2_fh->events->wait wait_queue_head_t as the argument for | 961 | can use v4l2_fh->wait (a wait_queue_head_t) as the argument for poll_wait(). |
945 | poll_wait(). | ||
946 | 962 | ||
947 | There are standard and private events. New standard events must use the | 963 | There are standard and private events. New standard events must use the |
948 | smallest available event type. The drivers must allocate their events from | 964 | smallest available event type. The drivers must allocate their events from |
@@ -952,5 +968,4 @@ The first event type in the class is reserved for future use, so the first | |||
952 | available event type is 'class base + 1'. | 968 | available event type is 'class base + 1'. |
953 | 969 | ||
954 | An example on how the V4L2 events may be used can be found in the OMAP | 970 | An example on how the V4L2 events may be used can be found in the OMAP |
955 | 3 ISP driver available at <URL:http://gitorious.org/omap3camera> as of | 971 | 3 ISP driver (drivers/media/video/omap3isp). |
956 | writing this. | ||
diff --git a/Documentation/virtual/00-INDEX b/Documentation/virtual/00-INDEX index fe0251c4cfb7..8e601991d91c 100644 --- a/Documentation/virtual/00-INDEX +++ b/Documentation/virtual/00-INDEX | |||
@@ -8,3 +8,6 @@ lguest/ | |||
8 | - Extremely simple hypervisor for experimental/educational use. | 8 | - Extremely simple hypervisor for experimental/educational use. |
9 | uml/ | 9 | uml/ |
10 | - User Mode Linux, builds/runs Linux kernel as a userspace program. | 10 | - User Mode Linux, builds/runs Linux kernel as a userspace program. |
11 | virtio.txt | ||
12 | - Text version of draft virtio spec. | ||
13 | See http://ozlabs.org/~rusty/virtio-spec | ||
diff --git a/Documentation/virtual/lguest/lguest.c b/Documentation/virtual/lguest/lguest.c index 043bd7df3139..d928c134dee6 100644 --- a/Documentation/virtual/lguest/lguest.c +++ b/Documentation/virtual/lguest/lguest.c | |||
@@ -1996,6 +1996,9 @@ int main(int argc, char *argv[]) | |||
1996 | /* We use a simple helper to copy the arguments separated by spaces. */ | 1996 | /* We use a simple helper to copy the arguments separated by spaces. */ |
1997 | concat((char *)(boot + 1), argv+optind+2); | 1997 | concat((char *)(boot + 1), argv+optind+2); |
1998 | 1998 | ||
1999 | /* Set kernel alignment to 16M (CONFIG_PHYSICAL_ALIGN) */ | ||
2000 | boot->hdr.kernel_alignment = 0x1000000; | ||
2001 | |||
1999 | /* Boot protocol version: 2.07 supports the fields for lguest. */ | 2002 | /* Boot protocol version: 2.07 supports the fields for lguest. */ |
2000 | boot->hdr.version = 0x207; | 2003 | boot->hdr.version = 0x207; |
2001 | 2004 | ||
diff --git a/Documentation/virtual/virtio-spec.txt b/Documentation/virtual/virtio-spec.txt new file mode 100644 index 000000000000..a350ae135b8c --- /dev/null +++ b/Documentation/virtual/virtio-spec.txt | |||
@@ -0,0 +1,2200 @@ | |||
1 | [Generated file: see http://ozlabs.org/~rusty/virtio-spec/] | ||
2 | Virtio PCI Card Specification | ||
3 | v0.9.1 DRAFT | ||
4 | - | ||
5 | |||
6 | Rusty Russell <rusty@rustcorp.com.au>IBM Corporation (Editor) | ||
7 | |||
8 | 2011 August 1. | ||
9 | |||
10 | Purpose and Description | ||
11 | |||
12 | This document describes the specifications of the “virtio” family | ||
13 | of PCI[LaTeX Command: nomenclature] devices. These are devices | ||
14 | are found in virtual environments[LaTeX Command: nomenclature], | ||
15 | yet by design they are not all that different from physical PCI | ||
16 | devices, and this document treats them as such. This allows the | ||
17 | guest to use standard PCI drivers and discovery mechanisms. | ||
18 | |||
19 | The purpose of virtio and this specification is that virtual | ||
20 | environments and guests should have a straightforward, efficient, | ||
21 | standard and extensible mechanism for virtual devices, rather | ||
22 | than boutique per-environment or per-OS mechanisms. | ||
23 | |||
24 | Straightforward: Virtio PCI devices use normal PCI mechanisms | ||
25 | of interrupts and DMA which should be familiar to any device | ||
26 | driver author. There is no exotic page-flipping or COW | ||
27 | mechanism: it's just a PCI device.[footnote: | ||
28 | This lack of page-sharing implies that the implementation of the | ||
29 | device (e.g. the hypervisor or host) needs full access to the | ||
30 | guest memory. Communication with untrusted parties (i.e. | ||
31 | inter-guest communication) requires copying. | ||
32 | ] | ||
33 | |||
34 | Efficient: Virtio PCI devices consist of rings of descriptors | ||
35 | for input and output, which are neatly separated to avoid cache | ||
36 | effects from both guest and device writing to the same cache | ||
37 | lines. | ||
38 | |||
39 | Standard: Virtio PCI makes no assumptions about the environment | ||
40 | in which it operates, beyond supporting PCI. In fact the virtio | ||
41 | devices specified in the appendices do not require PCI at all: | ||
42 | they have been implemented on non-PCI buses.[footnote: | ||
43 | The Linux implementation further separates the PCI virtio code | ||
44 | from the specific virtio drivers: these drivers are shared with | ||
45 | the non-PCI implementations (currently lguest and S/390). | ||
46 | ] | ||
47 | |||
48 | Extensible: Virtio PCI devices contain feature bits which are | ||
49 | acknowledged by the guest operating system during device setup. | ||
50 | This allows forwards and backwards compatibility: the device | ||
51 | offers all the features it knows about, and the driver | ||
52 | acknowledges those it understands and wishes to use. | ||
53 | |||
54 | Virtqueues | ||
55 | |||
56 | The mechanism for bulk data transport on virtio PCI devices is | ||
57 | pretentiously called a virtqueue. Each device can have zero or | ||
58 | more virtqueues: for example, the network device has one for | ||
59 | transmit and one for receive. | ||
60 | |||
61 | Each virtqueue occupies two or more physically-contiguous pages | ||
62 | (defined, for the purposes of this specification, as 4096 bytes), | ||
63 | and consists of three parts: | ||
64 | |||
65 | |||
66 | +-------------------+-----------------------------------+-----------+ | ||
67 | | Descriptor Table | Available Ring (padding) | Used Ring | | ||
68 | +-------------------+-----------------------------------+-----------+ | ||
69 | |||
70 | |||
71 | When the driver wants to send buffers to the device, it puts them | ||
72 | in one or more slots in the descriptor table, and writes the | ||
73 | descriptor indices into the available ring. It then notifies the | ||
74 | device. When the device has finished with the buffers, it writes | ||
75 | the descriptors into the used ring, and sends an interrupt. | ||
76 | |||
77 | Specification | ||
78 | |||
79 | PCI Discovery | ||
80 | |||
81 | Any PCI device with Vendor ID 0x1AF4, and Device ID 0x1000 | ||
82 | through 0x103F inclusive is a virtio device[footnote: | ||
83 | The actual value within this range is ignored | ||
84 | ]. The device must also have a Revision ID of 0 to match this | ||
85 | specification. | ||
86 | |||
87 | The Subsystem Device ID indicates which virtio device is | ||
88 | supported by the device. The Subsystem Vendor ID should reflect | ||
89 | the PCI Vendor ID of the environment (it's currently only used | ||
90 | for informational purposes by the guest). | ||
91 | |||
92 | |||
93 | +----------------------+--------------------+---------------+ | ||
94 | | Subsystem Device ID | Virtio Device | Specification | | ||
95 | +----------------------+--------------------+---------------+ | ||
96 | +----------------------+--------------------+---------------+ | ||
97 | | 1 | network card | Appendix C | | ||
98 | +----------------------+--------------------+---------------+ | ||
99 | | 2 | block device | Appendix D | | ||
100 | +----------------------+--------------------+---------------+ | ||
101 | | 3 | console | Appendix E | | ||
102 | +----------------------+--------------------+---------------+ | ||
103 | | 4 | entropy source | Appendix F | | ||
104 | +----------------------+--------------------+---------------+ | ||
105 | | 5 | memory ballooning | Appendix G | | ||
106 | +----------------------+--------------------+---------------+ | ||
107 | | 6 | ioMemory | - | | ||
108 | +----------------------+--------------------+---------------+ | ||
109 | | 9 | 9P transport | - | | ||
110 | +----------------------+--------------------+---------------+ | ||
111 | |||
112 | |||
113 | Device Configuration | ||
114 | |||
115 | To configure the device, we use the first I/O region of the PCI | ||
116 | device. This contains a virtio header followed by a | ||
117 | device-specific region. | ||
118 | |||
119 | There may be different widths of accesses to the I/O region; the “ | ||
120 | natural” access method for each field in the virtio header must | ||
121 | be used (i.e. 32-bit accesses for 32-bit fields, etc), but the | ||
122 | device-specific region can be accessed using any width accesses, | ||
123 | and should obtain the same results. | ||
124 | |||
125 | Note that this is possible because while the virtio header is PCI | ||
126 | (i.e. little) endian, the device-specific region is encoded in | ||
127 | the native endian of the guest (where such distinction is | ||
128 | applicable). | ||
129 | |||
130 | Device Initialization Sequence | ||
131 | |||
132 | We start with an overview of device initialization, then expand | ||
133 | on the details of the device and how each step is preformed. | ||
134 | |||
135 | Reset the device. This is not required on initial start up. | ||
136 | |||
137 | The ACKNOWLEDGE status bit is set: we have noticed the device. | ||
138 | |||
139 | The DRIVER status bit is set: we know how to drive the device. | ||
140 | |||
141 | Device-specific setup, including reading the Device Feature | ||
142 | Bits, discovery of virtqueues for the device, optional MSI-X | ||
143 | setup, and reading and possibly writing the virtio | ||
144 | configuration space. | ||
145 | |||
146 | The subset of Device Feature Bits understood by the driver is | ||
147 | written to the device. | ||
148 | |||
149 | The DRIVER_OK status bit is set. | ||
150 | |||
151 | The device can now be used (ie. buffers added to the | ||
152 | virtqueues)[footnote: | ||
153 | Historically, drivers have used the device before steps 5 and 6. | ||
154 | This is only allowed if the driver does not use any features | ||
155 | which would alter this early use of the device. | ||
156 | ] | ||
157 | |||
158 | If any of these steps go irrecoverably wrong, the guest should | ||
159 | set the FAILED status bit to indicate that it has given up on the | ||
160 | device (it can reset the device later to restart if desired). | ||
161 | |||
162 | We now cover the fields required for general setup in detail. | ||
163 | |||
164 | Virtio Header | ||
165 | |||
166 | The virtio header looks as follows: | ||
167 | |||
168 | |||
169 | +------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+ | ||
170 | | Bits || 32 | 32 | 32 | 16 | 16 | 16 | 8 | 8 | | ||
171 | +------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+ | ||
172 | | Read/Write || R | R+W | R+W | R | R+W | R+W | R+W | R | | ||
173 | +------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+ | ||
174 | | Purpose || Device | Guest | Queue | Queue | Queue | Queue | Device | ISR | | ||
175 | | || Features bits 0:31 | Features bits 0:31 | Address | Size | Select | Notify | Status | Status | | ||
176 | +------------++---------------------+---------------------+----------+--------+---------+---------+---------+--------+ | ||
177 | |||
178 | |||
179 | If MSI-X is enabled for the device, two additional fields | ||
180 | immediately follow this header: | ||
181 | |||
182 | |||
183 | +------------++----------------+--------+ | ||
184 | | Bits || 16 | 16 | | ||
185 | +----------------+--------+ | ||
186 | +------------++----------------+--------+ | ||
187 | | Read/Write || R+W | R+W | | ||
188 | +------------++----------------+--------+ | ||
189 | | Purpose || Configuration | Queue | | ||
190 | | (MSI-X) || Vector | Vector | | ||
191 | +------------++----------------+--------+ | ||
192 | |||
193 | |||
194 | Finally, if feature bits (VIRTIO_F_FEATURES_HI) this is | ||
195 | immediately followed by two additional fields: | ||
196 | |||
197 | |||
198 | +------------++----------------------+---------------------- | ||
199 | | Bits || 32 | 32 | ||
200 | +------------++----------------------+---------------------- | ||
201 | | Read/Write || R | R+W | ||
202 | +------------++----------------------+---------------------- | ||
203 | | Purpose || Device | Guest | ||
204 | | || Features bits 32:63 | Features bits 32:63 | ||
205 | +------------++----------------------+---------------------- | ||
206 | |||
207 | |||
208 | Immediately following these general headers, there may be | ||
209 | device-specific headers: | ||
210 | |||
211 | |||
212 | +------------++--------------------+ | ||
213 | | Bits || Device Specific | | ||
214 | +--------------------+ | ||
215 | +------------++--------------------+ | ||
216 | | Read/Write || Device Specific | | ||
217 | +------------++--------------------+ | ||
218 | | Purpose || Device Specific... | | ||
219 | | || | | ||
220 | +------------++--------------------+ | ||
221 | |||
222 | |||
223 | Device Status | ||
224 | |||
225 | The Device Status field is updated by the guest to indicate its | ||
226 | progress. This provides a simple low-level diagnostic: it's most | ||
227 | useful to imagine them hooked up to traffic lights on the console | ||
228 | indicating the status of each device. | ||
229 | |||
230 | The device can be reset by writing a 0 to this field, otherwise | ||
231 | at least one bit should be set: | ||
232 | |||
233 | ACKNOWLEDGE (1) Indicates that the guest OS has found the | ||
234 | device and recognized it as a valid virtio device. | ||
235 | |||
236 | DRIVER (2) Indicates that the guest OS knows how to drive the | ||
237 | device. Under Linux, drivers can be loadable modules so there | ||
238 | may be a significant (or infinite) delay before setting this | ||
239 | bit. | ||
240 | |||
241 | DRIVER_OK (3) Indicates that the driver is set up and ready to | ||
242 | drive the device. | ||
243 | |||
244 | FAILED (8) Indicates that something went wrong in the guest, | ||
245 | and it has given up on the device. This could be an internal | ||
246 | error, or the driver didn't like the device for some reason, or | ||
247 | even a fatal error during device operation. The device must be | ||
248 | reset before attempting to re-initialize. | ||
249 | |||
250 | Feature Bits | ||
251 | |||
252 | The least significant 31 bits of the first configuration field | ||
253 | indicates the features that the device supports (the high bit is | ||
254 | reserved, and will be used to indicate the presence of future | ||
255 | feature bits elsewhere). If more than 31 feature bits are | ||
256 | supported, the device indicates so by setting feature bit 31 (see | ||
257 | [cha:Reserved-Feature-Bits]). The bits are allocated as follows: | ||
258 | |||
259 | 0 to 23 Feature bits for the specific device type | ||
260 | |||
261 | 24 to 40 Feature bits reserved for extensions to the queue and | ||
262 | feature negotiation mechanisms | ||
263 | |||
264 | 41 to 63 Feature bits reserved for future extensions | ||
265 | |||
266 | For example, feature bit 0 for a network device (i.e. Subsystem | ||
267 | Device ID 1) indicates that the device supports checksumming of | ||
268 | packets. | ||
269 | |||
270 | The feature bits are negotiated: the device lists all the | ||
271 | features it understands in the Device Features field, and the | ||
272 | guest writes the subset that it understands into the Guest | ||
273 | Features field. The only way to renegotiate is to reset the | ||
274 | device. | ||
275 | |||
276 | In particular, new fields in the device configuration header are | ||
277 | indicated by offering a feature bit, so the guest can check | ||
278 | before accessing that part of the configuration space. | ||
279 | |||
280 | This allows for forwards and backwards compatibility: if the | ||
281 | device is enhanced with a new feature bit, older guests will not | ||
282 | write that feature bit back to the Guest Features field and it | ||
283 | can go into backwards compatibility mode. Similarly, if a guest | ||
284 | is enhanced with a feature that the device doesn't support, it | ||
285 | will not see that feature bit in the Device Features field and | ||
286 | can go into backwards compatibility mode (or, for poor | ||
287 | implementations, set the FAILED Device Status bit). | ||
288 | |||
289 | Access to feature bits 32 to 63 is enabled by Guest by setting | ||
290 | feature bit 31. If this bit is unset, Device must assume that all | ||
291 | feature bits > 31 are unset. | ||
292 | |||
293 | Configuration/Queue Vectors | ||
294 | |||
295 | When MSI-X capability is present and enabled in the device | ||
296 | (through standard PCI configuration space) 4 bytes at byte offset | ||
297 | 20 are used to map configuration change and queue interrupts to | ||
298 | MSI-X vectors. In this case, the ISR Status field is unused, and | ||
299 | device specific configuration starts at byte offset 24 in virtio | ||
300 | header structure. When MSI-X capability is not enabled, device | ||
301 | specific configuration starts at byte offset 20 in virtio header. | ||
302 | |||
303 | Writing a valid MSI-X Table entry number, 0 to 0x7FF, to one of | ||
304 | Configuration/Queue Vector registers, maps interrupts triggered | ||
305 | by the configuration change/selected queue events respectively to | ||
306 | the corresponding MSI-X vector. To disable interrupts for a | ||
307 | specific event type, unmap it by writing a special NO_VECTOR | ||
308 | value: | ||
309 | |||
310 | /* Vector value used to disable MSI for queue */ | ||
311 | |||
312 | #define VIRTIO_MSI_NO_VECTOR 0xffff | ||
313 | |||
314 | Reading these registers returns vector mapped to a given event, | ||
315 | or NO_VECTOR if unmapped. All queue and configuration change | ||
316 | events are unmapped by default. | ||
317 | |||
318 | Note that mapping an event to vector might require allocating | ||
319 | internal device resources, and might fail. Devices report such | ||
320 | failures by returning the NO_VECTOR value when the relevant | ||
321 | Vector field is read. After mapping an event to vector, the | ||
322 | driver must verify success by reading the Vector field value: on | ||
323 | success, the previously written value is returned, and on | ||
324 | failure, NO_VECTOR is returned. If a mapping failure is detected, | ||
325 | the driver can retry mapping with fewervectors, or disable MSI-X. | ||
326 | |||
327 | Virtqueue Configuration | ||
328 | |||
329 | As a device can have zero or more virtqueues for bulk data | ||
330 | transport (for example, the network driver has two), the driver | ||
331 | needs to configure them as part of the device-specific | ||
332 | configuration. | ||
333 | |||
334 | This is done as follows, for each virtqueue a device has: | ||
335 | |||
336 | Write the virtqueue index (first queue is 0) to the Queue | ||
337 | Select field. | ||
338 | |||
339 | Read the virtqueue size from the Queue Size field, which is | ||
340 | always a power of 2. This controls how big the virtqueue is | ||
341 | (see below). If this field is 0, the virtqueue does not exist. | ||
342 | |||
343 | Allocate and zero virtqueue in contiguous physical memory, on a | ||
344 | 4096 byte alignment. Write the physical address, divided by | ||
345 | 4096 to the Queue Address field.[footnote: | ||
346 | The 4096 is based on the x86 page size, but it's also large | ||
347 | enough to ensure that the separate parts of the virtqueue are on | ||
348 | separate cache lines. | ||
349 | ] | ||
350 | |||
351 | Optionally, if MSI-X capability is present and enabled on the | ||
352 | device, select a vector to use to request interrupts triggered | ||
353 | by virtqueue events. Write the MSI-X Table entry number | ||
354 | corresponding to this vector in Queue Vector field. Read the | ||
355 | Queue Vector field: on success, previously written value is | ||
356 | returned; on failure, NO_VECTOR value is returned. | ||
357 | |||
358 | The Queue Size field controls the total number of bytes required | ||
359 | for the virtqueue according to the following formula: | ||
360 | |||
361 | #define ALIGN(x) (((x) + 4095) & ~4095) | ||
362 | |||
363 | static inline unsigned vring_size(unsigned int qsz) | ||
364 | |||
365 | { | ||
366 | |||
367 | return ALIGN(sizeof(struct vring_desc)*qsz + sizeof(u16)*(2 | ||
368 | + qsz)) | ||
369 | |||
370 | + ALIGN(sizeof(struct vring_used_elem)*qsz); | ||
371 | |||
372 | } | ||
373 | |||
374 | This currently wastes some space with padding, but also allows | ||
375 | future extensions. The virtqueue layout structure looks like this | ||
376 | (qsz is the Queue Size field, which is a variable, so this code | ||
377 | won't compile): | ||
378 | |||
379 | struct vring { | ||
380 | |||
381 | /* The actual descriptors (16 bytes each) */ | ||
382 | |||
383 | struct vring_desc desc[qsz]; | ||
384 | |||
385 | |||
386 | |||
387 | /* A ring of available descriptor heads with free-running | ||
388 | index. */ | ||
389 | |||
390 | struct vring_avail avail; | ||
391 | |||
392 | |||
393 | |||
394 | // Padding to the next 4096 boundary. | ||
395 | |||
396 | char pad[]; | ||
397 | |||
398 | |||
399 | |||
400 | // A ring of used descriptor heads with free-running index. | ||
401 | |||
402 | struct vring_used used; | ||
403 | |||
404 | }; | ||
405 | |||
406 | A Note on Virtqueue Endianness | ||
407 | |||
408 | Note that the endian of these fields and everything else in the | ||
409 | virtqueue is the native endian of the guest, not little-endian as | ||
410 | PCI normally is. This makes for simpler guest code, and it is | ||
411 | assumed that the host already has to be deeply aware of the guest | ||
412 | endian so such an “endian-aware” device is not a significant | ||
413 | issue. | ||
414 | |||
415 | Descriptor Table | ||
416 | |||
417 | The descriptor table refers to the buffers the guest is using for | ||
418 | the device. The addresses are physical addresses, and the buffers | ||
419 | can be chained via the next field. Each descriptor describes a | ||
420 | buffer which is read-only or write-only, but a chain of | ||
421 | descriptors can contain both read-only and write-only buffers. | ||
422 | |||
423 | No descriptor chain may be more than 2^32 bytes long in total.struct vring_desc { | ||
424 | |||
425 | /* Address (guest-physical). */ | ||
426 | |||
427 | u64 addr; | ||
428 | |||
429 | /* Length. */ | ||
430 | |||
431 | u32 len; | ||
432 | |||
433 | /* This marks a buffer as continuing via the next field. */ | ||
434 | |||
435 | #define VRING_DESC_F_NEXT 1 | ||
436 | |||
437 | /* This marks a buffer as write-only (otherwise read-only). */ | ||
438 | |||
439 | #define VRING_DESC_F_WRITE 2 | ||
440 | |||
441 | /* This means the buffer contains a list of buffer descriptors. | ||
442 | */ | ||
443 | |||
444 | #define VRING_DESC_F_INDIRECT 4 | ||
445 | |||
446 | /* The flags as indicated above. */ | ||
447 | |||
448 | u16 flags; | ||
449 | |||
450 | /* Next field if flags & NEXT */ | ||
451 | |||
452 | u16 next; | ||
453 | |||
454 | }; | ||
455 | |||
456 | The number of descriptors in the table is specified by the Queue | ||
457 | Size field for this virtqueue. | ||
458 | |||
459 | <sub:Indirect-Descriptors>Indirect Descriptors | ||
460 | |||
461 | Some devices benefit by concurrently dispatching a large number | ||
462 | of large requests. The VIRTIO_RING_F_INDIRECT_DESC feature can be | ||
463 | used to allow this (see [cha:Reserved-Feature-Bits]). To increase | ||
464 | ring capacity it is possible to store a table of indirect | ||
465 | descriptors anywhere in memory, and insert a descriptor in main | ||
466 | virtqueue (with flags&INDIRECT on) that refers to memory buffer | ||
467 | containing this indirect descriptor table; fields addr and len | ||
468 | refer to the indirect table address and length in bytes, | ||
469 | respectively. The indirect table layout structure looks like this | ||
470 | (len is the length of the descriptor that refers to this table, | ||
471 | which is a variable, so this code won't compile): | ||
472 | |||
473 | struct indirect_descriptor_table { | ||
474 | |||
475 | /* The actual descriptors (16 bytes each) */ | ||
476 | |||
477 | struct vring_desc desc[len / 16]; | ||
478 | |||
479 | }; | ||
480 | |||
481 | The first indirect descriptor is located at start of the indirect | ||
482 | descriptor table (index 0), additional indirect descriptors are | ||
483 | chained by next field. An indirect descriptor without next field | ||
484 | (with flags&NEXT off) signals the end of the indirect descriptor | ||
485 | table, and transfers control back to the main virtqueue. An | ||
486 | indirect descriptor can not refer to another indirect descriptor | ||
487 | table (flags&INDIRECT must be off). A single indirect descriptor | ||
488 | table can include both read-only and write-only descriptors; | ||
489 | write-only flag (flags&WRITE) in the descriptor that refers to it | ||
490 | is ignored. | ||
491 | |||
492 | Available Ring | ||
493 | |||
494 | The available ring refers to what descriptors we are offering the | ||
495 | device: it refers to the head of a descriptor chain. The “flags” | ||
496 | field is currently 0 or 1: 1 indicating that we do not need an | ||
497 | interrupt when the device consumes a descriptor from the | ||
498 | available ring. Alternatively, the guest can ask the device to | ||
499 | delay interrupts until an entry with an index specified by the “ | ||
500 | used_event” field is written in the used ring (equivalently, | ||
501 | until the idx field in the used ring will reach the value | ||
502 | used_event + 1). The method employed by the device is controlled | ||
503 | by the VIRTIO_RING_F_EVENT_IDX feature bit (see [cha:Reserved-Feature-Bits] | ||
504 | ). This interrupt suppression is merely an optimization; it may | ||
505 | not suppress interrupts entirely. | ||
506 | |||
507 | The “idx” field indicates where we would put the next descriptor | ||
508 | entry (modulo the ring size). This starts at 0, and increases. | ||
509 | |||
510 | struct vring_avail { | ||
511 | |||
512 | #define VRING_AVAIL_F_NO_INTERRUPT 1 | ||
513 | |||
514 | u16 flags; | ||
515 | |||
516 | u16 idx; | ||
517 | |||
518 | u16 ring[qsz]; /* qsz is the Queue Size field read from device | ||
519 | */ | ||
520 | |||
521 | u16 used_event; | ||
522 | |||
523 | }; | ||
524 | |||
525 | Used Ring | ||
526 | |||
527 | The used ring is where the device returns buffers once it is done | ||
528 | with them. The flags field can be used by the device to hint that | ||
529 | no notification is necessary when the guest adds to the available | ||
530 | ring. Alternatively, the “avail_event” field can be used by the | ||
531 | device to hint that no notification is necessary until an entry | ||
532 | with an index specified by the “avail_event” is written in the | ||
533 | available ring (equivalently, until the idx field in the | ||
534 | available ring will reach the value avail_event + 1). The method | ||
535 | employed by the device is controlled by the guest through the | ||
536 | VIRTIO_RING_F_EVENT_IDX feature bit (see [cha:Reserved-Feature-Bits] | ||
537 | ). [footnote: | ||
538 | These fields are kept here because this is the only part of the | ||
539 | virtqueue written by the device | ||
540 | ]. | ||
541 | |||
542 | Each entry in the ring is a pair: the head entry of the | ||
543 | descriptor chain describing the buffer (this matches an entry | ||
544 | placed in the available ring by the guest earlier), and the total | ||
545 | of bytes written into the buffer. The latter is extremely useful | ||
546 | for guests using untrusted buffers: if you do not know exactly | ||
547 | how much has been written by the device, you usually have to zero | ||
548 | the buffer to ensure no data leakage occurs. | ||
549 | |||
550 | /* u32 is used here for ids for padding reasons. */ | ||
551 | |||
552 | struct vring_used_elem { | ||
553 | |||
554 | /* Index of start of used descriptor chain. */ | ||
555 | |||
556 | u32 id; | ||
557 | |||
558 | /* Total length of the descriptor chain which was used | ||
559 | (written to) */ | ||
560 | |||
561 | u32 len; | ||
562 | |||
563 | }; | ||
564 | |||
565 | |||
566 | |||
567 | struct vring_used { | ||
568 | |||
569 | #define VRING_USED_F_NO_NOTIFY 1 | ||
570 | |||
571 | u16 flags; | ||
572 | |||
573 | u16 idx; | ||
574 | |||
575 | struct vring_used_elem ring[qsz]; | ||
576 | |||
577 | u16 avail_event; | ||
578 | |||
579 | }; | ||
580 | |||
581 | Helpers for Managing Virtqueues | ||
582 | |||
583 | The Linux Kernel Source code contains the definitions above and | ||
584 | helper routines in a more usable form, in | ||
585 | include/linux/virtio_ring.h. This was explicitly licensed by IBM | ||
586 | and Red Hat under the (3-clause) BSD license so that it can be | ||
587 | freely used by all other projects, and is reproduced (with slight | ||
588 | variation to remove Linux assumptions) in Appendix A. | ||
589 | |||
590 | Device Operation | ||
591 | |||
592 | There are two parts to device operation: supplying new buffers to | ||
593 | the device, and processing used buffers from the device. As an | ||
594 | example, the virtio network device has two virtqueues: the | ||
595 | transmit virtqueue and the receive virtqueue. The driver adds | ||
596 | outgoing (read-only) packets to the transmit virtqueue, and then | ||
597 | frees them after they are used. Similarly, incoming (write-only) | ||
598 | buffers are added to the receive virtqueue, and processed after | ||
599 | they are used. | ||
600 | |||
601 | Supplying Buffers to The Device | ||
602 | |||
603 | Actual transfer of buffers from the guest OS to the device | ||
604 | operates as follows: | ||
605 | |||
606 | Place the buffer(s) into free descriptor(s). | ||
607 | |||
608 | If there are no free descriptors, the guest may choose to | ||
609 | notify the device even if notifications are suppressed (to | ||
610 | reduce latency).[footnote: | ||
611 | The Linux drivers do this only for read-only buffers: for | ||
612 | write-only buffers, it is assumed that the driver is merely | ||
613 | trying to keep the receive buffer ring full, and no notification | ||
614 | of this expected condition is necessary. | ||
615 | ] | ||
616 | |||
617 | Place the id of the buffer in the next ring entry of the | ||
618 | available ring. | ||
619 | |||
620 | The steps (1) and (2) may be performed repeatedly if batching | ||
621 | is possible. | ||
622 | |||
623 | A memory barrier should be executed to ensure the device sees | ||
624 | the updated descriptor table and available ring before the next | ||
625 | step. | ||
626 | |||
627 | The available “idx” field should be increased by the number of | ||
628 | entries added to the available ring. | ||
629 | |||
630 | A memory barrier should be executed to ensure that we update | ||
631 | the idx field before checking for notification suppression. | ||
632 | |||
633 | If notifications are not suppressed, the device should be | ||
634 | notified of the new buffers. | ||
635 | |||
636 | Note that the above code does not take precautions against the | ||
637 | available ring buffer wrapping around: this is not possible since | ||
638 | the ring buffer is the same size as the descriptor table, so step | ||
639 | (1) will prevent such a condition. | ||
640 | |||
641 | In addition, the maximum queue size is 32768 (it must be a power | ||
642 | of 2 which fits in 16 bits), so the 16-bit “idx” value can always | ||
643 | distinguish between a full and empty buffer. | ||
644 | |||
645 | Here is a description of each stage in more detail. | ||
646 | |||
647 | Placing Buffers Into The Descriptor Table | ||
648 | |||
649 | A buffer consists of zero or more read-only physically-contiguous | ||
650 | elements followed by zero or more physically-contiguous | ||
651 | write-only elements (it must have at least one element). This | ||
652 | algorithm maps it into the descriptor table: | ||
653 | |||
654 | for each buffer element, b: | ||
655 | |||
656 | Get the next free descriptor table entry, d | ||
657 | |||
658 | Set d.addr to the physical address of the start of b | ||
659 | |||
660 | Set d.len to the length of b. | ||
661 | |||
662 | If b is write-only, set d.flags to VRING_DESC_F_WRITE, | ||
663 | otherwise 0. | ||
664 | |||
665 | If there is a buffer element after this: | ||
666 | |||
667 | Set d.next to the index of the next free descriptor element. | ||
668 | |||
669 | Set the VRING_DESC_F_NEXT bit in d.flags. | ||
670 | |||
671 | In practice, the d.next fields are usually used to chain free | ||
672 | descriptors, and a separate count kept to check there are enough | ||
673 | free descriptors before beginning the mappings. | ||
674 | |||
675 | Updating The Available Ring | ||
676 | |||
677 | The head of the buffer we mapped is the first d in the algorithm | ||
678 | above. A naive implementation would do the following: | ||
679 | |||
680 | avail->ring[avail->idx % qsz] = head; | ||
681 | |||
682 | However, in general we can add many descriptors before we update | ||
683 | the “idx” field (at which point they become visible to the | ||
684 | device), so we keep a counter of how many we've added: | ||
685 | |||
686 | avail->ring[(avail->idx + added++) % qsz] = head; | ||
687 | |||
688 | Updating The Index Field | ||
689 | |||
690 | Once the idx field of the virtqueue is updated, the device will | ||
691 | be able to access the descriptor entries we've created and the | ||
692 | memory they refer to. This is why a memory barrier is generally | ||
693 | used before the idx update, to ensure it sees the most up-to-date | ||
694 | copy. | ||
695 | |||
696 | The idx field always increments, and we let it wrap naturally at | ||
697 | 65536: | ||
698 | |||
699 | avail->idx += added; | ||
700 | |||
701 | <sub:Notifying-The-Device>Notifying The Device | ||
702 | |||
703 | Device notification occurs by writing the 16-bit virtqueue index | ||
704 | of this virtqueue to the Queue Notify field of the virtio header | ||
705 | in the first I/O region of the PCI device. This can be expensive, | ||
706 | however, so the device can suppress such notifications if it | ||
707 | doesn't need them. We have to be careful to expose the new idx | ||
708 | value before checking the suppression flag: it's OK to notify | ||
709 | gratuitously, but not to omit a required notification. So again, | ||
710 | we use a memory barrier here before reading the flags or the | ||
711 | avail_event field. | ||
712 | |||
713 | If the VIRTIO_F_RING_EVENT_IDX feature is not negotiated, and if | ||
714 | the VRING_USED_F_NOTIFY flag is not set, we go ahead and write to | ||
715 | the PCI configuration space. | ||
716 | |||
717 | If the VIRTIO_F_RING_EVENT_IDX feature is negotiated, we read the | ||
718 | avail_event field in the available ring structure. If the | ||
719 | available index crossed_the avail_event field value since the | ||
720 | last notification, we go ahead and write to the PCI configuration | ||
721 | space. The avail_event field wraps naturally at 65536 as well: | ||
722 | |||
723 | (u16)(new_idx - avail_event - 1) < (u16)(new_idx - old_idx) | ||
724 | |||
725 | <sub:Receiving-Used-Buffers>Receiving Used Buffers From The | ||
726 | Device | ||
727 | |||
728 | Once the device has used a buffer (read from or written to it, or | ||
729 | parts of both, depending on the nature of the virtqueue and the | ||
730 | device), it sends an interrupt, following an algorithm very | ||
731 | similar to the algorithm used for the driver to send the device a | ||
732 | buffer: | ||
733 | |||
734 | Write the head descriptor number to the next field in the used | ||
735 | ring. | ||
736 | |||
737 | Update the used ring idx. | ||
738 | |||
739 | Determine whether an interrupt is necessary: | ||
740 | |||
741 | If the VIRTIO_F_RING_EVENT_IDX feature is not negotiated: check | ||
742 | if f the VRING_AVAIL_F_NO_INTERRUPT flag is not set in avail- | ||
743 | >flags | ||
744 | |||
745 | If the VIRTIO_F_RING_EVENT_IDX feature is negotiated: check | ||
746 | whether the used index crossed the used_event field value | ||
747 | since the last update. The used_event field wraps naturally | ||
748 | at 65536 as well:(u16)(new_idx - used_event - 1) < (u16)(new_idx - old_idx) | ||
749 | |||
750 | If an interrupt is necessary: | ||
751 | |||
752 | If MSI-X capability is disabled: | ||
753 | |||
754 | Set the lower bit of the ISR Status field for the device. | ||
755 | |||
756 | Send the appropriate PCI interrupt for the device. | ||
757 | |||
758 | If MSI-X capability is enabled: | ||
759 | |||
760 | Request the appropriate MSI-X interrupt message for the | ||
761 | device, Queue Vector field sets the MSI-X Table entry | ||
762 | number. | ||
763 | |||
764 | If Queue Vector field value is NO_VECTOR, no interrupt | ||
765 | message is requested for this event. | ||
766 | |||
767 | The guest interrupt handler should: | ||
768 | |||
769 | If MSI-X capability is disabled: read the ISR Status field, | ||
770 | which will reset it to zero. If the lower bit is zero, the | ||
771 | interrupt was not for this device. Otherwise, the guest driver | ||
772 | should look through the used rings of each virtqueue for the | ||
773 | device, to see if any progress has been made by the device | ||
774 | which requires servicing. | ||
775 | |||
776 | If MSI-X capability is enabled: look through the used rings of | ||
777 | each virtqueue mapped to the specific MSI-X vector for the | ||
778 | device, to see if any progress has been made by the device | ||
779 | which requires servicing. | ||
780 | |||
781 | For each ring, guest should then disable interrupts by writing | ||
782 | VRING_AVAIL_F_NO_INTERRUPT flag in avail structure, if required. | ||
783 | It can then process used ring entries finally enabling interrupts | ||
784 | by clearing the VRING_AVAIL_F_NO_INTERRUPT flag or updating the | ||
785 | EVENT_IDX field in the available structure, Guest should then | ||
786 | execute a memory barrier, and then recheck the ring empty | ||
787 | condition. This is necessary to handle the case where, after the | ||
788 | last check and before enabling interrupts, an interrupt has been | ||
789 | suppressed by the device: | ||
790 | |||
791 | vring_disable_interrupts(vq); | ||
792 | |||
793 | for (;;) { | ||
794 | |||
795 | if (vq->last_seen_used != vring->used.idx) { | ||
796 | |||
797 | vring_enable_interrupts(vq); | ||
798 | |||
799 | mb(); | ||
800 | |||
801 | if (vq->last_seen_used != vring->used.idx) | ||
802 | |||
803 | break; | ||
804 | |||
805 | } | ||
806 | |||
807 | struct vring_used_elem *e = | ||
808 | vring.used->ring[vq->last_seen_used%vsz]; | ||
809 | |||
810 | process_buffer(e); | ||
811 | |||
812 | vq->last_seen_used++; | ||
813 | |||
814 | } | ||
815 | |||
816 | Dealing With Configuration Changes | ||
817 | |||
818 | Some virtio PCI devices can change the device configuration | ||
819 | state, as reflected in the virtio header in the PCI configuration | ||
820 | space. In this case: | ||
821 | |||
822 | If MSI-X capability is disabled: an interrupt is delivered and | ||
823 | the second highest bit is set in the ISR Status field to | ||
824 | indicate that the driver should re-examine the configuration | ||
825 | space.Note that a single interrupt can indicate both that one | ||
826 | or more virtqueue has been used and that the configuration | ||
827 | space has changed: even if the config bit is set, virtqueues | ||
828 | must be scanned. | ||
829 | |||
830 | If MSI-X capability is enabled: an interrupt message is | ||
831 | requested. The Configuration Vector field sets the MSI-X Table | ||
832 | entry number to use. If Configuration Vector field value is | ||
833 | NO_VECTOR, no interrupt message is requested for this event. | ||
834 | |||
835 | Creating New Device Types | ||
836 | |||
837 | Various considerations are necessary when creating a new device | ||
838 | type: | ||
839 | |||
840 | How Many Virtqueues? | ||
841 | |||
842 | It is possible that a very simple device will operate entirely | ||
843 | through its configuration space, but most will need at least one | ||
844 | virtqueue in which it will place requests. A device with both | ||
845 | input and output (eg. console and network devices described here) | ||
846 | need two queues: one which the driver fills with buffers to | ||
847 | receive input, and one which the driver places buffers to | ||
848 | transmit output. | ||
849 | |||
850 | What Configuration Space Layout? | ||
851 | |||
852 | Configuration space is generally used for rarely-changing or | ||
853 | initialization-time parameters. But it is a limited resource, so | ||
854 | it might be better to use a virtqueue to update configuration | ||
855 | information (the network device does this for filtering, | ||
856 | otherwise the table in the config space could potentially be very | ||
857 | large). | ||
858 | |||
859 | Note that this space is generally the guest's native endian, | ||
860 | rather than PCI's little-endian. | ||
861 | |||
862 | What Device Number? | ||
863 | |||
864 | Currently device numbers are assigned quite freely: a simple | ||
865 | request mail to the author of this document or the Linux | ||
866 | virtualization mailing list[footnote: | ||
867 | |||
868 | https://lists.linux-foundation.org/mailman/listinfo/virtualization | ||
869 | ] will be sufficient to secure a unique one. | ||
870 | |||
871 | Meanwhile for experimental drivers, use 65535 and work backwards. | ||
872 | |||
873 | How many MSI-X vectors? | ||
874 | |||
875 | Using the optional MSI-X capability devices can speed up | ||
876 | interrupt processing by removing the need to read ISR Status | ||
877 | register by guest driver (which might be an expensive operation), | ||
878 | reducing interrupt sharing between devices and queues within the | ||
879 | device, and handling interrupts from multiple CPUs. However, some | ||
880 | systems impose a limit (which might be as low as 256) on the | ||
881 | total number of MSI-X vectors that can be allocated to all | ||
882 | devices. Devices and/or device drivers should take this into | ||
883 | account, limiting the number of vectors used unless the device is | ||
884 | expected to cause a high volume of interrupts. Devices can | ||
885 | control the number of vectors used by limiting the MSI-X Table | ||
886 | Size or not presenting MSI-X capability in PCI configuration | ||
887 | space. Drivers can control this by mapping events to as small | ||
888 | number of vectors as possible, or disabling MSI-X capability | ||
889 | altogether. | ||
890 | |||
891 | Message Framing | ||
892 | |||
893 | The descriptors used for a buffer should not effect the semantics | ||
894 | of the message, except for the total length of the buffer. For | ||
895 | example, a network buffer consists of a 10 byte header followed | ||
896 | by the network packet. Whether this is presented in the ring | ||
897 | descriptor chain as (say) a 10 byte buffer and a 1514 byte | ||
898 | buffer, or a single 1524 byte buffer, or even three buffers, | ||
899 | should have no effect. | ||
900 | |||
901 | In particular, no implementation should use the descriptor | ||
902 | boundaries to determine the size of any header in a request.[footnote: | ||
903 | The current qemu device implementations mistakenly insist that | ||
904 | the first descriptor cover the header in these cases exactly, so | ||
905 | a cautious driver should arrange it so. | ||
906 | ] | ||
907 | |||
908 | Device Improvements | ||
909 | |||
910 | Any change to configuration space, or new virtqueues, or | ||
911 | behavioural changes, should be indicated by negotiation of a new | ||
912 | feature bit. This establishes clarity[footnote: | ||
913 | Even if it does mean documenting design or implementation | ||
914 | mistakes! | ||
915 | ] and avoids future expansion problems. | ||
916 | |||
917 | Clusters of functionality which are always implemented together | ||
918 | can use a single bit, but if one feature makes sense without the | ||
919 | others they should not be gratuitously grouped together to | ||
920 | conserve feature bits. We can always extend the spec when the | ||
921 | first person needs more than 24 feature bits for their device. | ||
922 | |||
923 | [LaTeX Command: printnomenclature] | ||
924 | |||
925 | Appendix A: virtio_ring.h | ||
926 | |||
927 | #ifndef VIRTIO_RING_H | ||
928 | |||
929 | #define VIRTIO_RING_H | ||
930 | |||
931 | /* An interface for efficient virtio implementation. | ||
932 | |||
933 | * | ||
934 | |||
935 | * This header is BSD licensed so anyone can use the definitions | ||
936 | |||
937 | * to implement compatible drivers/servers. | ||
938 | |||
939 | * | ||
940 | |||
941 | * Copyright 2007, 2009, IBM Corporation | ||
942 | |||
943 | * Copyright 2011, Red Hat, Inc | ||
944 | |||
945 | * All rights reserved. | ||
946 | |||
947 | * | ||
948 | |||
949 | * Redistribution and use in source and binary forms, with or | ||
950 | without | ||
951 | |||
952 | * modification, are permitted provided that the following | ||
953 | conditions | ||
954 | |||
955 | * are met: | ||
956 | |||
957 | * 1. Redistributions of source code must retain the above | ||
958 | copyright | ||
959 | |||
960 | * notice, this list of conditions and the following | ||
961 | disclaimer. | ||
962 | |||
963 | * 2. Redistributions in binary form must reproduce the above | ||
964 | copyright | ||
965 | |||
966 | * notice, this list of conditions and the following | ||
967 | disclaimer in the | ||
968 | |||
969 | * documentation and/or other materials provided with the | ||
970 | distribution. | ||
971 | |||
972 | * 3. Neither the name of IBM nor the names of its contributors | ||
973 | |||
974 | * may be used to endorse or promote products derived from | ||
975 | this software | ||
976 | |||
977 | * without specific prior written permission. | ||
978 | |||
979 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND | ||
980 | CONTRIBUTORS ``AS IS'' AND | ||
981 | |||
982 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
983 | TO, THE | ||
984 | |||
985 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||
986 | PARTICULAR PURPOSE | ||
987 | |||
988 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE | ||
989 | LIABLE | ||
990 | |||
991 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
992 | CONSEQUENTIAL | ||
993 | |||
994 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
995 | SUBSTITUTE GOODS | ||
996 | |||
997 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
998 | INTERRUPTION) | ||
999 | |||
1000 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
1001 | CONTRACT, STRICT | ||
1002 | |||
1003 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||
1004 | IN ANY WAY | ||
1005 | |||
1006 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
1007 | POSSIBILITY OF | ||
1008 | |||
1009 | * SUCH DAMAGE. | ||
1010 | |||
1011 | */ | ||
1012 | |||
1013 | |||
1014 | |||
1015 | /* This marks a buffer as continuing via the next field. */ | ||
1016 | |||
1017 | #define VRING_DESC_F_NEXT 1 | ||
1018 | |||
1019 | /* This marks a buffer as write-only (otherwise read-only). */ | ||
1020 | |||
1021 | #define VRING_DESC_F_WRITE 2 | ||
1022 | |||
1023 | |||
1024 | |||
1025 | /* The Host uses this in used->flags to advise the Guest: don't | ||
1026 | kick me | ||
1027 | |||
1028 | * when you add a buffer. It's unreliable, so it's simply an | ||
1029 | |||
1030 | * optimization. Guest will still kick if it's out of buffers. | ||
1031 | */ | ||
1032 | |||
1033 | #define VRING_USED_F_NO_NOTIFY 1 | ||
1034 | |||
1035 | /* The Guest uses this in avail->flags to advise the Host: don't | ||
1036 | |||
1037 | * interrupt me when you consume a buffer. It's unreliable, so | ||
1038 | it's | ||
1039 | |||
1040 | * simply an optimization. */ | ||
1041 | |||
1042 | #define VRING_AVAIL_F_NO_INTERRUPT 1 | ||
1043 | |||
1044 | |||
1045 | |||
1046 | /* Virtio ring descriptors: 16 bytes. | ||
1047 | |||
1048 | * These can chain together via "next". */ | ||
1049 | |||
1050 | struct vring_desc { | ||
1051 | |||
1052 | /* Address (guest-physical). */ | ||
1053 | |||
1054 | uint64_t addr; | ||
1055 | |||
1056 | /* Length. */ | ||
1057 | |||
1058 | uint32_t len; | ||
1059 | |||
1060 | /* The flags as indicated above. */ | ||
1061 | |||
1062 | uint16_t flags; | ||
1063 | |||
1064 | /* We chain unused descriptors via this, too */ | ||
1065 | |||
1066 | uint16_t next; | ||
1067 | |||
1068 | }; | ||
1069 | |||
1070 | |||
1071 | |||
1072 | struct vring_avail { | ||
1073 | |||
1074 | uint16_t flags; | ||
1075 | |||
1076 | uint16_t idx; | ||
1077 | |||
1078 | uint16_t ring[]; | ||
1079 | |||
1080 | uint16_t used_event; | ||
1081 | |||
1082 | }; | ||
1083 | |||
1084 | |||
1085 | |||
1086 | /* u32 is used here for ids for padding reasons. */ | ||
1087 | |||
1088 | struct vring_used_elem { | ||
1089 | |||
1090 | /* Index of start of used descriptor chain. */ | ||
1091 | |||
1092 | uint32_t id; | ||
1093 | |||
1094 | /* Total length of the descriptor chain which was written | ||
1095 | to. */ | ||
1096 | |||
1097 | uint32_t len; | ||
1098 | |||
1099 | }; | ||
1100 | |||
1101 | |||
1102 | |||
1103 | struct vring_used { | ||
1104 | |||
1105 | uint16_t flags; | ||
1106 | |||
1107 | uint16_t idx; | ||
1108 | |||
1109 | struct vring_used_elem ring[]; | ||
1110 | |||
1111 | uint16_t avail_event; | ||
1112 | |||
1113 | }; | ||
1114 | |||
1115 | |||
1116 | |||
1117 | struct vring { | ||
1118 | |||
1119 | unsigned int num; | ||
1120 | |||
1121 | |||
1122 | |||
1123 | struct vring_desc *desc; | ||
1124 | |||
1125 | struct vring_avail *avail; | ||
1126 | |||
1127 | struct vring_used *used; | ||
1128 | |||
1129 | }; | ||
1130 | |||
1131 | |||
1132 | |||
1133 | /* The standard layout for the ring is a continuous chunk of | ||
1134 | memory which | ||
1135 | |||
1136 | * looks like this. We assume num is a power of 2. | ||
1137 | |||
1138 | * | ||
1139 | |||
1140 | * struct vring { | ||
1141 | |||
1142 | * // The actual descriptors (16 bytes each) | ||
1143 | |||
1144 | * struct vring_desc desc[num]; | ||
1145 | |||
1146 | * | ||
1147 | |||
1148 | * // A ring of available descriptor heads with free-running | ||
1149 | index. | ||
1150 | |||
1151 | * __u16 avail_flags; | ||
1152 | |||
1153 | * __u16 avail_idx; | ||
1154 | |||
1155 | * __u16 available[num]; | ||
1156 | |||
1157 | * | ||
1158 | |||
1159 | * // Padding to the next align boundary. | ||
1160 | |||
1161 | * char pad[]; | ||
1162 | |||
1163 | * | ||
1164 | |||
1165 | * // A ring of used descriptor heads with free-running | ||
1166 | index. | ||
1167 | |||
1168 | * __u16 used_flags; | ||
1169 | |||
1170 | * __u16 EVENT_IDX; | ||
1171 | |||
1172 | * struct vring_used_elem used[num]; | ||
1173 | |||
1174 | * }; | ||
1175 | |||
1176 | * Note: for virtio PCI, align is 4096. | ||
1177 | |||
1178 | */ | ||
1179 | |||
1180 | static inline void vring_init(struct vring *vr, unsigned int num, | ||
1181 | void *p, | ||
1182 | |||
1183 | unsigned long align) | ||
1184 | |||
1185 | { | ||
1186 | |||
1187 | vr->num = num; | ||
1188 | |||
1189 | vr->desc = p; | ||
1190 | |||
1191 | vr->avail = p + num*sizeof(struct vring_desc); | ||
1192 | |||
1193 | vr->used = (void *)(((unsigned long)&vr->avail->ring[num] | ||
1194 | |||
1195 | + align-1) | ||
1196 | |||
1197 | & ~(align - 1)); | ||
1198 | |||
1199 | } | ||
1200 | |||
1201 | |||
1202 | |||
1203 | static inline unsigned vring_size(unsigned int num, unsigned long | ||
1204 | align) | ||
1205 | |||
1206 | { | ||
1207 | |||
1208 | return ((sizeof(struct vring_desc)*num + | ||
1209 | sizeof(uint16_t)*(2+num) | ||
1210 | |||
1211 | + align - 1) & ~(align - 1)) | ||
1212 | |||
1213 | + sizeof(uint16_t)*3 + sizeof(struct | ||
1214 | vring_used_elem)*num; | ||
1215 | |||
1216 | } | ||
1217 | |||
1218 | |||
1219 | |||
1220 | static inline int vring_need_event(uint16_t event_idx, uint16_t | ||
1221 | new_idx, uint16_t old_idx) | ||
1222 | |||
1223 | { | ||
1224 | |||
1225 | return (uint16_t)(new_idx - event_idx - 1) < | ||
1226 | (uint16_t)(new_idx - old_idx); | ||
1227 | |||
1228 | } | ||
1229 | |||
1230 | #endif /* VIRTIO_RING_H */ | ||
1231 | |||
1232 | <cha:Reserved-Feature-Bits>Appendix B: Reserved Feature Bits | ||
1233 | |||
1234 | Currently there are five device-independent feature bits defined: | ||
1235 | |||
1236 | VIRTIO_F_NOTIFY_ON_EMPTY (24) Negotiating this feature | ||
1237 | indicates that the driver wants an interrupt if the device runs | ||
1238 | out of available descriptors on a virtqueue, even though | ||
1239 | interrupts are suppressed using the VRING_AVAIL_F_NO_INTERRUPT | ||
1240 | flag or the used_event field. An example of this is the | ||
1241 | networking driver: it doesn't need to know every time a packet | ||
1242 | is transmitted, but it does need to free the transmitted | ||
1243 | packets a finite time after they are transmitted. It can avoid | ||
1244 | using a timer if the device interrupts it when all the packets | ||
1245 | are transmitted. | ||
1246 | |||
1247 | VIRTIO_F_RING_INDIRECT_DESC (28) Negotiating this feature | ||
1248 | indicates that the driver can use descriptors with the | ||
1249 | VRING_DESC_F_INDIRECT flag set, as described in [sub:Indirect-Descriptors] | ||
1250 | . | ||
1251 | |||
1252 | VIRTIO_F_RING_EVENT_IDX(29) This feature enables the used_event | ||
1253 | and the avail_event fields. If set, it indicates that the | ||
1254 | device should ignore the flags field in the available ring | ||
1255 | structure. Instead, the used_event field in this structure is | ||
1256 | used by guest to suppress device interrupts. Further, the | ||
1257 | driver should ignore the flags field in the used ring | ||
1258 | structure. Instead, the avail_event field in this structure is | ||
1259 | used by the device to suppress notifications. If unset, the | ||
1260 | driver should ignore the used_event field; the device should | ||
1261 | ignore the avail_event field; the flags field is used | ||
1262 | |||
1263 | VIRTIO_F_BAD_FEATURE(30) This feature should never be | ||
1264 | negotiated by the guest; doing so is an indication that the | ||
1265 | guest is faulty[footnote: | ||
1266 | An experimental virtio PCI driver contained in Linux version | ||
1267 | 2.6.25 had this problem, and this feature bit can be used to | ||
1268 | detect it. | ||
1269 | ] | ||
1270 | |||
1271 | VIRTIO_F_FEATURES_HIGH(31) This feature indicates that the | ||
1272 | device supports feature bits 32:63. If unset, feature bits | ||
1273 | 32:63 are unset. | ||
1274 | |||
1275 | Appendix C: Network Device | ||
1276 | |||
1277 | The virtio network device is a virtual ethernet card, and is the | ||
1278 | most complex of the devices supported so far by virtio. It has | ||
1279 | enhanced rapidly and demonstrates clearly how support for new | ||
1280 | features should be added to an existing device. Empty buffers are | ||
1281 | placed in one virtqueue for receiving packets, and outgoing | ||
1282 | packets are enqueued into another for transmission in that order. | ||
1283 | A third command queue is used to control advanced filtering | ||
1284 | features. | ||
1285 | |||
1286 | Configuration | ||
1287 | |||
1288 | Subsystem Device ID 1 | ||
1289 | |||
1290 | Virtqueues 0:receiveq. 1:transmitq. 2:controlq[footnote: | ||
1291 | Only if VIRTIO_NET_F_CTRL_VQ set | ||
1292 | ] | ||
1293 | |||
1294 | Feature bits | ||
1295 | |||
1296 | VIRTIO_NET_F_CSUM (0) Device handles packets with partial | ||
1297 | checksum | ||
1298 | |||
1299 | VIRTIO_NET_F_GUEST_CSUM (1) Guest handles packets with partial | ||
1300 | checksum | ||
1301 | |||
1302 | VIRTIO_NET_F_MAC (5) Device has given MAC address. | ||
1303 | |||
1304 | VIRTIO_NET_F_GSO (6) (Deprecated) device handles packets with | ||
1305 | any GSO type.[footnote: | ||
1306 | It was supposed to indicate segmentation offload support, but | ||
1307 | upon further investigation it became clear that multiple bits | ||
1308 | were required. | ||
1309 | ] | ||
1310 | |||
1311 | VIRTIO_NET_F_GUEST_TSO4 (7) Guest can receive TSOv4. | ||
1312 | |||
1313 | VIRTIO_NET_F_GUEST_TSO6 (8) Guest can receive TSOv6. | ||
1314 | |||
1315 | VIRTIO_NET_F_GUEST_ECN (9) Guest can receive TSO with ECN. | ||
1316 | |||
1317 | VIRTIO_NET_F_GUEST_UFO (10) Guest can receive UFO. | ||
1318 | |||
1319 | VIRTIO_NET_F_HOST_TSO4 (11) Device can receive TSOv4. | ||
1320 | |||
1321 | VIRTIO_NET_F_HOST_TSO6 (12) Device can receive TSOv6. | ||
1322 | |||
1323 | VIRTIO_NET_F_HOST_ECN (13) Device can receive TSO with ECN. | ||
1324 | |||
1325 | VIRTIO_NET_F_HOST_UFO (14) Device can receive UFO. | ||
1326 | |||
1327 | VIRTIO_NET_F_MRG_RXBUF (15) Guest can merge receive buffers. | ||
1328 | |||
1329 | VIRTIO_NET_F_STATUS (16) Configuration status field is | ||
1330 | available. | ||
1331 | |||
1332 | VIRTIO_NET_F_CTRL_VQ (17) Control channel is available. | ||
1333 | |||
1334 | VIRTIO_NET_F_CTRL_RX (18) Control channel RX mode support. | ||
1335 | |||
1336 | VIRTIO_NET_F_CTRL_VLAN (19) Control channel VLAN filtering. | ||
1337 | |||
1338 | Device configuration layout Two configuration fields are | ||
1339 | currently defined. The mac address field always exists (though | ||
1340 | is only valid if VIRTIO_NET_F_MAC is set), and the status field | ||
1341 | only exists if VIRTIO_NET_F_STATUS is set. Only one bit is | ||
1342 | currently defined for the status field: VIRTIO_NET_S_LINK_UP. #define VIRTIO_NET_S_LINK_UP 1 | ||
1343 | |||
1344 | |||
1345 | |||
1346 | struct virtio_net_config { | ||
1347 | |||
1348 | u8 mac[6]; | ||
1349 | |||
1350 | u16 status; | ||
1351 | |||
1352 | }; | ||
1353 | |||
1354 | Device Initialization | ||
1355 | |||
1356 | The initialization routine should identify the receive and | ||
1357 | transmission virtqueues. | ||
1358 | |||
1359 | If the VIRTIO_NET_F_MAC feature bit is set, the configuration | ||
1360 | space “mac” entry indicates the “physical” address of the the | ||
1361 | network card, otherwise a private MAC address should be | ||
1362 | assigned. All guests are expected to negotiate this feature if | ||
1363 | it is set. | ||
1364 | |||
1365 | If the VIRTIO_NET_F_CTRL_VQ feature bit is negotiated, identify | ||
1366 | the control virtqueue. | ||
1367 | |||
1368 | If the VIRTIO_NET_F_STATUS feature bit is negotiated, the link | ||
1369 | status can be read from the bottom bit of the “status” config | ||
1370 | field. Otherwise, the link should be assumed active. | ||
1371 | |||
1372 | The receive virtqueue should be filled with receive buffers. | ||
1373 | This is described in detail below in “Setting Up Receive | ||
1374 | Buffers”. | ||
1375 | |||
1376 | A driver can indicate that it will generate checksumless | ||
1377 | packets by negotating the VIRTIO_NET_F_CSUM feature. This “ | ||
1378 | checksum offload” is a common feature on modern network cards. | ||
1379 | |||
1380 | If that feature is negotiated, a driver can use TCP or UDP | ||
1381 | segmentation offload by negotiating the VIRTIO_NET_F_HOST_TSO4 | ||
1382 | (IPv4 TCP), VIRTIO_NET_F_HOST_TSO6 (IPv6 TCP) and | ||
1383 | VIRTIO_NET_F_HOST_UFO (UDP fragmentation) features. It should | ||
1384 | not send TCP packets requiring segmentation offload which have | ||
1385 | the Explicit Congestion Notification bit set, unless the | ||
1386 | VIRTIO_NET_F_HOST_ECN feature is negotiated.[footnote: | ||
1387 | This is a common restriction in real, older network cards. | ||
1388 | ] | ||
1389 | |||
1390 | The converse features are also available: a driver can save the | ||
1391 | virtual device some work by negotiating these features.[footnote: | ||
1392 | For example, a network packet transported between two guests on | ||
1393 | the same system may not require checksumming at all, nor | ||
1394 | segmentation, if both guests are amenable. | ||
1395 | ] The VIRTIO_NET_F_GUEST_CSUM feature indicates that partially | ||
1396 | checksummed packets can be received, and if it can do that then | ||
1397 | the VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6, | ||
1398 | VIRTIO_NET_F_GUEST_UFO and VIRTIO_NET_F_GUEST_ECN are the input | ||
1399 | equivalents of the features described above. See “Receiving | ||
1400 | Packets” below. | ||
1401 | |||
1402 | Device Operation | ||
1403 | |||
1404 | Packets are transmitted by placing them in the transmitq, and | ||
1405 | buffers for incoming packets are placed in the receiveq. In each | ||
1406 | case, the packet itself is preceeded by a header: | ||
1407 | |||
1408 | struct virtio_net_hdr { | ||
1409 | |||
1410 | #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 | ||
1411 | |||
1412 | u8 flags; | ||
1413 | |||
1414 | #define VIRTIO_NET_HDR_GSO_NONE 0 | ||
1415 | |||
1416 | #define VIRTIO_NET_HDR_GSO_TCPV4 1 | ||
1417 | |||
1418 | #define VIRTIO_NET_HDR_GSO_UDP 3 | ||
1419 | |||
1420 | #define VIRTIO_NET_HDR_GSO_TCPV6 4 | ||
1421 | |||
1422 | #define VIRTIO_NET_HDR_GSO_ECN 0x80 | ||
1423 | |||
1424 | u8 gso_type; | ||
1425 | |||
1426 | u16 hdr_len; | ||
1427 | |||
1428 | u16 gso_size; | ||
1429 | |||
1430 | u16 csum_start; | ||
1431 | |||
1432 | u16 csum_offset; | ||
1433 | |||
1434 | /* Only if VIRTIO_NET_F_MRG_RXBUF: */ | ||
1435 | |||
1436 | u16 num_buffers | ||
1437 | |||
1438 | }; | ||
1439 | |||
1440 | The controlq is used to control device features such as | ||
1441 | filtering. | ||
1442 | |||
1443 | Packet Transmission | ||
1444 | |||
1445 | Transmitting a single packet is simple, but varies depending on | ||
1446 | the different features the driver negotiated. | ||
1447 | |||
1448 | If the driver negotiated VIRTIO_NET_F_CSUM, and the packet has | ||
1449 | not been fully checksummed, then the virtio_net_hdr's fields | ||
1450 | are set as follows. Otherwise, the packet must be fully | ||
1451 | checksummed, and flags is zero. | ||
1452 | |||
1453 | flags has the VIRTIO_NET_HDR_F_NEEDS_CSUM set, | ||
1454 | |||
1455 | <ite:csum_start-is-set>csum_start is set to the offset within | ||
1456 | the packet to begin checksumming, and | ||
1457 | |||
1458 | csum_offset indicates how many bytes after the csum_start the | ||
1459 | new (16 bit ones' complement) checksum should be placed.[footnote: | ||
1460 | For example, consider a partially checksummed TCP (IPv4) packet. | ||
1461 | It will have a 14 byte ethernet header and 20 byte IP header | ||
1462 | followed by the TCP header (with the TCP checksum field 16 bytes | ||
1463 | into that header). csum_start will be 14+20 = 34 (the TCP | ||
1464 | checksum includes the header), and csum_offset will be 16. The | ||
1465 | value in the TCP checksum field will be the sum of the TCP pseudo | ||
1466 | header, so that replacing it by the ones' complement checksum of | ||
1467 | the TCP header and body will give the correct result. | ||
1468 | ] | ||
1469 | |||
1470 | <enu:If-the-driver>If the driver negotiated | ||
1471 | VIRTIO_NET_F_HOST_TSO4, TSO6 or UFO, and the packet requires | ||
1472 | TCP segmentation or UDP fragmentation, then the “gso_type” | ||
1473 | field is set to VIRTIO_NET_HDR_GSO_TCPV4, TCPV6 or UDP. | ||
1474 | (Otherwise, it is set to VIRTIO_NET_HDR_GSO_NONE). In this | ||
1475 | case, packets larger than 1514 bytes can be transmitted: the | ||
1476 | metadata indicates how to replicate the packet header to cut it | ||
1477 | into smaller packets. The other gso fields are set: | ||
1478 | |||
1479 | hdr_len is a hint to the device as to how much of the header | ||
1480 | needs to be kept to copy into each packet, usually set to the | ||
1481 | length of the headers, including the transport header.[footnote: | ||
1482 | Due to various bugs in implementations, this field is not useful | ||
1483 | as a guarantee of the transport header size. | ||
1484 | ] | ||
1485 | |||
1486 | gso_size is the size of the packet beyond that header (ie. | ||
1487 | MSS). | ||
1488 | |||
1489 | If the driver negotiated the VIRTIO_NET_F_HOST_ECN feature, the | ||
1490 | VIRTIO_NET_HDR_GSO_ECN bit may be set in “gso_type” as well, | ||
1491 | indicating that the TCP packet has the ECN bit set.[footnote: | ||
1492 | This case is not handled by some older hardware, so is called out | ||
1493 | specifically in the protocol. | ||
1494 | ] | ||
1495 | |||
1496 | If the driver negotiated the VIRTIO_NET_F_MRG_RXBUF feature, | ||
1497 | the num_buffers field is set to zero. | ||
1498 | |||
1499 | The header and packet are added as one output buffer to the | ||
1500 | transmitq, and the device is notified of the new entry (see [sub:Notifying-The-Device] | ||
1501 | ).[footnote: | ||
1502 | Note that the header will be two bytes longer for the | ||
1503 | VIRTIO_NET_F_MRG_RXBUF case. | ||
1504 | ] | ||
1505 | |||
1506 | Packet Transmission Interrupt | ||
1507 | |||
1508 | Often a driver will suppress transmission interrupts using the | ||
1509 | VRING_AVAIL_F_NO_INTERRUPT flag (see [sub:Receiving-Used-Buffers] | ||
1510 | ) and check for used packets in the transmit path of following | ||
1511 | packets. However, it will still receive interrupts if the | ||
1512 | VIRTIO_F_NOTIFY_ON_EMPTY feature is negotiated, indicating that | ||
1513 | the transmission queue is completely emptied. | ||
1514 | |||
1515 | The normal behavior in this interrupt handler is to retrieve and | ||
1516 | new descriptors from the used ring and free the corresponding | ||
1517 | headers and packets. | ||
1518 | |||
1519 | Setting Up Receive Buffers | ||
1520 | |||
1521 | It is generally a good idea to keep the receive virtqueue as | ||
1522 | fully populated as possible: if it runs out, network performance | ||
1523 | will suffer. | ||
1524 | |||
1525 | If the VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6 or | ||
1526 | VIRTIO_NET_F_GUEST_UFO features are used, the Guest will need to | ||
1527 | accept packets of up to 65550 bytes long (the maximum size of a | ||
1528 | TCP or UDP packet, plus the 14 byte ethernet header), otherwise | ||
1529 | 1514 bytes. So unless VIRTIO_NET_F_MRG_RXBUF is negotiated, every | ||
1530 | buffer in the receive queue needs to be at least this length [footnote: | ||
1531 | Obviously each one can be split across multiple descriptor | ||
1532 | elements. | ||
1533 | ]. | ||
1534 | |||
1535 | If VIRTIO_NET_F_MRG_RXBUF is negotiated, each buffer must be at | ||
1536 | least the size of the struct virtio_net_hdr. | ||
1537 | |||
1538 | Packet Receive Interrupt | ||
1539 | |||
1540 | When a packet is copied into a buffer in the receiveq, the | ||
1541 | optimal path is to disable further interrupts for the receiveq | ||
1542 | (see [sub:Receiving-Used-Buffers]) and process packets until no | ||
1543 | more are found, then re-enable them. | ||
1544 | |||
1545 | Processing packet involves: | ||
1546 | |||
1547 | If the driver negotiated the VIRTIO_NET_F_MRG_RXBUF feature, | ||
1548 | then the “num_buffers” field indicates how many descriptors | ||
1549 | this packet is spread over (including this one). This allows | ||
1550 | receipt of large packets without having to allocate large | ||
1551 | buffers. In this case, there will be at least “num_buffers” in | ||
1552 | the used ring, and they should be chained together to form a | ||
1553 | single packet. The other buffers will not begin with a struct | ||
1554 | virtio_net_hdr. | ||
1555 | |||
1556 | If the VIRTIO_NET_F_MRG_RXBUF feature was not negotiated, or | ||
1557 | the “num_buffers” field is one, then the entire packet will be | ||
1558 | contained within this buffer, immediately following the struct | ||
1559 | virtio_net_hdr. | ||
1560 | |||
1561 | If the VIRTIO_NET_F_GUEST_CSUM feature was negotiated, the | ||
1562 | VIRTIO_NET_HDR_F_NEEDS_CSUM bit in the “flags” field may be | ||
1563 | set: if so, the checksum on the packet is incomplete and the “ | ||
1564 | csum_start” and “csum_offset” fields indicate how to calculate | ||
1565 | it (see [ite:csum_start-is-set]). | ||
1566 | |||
1567 | If the VIRTIO_NET_F_GUEST_TSO4, TSO6 or UFO options were | ||
1568 | negotiated, then the “gso_type” may be something other than | ||
1569 | VIRTIO_NET_HDR_GSO_NONE, and the “gso_size” field indicates the | ||
1570 | desired MSS (see [enu:If-the-driver]).Control Virtqueue | ||
1571 | |||
1572 | The driver uses the control virtqueue (if VIRTIO_NET_F_VTRL_VQ is | ||
1573 | negotiated) to send commands to manipulate various features of | ||
1574 | the device which would not easily map into the configuration | ||
1575 | space. | ||
1576 | |||
1577 | All commands are of the following form: | ||
1578 | |||
1579 | struct virtio_net_ctrl { | ||
1580 | |||
1581 | u8 class; | ||
1582 | |||
1583 | u8 command; | ||
1584 | |||
1585 | u8 command-specific-data[]; | ||
1586 | |||
1587 | u8 ack; | ||
1588 | |||
1589 | }; | ||
1590 | |||
1591 | |||
1592 | |||
1593 | /* ack values */ | ||
1594 | |||
1595 | #define VIRTIO_NET_OK 0 | ||
1596 | |||
1597 | #define VIRTIO_NET_ERR 1 | ||
1598 | |||
1599 | The class, command and command-specific-data are set by the | ||
1600 | driver, and the device sets the ack byte. There is little it can | ||
1601 | do except issue a diagnostic if the ack byte is not | ||
1602 | VIRTIO_NET_OK. | ||
1603 | |||
1604 | Packet Receive Filtering | ||
1605 | |||
1606 | If the VIRTIO_NET_F_CTRL_RX feature is negotiated, the driver can | ||
1607 | send control commands for promiscuous mode, multicast receiving, | ||
1608 | and filtering of MAC addresses. | ||
1609 | |||
1610 | Note that in general, these commands are best-effort: unwanted | ||
1611 | packets may still arrive. | ||
1612 | |||
1613 | Setting Promiscuous Mode | ||
1614 | |||
1615 | #define VIRTIO_NET_CTRL_RX 0 | ||
1616 | |||
1617 | #define VIRTIO_NET_CTRL_RX_PROMISC 0 | ||
1618 | |||
1619 | #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 | ||
1620 | |||
1621 | The class VIRTIO_NET_CTRL_RX has two commands: | ||
1622 | VIRTIO_NET_CTRL_RX_PROMISC turns promiscuous mode on and off, and | ||
1623 | VIRTIO_NET_CTRL_RX_ALLMULTI turns all-multicast receive on and | ||
1624 | off. The command-specific-data is one byte containing 0 (off) or | ||
1625 | 1 (on). | ||
1626 | |||
1627 | Setting MAC Address Filtering | ||
1628 | |||
1629 | struct virtio_net_ctrl_mac { | ||
1630 | |||
1631 | u32 entries; | ||
1632 | |||
1633 | u8 macs[entries][ETH_ALEN]; | ||
1634 | |||
1635 | }; | ||
1636 | |||
1637 | |||
1638 | |||
1639 | #define VIRTIO_NET_CTRL_MAC 1 | ||
1640 | |||
1641 | #define VIRTIO_NET_CTRL_MAC_TABLE_SET 0 | ||
1642 | |||
1643 | The device can filter incoming packets by any number of | ||
1644 | destination MAC addresses.[footnote: | ||
1645 | Since there are no guarentees, it can use a hash filter | ||
1646 | orsilently switch to allmulti or promiscuous mode if it is given | ||
1647 | too many addresses. | ||
1648 | ] This table is set using the class VIRTIO_NET_CTRL_MAC and the | ||
1649 | command VIRTIO_NET_CTRL_MAC_TABLE_SET. The command-specific-data | ||
1650 | is two variable length tables of 6-byte MAC addresses. The first | ||
1651 | table contains unicast addresses, and the second contains | ||
1652 | multicast addresses. | ||
1653 | |||
1654 | VLAN Filtering | ||
1655 | |||
1656 | If the driver negotiates the VIRTION_NET_F_CTRL_VLAN feature, it | ||
1657 | can control a VLAN filter table in the device. | ||
1658 | |||
1659 | #define VIRTIO_NET_CTRL_VLAN 2 | ||
1660 | |||
1661 | #define VIRTIO_NET_CTRL_VLAN_ADD 0 | ||
1662 | |||
1663 | #define VIRTIO_NET_CTRL_VLAN_DEL 1 | ||
1664 | |||
1665 | Both the VIRTIO_NET_CTRL_VLAN_ADD and VIRTIO_NET_CTRL_VLAN_DEL | ||
1666 | command take a 16-bit VLAN id as the command-specific-data. | ||
1667 | |||
1668 | Appendix D: Block Device | ||
1669 | |||
1670 | The virtio block device is a simple virtual block device (ie. | ||
1671 | disk). Read and write requests (and other exotic requests) are | ||
1672 | placed in the queue, and serviced (probably out of order) by the | ||
1673 | device except where noted. | ||
1674 | |||
1675 | Configuration | ||
1676 | |||
1677 | Subsystem Device ID 2 | ||
1678 | |||
1679 | Virtqueues 0:requestq. | ||
1680 | |||
1681 | Feature bits | ||
1682 | |||
1683 | VIRTIO_BLK_F_BARRIER (0) Host supports request barriers. | ||
1684 | |||
1685 | VIRTIO_BLK_F_SIZE_MAX (1) Maximum size of any single segment is | ||
1686 | in “size_max”. | ||
1687 | |||
1688 | VIRTIO_BLK_F_SEG_MAX (2) Maximum number of segments in a | ||
1689 | request is in “seg_max”. | ||
1690 | |||
1691 | VIRTIO_BLK_F_GEOMETRY (4) Disk-style geometry specified in “ | ||
1692 | geometry”. | ||
1693 | |||
1694 | VIRTIO_BLK_F_RO (5) Device is read-only. | ||
1695 | |||
1696 | VIRTIO_BLK_F_BLK_SIZE (6) Block size of disk is in “blk_size”. | ||
1697 | |||
1698 | VIRTIO_BLK_F_SCSI (7) Device supports scsi packet commands. | ||
1699 | |||
1700 | VIRTIO_BLK_F_FLUSH (9) Cache flush command support. | ||
1701 | |||
1702 | |||
1703 | |||
1704 | Device configuration layout The capacity of the device | ||
1705 | (expressed in 512-byte sectors) is always present. The | ||
1706 | availability of the others all depend on various feature bits | ||
1707 | as indicated above. struct virtio_blk_config { | ||
1708 | |||
1709 | u64 capacity; | ||
1710 | |||
1711 | u32 size_max; | ||
1712 | |||
1713 | u32 seg_max; | ||
1714 | |||
1715 | struct virtio_blk_geometry { | ||
1716 | |||
1717 | u16 cylinders; | ||
1718 | |||
1719 | u8 heads; | ||
1720 | |||
1721 | u8 sectors; | ||
1722 | |||
1723 | } geometry; | ||
1724 | |||
1725 | u32 blk_size; | ||
1726 | |||
1727 | |||
1728 | |||
1729 | }; | ||
1730 | |||
1731 | Device Initialization | ||
1732 | |||
1733 | The device size should be read from the “capacity” | ||
1734 | configuration field. No requests should be submitted which goes | ||
1735 | beyond this limit. | ||
1736 | |||
1737 | If the VIRTIO_BLK_F_BLK_SIZE feature is negotiated, the | ||
1738 | blk_size field can be read to determine the optimal sector size | ||
1739 | for the driver to use. This does not effect the units used in | ||
1740 | the protocol (always 512 bytes), but awareness of the correct | ||
1741 | value can effect performance. | ||
1742 | |||
1743 | If the VIRTIO_BLK_F_RO feature is set by the device, any write | ||
1744 | requests will fail. | ||
1745 | |||
1746 | |||
1747 | |||
1748 | Device Operation | ||
1749 | |||
1750 | The driver queues requests to the virtqueue, and they are used by | ||
1751 | the device (not necessarily in order). Each request is of form: | ||
1752 | |||
1753 | struct virtio_blk_req { | ||
1754 | |||
1755 | |||
1756 | |||
1757 | u32 type; | ||
1758 | |||
1759 | u32 ioprio; | ||
1760 | |||
1761 | u64 sector; | ||
1762 | |||
1763 | char data[][512]; | ||
1764 | |||
1765 | u8 status; | ||
1766 | |||
1767 | }; | ||
1768 | |||
1769 | If the device has VIRTIO_BLK_F_SCSI feature, it can also support | ||
1770 | scsi packet command requests, each of these requests is of form:struct virtio_scsi_pc_req { | ||
1771 | |||
1772 | u32 type; | ||
1773 | |||
1774 | u32 ioprio; | ||
1775 | |||
1776 | u64 sector; | ||
1777 | |||
1778 | char cmd[]; | ||
1779 | |||
1780 | char data[][512]; | ||
1781 | |||
1782 | #define SCSI_SENSE_BUFFERSIZE 96 | ||
1783 | |||
1784 | u8 sense[SCSI_SENSE_BUFFERSIZE]; | ||
1785 | |||
1786 | u32 errors; | ||
1787 | |||
1788 | u32 data_len; | ||
1789 | |||
1790 | u32 sense_len; | ||
1791 | |||
1792 | u32 residual; | ||
1793 | |||
1794 | u8 status; | ||
1795 | |||
1796 | }; | ||
1797 | |||
1798 | The type of the request is either a read (VIRTIO_BLK_T_IN), a | ||
1799 | write (VIRTIO_BLK_T_OUT), a scsi packet command | ||
1800 | (VIRTIO_BLK_T_SCSI_CMD or VIRTIO_BLK_T_SCSI_CMD_OUT[footnote: | ||
1801 | the SCSI_CMD and SCSI_CMD_OUT types are equivalent, the device | ||
1802 | does not distinguish between them | ||
1803 | ]) or a flush (VIRTIO_BLK_T_FLUSH or VIRTIO_BLK_T_FLUSH_OUT[footnote: | ||
1804 | the FLUSH and FLUSH_OUT types are equivalent, the device does not | ||
1805 | distinguish between them | ||
1806 | ]). If the device has VIRTIO_BLK_F_BARRIER feature the high bit | ||
1807 | (VIRTIO_BLK_T_BARRIER) indicates that this request acts as a | ||
1808 | barrier and that all preceeding requests must be complete before | ||
1809 | this one, and all following requests must not be started until | ||
1810 | this is complete. Note that a barrier does not flush caches in | ||
1811 | the underlying backend device in host, and thus does not serve as | ||
1812 | data consistency guarantee. Driver must use FLUSH request to | ||
1813 | flush the host cache. | ||
1814 | |||
1815 | #define VIRTIO_BLK_T_IN 0 | ||
1816 | |||
1817 | #define VIRTIO_BLK_T_OUT 1 | ||
1818 | |||
1819 | #define VIRTIO_BLK_T_SCSI_CMD 2 | ||
1820 | |||
1821 | #define VIRTIO_BLK_T_SCSI_CMD_OUT 3 | ||
1822 | |||
1823 | #define VIRTIO_BLK_T_FLUSH 4 | ||
1824 | |||
1825 | #define VIRTIO_BLK_T_FLUSH_OUT 5 | ||
1826 | |||
1827 | #define VIRTIO_BLK_T_BARRIER 0x80000000 | ||
1828 | |||
1829 | The ioprio field is a hint about the relative priorities of | ||
1830 | requests to the device: higher numbers indicate more important | ||
1831 | requests. | ||
1832 | |||
1833 | The sector number indicates the offset (multiplied by 512) where | ||
1834 | the read or write is to occur. This field is unused and set to 0 | ||
1835 | for scsi packet commands and for flush commands. | ||
1836 | |||
1837 | The cmd field is only present for scsi packet command requests, | ||
1838 | and indicates the command to perform. This field must reside in a | ||
1839 | single, separate read-only buffer; command length can be derived | ||
1840 | from the length of this buffer. | ||
1841 | |||
1842 | Note that these first three (four for scsi packet commands) | ||
1843 | fields are always read-only: the data field is either read-only | ||
1844 | or write-only, depending on the request. The size of the read or | ||
1845 | write can be derived from the total size of the request buffers. | ||
1846 | |||
1847 | The sense field is only present for scsi packet command requests, | ||
1848 | and indicates the buffer for scsi sense data. | ||
1849 | |||
1850 | The data_len field is only present for scsi packet command | ||
1851 | requests, this field is deprecated, and should be ignored by the | ||
1852 | driver. Historically, devices copied data length there. | ||
1853 | |||
1854 | The sense_len field is only present for scsi packet command | ||
1855 | requests and indicates the number of bytes actually written to | ||
1856 | the sense buffer. | ||
1857 | |||
1858 | The residual field is only present for scsi packet command | ||
1859 | requests and indicates the residual size, calculated as data | ||
1860 | length - number of bytes actually transferred. | ||
1861 | |||
1862 | The final status byte is written by the device: either | ||
1863 | VIRTIO_BLK_S_OK for success, VIRTIO_BLK_S_IOERR for host or guest | ||
1864 | error or VIRTIO_BLK_S_UNSUPP for a request unsupported by host:#define VIRTIO_BLK_S_OK 0 | ||
1865 | |||
1866 | #define VIRTIO_BLK_S_IOERR 1 | ||
1867 | |||
1868 | #define VIRTIO_BLK_S_UNSUPP 2 | ||
1869 | |||
1870 | Historically, devices assumed that the fields type, ioprio and | ||
1871 | sector reside in a single, separate read-only buffer; the fields | ||
1872 | errors, data_len, sense_len and residual reside in a single, | ||
1873 | separate write-only buffer; the sense field in a separate | ||
1874 | write-only buffer of size 96 bytes, by itself; the fields errors, | ||
1875 | data_len, sense_len and residual in a single write-only buffer; | ||
1876 | and the status field is a separate read-only buffer of size 1 | ||
1877 | byte, by itself. | ||
1878 | |||
1879 | Appendix E: Console Device | ||
1880 | |||
1881 | The virtio console device is a simple device for data input and | ||
1882 | output. A device may have one or more ports. Each port has a pair | ||
1883 | of input and output virtqueues. Moreover, a device has a pair of | ||
1884 | control IO virtqueues. The control virtqueues are used to | ||
1885 | communicate information between the device and the driver about | ||
1886 | ports being opened and closed on either side of the connection, | ||
1887 | indication from the host about whether a particular port is a | ||
1888 | console port, adding new ports, port hot-plug/unplug, etc., and | ||
1889 | indication from the guest about whether a port or a device was | ||
1890 | successfully added, port open/close, etc.. For data IO, one or | ||
1891 | more empty buffers are placed in the receive queue for incoming | ||
1892 | data and outgoing characters are placed in the transmit queue. | ||
1893 | |||
1894 | Configuration | ||
1895 | |||
1896 | Subsystem Device ID 3 | ||
1897 | |||
1898 | Virtqueues 0:receiveq(port0). 1:transmitq(port0), 2:control | ||
1899 | receiveq[footnote: | ||
1900 | Ports 2 onwards only if VIRTIO_CONSOLE_F_MULTIPORT is set | ||
1901 | ], 3:control transmitq, 4:receiveq(port1), 5:transmitq(port1), | ||
1902 | ... | ||
1903 | |||
1904 | Feature bits | ||
1905 | |||
1906 | VIRTIO_CONSOLE_F_SIZE (0) Configuration cols and rows fields | ||
1907 | are valid. | ||
1908 | |||
1909 | VIRTIO_CONSOLE_F_MULTIPORT(1) Device has support for multiple | ||
1910 | ports; configuration fields nr_ports and max_nr_ports are | ||
1911 | valid and control virtqueues will be used. | ||
1912 | |||
1913 | Device configuration layout The size of the console is supplied | ||
1914 | in the configuration space if the VIRTIO_CONSOLE_F_SIZE feature | ||
1915 | is set. Furthermore, if the VIRTIO_CONSOLE_F_MULTIPORT feature | ||
1916 | is set, the maximum number of ports supported by the device can | ||
1917 | be fetched.struct virtio_console_config { | ||
1918 | |||
1919 | u16 cols; | ||
1920 | |||
1921 | u16 rows; | ||
1922 | |||
1923 | |||
1924 | |||
1925 | u32 max_nr_ports; | ||
1926 | |||
1927 | }; | ||
1928 | |||
1929 | Device Initialization | ||
1930 | |||
1931 | If the VIRTIO_CONSOLE_F_SIZE feature is negotiated, the driver | ||
1932 | can read the console dimensions from the configuration fields. | ||
1933 | |||
1934 | If the VIRTIO_CONSOLE_F_MULTIPORT feature is negotiated, the | ||
1935 | driver can spawn multiple ports, not all of which may be | ||
1936 | attached to a console. Some could be generic ports. In this | ||
1937 | case, the control virtqueues are enabled and according to the | ||
1938 | max_nr_ports configuration-space value, the appropriate number | ||
1939 | of virtqueues are created. A control message indicating the | ||
1940 | driver is ready is sent to the host. The host can then send | ||
1941 | control messages for adding new ports to the device. After | ||
1942 | creating and initializing each port, a | ||
1943 | VIRTIO_CONSOLE_PORT_READY control message is sent to the host | ||
1944 | for that port so the host can let us know of any additional | ||
1945 | configuration options set for that port. | ||
1946 | |||
1947 | The receiveq for each port is populated with one or more | ||
1948 | receive buffers. | ||
1949 | |||
1950 | Device Operation | ||
1951 | |||
1952 | For output, a buffer containing the characters is placed in the | ||
1953 | port's transmitq.[footnote: | ||
1954 | Because this is high importance and low bandwidth, the current | ||
1955 | Linux implementation polls for the buffer to be used, rather than | ||
1956 | waiting for an interrupt, simplifying the implementation | ||
1957 | significantly. However, for generic serial ports with the | ||
1958 | O_NONBLOCK flag set, the polling limitation is relaxed and the | ||
1959 | consumed buffers are freed upon the next write or poll call or | ||
1960 | when a port is closed or hot-unplugged. | ||
1961 | ] | ||
1962 | |||
1963 | When a buffer is used in the receiveq (signalled by an | ||
1964 | interrupt), the contents is the input to the port associated | ||
1965 | with the virtqueue for which the notification was received. | ||
1966 | |||
1967 | If the driver negotiated the VIRTIO_CONSOLE_F_SIZE feature, a | ||
1968 | configuration change interrupt may occur. The updated size can | ||
1969 | be read from the configuration fields. | ||
1970 | |||
1971 | If the driver negotiated the VIRTIO_CONSOLE_F_MULTIPORT | ||
1972 | feature, active ports are announced by the host using the | ||
1973 | VIRTIO_CONSOLE_PORT_ADD control message. The same message is | ||
1974 | used for port hot-plug as well. | ||
1975 | |||
1976 | If the host specified a port `name', a sysfs attribute is | ||
1977 | created with the name filled in, so that udev rules can be | ||
1978 | written that can create a symlink from the port's name to the | ||
1979 | char device for port discovery by applications in the guest. | ||
1980 | |||
1981 | Changes to ports' state are effected by control messages. | ||
1982 | Appropriate action is taken on the port indicated in the | ||
1983 | control message. The layout of the structure of the control | ||
1984 | buffer and the events associated are:struct virtio_console_control { | ||
1985 | |||
1986 | uint32_t id; /* Port number */ | ||
1987 | |||
1988 | uint16_t event; /* The kind of control event */ | ||
1989 | |||
1990 | uint16_t value; /* Extra information for the event */ | ||
1991 | |||
1992 | }; | ||
1993 | |||
1994 | |||
1995 | |||
1996 | /* Some events for the internal messages (control packets) */ | ||
1997 | |||
1998 | |||
1999 | |||
2000 | #define VIRTIO_CONSOLE_DEVICE_READY 0 | ||
2001 | |||
2002 | #define VIRTIO_CONSOLE_PORT_ADD 1 | ||
2003 | |||
2004 | #define VIRTIO_CONSOLE_PORT_REMOVE 2 | ||
2005 | |||
2006 | #define VIRTIO_CONSOLE_PORT_READY 3 | ||
2007 | |||
2008 | #define VIRTIO_CONSOLE_CONSOLE_PORT 4 | ||
2009 | |||
2010 | #define VIRTIO_CONSOLE_RESIZE 5 | ||
2011 | |||
2012 | #define VIRTIO_CONSOLE_PORT_OPEN 6 | ||
2013 | |||
2014 | #define VIRTIO_CONSOLE_PORT_NAME 7 | ||
2015 | |||
2016 | Appendix F: Entropy Device | ||
2017 | |||
2018 | The virtio entropy device supplies high-quality randomness for | ||
2019 | guest use. | ||
2020 | |||
2021 | Configuration | ||
2022 | |||
2023 | Subsystem Device ID 4 | ||
2024 | |||
2025 | Virtqueues 0:requestq. | ||
2026 | |||
2027 | Feature bits None currently defined | ||
2028 | |||
2029 | Device configuration layout None currently defined. | ||
2030 | |||
2031 | Device Initialization | ||
2032 | |||
2033 | The virtqueue is initialized | ||
2034 | |||
2035 | Device Operation | ||
2036 | |||
2037 | When the driver requires random bytes, it places the descriptor | ||
2038 | of one or more buffers in the queue. It will be completely filled | ||
2039 | by random data by the device. | ||
2040 | |||
2041 | Appendix G: Memory Balloon Device | ||
2042 | |||
2043 | The virtio memory balloon device is a primitive device for | ||
2044 | managing guest memory: the device asks for a certain amount of | ||
2045 | memory, and the guest supplies it (or withdraws it, if the device | ||
2046 | has more than it asks for). This allows the guest to adapt to | ||
2047 | changes in allowance of underlying physical memory. If the | ||
2048 | feature is negotiated, the device can also be used to communicate | ||
2049 | guest memory statistics to the host. | ||
2050 | |||
2051 | Configuration | ||
2052 | |||
2053 | Subsystem Device ID 5 | ||
2054 | |||
2055 | Virtqueues 0:inflateq. 1:deflateq. 2:statsq.[footnote: | ||
2056 | Only if VIRTIO_BALLON_F_STATS_VQ set | ||
2057 | ] | ||
2058 | |||
2059 | Feature bits | ||
2060 | |||
2061 | VIRTIO_BALLOON_F_MUST_TELL_HOST (0) Host must be told before | ||
2062 | pages from the balloon are used. | ||
2063 | |||
2064 | VIRTIO_BALLOON_F_STATS_VQ (1) A virtqueue for reporting guest | ||
2065 | memory statistics is present. | ||
2066 | |||
2067 | Device configuration layout Both fields of this configuration | ||
2068 | are always available. Note that they are little endian, despite | ||
2069 | convention that device fields are guest endian:struct virtio_balloon_config { | ||
2070 | |||
2071 | u32 num_pages; | ||
2072 | |||
2073 | u32 actual; | ||
2074 | |||
2075 | }; | ||
2076 | |||
2077 | Device Initialization | ||
2078 | |||
2079 | The inflate and deflate virtqueues are identified. | ||
2080 | |||
2081 | If the VIRTIO_BALLOON_F_STATS_VQ feature bit is negotiated: | ||
2082 | |||
2083 | Identify the stats virtqueue. | ||
2084 | |||
2085 | Add one empty buffer to the stats virtqueue and notify the | ||
2086 | host. | ||
2087 | |||
2088 | Device operation begins immediately. | ||
2089 | |||
2090 | Device Operation | ||
2091 | |||
2092 | Memory Ballooning The device is driven by the receipt of a | ||
2093 | configuration change interrupt. | ||
2094 | |||
2095 | The “num_pages” configuration field is examined. If this is | ||
2096 | greater than the “actual” number of pages, memory must be given | ||
2097 | to the balloon. If it is less than the “actual” number of | ||
2098 | pages, memory may be taken back from the balloon for general | ||
2099 | use. | ||
2100 | |||
2101 | To supply memory to the balloon (aka. inflate): | ||
2102 | |||
2103 | The driver constructs an array of addresses of unused memory | ||
2104 | pages. These addresses are divided by 4096[footnote: | ||
2105 | This is historical, and independent of the guest page size | ||
2106 | ] and the descriptor describing the resulting 32-bit array is | ||
2107 | added to the inflateq. | ||
2108 | |||
2109 | To remove memory from the balloon (aka. deflate): | ||
2110 | |||
2111 | The driver constructs an array of addresses of memory pages it | ||
2112 | has previously given to the balloon, as described above. This | ||
2113 | descriptor is added to the deflateq. | ||
2114 | |||
2115 | If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is set, the | ||
2116 | guest may not use these requested pages until that descriptor | ||
2117 | in the deflateq has been used by the device. | ||
2118 | |||
2119 | Otherwise, the guest may begin to re-use pages previously given | ||
2120 | to the balloon before the device has acknowledged their | ||
2121 | withdrawl. [footnote: | ||
2122 | In this case, deflation advice is merely a courtesy | ||
2123 | ] | ||
2124 | |||
2125 | In either case, once the device has completed the inflation or | ||
2126 | deflation, the “actual” field of the configuration should be | ||
2127 | updated to reflect the new number of pages in the balloon.[footnote: | ||
2128 | As updates to configuration space are not atomic, this field | ||
2129 | isn't particularly reliable, but can be used to diagnose buggy | ||
2130 | guests. | ||
2131 | ] | ||
2132 | |||
2133 | Memory Statistics | ||
2134 | |||
2135 | The stats virtqueue is atypical because communication is driven | ||
2136 | by the device (not the driver). The channel becomes active at | ||
2137 | driver initialization time when the driver adds an empty buffer | ||
2138 | and notifies the device. A request for memory statistics proceeds | ||
2139 | as follows: | ||
2140 | |||
2141 | The device pushes the buffer onto the used ring and sends an | ||
2142 | interrupt. | ||
2143 | |||
2144 | The driver pops the used buffer and discards it. | ||
2145 | |||
2146 | The driver collects memory statistics and writes them into a | ||
2147 | new buffer. | ||
2148 | |||
2149 | The driver adds the buffer to the virtqueue and notifies the | ||
2150 | device. | ||
2151 | |||
2152 | The device pops the buffer (retaining it to initiate a | ||
2153 | subsequent request) and consumes the statistics. | ||
2154 | |||
2155 | Memory Statistics Format Each statistic consists of a 16 bit | ||
2156 | tag and a 64 bit value. Both quantities are represented in the | ||
2157 | native endian of the guest. All statistics are optional and the | ||
2158 | driver may choose which ones to supply. To guarantee backwards | ||
2159 | compatibility, unsupported statistics should be omitted. | ||
2160 | |||
2161 | struct virtio_balloon_stat { | ||
2162 | |||
2163 | #define VIRTIO_BALLOON_S_SWAP_IN 0 | ||
2164 | |||
2165 | #define VIRTIO_BALLOON_S_SWAP_OUT 1 | ||
2166 | |||
2167 | #define VIRTIO_BALLOON_S_MAJFLT 2 | ||
2168 | |||
2169 | #define VIRTIO_BALLOON_S_MINFLT 3 | ||
2170 | |||
2171 | #define VIRTIO_BALLOON_S_MEMFREE 4 | ||
2172 | |||
2173 | #define VIRTIO_BALLOON_S_MEMTOT 5 | ||
2174 | |||
2175 | u16 tag; | ||
2176 | |||
2177 | u64 val; | ||
2178 | |||
2179 | } __attribute__((packed)); | ||
2180 | |||
2181 | Tags | ||
2182 | |||
2183 | VIRTIO_BALLOON_S_SWAP_IN The amount of memory that has been | ||
2184 | swapped in (in bytes). | ||
2185 | |||
2186 | VIRTIO_BALLOON_S_SWAP_OUT The amount of memory that has been | ||
2187 | swapped out to disk (in bytes). | ||
2188 | |||
2189 | VIRTIO_BALLOON_S_MAJFLT The number of major page faults that | ||
2190 | have occurred. | ||
2191 | |||
2192 | VIRTIO_BALLOON_S_MINFLT The number of minor page faults that | ||
2193 | have occurred. | ||
2194 | |||
2195 | VIRTIO_BALLOON_S_MEMFREE The amount of memory not being used | ||
2196 | for any purpose (in bytes). | ||
2197 | |||
2198 | VIRTIO_BALLOON_S_MEMTOT The total amount of memory available | ||
2199 | (in bytes). | ||
2200 | |||
diff --git a/Documentation/watchdog/00-INDEX b/Documentation/watchdog/00-INDEX index ee994513a9b1..fc51128071c2 100644 --- a/Documentation/watchdog/00-INDEX +++ b/Documentation/watchdog/00-INDEX | |||
@@ -8,6 +8,8 @@ src/ | |||
8 | - directory holding watchdog related example programs. | 8 | - directory holding watchdog related example programs. |
9 | watchdog-api.txt | 9 | watchdog-api.txt |
10 | - description of the Linux Watchdog driver API. | 10 | - description of the Linux Watchdog driver API. |
11 | watchdog-kernel-api.txt | ||
12 | - description of the Linux WatchDog Timer Driver Core kernel API. | ||
11 | watchdog-parameters.txt | 13 | watchdog-parameters.txt |
12 | - information on driver parameters (for drivers other than | 14 | - information on driver parameters (for drivers other than |
13 | the ones that have driver-specific files here) | 15 | the ones that have driver-specific files here) |
diff --git a/Documentation/watchdog/watchdog-kernel-api.txt b/Documentation/watchdog/watchdog-kernel-api.txt new file mode 100644 index 000000000000..4f7c894244d2 --- /dev/null +++ b/Documentation/watchdog/watchdog-kernel-api.txt | |||
@@ -0,0 +1,162 @@ | |||
1 | The Linux WatchDog Timer Driver Core kernel API. | ||
2 | =============================================== | ||
3 | Last reviewed: 22-Jul-2011 | ||
4 | |||
5 | Wim Van Sebroeck <wim@iguana.be> | ||
6 | |||
7 | Introduction | ||
8 | ------------ | ||
9 | This document does not describe what a WatchDog Timer (WDT) Driver or Device is. | ||
10 | It also does not describe the API which can be used by user space to communicate | ||
11 | with a WatchDog Timer. If you want to know this then please read the following | ||
12 | file: Documentation/watchdog/watchdog-api.txt . | ||
13 | |||
14 | So what does this document describe? It describes the API that can be used by | ||
15 | WatchDog Timer Drivers that want to use the WatchDog Timer Driver Core | ||
16 | Framework. This framework provides all interfacing towards user space so that | ||
17 | the same code does not have to be reproduced each time. This also means that | ||
18 | a watchdog timer driver then only needs to provide the different routines | ||
19 | (operations) that control the watchdog timer (WDT). | ||
20 | |||
21 | The API | ||
22 | ------- | ||
23 | Each watchdog timer driver that wants to use the WatchDog Timer Driver Core | ||
24 | must #include <linux/watchdog.h> (you would have to do this anyway when | ||
25 | writing a watchdog device driver). This include file contains following | ||
26 | register/unregister routines: | ||
27 | |||
28 | extern int watchdog_register_device(struct watchdog_device *); | ||
29 | extern void watchdog_unregister_device(struct watchdog_device *); | ||
30 | |||
31 | The watchdog_register_device routine registers a watchdog timer device. | ||
32 | The parameter of this routine is a pointer to a watchdog_device structure. | ||
33 | This routine returns zero on success and a negative errno code for failure. | ||
34 | |||
35 | The watchdog_unregister_device routine deregisters a registered watchdog timer | ||
36 | device. The parameter of this routine is the pointer to the registered | ||
37 | watchdog_device structure. | ||
38 | |||
39 | The watchdog device structure looks like this: | ||
40 | |||
41 | struct watchdog_device { | ||
42 | const struct watchdog_info *info; | ||
43 | const struct watchdog_ops *ops; | ||
44 | unsigned int bootstatus; | ||
45 | unsigned int timeout; | ||
46 | unsigned int min_timeout; | ||
47 | unsigned int max_timeout; | ||
48 | void *driver_data; | ||
49 | unsigned long status; | ||
50 | }; | ||
51 | |||
52 | It contains following fields: | ||
53 | * info: a pointer to a watchdog_info structure. This structure gives some | ||
54 | additional information about the watchdog timer itself. (Like it's unique name) | ||
55 | * ops: a pointer to the list of watchdog operations that the watchdog supports. | ||
56 | * timeout: the watchdog timer's timeout value (in seconds). | ||
57 | * min_timeout: the watchdog timer's minimum timeout value (in seconds). | ||
58 | * max_timeout: the watchdog timer's maximum timeout value (in seconds). | ||
59 | * bootstatus: status of the device after booting (reported with watchdog | ||
60 | WDIOF_* status bits). | ||
61 | * driver_data: a pointer to the drivers private data of a watchdog device. | ||
62 | This data should only be accessed via the watchdog_set_drvadata and | ||
63 | watchdog_get_drvdata routines. | ||
64 | * status: this field contains a number of status bits that give extra | ||
65 | information about the status of the device (Like: is the watchdog timer | ||
66 | running/active, is the nowayout bit set, is the device opened via | ||
67 | the /dev/watchdog interface or not, ...). | ||
68 | |||
69 | The list of watchdog operations is defined as: | ||
70 | |||
71 | struct watchdog_ops { | ||
72 | struct module *owner; | ||
73 | /* mandatory operations */ | ||
74 | int (*start)(struct watchdog_device *); | ||
75 | int (*stop)(struct watchdog_device *); | ||
76 | /* optional operations */ | ||
77 | int (*ping)(struct watchdog_device *); | ||
78 | unsigned int (*status)(struct watchdog_device *); | ||
79 | int (*set_timeout)(struct watchdog_device *, unsigned int); | ||
80 | long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long); | ||
81 | }; | ||
82 | |||
83 | It is important that you first define the module owner of the watchdog timer | ||
84 | driver's operations. This module owner will be used to lock the module when | ||
85 | the watchdog is active. (This to avoid a system crash when you unload the | ||
86 | module and /dev/watchdog is still open). | ||
87 | Some operations are mandatory and some are optional. The mandatory operations | ||
88 | are: | ||
89 | * start: this is a pointer to the routine that starts the watchdog timer | ||
90 | device. | ||
91 | The routine needs a pointer to the watchdog timer device structure as a | ||
92 | parameter. It returns zero on success or a negative errno code for failure. | ||
93 | * stop: with this routine the watchdog timer device is being stopped. | ||
94 | The routine needs a pointer to the watchdog timer device structure as a | ||
95 | parameter. It returns zero on success or a negative errno code for failure. | ||
96 | Some watchdog timer hardware can only be started and not be stopped. The | ||
97 | driver supporting this hardware needs to make sure that a start and stop | ||
98 | routine is being provided. This can be done by using a timer in the driver | ||
99 | that regularly sends a keepalive ping to the watchdog timer hardware. | ||
100 | |||
101 | Not all watchdog timer hardware supports the same functionality. That's why | ||
102 | all other routines/operations are optional. They only need to be provided if | ||
103 | they are supported. These optional routines/operations are: | ||
104 | * ping: this is the routine that sends a keepalive ping to the watchdog timer | ||
105 | hardware. | ||
106 | The routine needs a pointer to the watchdog timer device structure as a | ||
107 | parameter. It returns zero on success or a negative errno code for failure. | ||
108 | Most hardware that does not support this as a separate function uses the | ||
109 | start function to restart the watchdog timer hardware. And that's also what | ||
110 | the watchdog timer driver core does: to send a keepalive ping to the watchdog | ||
111 | timer hardware it will either use the ping operation (when available) or the | ||
112 | start operation (when the ping operation is not available). | ||
113 | (Note: the WDIOC_KEEPALIVE ioctl call will only be active when the | ||
114 | WDIOF_KEEPALIVEPING bit has been set in the option field on the watchdog's | ||
115 | info structure). | ||
116 | * status: this routine checks the status of the watchdog timer device. The | ||
117 | status of the device is reported with watchdog WDIOF_* status flags/bits. | ||
118 | * set_timeout: this routine checks and changes the timeout of the watchdog | ||
119 | timer device. It returns 0 on success, -EINVAL for "parameter out of range" | ||
120 | and -EIO for "could not write value to the watchdog". On success the timeout | ||
121 | value of the watchdog_device will be changed to the value that was just used | ||
122 | to re-program the watchdog timer device. | ||
123 | (Note: the WDIOF_SETTIMEOUT needs to be set in the options field of the | ||
124 | watchdog's info structure). | ||
125 | * ioctl: if this routine is present then it will be called first before we do | ||
126 | our own internal ioctl call handling. This routine should return -ENOIOCTLCMD | ||
127 | if a command is not supported. The parameters that are passed to the ioctl | ||
128 | call are: watchdog_device, cmd and arg. | ||
129 | |||
130 | The status bits should (preferably) be set with the set_bit and clear_bit alike | ||
131 | bit-operations. The status bits that are defined are: | ||
132 | * WDOG_ACTIVE: this status bit indicates whether or not a watchdog timer device | ||
133 | is active or not. When the watchdog is active after booting, then you should | ||
134 | set this status bit (Note: when you register the watchdog timer device with | ||
135 | this bit set, then opening /dev/watchdog will skip the start operation) | ||
136 | * WDOG_DEV_OPEN: this status bit shows whether or not the watchdog device | ||
137 | was opened via /dev/watchdog. | ||
138 | (This bit should only be used by the WatchDog Timer Driver Core). | ||
139 | * WDOG_ALLOW_RELEASE: this bit stores whether or not the magic close character | ||
140 | has been sent (so that we can support the magic close feature). | ||
141 | (This bit should only be used by the WatchDog Timer Driver Core). | ||
142 | * WDOG_NO_WAY_OUT: this bit stores the nowayout setting for the watchdog. | ||
143 | If this bit is set then the watchdog timer will not be able to stop. | ||
144 | |||
145 | Note: The WatchDog Timer Driver Core supports the magic close feature and | ||
146 | the nowayout feature. To use the magic close feature you must set the | ||
147 | WDIOF_MAGICCLOSE bit in the options field of the watchdog's info structure. | ||
148 | The nowayout feature will overrule the magic close feature. | ||
149 | |||
150 | To get or set driver specific data the following two helper functions should be | ||
151 | used: | ||
152 | |||
153 | static inline void watchdog_set_drvdata(struct watchdog_device *wdd, void *data) | ||
154 | static inline void *watchdog_get_drvdata(struct watchdog_device *wdd) | ||
155 | |||
156 | The watchdog_set_drvdata function allows you to add driver specific data. The | ||
157 | arguments of this function are the watchdog device where you want to add the | ||
158 | driver specific data to and a pointer to the data itself. | ||
159 | |||
160 | The watchdog_get_drvdata function allows you to retrieve driver specific data. | ||
161 | The argument of this function is the watchdog device where you want to retrieve | ||
162 | data from. The function retruns the pointer to the driver specific data. | ||