2.5. ioctl CEC_ADAP_G_CAPS

2.5.1. Name

CEC_ADAP_G_CAPS - Query device capabilities

2.5.2. Synopsis

CEC_ADAP_G_CAPS

int ioctl(int fd, CEC_ADAP_G_CAPS, struct cec_caps *argp)

2.5.3. Arguments

fd

File descriptor returned by open().

argp

2.5.4. Description

All cec devices must support ioctl CEC_ADAP_G_CAPS. To query device information, applications call the ioctl with a pointer to a struct cec_caps. The driver fills the structure and returns the information to the application. The ioctl never fails.

type cec_caps
struct cec_caps

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 CEC Capabilities Flags.

__u32

version

CEC Framework API version, formatted with the KERNEL_VERSION() macro.

CEC Capabilities Flags

CEC_CAP_PHYS_ADDR

0x00000001

Userspace has to configure the physical address by calling ioctl 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

0x00000002

Userspace has to configure the logical addresses by calling ioctl CEC_ADAP_S_LOG_ADDRS. If this capability isn’t set, then the kernel will have configured this.

CEC_CAP_TRANSMIT

0x00000004

Userspace can transmit CEC messages by calling ioctl 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

0x00000008

Userspace can use the passthrough mode by calling ioctl CEC_S_MODE.

CEC_CAP_RC

0x00000010

This adapter supports the remote control protocol.

CEC_CAP_MONITOR_ALL

0x00000020

The CEC hardware can monitor all messages, not just directed and broadcast messages.

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

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

0x00000100

If this capability is set, then ioctl CEC_ADAP_G_CONNECTOR_INFO can be used.

CEC_CAP_REPLY_VENDOR_ID

0x00000200

If this capability is set, then CEC_MSG_FL_REPLY_VENDOR_ID can be used.

2.5.5. 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 Generic Error Codes chapter.