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