XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Enumerations | Functions
drm_connector.h File Reference
#include <linux/list.h>
#include <linux/llist.h>
#include <linux/ctype.h>
#include <linux/hdmi.h>
#include <linux/notifier.h>
#include <drm/drm_mode_object.h>
#include <drm/drm_util.h>
#include <drm/drm_property.h>
#include <uapi/drm/drm_mode.h>
Include dependency graph for drm_connector.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  drm_scrambling
 
struct  drm_scdc
 
struct  drm_hdmi_dsc_cap
 
struct  drm_hdmi_info
 
struct  drm_monitor_range_info
 
struct  drm_luminance_range_info
 
struct  drm_amd_vsdb_info
 
struct  drm_display_info
 
struct  drm_connector_tv_margins
 
struct  drm_tv_connector_state
 
struct  drm_connector_hdmi_infoframe
 
struct  drm_connector_hdmi_state
 
struct  drm_connector_state
 
struct  drm_connector_hdmi_audio_funcs
 
struct  drm_connector_cec_funcs
 
struct  drm_connector_infoframe_funcs
 
struct  drm_connector_hdmi_funcs
 
struct  drm_connector_funcs
 
struct  drm_cmdline_mode
 
struct  drm_connector_hdmi_audio
 
struct  drm_connector_hdmi
 
struct  drm_connector_cec
 
struct  drm_connector
 
struct  drm_tile_group
 
struct  drm_connector_list_iter
 

Macros

#define DRM_CONNECTOR_HDMI_VENDOR_LEN   8
 
#define DRM_CONNECTOR_HDMI_PRODUCT_LEN   16
 
#define obj_to_connector(x)   container_of(x, struct drm_connector, base)
 
#define drm_for_each_connector_iter(connector, iter)    while ((connector = drm_connector_list_iter_next(iter)))
 
#define drm_connector_for_each_possible_encoder(connector, encoder)
 
: human readable name, can be overwritten by the driver
#define DRM_CONNECTOR_POLL_HPD   (1 << 0)
 
#define DRM_CONNECTOR_POLL_CONNECT   (1 << 1)
 
#define DRM_CONNECTOR_POLL_DISCONNECT   (1 << 2)
 
#define MAX_ELD_BYTES   128
 

Enumerations

enum  drm_connector_force { DRM_FORCE_UNSPECIFIED , DRM_FORCE_OFF , DRM_FORCE_ON , DRM_FORCE_ON_DIGITAL }
 
enum  drm_connector_status { connector_status_connected = 1 , connector_status_disconnected = 2 , connector_status_unknown = 3 }
 
enum  drm_connector_registration_state { DRM_CONNECTOR_INITIALIZING = 0 , DRM_CONNECTOR_REGISTERED = 1 , DRM_CONNECTOR_UNREGISTERED = 2 }
 
enum  subpixel_order {
  SubPixelUnknown = 0 , SubPixelHorizontalRGB , SubPixelHorizontalBGR , SubPixelVerticalRGB ,
  SubPixelVerticalBGR , SubPixelNone
}
 
enum  drm_connector_tv_mode {
  DRM_MODE_TV_MODE_NTSC , DRM_MODE_TV_MODE_NTSC_443 , DRM_MODE_TV_MODE_NTSC_J , DRM_MODE_TV_MODE_PAL ,
  DRM_MODE_TV_MODE_PAL_M , DRM_MODE_TV_MODE_PAL_N , DRM_MODE_TV_MODE_SECAM , DRM_MODE_TV_MODE_MONOCHROME ,
  DRM_MODE_TV_MODE_MAX
}
 
enum  drm_link_status { DRM_LINK_STATUS_GOOD = DRM_MODE_LINK_STATUS_GOOD , DRM_LINK_STATUS_BAD = DRM_MODE_LINK_STATUS_BAD }
 
enum  drm_panel_orientation {
  DRM_MODE_PANEL_ORIENTATION_UNKNOWN = -1 , DRM_MODE_PANEL_ORIENTATION_NORMAL = 0 , DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP , DRM_MODE_PANEL_ORIENTATION_LEFT_UP ,
  DRM_MODE_PANEL_ORIENTATION_RIGHT_UP
}
 
enum  drm_hdmi_broadcast_rgb { DRM_HDMI_BROADCAST_RGB_AUTO , DRM_HDMI_BROADCAST_RGB_FULL , DRM_HDMI_BROADCAST_RGB_LIMITED }
 
enum  drm_privacy_screen_status { PRIVACY_SCREEN_DISABLED = 0 , PRIVACY_SCREEN_ENABLED , PRIVACY_SCREEN_DISABLED_LOCKED , PRIVACY_SCREEN_ENABLED_LOCKED }
 
