XenevaOS
Loading...
Searching...
No Matches
Public Attributes | List of all members
drm_connector Struct Reference

#include <drm_connector.h>

Collaboration diagram for drm_connector:
Collaboration graph
[legend]

Public Attributes

struct drm_device * dev
 
struct device * kdev
 
struct device_attribute * attr
 
struct fwnode_handle * fwnode
 
struct list_head head
 
struct list_head global_connector_list_entry
 
struct drm_mode_object base
 
: human readable name, can be overwritten by the driver
char * name
 
struct mutex mutex
 
unsigned index
 
int connector_type
 
int connector_type_id
 
bool interlace_allowed
 
bool doublescan_allowed
 
bool stereo_allowed
 
bool ycbcr_420_allowed
 
enum drm_connector_registration_state registration_state
 
struct list_head modes
 
enum drm_connector_status status
 
struct list_head probed_modes
 
struct drm_display_info display_info
 
const struct drm_connector_funcs * funcs
 
struct drm_property_blob * edid_blob_ptr
 
struct drm_object_properties properties
 
struct drm_property * scaling_mode_property
 
struct drm_property * vrr_capable_property
 
struct drm_property * colorspace_property
 
struct drm_property_blob * path_blob_ptr
 
unsigned int max_bpc
 
struct drm_property * max_bpc_property
 
struct drm_privacy_screen * privacy_screen
 
struct notifier_block privacy_screen_notifier
 
struct drm_property * privacy_screen_sw_state_property
 
struct drm_property * privacy_screen_hw_state_property
 
struct drm_property * broadcast_rgb_property
 
uint8_t polled
 
int dpms
 
const struct drm_connector_helper_funcs * helper_private
 
struct drm_cmdline_mode cmdline_mode
 
enum drm_connector_force force
 
const struct drm_edid * edid_override
 
struct mutex edid_override_mutex
 
u64 epoch_counter
 
u32 possible_encoders
 
struct drm_encoder * encoder
 
uint8_t eld [MAX_ELD_BYTES]
 
struct mutex eld_mutex
 
bool latency_present [2]
 
int video_latency [2]
 
int audio_latency [2]
 
struct i2c_adapter * ddc
 
int null_edid_counter
 
unsigned bad_edid_counter
 
bool edid_corrupt
 
u8 real_edid_checksum
 
struct dentry * debugfs_entry
 
struct drm_connector_state * state
 
struct drm_property_blob * tile_blob_ptr
 
bool has_tile
 
struct drm_tile_group * tile_group
 
bool tile_is_single_monitor
 
uint8_t num_h_tile
 
uint8_t num_v_tile
 
uint8_t tile_h_loc
 
uint8_t tile_v_loc
 
uint16_t tile_h_size
 
uint16_t tile_v_size
 
struct llist_node free_node
 
struct drm_connector_hdmi hdmi
 
struct drm_connector_hdmi_audio hdmi_audio
 
struct drm_connector_cec cec
 

Detailed Description

struct drm_connector - central DRM connector control structure

Each connector may be connected to one or more CRTCs, or may be clonable by another connector if they can share a CRTC. Each connector also has a specific position in the broader display (referred to as a 'screen' though it could span multiple monitors).

Member Data Documentation

◆ attr

struct device_attribute* drm_connector::attr

@attr: sysfs attributes

◆ audio_latency

int drm_connector::audio_latency[2]

@audio_latency: audio latency info from ELD, if found [0]: progressive, [1]: interlaced

◆ bad_edid_counter

unsigned drm_connector::bad_edid_counter

@bad_edid_counter: track sinks that give us an EDID with invalid checksum

◆ base

struct drm_mode_object drm_connector::base

@base: base KMS object

◆ broadcast_rgb_property

struct drm_property* drm_connector::broadcast_rgb_property

@broadcast_rgb_property: Connector property to set the Broadcast RGB selection to output with.

◆ cec

struct drm_connector_cec drm_connector::cec

@cec: CEC-related data.

◆ cmdline_mode

struct drm_cmdline_mode drm_connector::cmdline_mode

@cmdline_mode: mode line parsed from the kernel cmdline for this connector

