147 lines
4.1 KiB
ReStructuredText
147 lines
4.1 KiB
ReStructuredText
|
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||
|
.. c:namespace:: CEC
|
||
|
|
||
|
.. _CEC_ADAP_G_CAPS:
|
||
|
|
||
|
*********************
|
||
|
ioctl CEC_ADAP_G_CAPS
|
||
|
*********************
|
||
|
|
||
|
Name
|
||
|
====
|
||
|
|
||
|
CEC_ADAP_G_CAPS - Query device capabilities
|
||
|
|
||
|
Synopsis
|
||
|
========
|
||
|
|
||
|
.. c:macro:: CEC_ADAP_G_CAPS
|
||
|
|
||
|
``int ioctl(int fd, CEC_ADAP_G_CAPS, struct cec_caps *argp)``
|
||
|
|
||
|
Arguments
|
||
|
=========
|
||
|
|
||
|
``fd``
|
||
|
File descriptor returned by :c:func:`open()`.
|
||
|
|
||
|
``argp``
|
||
|
|
||
|
Description
|
||
|
===========
|
||
|
|
||
|
All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query
|
||
|
device information, applications call the ioctl with a pointer to a
|
||
|
struct :c:type:`cec_caps`. The driver fills the structure and
|
||
|
returns the information to the application. The ioctl never fails.
|
||
|
|
||
|
.. tabularcolumns:: |p{1.2cm}|p{2.5cm}|p{13.6cm}|
|
||
|
|
||
|
.. c:type:: cec_caps
|
||
|
|
||
|
.. flat-table:: struct cec_caps
|
||
|
:header-rows: 0
|
||
|
:stub-columns: 0
|
||
|
:widths: 1 1 16
|
||
|
|
||
|
* - char
|
||
|
- ``driver[32]``
|
||
|
- The name of the cec adapter driver.
|
||
|
* - char
|
||
|
- ``name[32]``
|
||
|
- The name of this CEC adapter. The combination ``driver`` and
|
||
|
``name`` must be unique.
|
||
|
* - __u32
|
||
|
- ``available_log_addrs``
|
||
|
- The maximum number of logical addresses that can be configured.
|
||
|
* - __u32
|
||
|
- ``capabilities``
|
||
|
- The capabilities of the CEC adapter, see
|
||
|
:ref:`cec-capabilities`.
|
||
|
* - __u32
|
||
|
- ``version``
|
||
|
- CEC Framework API version, formatted with the ``KERNEL_VERSION()``
|
||
|
macro.
|
||
|
|
||
|
.. tabularcolumns:: |p{4.4cm}|p{2.5cm}|p{10.4cm}|
|
||
|
|
||
|
.. _cec-capabilities:
|
||
|
|
||
|
.. flat-table:: CEC Capabilities Flags
|
||
|
:header-rows: 0
|
||
|
:stub-columns: 0
|
||
|
:widths: 3 1 8
|
||
|
|
||
|
* .. _`CEC-CAP-PHYS-ADDR`:
|
||
|
|
||
|
- ``CEC_CAP_PHYS_ADDR``
|
||
|
- 0x00000001
|
||
|
- Userspace has to configure the physical address by calling
|
||
|
:ref:`ioctl CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>`. If
|
||
|
this capability isn't set, then setting the physical address is
|
||
|
handled by the kernel whenever the EDID is set (for an HDMI
|
||
|
receiver) or read (for an HDMI transmitter).
|
||
|
* .. _`CEC-CAP-LOG-ADDRS`:
|
||
|
|
||
|
- ``CEC_CAP_LOG_ADDRS``
|
||
|
- 0x00000002
|
||
|
- Userspace has to configure the logical addresses by calling
|
||
|
:ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. If
|
||
|
this capability isn't set, then the kernel will have configured
|
||
|
this.
|
||
|
* .. _`CEC-CAP-TRANSMIT`:
|
||
|
|
||
|
- ``CEC_CAP_TRANSMIT``
|
||
|
- 0x00000004
|
||
|
- Userspace can transmit CEC messages by calling
|
||
|
:ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. This implies that
|
||
|
userspace can be a follower as well, since being able to transmit
|
||
|
messages is a prerequisite of becoming a follower. If this
|
||
|
capability isn't set, then the kernel will handle all CEC
|
||
|
transmits and process all CEC messages it receives.
|
||
|
* .. _`CEC-CAP-PASSTHROUGH`:
|
||
|
|
||
|
- ``CEC_CAP_PASSTHROUGH``
|
||
|
- 0x00000008
|
||
|
- Userspace can use the passthrough mode by calling
|
||
|
:ref:`ioctl CEC_S_MODE <CEC_S_MODE>`.
|
||
|
* .. _`CEC-CAP-RC`:
|
||
|
|
||
|
- ``CEC_CAP_RC``
|
||
|
- 0x00000010
|
||
|
- This adapter supports the remote control protocol.
|
||
|
* .. _`CEC-CAP-MONITOR-ALL`:
|
||
|
|
||
|
- ``CEC_CAP_MONITOR_ALL``
|
||
|
- 0x00000020
|
||
|
- The CEC hardware can monitor all messages, not just directed and
|
||
|
broadcast messages.
|
||
|
* .. _`CEC-CAP-NEEDS-HPD`:
|
||
|
|
||
|
- ``CEC_CAP_NEEDS_HPD``
|
||
|
- 0x00000040
|
||
|
- The CEC hardware is only active if the HDMI Hotplug Detect pin is
|
||
|
high. This makes it impossible to use CEC to wake up displays that
|
||
|
set the HPD pin low when in standby mode, but keep the CEC bus
|
||
|
alive.
|
||
|
* .. _`CEC-CAP-MONITOR-PIN`:
|
||
|
|
||
|
- ``CEC_CAP_MONITOR_PIN``
|
||
|
- 0x00000080
|
||
|
- The CEC hardware can monitor CEC pin changes from low to high voltage
|
||
|
and vice versa. When in pin monitoring mode the application will
|
||
|
receive ``CEC_EVENT_PIN_CEC_LOW`` and ``CEC_EVENT_PIN_CEC_HIGH`` events.
|
||
|
* .. _`CEC-CAP-CONNECTOR-INFO`:
|
||
|
|
||
|
- ``CEC_CAP_CONNECTOR_INFO``
|
||
|
- 0x00000100
|
||
|
- If this capability is set, then :ref:`CEC_ADAP_G_CONNECTOR_INFO` can
|
||
|
be used.
|
||
|
|
||
|
Return Value
|
||
|
============
|
||
|
|
||
|
On success 0 is returned, on error -1 and the ``errno`` variable is set
|
||
|
appropriately. The generic error codes are described at the
|
||
|
:ref:`Generic Error Codes <gen-errors>` chapter.
|