enum  drm_colorspace {
  DRM_MODE_COLORIMETRY_DEFAULT = 0 , DRM_MODE_COLORIMETRY_NO_DATA = 0 , DRM_MODE_COLORIMETRY_SMPTE_170M_YCC = 1 , DRM_MODE_COLORIMETRY_BT709_YCC = 2 ,
  DRM_MODE_COLORIMETRY_XVYCC_601 = 3 , DRM_MODE_COLORIMETRY_XVYCC_709 = 4 , DRM_MODE_COLORIMETRY_SYCC_601 = 5 , DRM_MODE_COLORIMETRY_OPYCC_601 = 6 ,
  DRM_MODE_COLORIMETRY_OPRGB = 7 , DRM_MODE_COLORIMETRY_BT2020_CYCC = 8 , DRM_MODE_COLORIMETRY_BT2020_RGB = 9 , DRM_MODE_COLORIMETRY_BT2020_YCC = 10 ,
  DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65 = 11 , DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER = 12 , DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED = 13 , DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT = 14 ,
  DRM_MODE_COLORIMETRY_BT601_YCC = 15 , DRM_MODE_COLORIMETRY_COUNT
}
 
enum  drm_output_color_format { DRM_OUTPUT_COLOR_FORMAT_RGB444 = 0 , DRM_OUTPUT_COLOR_FORMAT_YCBCR444 , DRM_OUTPUT_COLOR_FORMAT_YCBCR422 , DRM_OUTPUT_COLOR_FORMAT_YCBCR420 }
 
enum  drm_bus_flags {
  DRM_BUS_FLAG_DE_LOW = BIT(0) , DRM_BUS_FLAG_DE_HIGH = BIT(1) , DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE = BIT(2) , DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE = BIT(3) ,
  DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE = DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE , DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE = DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE , DRM_BUS_FLAG_DATA_MSB_TO_LSB = BIT(4) , DRM_BUS_FLAG_DATA_LSB_TO_MSB = BIT(5) ,
  DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE = BIT(6) , DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE = BIT(7) , DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE = DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE , DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE = DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE ,
  DRM_BUS_FLAG_SHARP_SIGNALS = BIT(8)
}
 

Functions

const char * drm_hdmi_connector_get_broadcast_rgb_name (enum drm_hdmi_broadcast_rgb broadcast_rgb)
 
const char * drm_hdmi_connector_get_output_format_name (enum drm_output_color_format fmt)
 
int drm_display_info_set_bus_formats (struct drm_display_info *info, const u32 *formats, unsigned int num_formats)
 
void drm_connector_cec_phys_addr_invalidate (struct drm_connector *connector)
 
void drm_connector_cec_phys_addr_set (struct drm_connector *connector)
 
int drm_connector_init (struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type)
 
int drm_connector_dynamic_init (struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type, struct i2c_adapter *ddc)
 
int drm_connector_init_with_ddc (struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type, struct i2c_adapter *ddc)
 
int drmm_connector_init (struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type, struct i2c_adapter *ddc)
 
int drmm_connector_hdmi_init (struct drm_device *dev, struct drm_connector *connector, const char *vendor, const char *product, const struct drm_connector_funcs *funcs, const struct drm_connector_hdmi_funcs *hdmi_funcs, int connector_type, struct i2c_adapter *ddc, unsigned long supported_formats, unsigned int max_bpc)
 
void drm_connector_attach_edid_property (struct drm_connector *connector)
 
int drm_connector_register (struct drm_connector *connector)
 
int drm_connector_dynamic_register (struct drm_connector *connector)
 
void drm_connector_unregister (struct drm_connector *connector)
 
int drm_connector_attach_encoder (struct drm_connector *connector, struct drm_encoder *encoder)
 
void drm_connector_cleanup (struct drm_connector *connector)
 
void drm_connector_oob_hotplug_event (struct fwnode_handle *connector_fwnode, enum drm_connector_status status)
 
const char * drm_get_connector_type_name (unsigned int connector_type)
 
const char * drm_get_connector_status_name (enum drm_connector_status status)
 
const char * drm_get_subpixel_order_name (enum subpixel_order order)
 
const char * drm_get_dpms_name (int val)
 
const char * drm_get_dvi_i_subconnector_name (int val)
 
const char * drm_get_dvi_i_select_name (int val)
 
const char * drm_get_tv_mode_name (int val)
 
const char * drm_get_tv_subconnector_name (int val)
 
const char * drm_get_tv_select_name (int val)
 
const char * drm_get_dp_subconnector_name (int val)
 
const char * drm_get_content_protection_name (int val)
 
const char * drm_get_hdcp_content_type_name (int val)
 
int drm_get_tv_mode_from_name (const char *name, size_t len)
 
int drm_mode_create_dvi_i_properties (struct drm_device *dev)
 
void drm_connector_attach_dp_subconnector_property (struct drm_connector *connector)
 
int drm_mode_create_tv_margin_properties (struct drm_device *dev)
 
int drm_mode_create_tv_properties_legacy (struct drm_device *dev, unsigned int num_modes, const char *const modes[])
 
int drm_mode_create_tv_properties (struct drm_device *dev, unsigned int supported_tv_modes)
 
void drm_connector_attach_tv_margin_properties (struct drm_connector *conn)
 
int drm_mode_create_scaling_mode_property (struct drm_device *dev)
 
int drm_connector_attach_content_type_property (struct drm_connector *dev)
 
int drm_connector_attach_scaling_mode_property (struct drm_connector *connector, u32 scaling_mode_mask)
 
int drm_connector_attach_vrr_capable_property (struct drm_connector *connector)
 
