Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[cascardo/linux.git] / Documentation / media / uapi / cec / cec-intro.rst
1 .. _cec-intro:
2
3 Introduction
4 ============
5
6 .. note::
7
8    This documents the proposed CEC API. This API is not yet finalized
9    and is currently only available as a staging kernel module.
10
11 HDMI connectors provide a single pin for use by the Consumer Electronics
12 Control protocol. This protocol allows different devices connected by an
13 HDMI cable to communicate. The protocol for CEC version 1.4 is defined
14 in supplements 1 (CEC) and 2 (HEAC or HDMI Ethernet and Audio Return
15 Channel) of the HDMI 1.4a (:ref:`hdmi`) specification and the
16 extensions added to CEC version 2.0 are defined in chapter 11 of the
17 HDMI 2.0 (:ref:`hdmi2`) specification.
18
19 The bitrate is very slow (effectively no more than 36 bytes per second)
20 and is based on the ancient AV.link protocol used in old SCART
21 connectors. The protocol closely resembles a crazy Rube Goldberg
22 contraption and is an unholy mix of low and high level messages. Some
23 messages, especially those part of the HEAC protocol layered on top of
24 CEC, need to be handled by the kernel, others can be handled either by
25 the kernel or by userspace.
26
27 In addition, CEC can be implemented in HDMI receivers, transmitters and
28 in USB devices that have an HDMI input and an HDMI output and that
29 control just the CEC pin.
30
31 Drivers that support CEC will create a CEC device node (/dev/cecX) to
32 give userspace access to the CEC adapter. The
33 :ref:`CEC_ADAP_G_CAPS` ioctl will tell userspace what it is allowed to do.