xref: /linux/Documentation/userspace-api/media/cec/cec-ioc-adap-g-caps.rst (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2.. c:namespace:: CEC
3
4.. _CEC_ADAP_G_CAPS:
5
6*********************
7ioctl CEC_ADAP_G_CAPS
8*********************
9
10Name
11====
12
13CEC_ADAP_G_CAPS - Query device capabilities
14
15Synopsis
16========
17
18.. c:macro:: CEC_ADAP_G_CAPS
19
20``int ioctl(int fd, CEC_ADAP_G_CAPS, struct cec_caps *argp)``
21
22Arguments
23=========
24
25``fd``
26    File descriptor returned by :c:func:`open()`.
27
28``argp``
29
30Description
31===========
32
33All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query
34device information, applications call the ioctl with a pointer to a
35struct :c:type:`cec_caps`. The driver fills the structure and
36returns the information to the application. The ioctl never fails.
37
38.. tabularcolumns:: |p{1.2cm}|p{2.5cm}|p{13.6cm}|
39
40.. c:type:: cec_caps
41
42.. flat-table:: struct cec_caps
43    :header-rows:  0
44    :stub-columns: 0
45    :widths:       1 1 16
46
47    * - char
48      - ``driver[32]``
49      - The name of the cec adapter driver.
50    * - char
51      - ``name[32]``
52      - The name of this CEC adapter. The combination ``driver`` and
53	``name`` must be unique.
54    * - __u32
55      - ``available_log_addrs``
56      - The maximum number of logical addresses that can be configured.
57    * - __u32
58      - ``capabilities``
59      - The capabilities of the CEC adapter, see
60	:ref:`cec-capabilities`.
61    * - __u32
62      - ``version``
63      - CEC Framework API version, formatted with the ``KERNEL_VERSION()``
64	macro.
65
66.. tabularcolumns:: |p{4.4cm}|p{2.5cm}|p{10.4cm}|
67
68.. _cec-capabilities:
69
70.. flat-table:: CEC Capabilities Flags
71    :header-rows:  0
72    :stub-columns: 0
73    :widths:       3 1 8
74
75    * .. _`CEC-CAP-PHYS-ADDR`:
76
77      - ``CEC_CAP_PHYS_ADDR``
78      - 0x00000001
79      - Userspace has to configure the physical address by calling
80	:ref:`ioctl CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>`. If
81	this capability isn't set, then setting the physical address is
82	handled by the kernel whenever the EDID is set (for an HDMI
83	receiver) or read (for an HDMI transmitter).
84    * .. _`CEC-CAP-LOG-ADDRS`:
85
86      - ``CEC_CAP_LOG_ADDRS``
87      - 0x00000002
88      - Userspace has to configure the logical addresses by calling
89	:ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. If
90	this capability isn't set, then the kernel will have configured
91	this.
92    * .. _`CEC-CAP-TRANSMIT`:
93
94      - ``CEC_CAP_TRANSMIT``
95      - 0x00000004
96      - Userspace can transmit CEC messages by calling
97	:ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. This implies that
98	userspace can be a follower as well, since being able to transmit
99	messages is a prerequisite of becoming a follower. If this
100	capability isn't set, then the kernel will handle all CEC
101	transmits and process all CEC messages it receives.
102    * .. _`CEC-CAP-PASSTHROUGH`:
103
104      - ``CEC_CAP_PASSTHROUGH``
105      - 0x00000008
106      - Userspace can use the passthrough mode by calling
107	:ref:`ioctl CEC_S_MODE <CEC_S_MODE>`.
108    * .. _`CEC-CAP-RC`:
109
110      - ``CEC_CAP_RC``
111      - 0x00000010
112      - This adapter supports the remote control protocol.
113    * .. _`CEC-CAP-MONITOR-ALL`:
114
115      - ``CEC_CAP_MONITOR_ALL``
116      - 0x00000020
117      - The CEC hardware can monitor all messages, not just directed and
118	broadcast messages.
119    * .. _`CEC-CAP-NEEDS-HPD`:
120
121      - ``CEC_CAP_NEEDS_HPD``
122      - 0x00000040
123      - The CEC hardware is only active if the HDMI Hotplug Detect pin is
124        high. This makes it impossible to use CEC to wake up displays that
125	set the HPD pin low when in standby mode, but keep the CEC bus
126	alive.
127    * .. _`CEC-CAP-MONITOR-PIN`:
128
129      - ``CEC_CAP_MONITOR_PIN``
130      - 0x00000080
131      - The CEC hardware can monitor CEC pin changes from low to high voltage
132        and vice versa. When in pin monitoring mode the application will
133	receive ``CEC_EVENT_PIN_CEC_LOW`` and ``CEC_EVENT_PIN_CEC_HIGH`` events.
134    * .. _`CEC-CAP-CONNECTOR-INFO`:
135
136      - ``CEC_CAP_CONNECTOR_INFO``
137      - 0x00000100
138      - If this capability is set, then :ref:`CEC_ADAP_G_CONNECTOR_INFO` can
139        be used.
140    * .. _`CEC-CAP-REPLY-VENDOR-ID`:
141
142      - ``CEC_CAP_REPLY_VENDOR_ID``
143      - 0x00000200
144      - If this capability is set, then
145        :ref:`CEC_MSG_FL_REPLY_VENDOR_ID <cec-msg-flags>` can be used.
146
147Return Value
148============
149
150On success 0 is returned, on error -1 and the ``errno`` variable is set
151appropriately. The generic error codes are described at the
152:ref:`Generic Error Codes <gen-errors>` chapter.
153