xref: /openbmc/linux/Documentation/userspace-api/media/cec/cec-ioc-adap-g-caps.rst (revision 8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17)
1059b1c5bSMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
201fae02dSMauro Carvalho Chehab.. c:namespace:: CEC
354f38fcaSMauro Carvalho Chehab
454f38fcaSMauro Carvalho Chehab.. _CEC_ADAP_G_CAPS:
554f38fcaSMauro Carvalho Chehab
654f38fcaSMauro Carvalho Chehab*********************
754f38fcaSMauro Carvalho Chehabioctl CEC_ADAP_G_CAPS
854f38fcaSMauro Carvalho Chehab*********************
954f38fcaSMauro Carvalho Chehab
1054f38fcaSMauro Carvalho ChehabName
1154f38fcaSMauro Carvalho Chehab====
1254f38fcaSMauro Carvalho Chehab
1354f38fcaSMauro Carvalho ChehabCEC_ADAP_G_CAPS - Query device capabilities
1454f38fcaSMauro Carvalho Chehab
1554f38fcaSMauro Carvalho ChehabSynopsis
1654f38fcaSMauro Carvalho Chehab========
1754f38fcaSMauro Carvalho Chehab
1801fae02dSMauro Carvalho Chehab.. c:macro:: CEC_ADAP_G_CAPS
1901fae02dSMauro Carvalho Chehab
2001fae02dSMauro Carvalho Chehab``int ioctl(int fd, CEC_ADAP_G_CAPS, struct cec_caps *argp)``
2154f38fcaSMauro Carvalho Chehab
2254f38fcaSMauro Carvalho ChehabArguments
2354f38fcaSMauro Carvalho Chehab=========
2454f38fcaSMauro Carvalho Chehab
2554f38fcaSMauro Carvalho Chehab``fd``
2601fae02dSMauro Carvalho Chehab    File descriptor returned by :c:func:`open()`.
2754f38fcaSMauro Carvalho Chehab
2854f38fcaSMauro Carvalho Chehab``argp``
2954f38fcaSMauro Carvalho Chehab
3054f38fcaSMauro Carvalho ChehabDescription
3154f38fcaSMauro Carvalho Chehab===========
3254f38fcaSMauro Carvalho Chehab
3354f38fcaSMauro Carvalho ChehabAll cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query
3454f38fcaSMauro Carvalho Chehabdevice information, applications call the ioctl with a pointer to a
3554f38fcaSMauro Carvalho Chehabstruct :c:type:`cec_caps`. The driver fills the structure and
3654f38fcaSMauro Carvalho Chehabreturns the information to the application. The ioctl never fails.
3754f38fcaSMauro Carvalho Chehab
38*fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{1.2cm}|p{2.5cm}|p{13.6cm}|
3954f38fcaSMauro Carvalho Chehab
4054f38fcaSMauro Carvalho Chehab.. c:type:: cec_caps
4154f38fcaSMauro Carvalho Chehab
4254f38fcaSMauro Carvalho Chehab.. flat-table:: struct cec_caps
4354f38fcaSMauro Carvalho Chehab    :header-rows:  0
4454f38fcaSMauro Carvalho Chehab    :stub-columns: 0
4554f38fcaSMauro Carvalho Chehab    :widths:       1 1 16
4654f38fcaSMauro Carvalho Chehab
4754f38fcaSMauro Carvalho Chehab    * - char
4854f38fcaSMauro Carvalho Chehab      - ``driver[32]``
4954f38fcaSMauro Carvalho Chehab      - The name of the cec adapter driver.
5054f38fcaSMauro Carvalho Chehab    * - char
5154f38fcaSMauro Carvalho Chehab      - ``name[32]``
5254f38fcaSMauro Carvalho Chehab      - The name of this CEC adapter. The combination ``driver`` and
5354f38fcaSMauro Carvalho Chehab	``name`` must be unique.
5454f38fcaSMauro Carvalho Chehab    * - __u32
55b16c928cSHans Verkuil      - ``available_log_addrs``
56b16c928cSHans Verkuil      - The maximum number of logical addresses that can be configured.
57b16c928cSHans Verkuil    * - __u32
5854f38fcaSMauro Carvalho Chehab      - ``capabilities``
5954f38fcaSMauro Carvalho Chehab      - The capabilities of the CEC adapter, see
6054f38fcaSMauro Carvalho Chehab	:ref:`cec-capabilities`.
6154f38fcaSMauro Carvalho Chehab    * - __u32
6254f38fcaSMauro Carvalho Chehab      - ``version``
6354f38fcaSMauro Carvalho Chehab      - CEC Framework API version, formatted with the ``KERNEL_VERSION()``
6454f38fcaSMauro Carvalho Chehab	macro.
6554f38fcaSMauro Carvalho Chehab
66*fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{2.5cm}|p{10.4cm}|
6754f38fcaSMauro Carvalho Chehab
6854f38fcaSMauro Carvalho Chehab.. _cec-capabilities:
6954f38fcaSMauro Carvalho Chehab
7054f38fcaSMauro Carvalho Chehab.. flat-table:: CEC Capabilities Flags
7154f38fcaSMauro Carvalho Chehab    :header-rows:  0
7254f38fcaSMauro Carvalho Chehab    :stub-columns: 0
7354f38fcaSMauro Carvalho Chehab    :widths:       3 1 8
7454f38fcaSMauro Carvalho Chehab
7554f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-PHYS-ADDR`:
7654f38fcaSMauro Carvalho Chehab
7754f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_PHYS_ADDR``
7854f38fcaSMauro Carvalho Chehab      - 0x00000001
7954f38fcaSMauro Carvalho Chehab      - Userspace has to configure the physical address by calling
8054f38fcaSMauro Carvalho Chehab	:ref:`ioctl CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>`. If
8154f38fcaSMauro Carvalho Chehab	this capability isn't set, then setting the physical address is
8254f38fcaSMauro Carvalho Chehab	handled by the kernel whenever the EDID is set (for an HDMI
8354f38fcaSMauro Carvalho Chehab	receiver) or read (for an HDMI transmitter).
8454f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-LOG-ADDRS`:
8554f38fcaSMauro Carvalho Chehab
8654f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_LOG_ADDRS``
8754f38fcaSMauro Carvalho Chehab      - 0x00000002
8854f38fcaSMauro Carvalho Chehab      - Userspace has to configure the logical addresses by calling
8954f38fcaSMauro Carvalho Chehab	:ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. If
9054f38fcaSMauro Carvalho Chehab	this capability isn't set, then the kernel will have configured
9154f38fcaSMauro Carvalho Chehab	this.
9254f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-TRANSMIT`:
9354f38fcaSMauro Carvalho Chehab
9454f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_TRANSMIT``
9554f38fcaSMauro Carvalho Chehab      - 0x00000004
9654f38fcaSMauro Carvalho Chehab      - Userspace can transmit CEC messages by calling
9754f38fcaSMauro Carvalho Chehab	:ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. This implies that
9854f38fcaSMauro Carvalho Chehab	userspace can be a follower as well, since being able to transmit
9954f38fcaSMauro Carvalho Chehab	messages is a prerequisite of becoming a follower. If this
10054f38fcaSMauro Carvalho Chehab	capability isn't set, then the kernel will handle all CEC
10154f38fcaSMauro Carvalho Chehab	transmits and process all CEC messages it receives.
10254f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-PASSTHROUGH`:
10354f38fcaSMauro Carvalho Chehab
10454f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_PASSTHROUGH``
10554f38fcaSMauro Carvalho Chehab      - 0x00000008
10654f38fcaSMauro Carvalho Chehab      - Userspace can use the passthrough mode by calling
10754f38fcaSMauro Carvalho Chehab	:ref:`ioctl CEC_S_MODE <CEC_S_MODE>`.
10854f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-RC`:
10954f38fcaSMauro Carvalho Chehab
11054f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_RC``
11154f38fcaSMauro Carvalho Chehab      - 0x00000010
11254f38fcaSMauro Carvalho Chehab      - This adapter supports the remote control protocol.
11354f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-MONITOR-ALL`:
11454f38fcaSMauro Carvalho Chehab
11554f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_MONITOR_ALL``
11654f38fcaSMauro Carvalho Chehab      - 0x00000020
11754f38fcaSMauro Carvalho Chehab      - The CEC hardware can monitor all messages, not just directed and
11854f38fcaSMauro Carvalho Chehab	broadcast messages.
11954f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-NEEDS-HPD`:
12054f38fcaSMauro Carvalho Chehab
12154f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_NEEDS_HPD``
12254f38fcaSMauro Carvalho Chehab      - 0x00000040
12354f38fcaSMauro Carvalho Chehab      - The CEC hardware is only active if the HDMI Hotplug Detect pin is
12454f38fcaSMauro Carvalho Chehab        high. This makes it impossible to use CEC to wake up displays that
12554f38fcaSMauro Carvalho Chehab	set the HPD pin low when in standby mode, but keep the CEC bus
12654f38fcaSMauro Carvalho Chehab	alive.
12754f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-MONITOR-PIN`:
12854f38fcaSMauro Carvalho Chehab
12954f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_MONITOR_PIN``
13054f38fcaSMauro Carvalho Chehab      - 0x00000080
13154f38fcaSMauro Carvalho Chehab      - The CEC hardware can monitor CEC pin changes from low to high voltage
13254f38fcaSMauro Carvalho Chehab        and vice versa. When in pin monitoring mode the application will
13354f38fcaSMauro Carvalho Chehab	receive ``CEC_EVENT_PIN_CEC_LOW`` and ``CEC_EVENT_PIN_CEC_HIGH`` events.
13454f38fcaSMauro Carvalho Chehab    * .. _`CEC-CAP-CONNECTOR-INFO`:
13554f38fcaSMauro Carvalho Chehab
13654f38fcaSMauro Carvalho Chehab      - ``CEC_CAP_CONNECTOR_INFO``
13754f38fcaSMauro Carvalho Chehab      - 0x00000100
13854f38fcaSMauro Carvalho Chehab      - If this capability is set, then :ref:`CEC_ADAP_G_CONNECTOR_INFO` can
13954f38fcaSMauro Carvalho Chehab        be used.
14054f38fcaSMauro Carvalho Chehab
14154f38fcaSMauro Carvalho ChehabReturn Value
14254f38fcaSMauro Carvalho Chehab============
14354f38fcaSMauro Carvalho Chehab
14454f38fcaSMauro Carvalho ChehabOn success 0 is returned, on error -1 and the ``errno`` variable is set
14554f38fcaSMauro Carvalho Chehabappropriately. The generic error codes are described at the
14654f38fcaSMauro Carvalho Chehab:ref:`Generic Error Codes <gen-errors>` chapter.
147