◆ colorspace_property

struct drm_property* drm_connector::colorspace_property

@colorspace_property: Connector property to set the suitable colorspace supported by the sink.

◆ connector_type

int drm_connector::connector_type

@connector_type: one of the DRM_MODE_CONNECTOR_<foo> types from drm_mode.h

◆ connector_type_id

int drm_connector::connector_type_id

@connector_type_id: index into connector type enum

◆ ddc

struct i2c_adapter* drm_connector::ddc

@ddc: associated ddc adapter. A connector usually has its associated ddc adapter. If a driver uses this field, then an appropriate symbolic link is created in connector sysfs directory to make it easy for the user to tell which i2c adapter is for a particular display.

The field should be set by calling drm_connector_init_with_ddc().

◆ debugfs_entry

struct dentry* drm_connector::debugfs_entry

@debugfs_entry: debugfs directory for this connector

◆ dev

struct drm_device* drm_connector::dev

@dev: parent DRM device

◆ display_info

struct drm_display_info drm_connector::display_info

@display_info: Display information is filled from EDID information when a display is detected. For non hot-pluggable displays such as flat panels in embedded systems, the driver should initialize the &drm_display_info.width_mm and &drm_display_info.height_mm fields with the physical size of the display.

Protected by &drm_mode_config.mutex.

◆ doublescan_allowed

bool drm_connector::doublescan_allowed

@doublescan_allowed: Can this connector handle doublescan? Only used by drm_helper_probe_single_connector_modes() for mode filtering.

◆ dpms

int drm_connector::dpms

@dpms: Current dpms state. For legacy drivers the &drm_connector_funcs.dpms callback must update this. For atomic drivers, this is handled by the core atomic code, and drivers must only take &drm_crtc_state.active into account.

◆ edid_blob_ptr

struct drm_property_blob* drm_connector::edid_blob_ptr

@edid_blob_ptr: DRM property containing EDID if present. Protected by &drm_mode_config.mutex.

This must be updated only by calling drm_edid_connector_update() or drm_connector_update_edid_property().

This must not be used by drivers directly.

◆ edid_corrupt

bool drm_connector::edid_corrupt

@edid_corrupt: Indicates whether the last read EDID was corrupt. Used in Displayport compliance testing - Displayport Link CTS Core 1.2 rev1.1 4.2.2.6

◆ edid_override

const struct drm_edid* drm_connector::edid_override

@edid_override: Override EDID set via debugfs.

Do not modify or access outside of the drm_edid_override_* family of functions.

◆ edid_override_mutex

struct mutex drm_connector::edid_override_mutex

@edid_override_mutex: Protect access to edid_override.

◆ eld

uint8_t drm_connector::eld[MAX_ELD_BYTES]

@eld: EDID-like data, if present, protected by @eld_mutex

◆ eld_mutex

struct mutex drm_connector::eld_mutex

@eld_mutex: protection for concurrenct access to @eld

◆ encoder

struct drm_encoder* drm_connector::encoder

@encoder: Currently bound encoder driving this connector, if any. Only really meaningful for non-atomic drivers. Atomic drivers should instead look at &drm_connector_state.best_encoder, and in case they need the CRTC driving this output, &drm_connector_state.crtc.

◆ epoch_counter

u64 drm_connector::epoch_counter

@epoch_counter: used to detect any other changes in connector, besides status

◆ force

enum drm_connector_force drm_connector::force

@force: a DRM_FORCE_<foo> state for forced mode sets

◆ free_node

struct llist_node drm_connector::free_node

@free_node:

List used only by &drm_connector_list_iter to be able to clean up a connector from any context, in conjunction with &drm_mode_config.connector_free_work.

◆ funcs

const struct drm_connector_funcs* drm_connector::funcs

@funcs: connector control functions

◆ fwnode

struct fwnode_handle* drm_connector::fwnode

@fwnode: associated fwnode supplied by platform firmware

Drivers can set this to associate a fwnode with a connector, drivers are expected to get a reference on the fwnode when setting this. drm_connector_cleanup() will call fwnode_handle_put() on this.

◆ global_connector_list_entry

