Lines Matching full:connector
22 * The DRM bridge connector helper object provides a DRM connector
23 * implementation that wraps a chain of &struct drm_bridge. The connector
28 * To use the helper, display controller drivers create a bridge connector with
30 * connector with the chain of bridges passed to the function and registers it
31 * with the DRM device. At that point the connector becomes fully usable, no
34 * The DRM bridge connector operations are implemented based on the operations
35 * provided by the bridges in the chain. Each connector operation is delegated
36 * to the bridge closest to the connector (at the end of the chain) that
42 * flag (none of the bridges shall create a DRM connector directly).
46 * struct drm_bridge_connector - A connector backed by a chain of bridges
50 * @base: The base DRM connector
62 * The last bridge in the chain (closest to the connector) that provides
69 * The last bridge in the chain (closest to the connector) that provides
76 * The last bridge in the chain (closest to the connector) that provides
77 * connector detection, if any (see &DRM_BRIDGE_OP_DETECT).
83 * The last bridge in the chain (closest to the connector) that provides
84 * connector modes detection, if any (see &DRM_BRIDGE_OP_MODES).
93 * Bridge Connector Hot-Plug Handling
96 static void drm_bridge_connector_hpd_notify(struct drm_connector *connector, in drm_bridge_connector_hpd_notify() argument
100 to_drm_bridge_connector(connector); in drm_bridge_connector_hpd_notify()
114 struct drm_connector *connector = &drm_bridge_connector->base; in drm_bridge_connector_hpd_cb() local
115 struct drm_device *dev = connector->dev; in drm_bridge_connector_hpd_cb()
119 old_status = connector->status; in drm_bridge_connector_hpd_cb()
120 connector->status = status; in drm_bridge_connector_hpd_cb()
126 drm_bridge_connector_hpd_notify(connector, status); in drm_bridge_connector_hpd_cb()
132 * drm_bridge_connector_enable_hpd - Enable hot-plug detection for the connector
133 * @connector: The DRM bridge connector
135 * This function enables hot-plug detection for the given bridge connector.
138 void drm_bridge_connector_enable_hpd(struct drm_connector *connector) in drm_bridge_connector_enable_hpd() argument
141 to_drm_bridge_connector(connector); in drm_bridge_connector_enable_hpd()
152 * connector
153 * @connector: The DRM bridge connector
155 * This function disables hot-plug detection for the given bridge connector.
158 void drm_bridge_connector_disable_hpd(struct drm_connector *connector) in drm_bridge_connector_disable_hpd() argument
161 to_drm_bridge_connector(connector); in drm_bridge_connector_disable_hpd()
170 * Bridge Connector Functions
174 drm_bridge_connector_detect(struct drm_connector *connector, bool force) in drm_bridge_connector_detect() argument
177 to_drm_bridge_connector(connector); in drm_bridge_connector_detect()
184 drm_bridge_connector_hpd_notify(connector, status); in drm_bridge_connector_detect()
186 switch (connector->connector_type) { in drm_bridge_connector_detect()
202 static void drm_bridge_connector_destroy(struct drm_connector *connector) in drm_bridge_connector_destroy() argument
205 to_drm_bridge_connector(connector); in drm_bridge_connector_destroy()
213 drm_connector_unregister(connector); in drm_bridge_connector_destroy()
214 drm_connector_cleanup(connector); in drm_bridge_connector_destroy()
229 * Bridge Connector Helper Functions
232 static int drm_bridge_connector_get_modes_edid(struct drm_connector *connector, in drm_bridge_connector_get_modes_edid() argument
239 status = drm_bridge_connector_detect(connector, false); in drm_bridge_connector_get_modes_edid()
243 edid = bridge->funcs->get_edid(bridge, connector); in drm_bridge_connector_get_modes_edid()
249 drm_connector_update_edid_property(connector, edid); in drm_bridge_connector_get_modes_edid()
250 n = drm_add_edid_modes(connector, edid); in drm_bridge_connector_get_modes_edid()
256 drm_connector_update_edid_property(connector, NULL); in drm_bridge_connector_get_modes_edid()
260 static int drm_bridge_connector_get_modes(struct drm_connector *connector) in drm_bridge_connector_get_modes() argument
263 to_drm_bridge_connector(connector); in drm_bridge_connector_get_modes()
272 return drm_bridge_connector_get_modes_edid(connector, bridge); in drm_bridge_connector_get_modes()
280 return bridge->funcs->get_modes(bridge, connector); in drm_bridge_connector_get_modes()
296 * Bridge Connector Initialisation
300 * drm_bridge_connector_init - Initialise a connector for a chain of bridges
305 * device. The connector is associated with a chain of bridges that starts at
308 * them may create a DRM connector directly.
310 * Returns a pointer to the new connector on success, or a negative error
317 struct drm_connector *connector; in drm_bridge_connector_init() local
332 connector = &bridge_connector->base; in drm_bridge_connector_init()
333 connector->interlace_allowed = true; in drm_bridge_connector_init()
336 * Initialise connector status handling. First locate the furthest in drm_bridge_connector_init()
338 * initialise the connector polling mode, using HPD if available and in drm_bridge_connector_init()
345 connector->interlace_allowed = false; in drm_bridge_connector_init()
368 drm_connector_init_with_ddc(drm, connector, &drm_bridge_connector_funcs, in drm_bridge_connector_init()
370 drm_connector_helper_add(connector, &drm_bridge_connector_helper_funcs); in drm_bridge_connector_init()
373 connector->polled = DRM_CONNECTOR_POLL_HPD; in drm_bridge_connector_init()
375 connector->polled = DRM_CONNECTOR_POLL_CONNECT in drm_bridge_connector_init()
378 return connector; in drm_bridge_connector_init()