void drm_connector_attach_panel_type_property (struct drm_connector *connector)
 
int drm_connector_attach_broadcast_rgb_property (struct drm_connector *connector)
 
int drm_connector_attach_colorspace_property (struct drm_connector *connector)
 
void drm_connector_attach_hdr_output_metadata_property (struct drm_connector *connector)
 
bool drm_connector_atomic_hdr_metadata_equal (struct drm_connector_state *old_state, struct drm_connector_state *new_state)
 
int drm_mode_create_aspect_ratio_property (struct drm_device *dev)
 
int drm_mode_create_hdmi_colorspace_property (struct drm_connector *connector, u32 supported_colorspaces)
 
int drm_mode_create_dp_colorspace_property (struct drm_connector *connector, u32 supported_colorspaces)
 
int drm_mode_create_content_type_property (struct drm_device *dev)
 
int drm_mode_create_suggested_offset_properties (struct drm_device *dev)
 
int drm_connector_set_path_property (struct drm_connector *connector, const char *path)
 
int drm_connector_set_tile_property (struct drm_connector *connector)
 
int drm_connector_update_edid_property (struct drm_connector *connector, const struct edid *edid)
 
void drm_connector_set_link_status_property (struct drm_connector *connector, uint64_t link_status)
 
void drm_connector_set_vrr_capable_property (struct drm_connector *connector, bool capable)
 
int drm_connector_set_panel_orientation (struct drm_connector *connector, enum drm_panel_orientation panel_orientation)
 
int drm_connector_set_panel_orientation_with_quirk (struct drm_connector *connector, enum drm_panel_orientation panel_orientation, int width, int height)
 
int drm_connector_set_orientation_from_panel (struct drm_connector *connector, struct drm_panel *panel)
 
int drm_connector_attach_max_bpc_property (struct drm_connector *connector, int min, int max)
 
void drm_connector_create_privacy_screen_properties (struct drm_connector *conn)
 
void drm_connector_attach_privacy_screen_properties (struct drm_connector *conn)
 
void drm_connector_attach_privacy_screen_provider (struct drm_connector *connector, struct drm_privacy_screen *priv)
 
void drm_connector_update_privacy_screen (const struct drm_connector_state *connector_state)
 
struct drm_tile_group * drm_mode_create_tile_group (struct drm_device *dev, const char topology_id[9])
 
struct drm_tile_group * drm_mode_get_tile_group (struct drm_device *dev, const char topology_id[9])
 
void drm_mode_put_tile_group (struct drm_device *dev, struct drm_tile_group *tg)
 
void drm_connector_list_iter_begin (struct drm_device *dev, struct drm_connector_list_iter *iter)
 
struct drm_connector * drm_connector_list_iter_next (struct drm_connector_list_iter *iter)
 
void drm_connector_list_iter_end (struct drm_connector_list_iter *iter)
 
bool drm_connector_has_possible_encoder (struct drm_connector *connector, struct drm_encoder *encoder)
 
const char * drm_get_colorspace_name (enum drm_colorspace colorspace)
 

Macro Definition Documentation

◆ drm_connector_for_each_possible_encoder

#define drm_connector_for_each_possible_encoder (   connector,
  encoder 
)
Value:
(connector)->possible_encoders)
struct drm_encoder * encoder
Definition drm_encoder.h:211
#define drm_for_each_encoder_mask(encoder, dev, encoder_mask)
Definition drm_encoder.h:336
const struct device * dev
Definition drm_print.h:519

drm_connector_for_each_possible_encoder - iterate connector's possible encoders @connector: &struct drm_connector pointer @encoder: &struct drm_encoder pointer used as cursor

◆ DRM_CONNECTOR_HDMI_PRODUCT_LEN

#define DRM_CONNECTOR_HDMI_PRODUCT_LEN   16

◆ DRM_CONNECTOR_HDMI_VENDOR_LEN

#define DRM_CONNECTOR_HDMI_VENDOR_LEN   8

◆ DRM_CONNECTOR_POLL_CONNECT

#define DRM_CONNECTOR_POLL_CONNECT   (1 << 1)

◆ DRM_CONNECTOR_POLL_DISCONNECT

#define DRM_CONNECTOR_POLL_DISCONNECT   (1 << 2)

◆ DRM_CONNECTOR_POLL_HPD

#define DRM_CONNECTOR_POLL_HPD   (1 << 0)

◆ drm_for_each_connector_iter

#define drm_for_each_connector_iter (   connector,
  iter 
)     while ((connector = drm_connector_list_iter_next(iter)))

drm_for_each_connector_iter - connector_list iterator macro @connector: &struct drm_connector pointer used as cursor @iter: &struct drm_connector_list_iter

Note that @connector is only valid within the list body, if you want to use @connector after calling drm_connector_list_iter_end() then you need to grab your own reference first using drm_connector_get().

◆ MAX_ELD_BYTES

#define MAX_ELD_BYTES   128

◆ obj_to_connector

#define obj_to_connector (   x)    container_of(x, struct drm_connector, base)

Enumeration Type Documentation

◆ drm_bus_flags

enum drm_bus_flags - bus_flags info for &drm_display_info

