Lines Matching +full:hdmi +full:- +full:connector

29 #include <linux/hdmi.h>
50 DRM_FORCE_ON_DIGITAL, /* for DVI-I use digital connector */
54 * enum drm_connector_status - status for a &drm_connector
56 * This enum is used to track the connector status. There are no separate
61 * @connector_status_connected: The connector is definitely connected to
66 * @connector_status_disconnected: The connector isn't connected to a
68 * HDMI (which can be realiable probed) this means there's really
69 * nothing there. It is driver-dependent whether a connector with this
74 * @connector_status_unknown: The connector's status could not be
76 * flicker (like load-detection when the connector is in use), or when a
77 * hardware resource isn't available (like when load-detection needs a
78 * free CRTC). It should be possible to light up the connector with one
81 * there's not connector with @connector_status_connected.
87 * enum drm_connector_registration_status - userspace registration status for
90 * This enum is used to track the status of initializing a connector and
96 * @DRM_CONNECTOR_INITIALIZING: The connector has just been created,
98 * additional restrictions to how the state of this connector may be
104 * @DRM_CONNECTOR_REGISTERED: The connector has been fully initialized
107 * state of this connector may be modified.
112 * @DRM_CONNECTOR_UNREGISTERED: The connector has either been exposed
114 * userspace, or the connector was unregistered before it had a chance
116 * @DRM_CONNECTOR_INITIALIZING state). When a connector is
120 * - An unregistered connector may only have its DPMS changed from
121 * On->Off. Once DPMS is changed to Off, it may not be switched back
123 * - Modesets are not allowed on unregistered connectors, unless they
125 * disabling a CRTC on an unregistered connector is OK, but enabling
127 * - Removing a CRTC from an unregistered connector is OK, but new
128 * CRTCs may never be assigned to an unregistered connector.
158 * struct drm_scdc - Information about scdc capabilities of a HDMI 2.0 sink
161 * HDMI 2.0 sink. In case of a HDMI 1.4 sink, all parameter must be 0.
180 * struct drm_hdmi_info - runtime information about the connected HDMI sink
182 * Describes if a given display supports advanced HDMI 2.0 features.
183 * This information is available in CEA-861-F extension blocks (like HF-VSDB).
192 * defined by the CEA-861-G spec is 219, so the size is 256 bits to map
199 * output also, along with normal HDMI outputs. The max VIC defined by
200 * the CEA-861-G spec is 219, so the size is 256 bits to map up to 256
213 * enum drm_link_status - connector's link_status property value
215 * This enum is used as the connector's link status property value.
229 * enum drm_panel_orientation - panel_orientation info for &drm_display_info
237 * orientation" connector prop will not be
243 * the panel is mounted upside-down.
250 DRM_MODE_PANEL_ORIENTATION_UNKNOWN = -1,
258 * struct drm_monitor_range_info - Panel's Monitor range in EDID for
275 * This is a consolidated colorimetry list supported by HDMI and
307 * enum drm_bus_flags - bus_flags info for &drm_display_info
412 * Set if the Sharp-specific signals (SPL, CLS, PS, REV) must be used
418 * struct drm_display_info - runtime data about the connected sink
421 * fixed display sinks like built-in panels there's not much difference between
440 * @bpc: Maximum bits per color channel. Used by HDMI and DP outputs.
455 * @panel_orientation: Read only connector property for built-in panels,
464 * @color_formats: HDMI Color formats, selects between RGB and YCrCb
496 * @dvi_dual: Dual-link DVI sink?
501 * @is_hdmi: True if the sink is an HDMI device.
509 * @has_hdmi_infoframe: Does the sink support the HDMI infoframe?
520 * @edid_hdmi_dc_modes: Mask of supported hdmi deep color modes. Even
526 * @cea_rev: CEA revision of the HDMI sink.
531 * @hdmi: advance features of a HDMI sink.
533 struct drm_hdmi_info hdmi; member
551 * struct drm_connector_tv_margins - TV connector related margins
579 * struct drm_tv_connector_state - TV connector related states
603 * struct drm_connector_state - mutable connector state
606 /** @connector: backpointer to the connector */
607 struct drm_connector *connector; member
610 * @crtc: CRTC to connect connector to, NULL if disabled.
636 * @link_status: Connector link_status to keep track of whether link is
645 * @commit: Tracks the pending commit to prevent use-after-free conditions.
651 /** @tv: TV connector state */
657 * This tracks whether a connector is aware of the self refresh state.
658 * It should be set to true for those connector implementations which
669 * @picture_aspect_ratio: Connector property to control the
670 * HDMI infoframe aspect ratio setting.
678 * @content_type: Connector property to control the
679 * HDMI infoframe content type setting.
686 * @hdcp_content_type: Connector property to pass the type of
692 * @scaling_mode: Connector property to control the
693 * upscaling, mostly used for built-in panels.
698 * @content_protection: Connector property to request content
704 * @colorspace: State variable for Connector property to request
713 * Holds the framebuffer and out-fence for a writeback connector. As
724 * @max_requested_bpc: Connector property to limit the maximum bit
730 * @max_bpc: Connector max_bpc based on the requested max_bpc property
731 * and the connector bpc limitations obtained from edid.
743 * struct drm_connector_funcs - control connectors on a given device
753 * Legacy entry point to set the per-connector DPMS state. Legacy DPMS
754 * is exposed as a standard property on the connector, but diverted to
756 * implement the 4 level DPMS support on the connector any more, but
766 int (*dpms)(struct drm_connector *connector, int mode);
771 * Reset connector hardware and software state to off. This function isn't
778 void (*reset)(struct drm_connector *connector);
783 * Check to see if anything is attached to the connector. The parameter
785 * connector due to a user request. force can be used by the driver to
788 * This callback is optional, if not implemented the connector will be
795 * core entry point to probe connector state is @fill_modes.
804 * drm_connector_status indicating the connector's status.
806 enum drm_connector_status (*detect)(struct drm_connector *connector,
813 * connector is forced to a certain state by userspace, either through
821 * core entry point to probe connector state is @fill_modes.
823 void (*force)(struct drm_connector *connector);
838 * received for this output connector->edid must be NULL.
848 int (*fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height);
854 * connector.
857 * driver-private properties. For atomic drivers it is not used because
864 int (*set_property)(struct drm_connector *connector, struct drm_property *property,
871 * interfaces attached to the connector, light backlight control, i2c,
874 * core drm connector interfaces. Everything added from this callback
883 int (*late_register)(struct drm_connector *connector);
889 * userspace interfaces attached to the connector from
896 void (*early_unregister)(struct drm_connector *connector);
901 * Clean up connector resources. This is called at driver unload time
903 * when a connector is being hot-unplugged for drivers that support
904 * connector hotplugging (e.g. DisplayPort MST).
906 void (*destroy)(struct drm_connector *connector);
911 * Duplicate the current atomic state for this connector and return it.
922 * state structure to extend it with driver-private state should use
939 struct drm_connector_state *(*atomic_duplicate_state)(struct drm_connector *connector);
949 void (*atomic_destroy_state)(struct drm_connector *connector,
955 * Decode a driver-private property value and store the decoded value
956 * into the passed-in state structure. Since the atomic core decodes all
961 * Such driver-private properties should really only be implemented for
970 * driver-private atomic properties.
987 * 0 if the property has been found, -EINVAL if the property isn't
989 * asks for properties attached to this connector). No other validation
994 int (*atomic_set_property)(struct drm_connector *connector,
1002 * Reads out the decoded driver-private property. This is used to
1009 * driver-private atomic properties.
1013 * 0 on success, -EINVAL if the property isn't implemented by the
1015 * properties attached to this connector).
1017 int (*atomic_get_property)(struct drm_connector *connector,
1036 * struct drm_cmdline_mode - DRM Mode passed through the kernel command-line
1038 * Each connector can have an initial mode with additional options
1040 * express those parameters and will be filled by the command-line
1054 * Has a mode been read from the command-line?
1133 * Ignore the hotplug state of the connector, and force its
1151 * drm-connector "panel orientation" property override value,
1163 * struct drm_connector - central DRM connector control structure
1165 * Each connector may be connected to one or more CRTCs, or may be clonable by
1166 * another connector if they can share a CRTC. Each connector also has a specific
1195 * @mutex: Lock for general connector state, but currently only protects
1196 * @registered. Most of the connector state is still protected by
1202 * @index: Compacted connector index, which matches the position inside
1203 * the mode_config.list for drivers not supporting hot-add/removing. Can
1205 * connector.
1214 /** @connector_type_id: index into connector type enum */
1218 * Can this connector handle interlaced modes? Only used by
1224 * Can this connector handle doublescan? Only used by
1230 * Can this connector handle stereo modes? Only used by
1236 * @ycbcr_420_allowed : This bool indicates if this connector is
1244 * @registration_state: Is this connector initializing, exposed
1253 * Modes available on this connector (from fill_modes() + user).
1275 * when a display is detected. For non hot-pluggable displays such as
1284 /** @funcs: connector control functions */
1294 /** @properties: property tracking for this connector */
1305 * query hardware support for variable refresh rate on a connector.
1306 * connector. Drivers can add the property to a connector by
1315 * @colorspace_property: Connector property to set the suitable
1329 * @max_bpc_property: Default connector property for the max bpc to be
1330 * driven out of the connector.
1341 * Connector polling mode, a combination of
1344 * The connector generates hotplug events and doesn't need to be
1349 * Periodically poll the connector for connection.
1352 * Periodically poll the connector for disconnection, without
1353 * causing flickering even when the connector is in use. DACs should
1369 /** @helper_private: mid-layer private data */
1372 /** @cmdline_mode: mode line parsed from the kernel cmdline for this connector */
1378 /** @epoch_counter: used to detect any other changes in connector, besides status */
1383 * connector, drm_encoder_index() determines the index into the bitfield
1389 * @encoder: Currently bound encoder driving this connector, if any.
1390 * Only really meaningful for non-atomic drivers. Atomic drivers should
1397 /** @eld: EDID-like data, if present */
1414 * A connector usually has its associated ddc adapter. If a driver uses
1415 * this field, then an appropriate symbolic link is created in connector
1434 * in Displayport compliance testing - Displayport Link CTS Core 1.2
1445 /** @debugfs_entry: debugfs directory for this connector */
1451 * Current atomic state for this connector.
1454 * nonblocking atomic commits access the current connector state without
1473 * dual-link LVDS or dual-link DSI, the driver should try to not expose
1481 /** @has_tile: is this connector connected to a tiled monitor */
1502 * connector from any context, in conjunction with
1514 struct drm_connector *connector,
1518 struct drm_connector *connector,
1522 void drm_connector_attach_edid_property(struct drm_connector *connector);
1523 int drm_connector_register(struct drm_connector *connector);
1524 void drm_connector_unregister(struct drm_connector *connector);
1525 int drm_connector_attach_encoder(struct drm_connector *connector,
1528 void drm_connector_cleanup(struct drm_connector *connector);
1530 static inline unsigned int drm_connector_index(const struct drm_connector *connector) in drm_connector_index() argument
1532 return connector->index; in drm_connector_index()
1535 static inline u32 drm_connector_mask(const struct drm_connector *connector) in drm_connector_mask() argument
1537 return 1 << connector->index; in drm_connector_mask()
1541 * drm_connector_lookup - lookup connector object
1544 * @id: connector object id
1546 * This function looks up the connector object specified by id
1559 * drm_connector_get - acquire a connector reference
1560 * @connector: DRM connector
1562 * This function increments the connector's refcount.
1564 static inline void drm_connector_get(struct drm_connector *connector) in drm_connector_get() argument
1566 drm_mode_object_get(&connector->base); in drm_connector_get()
1570 * drm_connector_put - release a connector reference
1571 * @connector: DRM connector
1573 * This function decrements the connector's reference count and frees the
1576 static inline void drm_connector_put(struct drm_connector *connector) in drm_connector_put() argument
1578 drm_mode_object_put(&connector->base); in drm_connector_put()
1582 * drm_connector_is_unregistered - has the connector been unregistered from
1584 * @connector: DRM connector
1586 * Checks whether or not @connector has been unregistered from userspace.
1589 * True if the connector was unregistered, false if the connector is
1593 drm_connector_is_unregistered(struct drm_connector *connector) in drm_connector_is_unregistered() argument
1595 return READ_ONCE(connector->registration_state) == in drm_connector_is_unregistered()
1612 void drm_connector_attach_dp_subconnector_property(struct drm_connector *connector);
1621 int drm_connector_attach_scaling_mode_property(struct drm_connector *connector,
1624 struct drm_connector *connector);
1626 int drm_mode_create_hdmi_colorspace_property(struct drm_connector *connector);
1627 int drm_mode_create_dp_colorspace_property(struct drm_connector *connector);
1634 int drm_connector_set_path_property(struct drm_connector *connector,
1636 int drm_connector_set_tile_property(struct drm_connector *connector);
1637 int drm_connector_update_edid_property(struct drm_connector *connector,
1639 void drm_connector_set_link_status_property(struct drm_connector *connector,
1642 struct drm_connector *connector, bool capable);
1644 struct drm_connector *connector,
1647 struct drm_connector *connector,
1650 int drm_connector_attach_max_bpc_property(struct drm_connector *connector,
1654 * struct drm_tile_group - Tile group metadata
1658 * @group_data: Sink-private data identifying this group
1678 * struct drm_connector_list_iter - connector_list iterator
1698 bool drm_connector_has_possible_encoder(struct drm_connector *connector,
1702 * drm_for_each_connector_iter - connector_list iterator macro
1703 * @connector: &struct drm_connector pointer used as cursor
1706 * Note that @connector is only valid within the list body, if you want to use
1707 * @connector after calling drm_connector_list_iter_end() then you need to grab
1710 #define drm_for_each_connector_iter(connector, iter) \ argument
1711 while ((connector = drm_connector_list_iter_next(iter)))
1714 * drm_connector_for_each_possible_encoder - iterate connector's possible encoders
1715 * @connector: &struct drm_connector pointer
1718 #define drm_connector_for_each_possible_encoder(connector, encoder) \ argument
1719 drm_for_each_encoder_mask(encoder, (connector)->dev, \
1720 (connector)->possible_encoders)