|
XenevaOS
|
#include <drm_connector.h>

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).
| struct device_attribute* drm_connector::attr |
@attr: sysfs attributes
| int drm_connector::audio_latency[2] |
@audio_latency: audio latency info from ELD, if found [0]: progressive, [1]: interlaced
| unsigned drm_connector::bad_edid_counter |
@bad_edid_counter: track sinks that give us an EDID with invalid checksum
| struct drm_mode_object drm_connector::base |
@base: base KMS object
| struct drm_property* drm_connector::broadcast_rgb_property |
@broadcast_rgb_property: Connector property to set the Broadcast RGB selection to output with.
| struct drm_connector_cec drm_connector::cec |
@cec: CEC-related data.
| struct drm_cmdline_mode drm_connector::cmdline_mode |
@cmdline_mode: mode line parsed from the kernel cmdline for this connector
| struct drm_property* drm_connector::colorspace_property |
@colorspace_property: Connector property to set the suitable colorspace supported by the sink.
| int drm_connector::connector_type |
@connector_type: one of the DRM_MODE_CONNECTOR_<foo> types from drm_mode.h
| int drm_connector::connector_type_id |
@connector_type_id: index into connector type enum
| 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().
| struct dentry* drm_connector::debugfs_entry |
@debugfs_entry: debugfs directory for this connector
| struct drm_device* drm_connector::dev |
@dev: parent DRM device
| 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.
| bool drm_connector::doublescan_allowed |
@doublescan_allowed: Can this connector handle doublescan? Only used by drm_helper_probe_single_connector_modes() for mode filtering.
| 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.
| 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.
| 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
| 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.
| struct mutex drm_connector::edid_override_mutex |
@edid_override_mutex: Protect access to edid_override.
| uint8_t drm_connector::eld[MAX_ELD_BYTES] |
@eld: EDID-like data, if present, protected by @eld_mutex
| struct mutex drm_connector::eld_mutex |
@eld_mutex: protection for concurrenct access to @eld
| 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.
| u64 drm_connector::epoch_counter |
@epoch_counter: used to detect any other changes in connector, besides status
| enum drm_connector_force drm_connector::force |
@force: a DRM_FORCE_<foo> state for forced mode sets
| 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.
| const struct drm_connector_funcs* drm_connector::funcs |
@funcs: connector control functions
| 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.
| 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().
| bool drm_connector::has_tile |
@has_tile: is this connector connected to a tiled monitor
| struct drm_connector_hdmi drm_connector::hdmi |
@hdmi: HDMI-related variable and properties.
| struct drm_connector_hdmi_audio drm_connector::hdmi_audio |
@hdmi_audio: HDMI codec properties and non-DRM state.
| 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.
| const struct drm_connector_helper_funcs* drm_connector::helper_private |
@helper_private: mid-layer private data
| 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.
| 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.
| struct device* drm_connector::kdev |
@kdev: kernel device for sysfs attributes
| bool drm_connector::latency_present[2] |
@latency_present: AV delay info from ELD, if found
| unsigned int drm_connector::max_bpc |
@max_bpc: Maximum bits per color channel the connector supports.
| 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.
| struct list_head drm_connector::modes |
@modes: Modes available on this connector (from fill_modes() + user). Protected by &drm_mode_config.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.
| char* drm_connector::name |
| 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
| 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
| uint8_t drm_connector::num_v_tile |
| 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().
| 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.
| 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().
| struct drm_privacy_screen* drm_connector::privacy_screen |
@privacy_screen: drm_privacy_screen for this connector, or NULL.
| 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.
| struct notifier_block drm_connector::privacy_screen_notifier |
@privacy_screen_notifier: privacy-screen notifier_block
| 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.
| 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.
| struct drm_object_properties drm_connector::properties |
@properties: property tracking for this connector
| 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
| enum drm_connector_registration_state drm_connector::registration_state |
@registration_state: Is this connector initializing, exposed (registered) with userspace, or unregistered?
Protected by @mutex.
| 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().
| 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.
| 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.
| 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.
| 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().
| struct drm_tile_group* drm_connector::tile_group |
@tile_group: tile group for the connected monitor
| uint8_t drm_connector::tile_h_loc |
@tile_h_loc: horizontal location of this tile @tile_v_loc: vertical location of this tile
| uint16_t drm_connector::tile_h_size |
@tile_h_size: horizontal size of this tile. @tile_v_size: vertical size of this tile.
| bool drm_connector::tile_is_single_monitor |
@tile_is_single_monitor: whether the tile is one monitor housing
| uint8_t drm_connector::tile_v_loc |
| uint16_t drm_connector::tile_v_size |
| int drm_connector::video_latency[2] |
@video_latency: Video latency info from ELD, if found. [0]: progressive, [1]: interlaced
| 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().
| 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.