Lines Matching refs:connector

24  * The DRM bridge connector helper object provides a DRM connector
25 * implementation that wraps a chain of &struct drm_bridge. The connector
30 * To use the helper, display controller drivers create a bridge connector with
32 * connector with the chain of bridges passed to the function and registers it
33 * with the DRM device. At that point the connector becomes fully usable, no
36 * The DRM bridge connector operations are implemented based on the operations
37 * provided by the bridges in the chain. Each connector operation is delegated
38 * to the bridge closest to the connector (at the end of the chain) that
44 * flag (none of the bridges shall create a DRM connector directly).
48 * struct drm_bridge_connector - A connector backed by a chain of bridges
52 * @base: The base DRM connector
64 * The last bridge in the chain (closest to the connector) that provides
71 * The last bridge in the chain (closest to the connector) that provides
78 * The last bridge in the chain (closest to the connector) that provides
79 * connector detection, if any (see &DRM_BRIDGE_OP_DETECT).
85 * The last bridge in the chain (closest to the connector) that provides
86 * connector modes detection, if any (see &DRM_BRIDGE_OP_MODES).
98 static void drm_bridge_connector_hpd_notify(struct drm_connector *connector,
102 to_drm_bridge_connector(connector);
115 struct drm_connector *connector = &drm_bridge_connector->base;
116 struct drm_device *dev = connector->dev;
119 connector->status = status;
122 drm_bridge_connector_hpd_notify(connector, status);
124 drm_kms_helper_connector_hotplug_event(connector);
133 static void drm_bridge_connector_oob_hotplug_event(struct drm_connector *connector,
137 to_drm_bridge_connector(connector);
142 static void drm_bridge_connector_enable_hpd(struct drm_connector *connector)
145 to_drm_bridge_connector(connector);
153 static void drm_bridge_connector_disable_hpd(struct drm_connector *connector)
156 to_drm_bridge_connector(connector);
168 drm_bridge_connector_detect(struct drm_connector *connector, bool force)
171 to_drm_bridge_connector(connector);
178 drm_bridge_connector_hpd_notify(connector, status);
180 switch (connector->connector_type) {
196 static void drm_bridge_connector_destroy(struct drm_connector *connector)
199 to_drm_bridge_connector(connector);
201 drm_connector_unregister(connector);
202 drm_connector_cleanup(connector);
204 fwnode_handle_put(connector->fwnode);
209 static void drm_bridge_connector_debugfs_init(struct drm_connector *connector,
213 to_drm_bridge_connector(connector);
238 static int drm_bridge_connector_get_modes_edid(struct drm_connector *connector,
245 status = drm_bridge_connector_detect(connector, false);
249 drm_edid = drm_bridge_edid_read(bridge, connector);
255 drm_edid_connector_update(connector, drm_edid);
256 n = drm_edid_connector_add_modes(connector);
262 drm_edid_connector_update(connector, NULL);
266 static int drm_bridge_connector_get_modes(struct drm_connector *connector)
269 to_drm_bridge_connector(connector);
278 return drm_bridge_connector_get_modes_edid(connector, bridge);
286 return bridge->funcs->get_modes(bridge, connector);
308 * drm_bridge_connector_init - Initialise a connector for a chain of bridges
313 * device. The connector is associated with a chain of bridges that starts at
316 * them may create a DRM connector directly.
318 * Returns a pointer to the new connector on success, or a negative error
325 struct drm_connector *connector;
341 connector = &bridge_connector->base;
342 connector->interlace_allowed = true;
345 * Initialise connector status handling. First locate the furthest
347 * initialise the connector polling mode, using HPD if available and
354 connector->interlace_allowed = false;
371 connector->fwnode = fwnode_handle_get(of_fwnode_handle(bridge->of_node));
386 ret = drm_connector_init_with_ddc(drm, connector,
394 drm_connector_helper_add(connector, &drm_bridge_connector_helper_funcs);
397 connector->polled = DRM_CONNECTOR_POLL_HPD;
399 connector->polled = DRM_CONNECTOR_POLL_CONNECT
403 drm_panel_bridge_set_orientation(connector, panel_bridge);
405 return connector;