This enum defines signal polarities and clock edge information for signals on a bus as bitmask flags.

The clock edge information is conveyed by two sets of symbols, DRM_BUS_FLAGS_*_DRIVE_* and DRM_BUS_FLAGS_*_SAMPLE_*. When this enum is used to describe a bus from the point of view of the transmitter, the *_DRIVE_* flags should be used. When used from the point of view of the receiver, the *_SAMPLE_* flags should be used. The *_DRIVE_* and *_SAMPLE_* flags alias each other, with the *_SAMPLE_POSEDGE and *_SAMPLE_NEGEDGE flags being equal to *_DRIVE_NEGEDGE and *_DRIVE_POSEDGE respectively. This simplifies code as signals are usually sampled on the opposite edge of the driving edge. Transmitters and receivers may however need to take other signal timings into account to convert between driving and sample edges.

Enumerator
DRM_BUS_FLAG_DE_LOW 

@DRM_BUS_FLAG_DE_LOW:

The Data Enable signal is active low

DRM_BUS_FLAG_DE_HIGH 

@DRM_BUS_FLAG_DE_HIGH:

The Data Enable signal is active high

DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE 

@DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE:

Data is driven on the rising edge of the pixel clock

DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE 

@DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE:

Data is driven on the falling edge of the pixel clock

DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE 

@DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE:

Data is sampled on the rising edge of the pixel clock

DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE 

@DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE:

Data is sampled on the falling edge of the pixel clock

DRM_BUS_FLAG_DATA_MSB_TO_LSB 

@DRM_BUS_FLAG_DATA_MSB_TO_LSB:

Data is transmitted MSB to LSB on the bus

DRM_BUS_FLAG_DATA_LSB_TO_MSB 

@DRM_BUS_FLAG_DATA_LSB_TO_MSB:

Data is transmitted LSB to MSB on the bus

DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE 

@DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE:

Sync signals are driven on the rising edge of the pixel clock

DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE 

@DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE:

Sync signals are driven on the falling edge of the pixel clock

DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE 

@DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE:

Sync signals are sampled on the rising edge of the pixel clock

DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE 

@DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE:

Sync signals are sampled on the falling edge of the pixel clock

DRM_BUS_FLAG_SHARP_SIGNALS 

@DRM_BUS_FLAG_SHARP_SIGNALS:

Set if the Sharp-specific signals (SPL, CLS, PS, REV) must be used

◆ drm_colorspace

enum drm_colorspace - color space

This enum is a consolidated colorimetry list supported by HDMI and DP protocol standard. The respective connectors will register a property with the subset of this list (supported by that respective protocol). Userspace will set the colorspace through a colorspace property which will be created and exposed to userspace.

DP definitions come from the DP v2.0 spec HDMI definitions come from the CTA-861-H spec

@DRM_MODE_COLORIMETRY_DEFAULT: Driver specific behavior. @DRM_MODE_COLORIMETRY_NO_DATA: Driver specific behavior. @DRM_MODE_COLORIMETRY_SMPTE_170M_YCC: (HDMI) SMPTE ST 170M colorimetry format @DRM_MODE_COLORIMETRY_BT709_YCC: (HDMI, DP) ITU-R BT.709 colorimetry format @DRM_MODE_COLORIMETRY_XVYCC_601: (HDMI, DP) xvYCC601 colorimetry format @DRM_MODE_COLORIMETRY_XVYCC_709: (HDMI, DP) xvYCC709 colorimetry format @DRM_MODE_COLORIMETRY_SYCC_601: (HDMI, DP) sYCC601 colorimetry format @DRM_MODE_COLORIMETRY_OPYCC_601: (HDMI, DP) opYCC601 colorimetry format @DRM_MODE_COLORIMETRY_OPRGB: (HDMI, DP) opRGB colorimetry format @DRM_MODE_COLORIMETRY_BT2020_CYCC: (HDMI, DP) ITU-R BT.2020 Y'c C'bc C'rc (constant luminance) colorimetry format @DRM_MODE_COLORIMETRY_BT2020_RGB: (HDMI, DP) ITU-R BT.2020 R' G' B' colorimetry format @DRM_MODE_COLORIMETRY_BT2020_YCC: (HDMI, DP) ITU-R BT.2020 Y' C'b C'r colorimetry format @DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65: (HDMI) SMPTE ST 2113 P3D65 colorimetry format @DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER: (HDMI) SMPTE ST 2113 P3DCI colorimetry format @DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED: (DP) RGB wide gamut fixed point colorimetry format @DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT: (DP) RGB wide gamut floating point (scRGB (IEC 61966-2-2)) colorimetry format @DRM_MODE_COLORIMETRY_BT601_YCC: (DP) ITU-R BT.601 colorimetry format The DP spec does not say whether this is the 525 or the 625 line version. @DRM_MODE_COLORIMETRY_COUNT: Not a valid value; merely used four counting

