Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[sfrench/cifs-2.6.git] / Documentation / media / uapi / rc / lirc-dev-intro.rst
1 .. -*- coding: utf-8; mode: rst -*-
2
3 .. _lirc_dev_intro:
4
5 ************
6 Introduction
7 ************
8
9 The LIRC device interface is a bi-directional interface for transporting
10 raw IR data between userspace and kernelspace. Fundamentally, it is just
11 a chardev (/dev/lircX, for X = 0, 1, 2, ...), with a number of standard
12 struct file_operations defined on it. With respect to transporting raw
13 IR data to and fro, the essential fops are read, write and ioctl.
14
15 Example dmesg output upon a driver registering w/LIRC:
16
17 .. code-block:: none
18
19     $ dmesg |grep lirc_dev
20     lirc_dev: IR Remote Control driver registered, major 248
21     rc rc0: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 0
22
23 What you should see for a chardev:
24
25 .. code-block:: none
26
27     $ ls -l /dev/lirc*
28     crw-rw---- 1 root root 248, 0 Jul 2 22:20 /dev/lirc0
29
30 .. _lirc_modes:
31
32 **********
33 LIRC modes
34 **********
35
36 LIRC supports some modes of receiving and sending IR codes, as shown
37 on the following table.
38
39 .. _lirc-mode-mode2:
40
41 ``LIRC_MODE_MODE2``
42
43     The driver returns a sequence of pulse and space codes to userspace,
44     as a series of u32 values.
45
46     This mode is used only for IR receive.
47
48     The upper 8 bits determine the packet type, and the lower 24 bits
49     the payload. Use ``LIRC_VALUE()`` macro to get the payload, and
50     the macro ``LIRC_MODE2()`` will give you the type, which
51     is one of:
52
53     ``LIRC_MODE2_PULSE``
54
55         Signifies the presence of IR in microseconds.
56
57     ``LIRC_MODE2_SPACE``
58
59         Signifies absence of IR in microseconds.
60
61     ``LIRC_MODE2_FREQUENCY``
62
63         If measurement of the carrier frequency was enabled with
64         :ref:`lirc_set_measure_carrier_mode` then this packet gives you
65         the carrier frequency in Hertz.
66
67     ``LIRC_MODE2_TIMEOUT``
68
69         If timeout reports are enabled with
70         :ref:`lirc_set_rec_timeout_reports`, when the timeout set with
71         :ref:`lirc_set_rec_timeout` expires due to no IR being detected,
72         this packet will be sent, with the number of microseconds with
73         no IR.
74
75 .. _lirc-mode-lirccode:
76
77 ``LIRC_MODE_LIRCCODE``
78
79     This mode can be used for IR receive and send.
80
81     The IR signal is decoded internally by the receiver, or encoded by the
82     transmitter. The LIRC interface represents the scancode as byte string,
83     which might not be a u32, it can be any length. The value is entirely
84     driver dependent. This mode is used by some older lirc drivers.
85
86     The length of each code depends on the driver, which can be retrieved
87     with :ref:`lirc_get_length`. This length is used both
88     for transmitting and receiving IR.
89
90 .. _lirc-mode-pulse:
91
92 ``LIRC_MODE_PULSE``
93
94     In pulse mode, a sequence of pulse/space integer values are written to the
95     lirc device using :ref:`lirc-write`.
96
97     The values are alternating pulse and space lengths, in microseconds. The
98     first and last entry must be a pulse, so there must be an odd number
99     of entries.
100
101     This mode is used only for IR send.