diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 15:18:16 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 15:18:16 -0400 |
| commit | d1b5726358ccebcf614fc9f97cdf3354178dcb80 (patch) | |
| tree | d7bbd8e24bd312d9c2c18fc18f12f6a8ce9b084f /Documentation/DocBook | |
| parent | c472273f863c80b87e53356256c5466df24328f0 (diff) | |
| parent | 656e6c0050fd63ce42c55a6cb454a9b4b2f9ccf7 (diff) | |
Merge branch 'docs' of git://git.lwn.net/linux-2.6
* 'docs' of git://git.lwn.net/linux-2.6:
Document panic_on_unrecovered_nmi sysctl
Add a reference to paper to SubmittingPatches
Add kerneldoc documentation for new printk format extensions
Remove videobook.tmpl
doc: Test-by?
Add the development process document
Documentation/block/data-integrity.txt: Fix section numbers
Diffstat (limited to 'Documentation/DocBook')
| -rw-r--r-- | Documentation/DocBook/Makefile | 2 | ||||
| -rw-r--r-- | Documentation/DocBook/videobook.tmpl | 1654 |
2 files changed, 1 insertions, 1655 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 1615350b7b53..fabc06466b93 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | # To add a new book the only step required is to add the book to the | 6 | # To add a new book the only step required is to add the book to the |
| 7 | # list of DOCBOOKS. | 7 | # list of DOCBOOKS. |
| 8 | 8 | ||
| 9 | DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ | 9 | DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml \ |
| 10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ | 10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ |
| 11 | procfs-guide.xml writing_usb_driver.xml networking.xml \ | 11 | procfs-guide.xml writing_usb_driver.xml networking.xml \ |
| 12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ | 12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ |
diff --git a/Documentation/DocBook/videobook.tmpl b/Documentation/DocBook/videobook.tmpl deleted file mode 100644 index 0bc25949b668..000000000000 --- a/Documentation/DocBook/videobook.tmpl +++ /dev/null | |||
| @@ -1,1654 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||
| 3 | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | ||
| 4 | |||
| 5 | <book id="V4LGuide"> | ||
| 6 | <bookinfo> | ||
| 7 | <title>Video4Linux Programming</title> | ||
| 8 | |||
| 9 | <authorgroup> | ||
| 10 | <author> | ||
| 11 | <firstname>Alan</firstname> | ||
| 12 | <surname>Cox</surname> | ||
| 13 | <affiliation> | ||
| 14 | <address> | ||
| 15 | <email>alan@redhat.com</email> | ||
| 16 | </address> | ||
| 17 | </affiliation> | ||
| 18 | </author> | ||
| 19 | </authorgroup> | ||
| 20 | |||
| 21 | <copyright> | ||
| 22 | <year>2000</year> | ||
| 23 | <holder>Alan Cox</holder> | ||
| 24 | </copyright> | ||
| 25 | |||
| 26 | <legalnotice> | ||
| 27 | <para> | ||
| 28 | This documentation is free software; you can redistribute | ||
| 29 | it and/or modify it under the terms of the GNU General Public | ||
| 30 | License as published by the Free Software Foundation; either | ||
| 31 | version 2 of the License, or (at your option) any later | ||
| 32 | version. | ||
| 33 | </para> | ||
| 34 | |||
| 35 | <para> | ||
| 36 | This program is distributed in the hope that it will be | ||
| 37 | useful, but WITHOUT ANY WARRANTY; without even the implied | ||
| 38 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| 39 | See the GNU General Public License for more details. | ||
| 40 | </para> | ||
| 41 | |||
| 42 | <para> | ||
| 43 | You should have received a copy of the GNU General Public | ||
| 44 | License along with this program; if not, write to the Free | ||
| 45 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
| 46 | MA 02111-1307 USA | ||
| 47 | </para> | ||
| 48 | |||
| 49 | <para> | ||
| 50 | For more details see the file COPYING in the source | ||
| 51 | distribution of Linux. | ||
| 52 | </para> | ||
| 53 | </legalnotice> | ||
| 54 | </bookinfo> | ||
| 55 | |||
| 56 | <toc></toc> | ||
| 57 | |||
| 58 | <chapter id="intro"> | ||
| 59 | <title>Introduction</title> | ||
| 60 | <para> | ||
| 61 | Parts of this document first appeared in Linux Magazine under a | ||
| 62 | ninety day exclusivity. | ||
| 63 | </para> | ||
| 64 | <para> | ||
| 65 | Video4Linux is intended to provide a common programming interface | ||
| 66 | for the many TV and capture cards now on the market, as well as | ||
| 67 | parallel port and USB video cameras. Radio, teletext decoders and | ||
| 68 | vertical blanking data interfaces are also provided. | ||
| 69 | </para> | ||
| 70 | </chapter> | ||
| 71 | <chapter id="radio"> | ||
| 72 | <title>Radio Devices</title> | ||
| 73 | <para> | ||
| 74 | There are a wide variety of radio interfaces available for PC's, and these | ||
| 75 | are generally very simple to program. The biggest problem with supporting | ||
| 76 | such devices is normally extracting documentation from the vendor. | ||
| 77 | </para> | ||
| 78 | <para> | ||
| 79 | The radio interface supports a simple set of control ioctls standardised | ||
| 80 | across all radio and tv interfaces. It does not support read or write, which | ||
| 81 | are used for video streams. The reason radio cards do not allow you to read | ||
| 82 | the audio stream into an application is that without exception they provide | ||
| 83 | a connection on to a soundcard. Soundcards can be used to read the radio | ||
| 84 | data just fine. | ||
| 85 | </para> | ||
| 86 | <sect1 id="registerradio"> | ||
| 87 | <title>Registering Radio Devices</title> | ||
| 88 | <para> | ||
| 89 | The Video4linux core provides an interface for registering devices. The | ||
| 90 | first step in writing our radio card driver is to register it. | ||
| 91 | </para> | ||
| 92 | <programlisting> | ||
| 93 | |||
| 94 | |||
| 95 | static struct video_device my_radio | ||
| 96 | { | ||
| 97 | "My radio", | ||
| 98 | VID_TYPE_TUNER, | ||
| 99 | radio_open. | ||
| 100 | radio_close, | ||
| 101 | NULL, /* no read */ | ||
| 102 | NULL, /* no write */ | ||
| 103 | NULL, /* no poll */ | ||
| 104 | radio_ioctl, | ||
| 105 | NULL, /* no special init function */ | ||
| 106 | NULL /* no private data */ | ||
| 107 | }; | ||
| 108 | |||
| 109 | |||
| 110 | </programlisting> | ||
| 111 | <para> | ||
| 112 | This declares our video4linux device driver interface. The VID_TYPE_ value | ||
| 113 | defines what kind of an interface we are, and defines basic capabilities. | ||
| 114 | </para> | ||
| 115 | <para> | ||
| 116 | The only defined value relevant for a radio card is VID_TYPE_TUNER which | ||
| 117 | indicates that the device can be tuned. Clearly our radio is going to have some | ||
| 118 | way to change channel so it is tuneable. | ||
| 119 | </para> | ||
| 120 | <para> | ||
| 121 | We declare an open and close routine, but we do not need read or write, | ||
| 122 | which are used to read and write video data to or from the card itself. As | ||
| 123 | we have no read or write there is no poll function. | ||
| 124 | </para> | ||
| 125 | <para> | ||
| 126 | The private initialise function is run when the device is registered. In | ||
| 127 | this driver we've already done all the work needed. The final pointer is a | ||
| 128 | private data pointer that can be used by the device driver to attach and | ||
| 129 | retrieve private data structures. We set this field "priv" to NULL for | ||
| 130 | the moment. | ||
| 131 | </para> | ||
| 132 | <para> | ||
| 133 | Having the structure defined is all very well but we now need to register it | ||
| 134 | with the kernel. | ||
| 135 | </para> | ||
| 136 | <programlisting> | ||
| 137 | |||
| 138 | |||
| 139 | static int io = 0x320; | ||
| 140 | |||
| 141 | int __init myradio_init(struct video_init *v) | ||
| 142 | { | ||
| 143 | if(!request_region(io, MY_IO_SIZE, "myradio")) | ||
| 144 | { | ||
| 145 | printk(KERN_ERR | ||
| 146 | "myradio: port 0x%03X is in use.\n", io); | ||
| 147 | return -EBUSY; | ||
| 148 | } | ||
| 149 | |||
| 150 | if(video_device_register(&my_radio, VFL_TYPE_RADIO)==-1) { | ||
| 151 | release_region(io, MY_IO_SIZE); | ||
| 152 | return -EINVAL; | ||
| 153 | } | ||
| 154 | return 0; | ||
| 155 | } | ||
| 156 | |||
| 157 | </programlisting> | ||
| 158 | <para> | ||
| 159 | The first stage of the initialisation, as is normally the case, is to check | ||
| 160 | that the I/O space we are about to fiddle with doesn't belong to some other | ||
| 161 | driver. If it is we leave well alone. If the user gives the address of the | ||
| 162 | wrong device then we will spot this. These policies will generally avoid | ||
| 163 | crashing the machine. | ||
| 164 | </para> | ||
| 165 | <para> | ||
| 166 | Now we ask the Video4Linux layer to register the device for us. We hand it | ||
| 167 | our carefully designed video_device structure and also tell it which group | ||
| 168 | of devices we want it registered with. In this case VFL_TYPE_RADIO. | ||
| 169 | </para> | < | |