Enumerator
DRM_MODE_COLORIMETRY_DEFAULT 
DRM_MODE_COLORIMETRY_NO_DATA 
DRM_MODE_COLORIMETRY_SMPTE_170M_YCC 
DRM_MODE_COLORIMETRY_BT709_YCC 
DRM_MODE_COLORIMETRY_XVYCC_601 
DRM_MODE_COLORIMETRY_XVYCC_709 
DRM_MODE_COLORIMETRY_SYCC_601 
DRM_MODE_COLORIMETRY_OPYCC_601 
DRM_MODE_COLORIMETRY_OPRGB 
DRM_MODE_COLORIMETRY_BT2020_CYCC 
DRM_MODE_COLORIMETRY_BT2020_RGB 
DRM_MODE_COLORIMETRY_BT2020_YCC 
DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65 
DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER 
DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED 
DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT 
DRM_MODE_COLORIMETRY_BT601_YCC 
DRM_MODE_COLORIMETRY_COUNT 

◆ drm_connector_force

Enumerator
DRM_FORCE_UNSPECIFIED 
DRM_FORCE_OFF 
DRM_FORCE_ON 
DRM_FORCE_ON_DIGITAL 

◆ drm_connector_registration_state

enum drm_connector_registration_state - userspace registration status for a &drm_connector

This enum is used to track the status of initializing a connector and registering it with userspace, so that DRM can prevent bogus modesets on connectors that no longer exist.

Enumerator
DRM_CONNECTOR_INITIALIZING 

@DRM_CONNECTOR_INITIALIZING: The connector has just been created, but has yet to be exposed to userspace. There should be no additional restrictions to how the state of this connector may be modified.

DRM_CONNECTOR_REGISTERED 

@DRM_CONNECTOR_REGISTERED: The connector has been fully initialized and registered with sysfs, as such it has been exposed to userspace. There should be no additional restrictions to how the state of this connector may be modified.

DRM_CONNECTOR_UNREGISTERED 

@DRM_CONNECTOR_UNREGISTERED: The connector has either been exposed to userspace and has since been unregistered and removed from userspace, or the connector was unregistered before it had a chance to be exposed to userspace (e.g. still in the @DRM_CONNECTOR_INITIALIZING state). When a connector is unregistered, there are additional restrictions to how its state may be modified:

  • An unregistered connector may only have its DPMS changed from On->Off. Once DPMS is changed to Off, it may not be switched back to On.
  • Modesets are not allowed on unregistered connectors, unless they would result in disabling its assigned CRTCs. This means disabling a CRTC on an unregistered connector is OK, but enabling one is not.
  • Removing a CRTC from an unregistered connector is OK, but new CRTCs may never be assigned to an unregistered connector.

◆ drm_connector_status

enum drm_connector_status - status for a &drm_connector

This enum is used to track the connector status. There are no separate defines for the uapi!

Enumerator
connector_status_connected 

@connector_status_connected: The connector is definitely connected to a sink device, and can be enabled.

connector_status_disconnected 

@connector_status_disconnected: The connector isn't connected to a sink device which can be autodetect. For digital outputs like DP or HDMI (which can be realiable probed) this means there's really nothing there. It is driver-dependent whether a connector with this status can be lit up or not.

connector_status_unknown 

@connector_status_unknown: The connector's status could not be reliably detected. This happens when probing would either cause flicker (like load-detection when the connector is in use), or when a hardware resource isn't available (like when load-detection needs a free CRTC). It should be possible to light up the connector with one of the listed fallback modes. For default configuration userspace should only try to light up connectors with unknown status when there's not connector with @connector_status_connected.

◆ drm_connector_tv_mode

enum drm_connector_tv_mode - Analog TV output mode

This enum is used to indicate the TV output mode used on an analog TV connector.

WARNING: The values of this enum is uABI since they're exposed in the "TV mode" connector property.

Enumerator
DRM_MODE_TV_MODE_NTSC 

@DRM_MODE_TV_MODE_NTSC: CCIR System M (aka 525-lines) together with the NTSC Color Encoding.

DRM_MODE_TV_MODE_NTSC_443 

@DRM_MODE_TV_MODE_NTSC_443: Variant of @DRM_MODE_TV_MODE_NTSC. Uses a color subcarrier frequency of 4.43 MHz.

DRM_MODE_TV_MODE_NTSC_J 

@DRM_MODE_TV_MODE_NTSC_J: Variant of @DRM_MODE_TV_MODE_NTSC used in Japan. Uses a black level equals to the blanking level.

DRM_MODE_TV_MODE_PAL 

@DRM_MODE_TV_MODE_PAL: CCIR System B together with the PAL color system.

DRM_MODE_TV_MODE_PAL_M 

@DRM_MODE_TV_MODE_PAL_M: CCIR System M (aka 525-lines) together with the PAL color encoding

DRM_MODE_TV_MODE_PAL_N 

@DRM_MODE_TV_MODE_PAL_N: CCIR System N together with the PAL color encoding. It uses 625 lines, but has a color subcarrier frequency of 3.58MHz, the SECAM color space, and narrower channels compared to most of the other PAL variants.

DRM_MODE_TV_MODE_SECAM 

@DRM_MODE_TV_MODE_SECAM: CCIR System B together with the SECAM color system.

DRM_MODE_TV_MODE_MONOCHROME 

@DRM_MODE_TV_MODE_MONOCHROME: Use timings appropriate to the DRM mode, including equalizing pulses for a 525-line or 625-line mode, with no pedestal or color encoding.