struct list_head drm_connector::global_connector_list_entry

@global_connector_list_entry:

Connector entry in the global connector-list, used by drm_connector_find_by_fwnode().

◆ has_tile

bool drm_connector::has_tile

@has_tile: is this connector connected to a tiled monitor

◆ hdmi

struct drm_connector_hdmi drm_connector::hdmi

@hdmi: HDMI-related variable and properties.

◆ hdmi_audio

struct drm_connector_hdmi_audio drm_connector::hdmi_audio

@hdmi_audio: HDMI codec properties and non-DRM state.

◆ head

struct list_head drm_connector::head

@head:

List of all connectors on a @dev, linked from &drm_mode_config.connector_list. Protected by &drm_mode_config.connector_list_lock, but please only use &drm_connector_list_iter to walk this list.

◆ helper_private

const struct drm_connector_helper_funcs* drm_connector::helper_private

@helper_private: mid-layer private data

◆ index

unsigned drm_connector::index

@index: Compacted connector index, which matches the position inside the mode_config.list for drivers not supporting hot-add/removing. Can be used as an array index. It is invariant over the lifetime of the connector.

◆ interlace_allowed

bool drm_connector::interlace_allowed

@interlace_allowed: Can this connector handle interlaced modes? Only used by drm_helper_probe_single_connector_modes() for mode filtering.

◆ kdev

struct device* drm_connector::kdev

@kdev: kernel device for sysfs attributes

◆ latency_present

bool drm_connector::latency_present[2]

@latency_present: AV delay info from ELD, if found

◆ max_bpc

unsigned int drm_connector::max_bpc

@max_bpc: Maximum bits per color channel the connector supports.

◆ max_bpc_property

struct drm_property* drm_connector::max_bpc_property

@max_bpc_property: Default connector property for the max bpc to be driven out of the connector.

◆ modes

struct list_head drm_connector::modes

@modes: Modes available on this connector (from fill_modes() + user). Protected by &drm_mode_config.mutex.

◆ mutex

struct mutex drm_connector::mutex

@mutex: Lock for general connector state, but currently only protects @registered. Most of the connector state is still protected by &drm_mode_config.mutex.

◆ name

char* drm_connector::name

◆ null_edid_counter

int drm_connector::null_edid_counter

@null_edid_counter: track sinks that give us all zeros for the EDID. Needed to workaround some HW bugs where we get all 0s

◆ num_h_tile

uint8_t drm_connector::num_h_tile

@num_h_tile: number of horizontal tiles in the tile group @num_v_tile: number of vertical tiles in the tile group

◆ num_v_tile

uint8_t drm_connector::num_v_tile

◆ path_blob_ptr

struct drm_property_blob* drm_connector::path_blob_ptr

@path_blob_ptr:

DRM blob property data for the DP MST path property. This should only be updated by calling drm_connector_set_path_property().

◆ polled

uint8_t drm_connector::polled

@polled:

Connector polling mode, a combination of

DRM_CONNECTOR_POLL_HPD The connector generates hotplug events and doesn't need to be periodically polled. The CONNECT and DISCONNECT flags must not be set together with the HPD flag.

DRM_CONNECTOR_POLL_CONNECT Periodically poll the connector for connection.

DRM_CONNECTOR_POLL_DISCONNECT Periodically poll the connector for disconnection, without causing flickering even when the connector is in use. DACs should rarely do this without a lot of testing.

Set to 0 for connectors that don't support connection status discovery.

◆ possible_encoders

u32 drm_connector::possible_encoders

@possible_encoders: Bit mask of encoders that can drive this connector, drm_encoder_index() determines the index into the bitfield and the bits are set with drm_connector_attach_encoder().

◆ privacy_screen

struct drm_privacy_screen* drm_connector::privacy_screen

@privacy_screen: drm_privacy_screen for this connector, or NULL.

◆ privacy_screen_hw_state_property

struct drm_property* drm_connector::privacy_screen_hw_state_property

@privacy_screen_hw_state_property: Optional atomic property for the connector to report the actual integrated privacy screen state.

◆ privacy_screen_notifier

struct notifier_block drm_connector::privacy_screen_notifier

