diff options
Diffstat (limited to 'Documentation/DocBook')
-rw-r--r-- | Documentation/DocBook/device-drivers.tmpl | 1 | ||||
-rw-r--r-- | Documentation/DocBook/dvb/dvbapi.xml | 19 | ||||
-rw-r--r-- | Documentation/DocBook/dvb/frontend.h.xml | 1 | ||||
-rw-r--r-- | Documentation/DocBook/dvb/frontend.xml | 10 | ||||
-rw-r--r-- | Documentation/DocBook/kgdb.tmpl | 108 | ||||
-rw-r--r-- | Documentation/DocBook/media-entities.tmpl | 1 | ||||
-rw-r--r-- | Documentation/DocBook/media.tmpl | 8 | ||||
-rw-r--r-- | Documentation/DocBook/scsi.tmpl | 2 | ||||
-rw-r--r-- | Documentation/DocBook/stylesheet.xsl | 1 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/compat.xml | 5 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/fdl-appendix.xml | 2 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/lirc_device_interface.xml | 235 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/remote_controllers.xml | 2 |
13 files changed, 374 insertions, 21 deletions
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index 1b2dd4fc3db2..ecd35e9d4410 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
@@ -111,6 +111,7 @@ X!Edrivers/base/attribute_container.c | |||
111 | <!-- | 111 | <!-- |
112 | X!Edrivers/base/interface.c | 112 | X!Edrivers/base/interface.c |
113 | --> | 113 | --> |
114 | !Iinclude/linux/platform_device.h | ||
114 | !Edrivers/base/platform.c | 115 | !Edrivers/base/platform.c |
115 | !Edrivers/base/bus.c | 116 | !Edrivers/base/bus.c |
116 | </sect1> | 117 | </sect1> |
diff --git a/Documentation/DocBook/dvb/dvbapi.xml b/Documentation/DocBook/dvb/dvbapi.xml index 63c528fee624..e3a97fdd62a6 100644 --- a/Documentation/DocBook/dvb/dvbapi.xml +++ b/Documentation/DocBook/dvb/dvbapi.xml | |||
@@ -12,10 +12,12 @@ | |||
12 | <othername role="mi">O. C.</othername> | 12 | <othername role="mi">O. C.</othername> |
13 | <affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation> | 13 | <affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation> |
14 | </author> | 14 | </author> |
15 | </authorgroup> | ||
16 | <authorgroup> | ||
15 | <author> | 17 | <author> |
16 | <firstname>Mauro</firstname> | 18 | <firstname>Mauro</firstname> |
17 | <surname>Chehab</surname> | ||
18 | <othername role="mi">Carvalho</othername> | 19 | <othername role="mi">Carvalho</othername> |
20 | <surname>Chehab</surname> | ||
19 | <affiliation><address><email>mchehab@redhat.com</email></address></affiliation> | 21 | <affiliation><address><email>mchehab@redhat.com</email></address></affiliation> |
20 | <contrib>Ported document to Docbook XML.</contrib> | 22 | <contrib>Ported document to Docbook XML.</contrib> |
21 | </author> | 23 | </author> |
@@ -23,13 +25,24 @@ | |||
23 | <copyright> | 25 | <copyright> |
24 | <year>2002</year> | 26 | <year>2002</year> |
25 | <year>2003</year> | 27 | <year>2003</year> |
26 | <year>2009</year> | ||
27 | <holder>Convergence GmbH</holder> | 28 | <holder>Convergence GmbH</holder> |
28 | </copyright> | 29 | </copyright> |
30 | <copyright> | ||
31 | <year>2009-2010</year> | ||
32 | <holder>Mauro Carvalho Chehab</holder> | ||
33 | </copyright> | ||
29 | 34 | ||
30 | <revhistory> | 35 | <revhistory> |
31 | <!-- Put document revisions here, newest first. --> | 36 | <!-- Put document revisions here, newest first. --> |
32 | <revision> | 37 | <revision> |
38 | <revnumber>2.0.3</revnumber> | ||
39 | <date>2010-07-03</date> | ||
40 | <authorinitials>mcc</authorinitials> | ||
41 | <revremark> | ||
42 | Add some frontend capabilities flags, present on kernel, but missing at the specs. | ||
43 | </revremark> | ||
44 | </revision> | ||
45 | <revision> | ||
33 | <revnumber>2.0.2</revnumber> | 46 | <revnumber>2.0.2</revnumber> |
34 | <date>2009-10-25</date> | 47 | <date>2009-10-25</date> |
35 | <authorinitials>mcc</authorinitials> | 48 | <authorinitials>mcc</authorinitials> |
@@ -63,7 +76,7 @@ Added ISDB-T test originally written by Patrick Boettcher | |||
63 | 76 | ||
64 | 77 | ||
65 | <title>LINUX DVB API</title> | 78 | <title>LINUX DVB API</title> |
66 | <subtitle>Version 3</subtitle> | 79 | <subtitle>Version 5.2</subtitle> |
67 | <!-- ADD THE CHAPTERS HERE --> | 80 | <!-- ADD THE CHAPTERS HERE --> |
68 | <chapter id="dvb_introdution"> | 81 | <chapter id="dvb_introdution"> |
69 | &sub-intro; | 82 | &sub-intro; |
diff --git a/Documentation/DocBook/dvb/frontend.h.xml b/Documentation/DocBook/dvb/frontend.h.xml index b99644f5340a..d08e0d401418 100644 --- a/Documentation/DocBook/dvb/frontend.h.xml +++ b/Documentation/DocBook/dvb/frontend.h.xml | |||
@@ -63,6 +63,7 @@ typedef enum fe_caps { | |||
63 | FE_CAN_8VSB = 0x200000, | 63 | FE_CAN_8VSB = 0x200000, |
64 | FE_CAN_16VSB = 0x400000, | 64 | FE_CAN_16VSB = 0x400000, |
65 | FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */ | 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" */ | ||
66 | FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ | 67 | FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ |
67 | FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ | 68 | FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ |
68 | FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */ | 69 | FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */ |
diff --git a/Documentation/DocBook/dvb/frontend.xml b/Documentation/DocBook/dvb/frontend.xml index 300ba1f04177..78d756de5906 100644 --- a/Documentation/DocBook/dvb/frontend.xml +++ b/Documentation/DocBook/dvb/frontend.xml | |||
@@ -64,8 +64,14 @@ a specific frontend type.</para> | |||
64 | FE_CAN_BANDWIDTH_AUTO = 0x40000, | 64 | FE_CAN_BANDWIDTH_AUTO = 0x40000, |
65 | FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, | 65 | FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, |
66 | FE_CAN_HIERARCHY_AUTO = 0x100000, | 66 | FE_CAN_HIERARCHY_AUTO = 0x100000, |
67 | FE_CAN_MUTE_TS = 0x80000000, | 67 | FE_CAN_8VSB = 0x200000, |
68 | FE_CAN_CLEAN_SETUP = 0x40000000 | 68 | FE_CAN_16VSB = 0x400000, |
69 | FE_HAS_EXTENDED_CAPS = 0x800000, | ||
70 | FE_CAN_TURBO_FEC = 0x8000000, | ||
71 | FE_CAN_2G_MODULATION = 0x10000000, | ||
72 | FE_NEEDS_BENDING = 0x20000000, | ||
73 | FE_CAN_RECOVER = 0x40000000, | ||
74 | FE_CAN_MUTE_TS = 0x80000000 | ||
69 | } fe_caps_t; | 75 | } fe_caps_t; |
70 | </programlisting> | 76 | </programlisting> |
71 | </section> | 77 | </section> |
diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl index 55f12ac37acd..490d862c5f0d 100644 --- a/Documentation/DocBook/kgdb.tmpl +++ b/Documentation/DocBook/kgdb.tmpl | |||
@@ -199,10 +199,33 @@ | |||
199 | may be configured as a kernel built-in or a kernel loadable module. | 199 | may be configured as a kernel built-in or a kernel loadable module. |
200 | You can only make use of <constant>kgdbwait</constant> and early | 200 | You can only make use of <constant>kgdbwait</constant> and early |
201 | debugging if you build kgdboc into the kernel as a built-in. | 201 | debugging if you build kgdboc into the kernel as a built-in. |
202 | <para>Optionally you can elect to activate kms (Kernel Mode | ||
203 | Setting) integration. When you use kms with kgdboc and you have a | ||
204 | video driver that has atomic mode setting hooks, it is possible to | ||
205 | enter the debugger on the graphics console. When the kernel | ||
206 | execution is resumed, the previous graphics mode will be restored. | ||
207 | This integration can serve as a useful tool to aid in diagnosing | ||
208 | crashes or doing analysis of memory with kdb while allowing the | ||
209 | full graphics console applications to run. | ||
210 | </para> | ||
202 | </para> | 211 | </para> |
203 | <sect2 id="kgdbocArgs"> | 212 | <sect2 id="kgdbocArgs"> |
204 | <title>kgdboc arguments</title> | 213 | <title>kgdboc arguments</title> |
205 | <para>Usage: <constant>kgdboc=[kbd][[,]serial_device][,baud]</constant></para> | 214 | <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> |
215 | <para>The order listed above must be observed if you use any of the | ||
216 | optional configurations together. | ||
217 | </para> | ||
218 | <para>Abbreviations: | ||
219 | <itemizedlist> | ||
220 | <listitem><para>kms = Kernel Mode Setting</para></listitem> | ||
221 | <listitem><para>kbd = Keyboard</para></listitem> | ||
222 | </itemizedlist> | ||
223 | </para> | ||
224 | <para>You can configure kgdboc to use the keyboard, and or a serial | ||
225 | device depending on if you are using kdb and or kgdb, in one of the | ||
226 | following scenarios. The order listed above must be observed if | ||
227 | you use any of the optional configurations together. Using kms + | ||
228 | only gdb is generally not a useful combination.</para> | ||
206 | <sect3 id="kgdbocArgs1"> | 229 | <sect3 id="kgdbocArgs1"> |
207 | <title>Using loadable module or built-in</title> | 230 | <title>Using loadable module or built-in</title> |
208 | <para> | 231 | <para> |
@@ -212,7 +235,7 @@ | |||
212 | <listitem> | 235 | <listitem> |
213 | <para>As a kernel loadable module:</para> | 236 | <para>As a kernel loadable module:</para> |
214 | <para>Use the command: <constant>modprobe kgdboc kgdboc=<tty-device>,[baud]</constant></para> | 237 | <para>Use the command: <constant>modprobe kgdboc kgdboc=<tty-device>,[baud]</constant></para> |
215 | <para>Here are two examples of how you might formate the kgdboc | 238 | <para>Here are two examples of how you might format the kgdboc |
216 | string. The first is for an x86 target using the first serial port. | 239 | string. The first is for an x86 target using the first serial port. |
217 | The second example is for the ARM Versatile AB using the second | 240 | The second example is for the ARM Versatile AB using the second |
218 | serial port. | 241 | serial port. |
@@ -240,6 +263,9 @@ | |||
240 | </sect3> | 263 | </sect3> |
241 | <sect3 id="kgdbocArgs3"> | 264 | <sect3 id="kgdbocArgs3"> |
242 | <title>More examples</title> | 265 | <title>More examples</title> |
266 | <para>You can configure kgdboc to use the keyboard, and or a serial | ||
267 | device depending on if you are using kdb and or kgdb, in one of the | ||
268 | following scenarios.</para> | ||
243 | <para>You can configure kgdboc to use the keyboard, and or a serial device | 269 | <para>You can configure kgdboc to use the keyboard, and or a serial device |
244 | depending on if you are using kdb and or kgdb, in one of the | 270 | depending on if you are using kdb and or kgdb, in one of the |
245 | following scenarios. | 271 | following scenarios. |
@@ -255,6 +281,12 @@ | |||
255 | <listitem><para>kdb with a keyboard</para> | 281 | <listitem><para>kdb with a keyboard</para> |
256 | <para><constant>kgdboc=kbd</constant></para> | 282 | <para><constant>kgdboc=kbd</constant></para> |
257 | </listitem> | 283 | </listitem> |
284 | <listitem><para>kdb with kernel mode setting</para> | ||
285 | <para><constant>kgdboc=kms,kbd</constant></para> | ||
286 | </listitem> | ||
287 | <listitem><para>kdb with kernel mode setting and kgdb over a serial port</para> | ||
288 | <para><constant>kgdboc=kms,kbd,ttyS0,115200</constant></para> | ||
289 | </listitem> | ||
258 | </orderedlist> | 290 | </orderedlist> |
259 | </para> | 291 | </para> |
260 | </sect3> | 292 | </sect3> |
@@ -637,6 +669,8 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
637 | <listitem><para>The logic to perform safe memory reads and writes to memory while using the debugger</para></listitem> | 669 | <listitem><para>The logic to perform safe memory reads and writes to memory while using the debugger</para></listitem> |
638 | <listitem><para>A full implementation for software breakpoints unless overridden by the arch</para></listitem> | 670 | <listitem><para>A full implementation for software breakpoints unless overridden by the arch</para></listitem> |
639 | <listitem><para>The API to invoke either the kdb or kgdb frontend to the debug core.</para></listitem> | 671 | <listitem><para>The API to invoke either the kdb or kgdb frontend to the debug core.</para></listitem> |
672 | <listitem><para>The structures and callback API for atomic kernel mode setting.</para> | ||
673 | <para>NOTE: kgdboc is where the kms callbacks are invoked.</para></listitem> | ||
640 | </itemizedlist> | 674 | </itemizedlist> |
641 | </para> | 675 | </para> |
642 | </listitem> | 676 | </listitem> |
@@ -747,6 +781,8 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
747 | </sect1> | 781 | </sect1> |
748 | <sect1 id="kgdbocDesign"> | 782 | <sect1 id="kgdbocDesign"> |
749 | <title>kgdboc internals</title> | 783 | <title>kgdboc internals</title> |
784 | <sect2> | ||
785 | <title>kgdboc and uarts</title> | ||
750 | <para> | 786 | <para> |
751 | The kgdboc driver is actually a very thin driver that relies on the | 787 | The kgdboc driver is actually a very thin driver that relies on the |
752 | underlying low level to the hardware driver having "polling hooks" | 788 | underlying low level to the hardware driver having "polling hooks" |
@@ -754,11 +790,8 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
754 | implementation of kgdboc it the serial_core was changed to expose a | 790 | implementation of kgdboc it the serial_core was changed to expose a |
755 | low level UART hook for doing polled mode reading and writing of a | 791 | low level UART hook for doing polled mode reading and writing of a |
756 | single character while in an atomic context. When kgdb makes an I/O | 792 | single character while in an atomic context. When kgdb makes an I/O |
757 | request to the debugger, kgdboc invokes a call back in the serial | 793 | request to the debugger, kgdboc invokes a callback in the serial |
758 | core which in turn uses the call back in the UART driver. It is | 794 | core which in turn uses the callback in the UART driver.</para> |
759 | certainly possible to extend kgdboc to work with non-UART based | ||
760 | consoles in the future. | ||
761 | </para> | ||
762 | <para> | 795 | <para> |
763 | When using kgdboc with a UART, the UART driver must implement two callbacks in the <constant>struct uart_ops</constant>. Example from drivers/8250.c:<programlisting> | 796 | When using kgdboc with a UART, the UART driver must implement two callbacks in the <constant>struct uart_ops</constant>. Example from drivers/8250.c:<programlisting> |
764 | #ifdef CONFIG_CONSOLE_POLL | 797 | #ifdef CONFIG_CONSOLE_POLL |
@@ -772,9 +805,68 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
772 | that they can be called from an atomic context and have to restore | 805 | that they can be called from an atomic context and have to restore |
773 | the state of the UART chip on return such that the system can return | 806 | the state of the UART chip on return such that the system can return |
774 | to normal when the debugger detaches. You need to be very careful | 807 | to normal when the debugger detaches. You need to be very careful |
775 | with any kind of lock you consider, because failing here is most | 808 | with any kind of lock you consider, because failing here is most likely |
776 | going to mean pressing the reset button. | 809 | going to mean pressing the reset button. |
777 | </para> | 810 | </para> |
811 | </sect2> | ||
812 | <sect2 id="kgdbocKbd"> | ||
813 | <title>kgdboc and keyboards</title> | ||
814 | <para>The kgdboc driver contains logic to configure communications | ||
815 | with an attached keyboard. The keyboard infrastructure is only | ||
816 | compiled into the kernel when CONFIG_KDB_KEYBOARD=y is set in the | ||
817 | kernel configuration.</para> | ||
818 | <para>The core polled keyboard driver driver for PS/2 type keyboards | ||
819 | is in drivers/char/kdb_keyboard.c. This driver is hooked into the | ||
820 | debug core when kgdboc populates the callback in the array | ||
821 | called <constant>kdb_poll_funcs[]</constant>. The | ||
822 | kdb_get_kbd_char() is the top-level function which polls hardware | ||
823 | for single character input. | ||
824 | </para> | ||
825 | </sect2> | ||
826 | <sect2 id="kgdbocKms"> | ||
827 | <title>kgdboc and kms</title> | ||
828 | <para>The kgdboc driver contains logic to request the graphics | ||
829 | display to switch to a text context when you are using | ||
830 | "kgdboc=kms,kbd", provided that you have a video driver which has a | ||
831 | frame buffer console and atomic kernel mode setting support.</para> | ||
832 | <para> | ||
833 | Every time the kernel | ||
834 | debugger is entered it calls kgdboc_pre_exp_handler() which in turn | ||
835 | calls con_debug_enter() in the virtual console layer. On resuming kernel | ||
836 | execution, the kernel debugger calls kgdboc_post_exp_handler() which | ||
837 | in turn calls con_debug_leave().</para> | ||
838 | <para>Any video driver that wants to be compatible with the kernel | ||
839 | debugger and the atomic kms callbacks must implement the | ||
840 | mode_set_base_atomic, fb_debug_enter and fb_debug_leave operations. | ||
841 | For the fb_debug_enter and fb_debug_leave the option exists to use | ||
842 | the generic drm fb helper functions or implement something custom for | ||
843 | the hardware. The following example shows the initialization of the | ||
844 | .mode_set_base_atomic operation in | ||
845 | drivers/gpu/drm/i915/intel_display.c: | ||
846 | <informalexample> | ||
847 | <programlisting> | ||
848 | static const struct drm_crtc_helper_funcs intel_helper_funcs = { | ||
849 | [...] | ||
850 | .mode_set_base_atomic = intel_pipe_set_base_atomic, | ||
851 | [...] | ||
852 | }; | ||
853 | </programlisting> | ||
854 | </informalexample> | ||
855 | </para> | ||
856 | <para>Here is an example of how the i915 driver initializes the fb_debug_enter and fb_debug_leave functions to use the generic drm helpers in | ||
857 | drivers/gpu/drm/i915/intel_fb.c: | ||
858 | <informalexample> | ||
859 | <programlisting> | ||
860 | static struct fb_ops intelfb_ops = { | ||
861 | [...] | ||
862 | .fb_debug_enter = drm_fb_helper_debug_enter, | ||
863 | .fb_debug_leave = drm_fb_helper_debug_leave, | ||
864 | [...] | ||
865 | }; | ||
866 | </programlisting> | ||
867 | </informalexample> | ||
868 | </para> | ||
869 | </sect2> | ||
778 | </sect1> | 870 | </sect1> |
779 | </chapter> | 871 | </chapter> |
780 | <chapter id="credits"> | 872 | <chapter id="credits"> |
diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl index 5d4d40f429a5..6ae97157b1c7 100644 --- a/Documentation/DocBook/media-entities.tmpl +++ b/Documentation/DocBook/media-entities.tmpl | |||
@@ -218,6 +218,7 @@ | |||
218 | <!ENTITY sub-dev-teletext SYSTEM "v4l/dev-teletext.xml"> | 218 | <!ENTITY sub-dev-teletext SYSTEM "v4l/dev-teletext.xml"> |
219 | <!ENTITY sub-driver SYSTEM "v4l/driver.xml"> | 219 | <!ENTITY sub-driver SYSTEM "v4l/driver.xml"> |
220 | <!ENTITY sub-libv4l SYSTEM "v4l/libv4l.xml"> | 220 | <!ENTITY sub-libv4l SYSTEM "v4l/libv4l.xml"> |
221 | <!ENTITY sub-lirc_device_interface SYSTEM "v4l/lirc_device_interface.xml"> | ||
221 | <!ENTITY sub-remote_controllers SYSTEM "v4l/remote_controllers.xml"> | 222 | <!ENTITY sub-remote_controllers SYSTEM "v4l/remote_controllers.xml"> |
222 | <!ENTITY sub-fdl-appendix SYSTEM "v4l/fdl-appendix.xml"> | 223 | <!ENTITY sub-fdl-appendix SYSTEM "v4l/fdl-appendix.xml"> |
223 | <!ENTITY sub-close SYSTEM "v4l/func-close.xml"> | 224 | <!ENTITY sub-close SYSTEM "v4l/func-close.xml"> |
diff --git a/Documentation/DocBook/media.tmpl b/Documentation/DocBook/media.tmpl index eea564bb12cb..f11048d4053f 100644 --- a/Documentation/DocBook/media.tmpl +++ b/Documentation/DocBook/media.tmpl | |||
@@ -28,7 +28,7 @@ | |||
28 | <title>LINUX MEDIA INFRASTRUCTURE API</title> | 28 | <title>LINUX MEDIA INFRASTRUCTURE API</title> |
29 | 29 | ||
30 | <copyright> | 30 | <copyright> |
31 | <year>2009</year> | 31 | <year>2009-2010</year> |
32 | <holder>LinuxTV Developers</holder> | 32 | <holder>LinuxTV Developers</holder> |
33 | </copyright> | 33 | </copyright> |
34 | 34 | ||
@@ -61,7 +61,7 @@ Foundation. A copy of the license is included in the chapter entitled | |||
61 | in fact it covers several different video standards including | 61 | in fact it covers several different video standards including |
62 | DVB-T, DVB-S, DVB-C and ATSC. The API is currently being updated | 62 | DVB-T, DVB-S, DVB-C and ATSC. The API is currently being updated |
63 | to documment support also for DVB-S2, ISDB-T and ISDB-S.</para> | 63 | to documment support also for DVB-S2, ISDB-T and ISDB-S.</para> |
64 | <para>The third part covers other API's used by all media infrastructure devices</para> | 64 | <para>The third part covers Remote Controller API</para> |
65 | <para>For additional information and for the latest development code, | 65 | <para>For additional information and for the latest development code, |
66 | see: <ulink url="http://linuxtv.org">http://linuxtv.org</ulink>.</para> | 66 | see: <ulink url="http://linuxtv.org">http://linuxtv.org</ulink>.</para> |
67 | <para>For discussing improvements, reporting troubles, sending new drivers, etc, please mail to: <ulink url="http://vger.kernel.org/vger-lists.html#linux-media">Linux Media Mailing List (LMML).</ulink>.</para> | 67 | <para>For discussing improvements, reporting troubles, sending new drivers, etc, please mail to: <ulink url="http://vger.kernel.org/vger-lists.html#linux-media">Linux Media Mailing List (LMML).</ulink>.</para> |
@@ -86,7 +86,7 @@ Foundation. A copy of the license is included in the chapter entitled | |||
86 | </author> | 86 | </author> |
87 | </authorgroup> | 87 | </authorgroup> |
88 | <copyright> | 88 | <copyright> |
89 | <year>2009</year> | 89 | <year>2009-2010</year> |
90 | <holder>Mauro Carvalho Chehab</holder> | 90 | <holder>Mauro Carvalho Chehab</holder> |
91 | </copyright> | 91 | </copyright> |
92 | 92 | ||
@@ -101,7 +101,7 @@ Foundation. A copy of the license is included in the chapter entitled | |||
101 | </revhistory> | 101 | </revhistory> |
102 | </partinfo> | 102 | </partinfo> |
103 | 103 | ||
104 | <title>Other API's used by media infrastructure drivers</title> | 104 | <title>Remote Controller API</title> |
105 | <chapter id="remote_controllers"> | 105 | <chapter id="remote_controllers"> |
106 | &sub-remote_controllers; | 106 | &sub-remote_controllers; |
107 | </chapter> | 107 | </chapter> |
diff --git a/Documentation/DocBook/scsi.tmpl b/Documentation/DocBook/scsi.tmpl index d87f4569e768..324b53494f08 100644 --- a/Documentation/DocBook/scsi.tmpl +++ b/Documentation/DocBook/scsi.tmpl | |||
@@ -393,7 +393,7 @@ | |||
393 | </para> | 393 | </para> |
394 | <para> | 394 | <para> |
395 | For documentation see | 395 | For documentation see |
396 | <ulink url='http://www.torque.net/sg/sdebug26.html'>http://www.torque.net/sg/sdebug26.html</ulink> | 396 | <ulink url='http://sg.danny.cz/sg/sdebug26.html'>http://sg.danny.cz/sg/sdebug26.html</ulink> |
397 | </para> | 397 | </para> |
398 | <!-- !Edrivers/scsi/scsi_debug.c --> | 398 | <!-- !Edrivers/scsi/scsi_debug.c --> |
399 | </sect2> | 399 | </sect2> |
diff --git a/Documentation/DocBook/stylesheet.xsl b/Documentation/DocBook/stylesheet.xsl index 254c1d5d2e50..85b25275196f 100644 --- a/Documentation/DocBook/stylesheet.xsl +++ b/Documentation/DocBook/stylesheet.xsl | |||
@@ -6,4 +6,5 @@ | |||
6 | <param name="callout.graphics">0</param> | 6 | <param name="callout.graphics">0</param> |
7 | <!-- <param name="paper.type">A4</param> --> | 7 | <!-- <param name="paper.type">A4</param> --> |
8 | <param name="generate.section.toc.level">2</param> | 8 | <param name="generate.section.toc.level">2</param> |
9 | <param name="use.id.as.filename">1</param> | ||
9 | </stylesheet> | 10 | </stylesheet> |
diff --git a/Documentation/DocBook/v4l/compat.xml b/Documentation/DocBook/v4l/compat.xml index b42b935913cd..54447f0d0784 100644 --- a/Documentation/DocBook/v4l/compat.xml +++ b/Documentation/DocBook/v4l/compat.xml | |||
@@ -1091,8 +1091,9 @@ signed 64-bit integer. Output devices should not send a buffer out | |||
1091 | until the time in the timestamp field has arrived. I would like to | 1091 | until the time in the timestamp field has arrived. I would like to |
1092 | follow SGI's lead, and adopt a multimedia timestamping system like | 1092 | follow SGI's lead, and adopt a multimedia timestamping system like |
1093 | their UST (Unadjusted System Time). See | 1093 | their UST (Unadjusted System Time). See |
1094 | http://reality.sgi.com/cpirazzi_engr/lg/time/intro.html. [This link is | 1094 | http://web.archive.org/web/*/http://reality.sgi.com |
1095 | no longer valid.] UST uses timestamps that are 64-bit signed integers | 1095 | /cpirazzi_engr/lg/time/intro.html. |
1096 | UST uses timestamps that are 64-bit signed integers | ||
1096 | (not struct timeval's) and given in nanosecond units. The UST clock | 1097 | (not struct timeval's) and given in nanosecond units. The UST clock |
1097 | starts at zero when the system is booted and runs continuously and | 1098 | starts at zero when the system is booted and runs continuously and |
1098 | uniformly. It takes a little over 292 years for UST to overflow. There | 1099 | uniformly. It takes a little over 292 years for UST to overflow. There |
diff --git a/Documentation/DocBook/v4l/fdl-appendix.xml b/Documentation/DocBook/v4l/fdl-appendix.xml index b6ce50dbe492..ae22394ba997 100644 --- a/Documentation/DocBook/v4l/fdl-appendix.xml +++ b/Documentation/DocBook/v4l/fdl-appendix.xml | |||
@@ -2,7 +2,7 @@ | |||
2 | The GNU Free Documentation License 1.1 in DocBook | 2 | The GNU Free Documentation License 1.1 in DocBook |
3 | Markup by Eric Baudais <baudais@okstate.edu> | 3 | Markup by Eric Baudais <baudais@okstate.edu> |
4 | Maintained by the GNOME Documentation Project | 4 | Maintained by the GNOME Documentation Project |
5 | http://developer.gnome.org/projects/gdp | 5 | http://live.gnome.org/DocumentationProject |
6 | Version: 1.0.1 | 6 | Version: 1.0.1 |
7 | Last Modified: Nov 16, 2000 | 7 | Last Modified: Nov 16, 2000 |
8 | --> | 8 | --> |
diff --git a/Documentation/DocBook/v4l/lirc_device_interface.xml b/Documentation/DocBook/v4l/lirc_device_interface.xml new file mode 100644 index 000000000000..0413234023d4 --- /dev/null +++ b/Documentation/DocBook/v4l/lirc_device_interface.xml | |||
@@ -0,0 +1,235 @@ | |||
1 | <section id="lirc_dev"> | ||
2 | <title>LIRC Device Interface</title> | ||
3 | |||
4 | |||
5 | <section id="lirc_dev_intro"> | ||
6 | <title>Introduction</title> | ||
7 | |||
8 | <para>The LIRC device interface is a bi-directional interface for | ||
9 | transporting raw IR data between userspace and kernelspace. Fundamentally, | ||
10 | it is just a chardev (/dev/lircX, for X = 0, 1, 2, ...), with a number | ||
11 | of standard struct file_operations defined on it. With respect to | ||
12 | transporting raw IR data to and fro, the essential fops are read, write | ||
13 | and ioctl.</para> | ||
14 | |||
15 | <para>Example dmesg output upon a driver registering w/LIRC:</para> | ||
16 | <blockquote> | ||
17 | <para>$ dmesg |grep lirc_dev</para> | ||
18 | <para>lirc_dev: IR Remote Control driver registered, major 248</para> | ||
19 | <para>rc rc0: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 0</para> | ||
20 | </blockquote> | ||
21 | |||
22 | <para>What you should see for a chardev:</para> | ||
23 | <blockquote> | ||
24 | <para>$ ls -l /dev/lirc*</para> | ||
25 | <para>crw-rw---- 1 root root 248, 0 Jul 2 22:20 /dev/lirc0</para> | ||
26 | </blockquote> | ||
27 | </section> | ||
28 | |||
29 | <section id="lirc_read"> | ||
30 | <title>LIRC read fop</title> | ||
31 | |||
32 | <para>The lircd userspace daemon reads raw IR data from the LIRC chardev. The | ||
33 | exact format of the data depends on what modes a driver supports, and what | ||
34 | mode has been selected. lircd obtains supported modes and sets the active mode | ||
35 | via the ioctl interface, detailed at <xref linkend="lirc_ioctl"/>. The generally | ||
36 | preferred mode is LIRC_MODE_MODE2, in which packets containing an int value | ||
37 | describing an IR signal are read from the chardev.</para> | ||
38 | |||
39 | <para>See also <ulink url="http://www.lirc.org/html/technical.html">http://www.lirc.org/html/technical.html</ulink> for more info.</para> | ||
40 | </section> | ||
41 | |||
42 | <section id="lirc_write"> | ||
43 | <title>LIRC write fop</title> | ||
44 | |||
45 | <para>The data written to the chardev is a pulse/space sequence of integer | ||
46 | values. Pulses and spaces are only marked implicitly by their position. The | ||
47 | data must start and end with a pulse, therefore, the data must always include | ||
48 | an unevent number of samples. The write function must block until the data has | ||
49 | been transmitted by the hardware.</para> | ||
50 | </section> | ||
51 | |||
52 | <section id="lirc_ioctl"> | ||
53 | <title>LIRC ioctl fop</title> | ||
54 | |||
55 | <para>The LIRC device's ioctl definition is bound by the ioctl function | ||
56 | definition of struct file_operations, leaving us with an unsigned int | ||
57 | for the ioctl command and an unsigned long for the arg. For the purposes | ||
58 | of ioctl portability across 32-bit and 64-bit, these values are capped | ||
59 | to their 32-bit sizes.</para> | ||
60 | |||
61 | <para>The following ioctls can be used to change specific hardware settings. | ||
62 | In general each driver should have a default set of settings. The driver | ||
63 | implementation is expected to re-apply the default settings when the device | ||
64 | is closed by user-space, so that every application opening the device can rely | ||
65 | on working with the default settings initially.</para> | ||
66 | |||
67 | <variablelist> | ||
68 | <varlistentry> | ||
69 | <term>LIRC_GET_FEATURES</term> | ||
70 | <listitem> | ||
71 | <para>Obviously, get the underlying hardware device's features. If a driver | ||
72 | does not announce support of certain features, calling of the corresponding | ||
73 | ioctls is undefined.</para> | ||
74 | </listitem> | ||
75 | </varlistentry> | ||
76 | <varlistentry> | ||
77 | <term>LIRC_GET_SEND_MODE</term> | ||
78 | <listitem> | ||
79 | <para>Get supported transmit mode. Only LIRC_MODE_PULSE is supported by lircd.</para> | ||
80 | </listitem> | ||
81 | </varlistentry> | ||
82 | <varlistentry> | ||
83 | <term>LIRC_GET_REC_MODE</term> | ||
84 | <listitem> | ||
85 | <para>Get supported receive modes. Only LIRC_MODE_MODE2 and LIRC_MODE_LIRCCODE | ||
86 | are supported by lircd.</para> | ||
87 | </listitem> | ||
88 | </varlistentry> | ||
89 | <varlistentry> | ||
90 | <term>LIRC_GET_SEND_CARRIER</term> | ||
91 | <listitem> | ||
92 | <para>Get carrier frequency (in Hz) currently used for transmit.</para> | ||
93 | </listitem> | ||
94 | </varlistentry> | ||
95 | <varlistentry> | ||
96 | <term>LIRC_GET_REC_CARRIER</term> | ||
97 | <listitem> | ||
98 | <para>Get carrier frequency (in Hz) currently used for IR reception.</para> | ||
99 | </listitem> | ||
100 | </varlistentry> | ||
101 | <varlistentry> | ||
102 | <term>LIRC_{G,S}ET_{SEND,REC}_DUTY_CYCLE</term> | ||
103 | <listitem> | ||
104 | <para>Get/set the duty cycle (from 0 to 100) of the carrier signal. Currently, | ||
105 | no special meaning is defined for 0 or 100, but this could be used to switch | ||
106 | off carrier generation in the future, so these values should be reserved.</para> | ||
107 | </listitem> | ||
108 | </varlistentry> | ||
109 | <varlistentry> | ||
110 | <term>LIRC_GET_REC_RESOLUTION</term> | ||
111 | <listitem> | ||
112 | <para>Some receiver have maximum resolution which is defined by internal | ||
113 | sample rate or data format limitations. E.g. it's common that signals can | ||
114 | only be reported in 50 microsecond steps. This integer value is used by | ||
115 | lircd to automatically adjust the aeps tolerance value in the lircd | ||
116 | config file.</para> | ||
117 | </listitem> | ||
118 | </varlistentry> | ||
119 | <varlistentry> | ||
120 | <term>LIRC_GET_M{IN,AX}_TIMEOUT</term> | ||
121 | <listitem> | ||
122 | <para>Some devices have internal timers that can be used to detect when | ||
123 | there's no IR activity for a long time. This can help lircd in detecting | ||
124 | that a IR signal is finished and can speed up the decoding process. | ||
125 | Returns an integer value with the minimum/maximum timeout that can be | ||
126 | set. Some devices have a fixed timeout, in that case both ioctls will | ||
127 | return the same value even though the timeout cannot be changed.</para> | ||
128 | </listitem> | ||
129 | </varlistentry> | ||
130 | <varlistentry> | ||
131 | <term>LIRC_GET_M{IN,AX}_FILTER_{PULSE,SPACE}</term> | ||
132 | <listitem> | ||
133 | <para>Some devices are able to filter out spikes in the incoming signal | ||
134 | using given filter rules. These ioctls return the hardware capabilities | ||
135 | that describe the bounds of the possible filters. Filter settings depend | ||
136 | on the IR protocols that are expected. lircd derives the settings from | ||
137 | all protocols definitions found in its config file.</para> | ||
138 | </listitem> | ||
139 | </varlistentry> | ||
140 | <varlistentry> | ||
141 | <term>LIRC_GET_LENGTH</term> | ||
142 | <listitem> | ||
143 | <para>Retrieves the code length in bits (only for LIRC_MODE_LIRCCODE). | ||
144 | Reads on the device must be done in blocks matching the bit count. | ||
145 | The bit could should be rounded up so that it matches full bytes.</para> | ||
146 | </listitem> | ||
147 | </varlistentry> | ||
148 | <varlistentry> | ||
149 | <term>LIRC_SET_{SEND,REC}_MODE</term> | ||
150 | <listitem> | ||
151 | <para>Set send/receive mode. Largely obsolete for send, as only | ||
152 | LIRC_MODE_PULSE is supported.</para> | ||
153 | </listitem> | ||
154 | </varlistentry> | ||
155 | <varlistentry> | ||
156 | <term>LIRC_SET_{SEND,REC}_CARRIER</term> | ||
157 | <listitem> | ||
158 | <para>Set send/receive carrier (in Hz).</para> | ||
159 | </listitem> | ||
160 | </varlistentry> | ||
161 | <varlistentry> | ||
162 | <term>LIRC_SET_TRANSMITTER_MASK</term> | ||
163 | <listitem> | ||
164 | <para>This enables the given set of transmitters. The first transmitter | ||
165 | is encoded by the least significant bit, etc. When an invalid bit mask | ||
166 | is given, i.e. a bit is set, even though the device does not have so many | ||
167 | transitters, then this ioctl returns the number of available transitters | ||
168 | and does nothing otherwise.</para> | ||
169 | </listitem> | ||
170 | </varlistentry> | ||
171 | <varlistentry> | ||
172 | <term>LIRC_SET_REC_TIMEOUT</term> | ||
173 | <listitem> | ||
174 | <para>Sets the integer value for IR inactivity timeout (cf. | ||
175 | LIRC_GET_MIN_TIMEOUT and LIRC_GET_MAX_TIMEOUT). A value of 0 (if | ||
176 | supported by the hardware) disables all hardware timeouts and data should | ||
177 | be reported as soon as possible. If the exact value cannot be set, then | ||
178 | the next possible value _greater_ than the given value should be set.</para> | ||
179 | </listitem> | ||
180 | </varlistentry> | ||
181 | <varlistentry> | ||
182 | <term>LIRC_SET_REC_TIMEOUT_REPORTS</term> | ||
183 | <listitem> | ||
184 | <para>Enable (1) or disable (0) timeout reports in LIRC_MODE_MODE2. By | ||
185 | default, timeout reports should be turned off.</para> | ||
186 | </listitem> | ||
187 | </varlistentry> | ||
188 | <varlistentry> | ||
189 | <term>LIRC_SET_REC_FILTER_{,PULSE,SPACE}</term> | ||
190 | <listitem> | ||
191 | <para>Pulses/spaces shorter than this are filtered out by hardware. If | ||
192 | filters cannot be set independently for pulse/space, the corresponding | ||
193 | ioctls must return an error and LIRC_SET_REC_FILTER shall be used instead.</para> | ||
194 | </listitem> | ||
195 | </varlistentry> | ||
196 | <varlistentry> | ||
197 | <term>LIRC_SET_MEASURE_CARRIER_MODE</term> | ||
198 | <listitem> | ||
199 | <para>Enable (1)/disable (0) measure mode. If enabled, from the next key | ||
200 | press on, the driver will send LIRC_MODE2_FREQUENCY packets. By default | ||
201 | this should be turned off.</para> | ||
202 | </listitem> | ||
203 | </varlistentry> | ||
204 | <varlistentry> | ||
205 | <term>LIRC_SET_REC_{DUTY_CYCLE,CARRIER}_RANGE</term> | ||
206 | <listitem> | ||
207 | <para>To set a range use LIRC_SET_REC_DUTY_CYCLE_RANGE/LIRC_SET_REC_CARRIER_RANGE | ||
208 | with the lower bound first and later LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER | ||
209 | with the upper bound.</para> | ||
210 | </listitem> | ||
211 | </varlistentry> | ||
212 | <varlistentry> | ||
213 | <term>LIRC_NOTIFY_DECODE</term> | ||
214 | <listitem> | ||
215 | <para>This ioctl is called by lircd whenever a successful decoding of an | ||
216 | incoming IR signal could be done. This can be used by supporting hardware | ||
217 | to give visual feedback to the user e.g. by flashing a LED.</para> | ||
218 | </listitem> | ||
219 | </varlistentry> | ||
220 | <varlistentry> | ||
221 | <term>LIRC_SETUP_{START,END}</term> | ||
222 | <listitem> | ||
223 | <para>Setting of several driver parameters can be optimized by encapsulating | ||
224 | the according ioctl calls with LIRC_SETUP_START/LIRC_SETUP_END. When a | ||
225 | driver receives a LIRC_SETUP_START ioctl it can choose to not commit | ||
226 | further setting changes to the hardware until a LIRC_SETUP_END is received. | ||
227 | But this is open to the driver implementation and every driver must also | ||
228 | handle parameter changes which are not encapsulated by LIRC_SETUP_START | ||
229 | and LIRC_SETUP_END. Drivers can also choose to ignore these ioctls.</para> | ||
230 | </listitem> | ||
231 | </varlistentry> | ||
232 | </variablelist> | ||
233 | |||
234 | </section> | ||
235 | </section> | ||
diff --git a/Documentation/DocBook/v4l/remote_controllers.xml b/Documentation/DocBook/v4l/remote_controllers.xml index 73f5eab091f4..3c3b667b28e7 100644 --- a/Documentation/DocBook/v4l/remote_controllers.xml +++ b/Documentation/DocBook/v4l/remote_controllers.xml | |||
@@ -173,3 +173,5 @@ keymapping.</para> | |||
173 | <para>This program demonstrates how to replace the keymap tables.</para> | 173 | <para>This program demonstrates how to replace the keymap tables.</para> |
174 | &sub-keytable-c; | 174 | &sub-keytable-c; |
175 | </section> | 175 | </section> |
176 | |||
177 | &sub-lirc_device_interface; | ||