DRM_MODE_TV_MODE_MAX 

@DRM_MODE_TV_MODE_MAX: Number of analog TV output modes.

Internal implementation detail; this is not uABI.

◆ drm_hdmi_broadcast_rgb

enum drm_hdmi_broadcast_rgb - Broadcast RGB Selection for an HDMI @drm_connector

Enumerator
DRM_HDMI_BROADCAST_RGB_AUTO 

@DRM_HDMI_BROADCAST_RGB_AUTO: The RGB range is selected automatically based on the mode.

DRM_HDMI_BROADCAST_RGB_FULL 

@DRM_HDMI_BROADCAST_RGB_FULL: Full range RGB is forced.

DRM_HDMI_BROADCAST_RGB_LIMITED 

@DRM_HDMI_BROADCAST_RGB_LIMITED: Limited range RGB is forced.

◆ drm_link_status

enum drm_link_status - connector's link_status property value

This enum is used as the connector's link status property value. It is set to the values defined in uapi.

@DRM_LINK_STATUS_GOOD: DP Link is Good as a result of successful link training @DRM_LINK_STATUS_BAD: DP Link is BAD as a result of link training failure

Enumerator
DRM_LINK_STATUS_GOOD 
DRM_LINK_STATUS_BAD 

◆ drm_output_color_format

enum drm_output_color_format - Output Color Format

This enum is a consolidated color format list supported by connectors. It's only ever really been used for HDMI and DP so far, so it's not exhaustive and can be extended to represent other formats in the future.

@DRM_OUTPUT_COLOR_FORMAT_RGB444: RGB output format @DRM_OUTPUT_COLOR_FORMAT_YCBCR444: YCbCr 4:4:4 output format (ie. not subsampled) @DRM_OUTPUT_COLOR_FORMAT_YCBCR422: YCbCr 4:2:2 output format (ie. with horizontal subsampling) @DRM_OUTPUT_COLOR_FORMAT_YCBCR420: YCbCr 4:2:0 output format (ie. with horizontal and vertical subsampling)

Enumerator
DRM_OUTPUT_COLOR_FORMAT_RGB444 
DRM_OUTPUT_COLOR_FORMAT_YCBCR444 
DRM_OUTPUT_COLOR_FORMAT_YCBCR422 
DRM_OUTPUT_COLOR_FORMAT_YCBCR420 

◆ drm_panel_orientation

enum drm_panel_orientation - panel_orientation info for &drm_display_info

This enum is used to track the (LCD) panel orientation. There are no separate defines for the uapi!

@DRM_MODE_PANEL_ORIENTATION_UNKNOWN: The drm driver has not provided any panel orientation information (normal for non panels) in this case the "panel orientation" connector prop will not be attached. @DRM_MODE_PANEL_ORIENTATION_NORMAL: The top side of the panel matches the top side of the device's casing. @DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP: The top side of the panel matches the bottom side of the device's casing, iow the panel is mounted upside-down. @DRM_MODE_PANEL_ORIENTATION_LEFT_UP: The left side of the panel matches the top side of the device's casing. @DRM_MODE_PANEL_ORIENTATION_RIGHT_UP: The right side of the panel matches the top side of the device's casing.

Enumerator
DRM_MODE_PANEL_ORIENTATION_UNKNOWN 
DRM_MODE_PANEL_ORIENTATION_NORMAL 
DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP 
DRM_MODE_PANEL_ORIENTATION_LEFT_UP 
DRM_MODE_PANEL_ORIENTATION_RIGHT_UP 

◆ drm_privacy_screen_status

enum drm_privacy_screen_status - privacy screen status

This enum is used to track and control the state of the integrated privacy screen present on some display panels, via the "privacy-screen sw-state" and "privacy-screen hw-state" properties. Note the _LOCKED enum values are only valid for the "privacy-screen hw-state" property.

@PRIVACY_SCREEN_DISABLED: The privacy-screen on the panel is disabled @PRIVACY_SCREEN_ENABLED: The privacy-screen on the panel is enabled @PRIVACY_SCREEN_DISABLED_LOCKED: The privacy-screen on the panel is disabled and locked (cannot be changed) @PRIVACY_SCREEN_ENABLED_LOCKED: The privacy-screen on the panel is enabled and locked (cannot be changed)

Enumerator
PRIVACY_SCREEN_DISABLED 
PRIVACY_SCREEN_ENABLED 
PRIVACY_SCREEN_DISABLED_LOCKED 
PRIVACY_SCREEN_ENABLED_LOCKED 

◆ subpixel_order

Enumerator
SubPixelUnknown 
SubPixelHorizontalRGB 
SubPixelHorizontalBGR 
SubPixelVerticalRGB 
SubPixelVerticalBGR 
SubPixelNone 

Function Documentation

◆ drm_connector_atomic_hdr_metadata_equal()

bool drm_connector_atomic_hdr_metadata_equal ( struct drm_connector_state *  old_state,
struct drm_connector_state *  new_state 
)

◆ drm_connector_attach_broadcast_rgb_property()

int drm_connector_attach_broadcast_rgb_property ( struct drm_connector *  connector)

◆ drm_connector_attach_colorspace_property()

int drm_connector_attach_colorspace_property ( struct drm_connector *  connector)

◆ drm_connector_attach_content_type_property()

int drm_connector_attach_content_type_property ( struct drm_connector *  dev)

◆ drm_connector_attach_dp_subconnector_property()

void drm_connector_attach_dp_subconnector_property ( struct drm_connector *  connector)

◆ drm_connector_attach_edid_property()

void drm_connector_attach_edid_property ( struct drm_connector *  connector)

◆ drm_connector_attach_encoder()

int drm_connector_attach_encoder ( struct drm_connector *  connector,
struct drm_encoder *  encoder 
)

◆ drm_connector_attach_hdr_output_metadata_property()

void drm_connector_attach_hdr_output_metadata_property ( struct drm_connector *  connector)

◆ drm_connector_attach_max_bpc_property()

int drm_connector_attach_max_bpc_property ( struct drm_connector *  connector,
int  min,
int  max 
)

◆ drm_connector_attach_panel_type_property()

void drm_connector_attach_panel_type_property ( struct drm_connector *  connector)

◆ drm_connector_attach_privacy_screen_properties()

void drm_connector_attach_privacy_screen_properties ( struct drm_connector *  conn)

◆ drm_connector_attach_privacy_screen_provider()

void drm_connector_attach_privacy_screen_provider ( struct drm_connector *  connector,
struct drm_privacy_screen *  priv 
)

◆ drm_connector_attach_scaling_mode_property()

int drm_connector_attach_scaling_mode_property ( struct drm_connector *  connector,
u32  scaling_mode_mask 
)

◆ drm_connector_attach_tv_margin_properties()

void drm_connector_attach_tv_margin_properties ( struct drm_connector *  conn)

◆ drm_connector_attach_vrr_capable_property()

int drm_connector_attach_vrr_capable_property ( struct drm_connector *  connector)

◆ drm_connector_cec_phys_addr_invalidate()

void drm_connector_cec_phys_addr_invalidate ( struct drm_connector *  connector)

◆ drm_connector_cec_phys_addr_set()

void drm_connector_cec_phys_addr_set ( struct drm_connector *  connector)

◆ drm_connector_cleanup()

void drm_connector_cleanup ( struct drm_connector *  connector)

◆ drm_connector_create_privacy_screen_properties()

void drm_connector_create_privacy_screen_properties ( struct drm_connector *  conn)

◆ drm_connector_dynamic_init()

int drm_connector_dynamic_init ( struct drm_device *  dev,
struct drm_connector *  connector,
const struct drm_connector_funcs *  funcs,
int  connector_type,
struct i2c_adapter *  ddc 
)

◆ drm_connector_dynamic_register()

int drm_connector_dynamic_register ( struct drm_connector *  connector)

◆ drm_connector_has_possible_encoder()

bool drm_connector_has_possible_encoder ( struct drm_connector *  connector,
struct drm_encoder *  encoder 
)

◆ drm_connector_init()

int drm_connector_init ( struct drm_device *  dev,
struct drm_connector *  connector,
const struct drm_connector_funcs *  funcs,
int  connector_type 
)

◆ drm_connector_init_with_ddc()

int drm_connector_init_with_ddc ( struct drm_device *  dev,
struct drm_connector *  connector,
const struct drm_connector_funcs *  funcs,
int  connector_type,
struct i2c_adapter *  ddc 
)

◆ drm_connector_list_iter_begin()

void drm_connector_list_iter_begin ( struct drm_device *  dev,
struct drm_connector_list_iter *  iter 
)

◆ drm_connector_list_iter_end()

void drm_connector_list_iter_end ( struct drm_connector_list_iter *  iter)

◆ drm_connector_list_iter_next()

struct drm_connector * drm_connector_list_iter_next ( struct drm_connector_list_iter *  iter)

◆ drm_connector_oob_hotplug_event()

void drm_connector_oob_hotplug_event ( struct fwnode_handle *  connector_fwnode,
enum drm_connector_status  status 
)

◆ drm_connector_register()

int drm_connector_register ( struct drm_connector *  connector)

◆ drm_connector_set_link_status_property()

void drm_connector_set_link_status_property ( struct drm_connector *  connector,
uint64_t  link_status 
)

◆ drm_connector_set_orientation_from_panel()

int drm_connector_set_orientation_from_panel ( struct drm_connector *  connector,
struct drm_panel *  panel 
)

◆ drm_connector_set_panel_orientation()

int drm_connector_set_panel_orientation ( struct drm_connector *  connector,
enum drm_panel_orientation  panel_orientation 
)

◆ drm_connector_set_panel_orientation_with_quirk()

int drm_connector_set_panel_orientation_with_quirk ( struct drm_connector *  connector,
enum drm_panel_orientation  panel_orientation,
int  width,
int  height 
)

◆ drm_connector_set_path_property()

int drm_connector_set_path_property ( struct drm_connector *  connector,
const char *  path 
)

◆ drm_connector_set_tile_property()

int drm_connector_set_tile_property ( struct drm_connector *  connector)

◆ drm_connector_set_vrr_capable_property()

void drm_connector_set_vrr_capable_property ( struct drm_connector *  connector,
bool  capable 
)

◆ drm_connector_unregister()

void drm_connector_unregister ( struct drm_connector *  connector)

◆ drm_connector_update_edid_property()

int drm_connector_update_edid_property ( struct drm_connector *  connector,
const struct edid *  edid 
)

◆ drm_connector_update_privacy_screen()

void drm_connector_update_privacy_screen ( const struct drm_connector_state *  connector_state)

◆ drm_display_info_set_bus_formats()

int drm_display_info_set_bus_formats ( struct drm_display_info *  info,
const u32 *  formats,
unsigned int  num_formats 
)

◆ drm_get_colorspace_name()

const char * drm_get_colorspace_name ( enum drm_colorspace  colorspace)

◆ drm_get_connector_status_name()

const char * drm_get_connector_status_name ( enum drm_connector_status  status)

◆ drm_get_connector_type_name()

const char * drm_get_connector_type_name ( unsigned int  connector_type)

◆ drm_get_content_protection_name()

const char * drm_get_content_protection_name ( int  val)

◆ drm_get_dp_subconnector_name()

const char * drm_get_dp_subconnector_name ( int  val)

◆ drm_get_dpms_name()

const char * drm_get_dpms_name ( int  val)

◆ drm_get_dvi_i_select_name()

const char * drm_get_dvi_i_select_name ( int  val)

◆ drm_get_dvi_i_subconnector_name()

const char * drm_get_dvi_i_subconnector_name ( int  val)

◆ drm_get_hdcp_content_type_name()

const char * drm_get_hdcp_content_type_name ( int  val)

◆ drm_get_subpixel_order_name()

const char * drm_get_subpixel_order_name ( enum subpixel_order  order)

◆ drm_get_tv_mode_from_name()

int drm_get_tv_mode_from_name ( const char *  name,
size_t  len 
)

◆ drm_get_tv_mode_name()

const char * drm_get_tv_mode_name ( int  val)

◆ drm_get_tv_select_name()

const char * drm_get_tv_select_name ( int  val)

◆ drm_get_tv_subconnector_name()

const char * drm_get_tv_subconnector_name ( int  val)

◆ drm_hdmi_connector_get_broadcast_rgb_name()

const char * drm_hdmi_connector_get_broadcast_rgb_name ( enum drm_hdmi_broadcast_rgb  broadcast_rgb)

◆ drm_hdmi_connector_get_output_format_name()

const char * drm_hdmi_connector_get_output_format_name ( enum drm_output_color_format  fmt)

◆ drm_mode_create_aspect_ratio_property()

int drm_mode_create_aspect_ratio_property ( struct drm_device *  dev)

◆ drm_mode_create_content_type_property()

int drm_mode_create_content_type_property ( struct drm_device *  dev)

◆ drm_mode_create_dp_colorspace_property()

int drm_mode_create_dp_colorspace_property ( struct drm_connector *  connector,
u32  supported_colorspaces 
)

◆ drm_mode_create_dvi_i_properties()

int drm_mode_create_dvi_i_properties ( struct drm_device *  dev)

◆ drm_mode_create_hdmi_colorspace_property()

int drm_mode_create_hdmi_colorspace_property ( struct drm_connector *  connector,
u32  supported_colorspaces 
)

◆ drm_mode_create_scaling_mode_property()

int drm_mode_create_scaling_mode_property ( struct drm_device *  dev)

◆ drm_mode_create_suggested_offset_properties()

int drm_mode_create_suggested_offset_properties ( struct drm_device *  dev)

◆ drm_mode_create_tile_group()

struct drm_tile_group * drm_mode_create_tile_group ( struct drm_device *  dev,
const char  topology_id[9] 
)

◆ drm_mode_create_tv_margin_properties()

int drm_mode_create_tv_margin_properties ( struct drm_device *  dev)

◆ drm_mode_create_tv_properties()

int drm_mode_create_tv_properties ( struct drm_device *  dev,
unsigned int  supported_tv_modes 
)

◆ drm_mode_create_tv_properties_legacy()

int drm_mode_create_tv_properties_legacy ( struct drm_device *  dev,
unsigned int  num_modes,
const char *const  modes[] 
)

◆ drm_mode_get_tile_group()

struct drm_tile_group * drm_mode_get_tile_group ( struct drm_device *  dev,
const char  topology_id[9] 
)

◆ drm_mode_put_tile_group()

void drm_mode_put_tile_group ( struct drm_device *  dev,
struct drm_tile_group *  tg 
)

◆ drmm_connector_hdmi_init()

int drmm_connector_hdmi_init ( struct drm_device *  dev,
struct drm_connector *  connector,
const char *  vendor,
const char *  product,
const struct drm_connector_funcs *  funcs,
const struct drm_connector_hdmi_funcs *  hdmi_funcs,
int  connector_type,
struct i2c_adapter *  ddc,
unsigned long  supported_formats,
unsigned int  max_bpc 
)

◆ drmm_connector_init()

int drmm_connector_init ( struct drm_device *  dev,
struct drm_connector *  connector,
const struct drm_connector_funcs *  funcs,
int  connector_type,
struct i2c_adapter *  ddc 
)