@privacy_screen_notifier: privacy-screen notifier_block

◆ privacy_screen_sw_state_property

struct drm_property* drm_connector::privacy_screen_sw_state_property

@privacy_screen_sw_state_property: Optional atomic property for the connector to control the integrated privacy screen.

◆ probed_modes

struct list_head drm_connector::probed_modes

@probed_modes: These are modes added by probing with DDC or the BIOS, before filtering is applied. Used by the probe helpers. Protected by &drm_mode_config.mutex.

◆ properties

struct drm_object_properties drm_connector::properties

@properties: property tracking for this connector

◆ real_edid_checksum

u8 drm_connector::real_edid_checksum

@real_edid_checksum: real edid checksum for corrupted edid block. Required in Displayport 1.4 compliance testing rev1.1 4.2.2.6

◆ registration_state

enum drm_connector_registration_state drm_connector::registration_state

@registration_state: Is this connector initializing, exposed (registered) with userspace, or unregistered?

Protected by @mutex.

◆ scaling_mode_property

struct drm_property* drm_connector::scaling_mode_property

@scaling_mode_property: Optional atomic property to control the upscaling. See drm_connector_attach_content_protection_property().

◆ state

struct drm_connector_state* drm_connector::state

@state:

Current atomic state for this connector.

This is protected by &drm_mode_config.connection_mutex. Note that nonblocking atomic commits access the current connector state without taking locks. Either by going through the &struct drm_atomic_commit pointers, see for_each_oldnew_connector_in_state(), for_each_old_connector_in_state() and for_each_new_connector_in_state(). Or through careful ordering of atomic commit operations as implemented in the atomic helpers, see &struct drm_crtc_commit.

◆ status

enum drm_connector_status drm_connector::status

@status: One of the drm_connector_status enums (connected, not, or unknown). Protected by &drm_mode_config.mutex.

◆ stereo_allowed

bool drm_connector::stereo_allowed

@stereo_allowed: Can this connector handle stereo modes? Only used by drm_helper_probe_single_connector_modes() for mode filtering.

◆ tile_blob_ptr

struct drm_property_blob* drm_connector::tile_blob_ptr

@tile_blob_ptr:

DRM blob property data for the tile property (used mostly by DP MST). This is meant for screens which are driven through separate display pipelines represented by &drm_crtc, which might not be running with genlocked clocks. For tiled panels which are genlocked, like dual-link LVDS or dual-link DSI, the driver should try to not expose the tiling and virtualize both &drm_crtc and &drm_plane if needed.

This should only be updated by calling drm_connector_set_tile_property().

◆ tile_group

struct drm_tile_group* drm_connector::tile_group

@tile_group: tile group for the connected monitor

◆ tile_h_loc

uint8_t drm_connector::tile_h_loc

@tile_h_loc: horizontal location of this tile @tile_v_loc: vertical location of this tile

◆ tile_h_size

uint16_t drm_connector::tile_h_size

@tile_h_size: horizontal size of this tile. @tile_v_size: vertical size of this tile.

◆ tile_is_single_monitor

bool drm_connector::tile_is_single_monitor

@tile_is_single_monitor: whether the tile is one monitor housing

◆ tile_v_loc

uint8_t drm_connector::tile_v_loc

◆ tile_v_size

uint16_t drm_connector::tile_v_size

◆ video_latency

int drm_connector::video_latency[2]

@video_latency: Video latency info from ELD, if found. [0]: progressive, [1]: interlaced

◆ vrr_capable_property

struct drm_property* drm_connector::vrr_capable_property

@vrr_capable_property: Optional property to help userspace query hardware support for variable refresh rate on a connector. connector. Drivers can add the property to a connector by calling drm_connector_attach_vrr_capable_property().

This should be updated only by calling drm_connector_set_vrr_capable_property().

◆ ycbcr_420_allowed

bool drm_connector::ycbcr_420_allowed

@ycbcr_420_allowed : This bool indicates if this connector is capable of handling YCBCR 420 output. While parsing the EDID blocks it's very helpful to know if the source is capable of handling YCBCR 420 outputs.


The documentation for this struct was generated from the following file: