Lines Matching +full:e +full:- +full:ddc
1 // SPDX-License-Identifier: GPL-2.0+
42 * operation flags (&drm_bridge->ops) and bridge output type
43 * (&drm_bridge->type), as well as the DRM_BRIDGE_ATTACH_NO_CONNECTOR attach
48 * struct drm_bridge_connector - A connector backed by a chain of bridges
72 * hot-plug detection notification, if any (see &DRM_BRIDGE_OP_HPD).
94 /* -----------------------------------------------------------------------------
95 * Bridge Connector Hot-Plug Handling
106 drm_for_each_bridge_in_chain(bridge_connector->encoder, bridge) { in drm_bridge_connector_hpd_notify()
107 if (bridge->funcs->hpd_notify) in drm_bridge_connector_hpd_notify()
108 bridge->funcs->hpd_notify(bridge, status); in drm_bridge_connector_hpd_notify()
115 struct drm_connector *connector = &drm_bridge_connector->base; in drm_bridge_connector_handle_hpd()
116 struct drm_device *dev = connector->dev; in drm_bridge_connector_handle_hpd()
118 mutex_lock(&dev->mode_config.mutex); in drm_bridge_connector_handle_hpd()
119 connector->status = status; in drm_bridge_connector_handle_hpd()
120 mutex_unlock(&dev->mode_config.mutex); in drm_bridge_connector_handle_hpd()
146 struct drm_bridge *hpd = bridge_connector->bridge_hpd; in drm_bridge_connector_enable_hpd()
157 struct drm_bridge *hpd = bridge_connector->bridge_hpd; in drm_bridge_connector_disable_hpd()
163 /* -----------------------------------------------------------------------------
172 struct drm_bridge *detect = bridge_connector->bridge_detect; in drm_bridge_connector_detect()
176 status = detect->funcs->detect(detect); in drm_bridge_connector_detect()
180 switch (connector->connector_type) { in drm_bridge_connector_detect()
204 fwnode_handle_put(connector->fwnode); in drm_bridge_connector_destroy()
214 struct drm_encoder *encoder = bridge_connector->encoder; in drm_bridge_connector_debugfs_init()
217 list_for_each_entry(bridge, &encoder->bridge_chain, chain_node) { in drm_bridge_connector_debugfs_init()
218 if (bridge->funcs->debugfs_init) in drm_bridge_connector_debugfs_init()
219 bridge->funcs->debugfs_init(bridge, root); in drm_bridge_connector_debugfs_init()
234 /* -----------------------------------------------------------------------------
276 bridge = bridge_connector->bridge_edid; in drm_bridge_connector_get_modes()
281 * Otherwise if the display pipeline reports modes (e.g. with a fixed in drm_bridge_connector_get_modes()
284 bridge = bridge_connector->bridge_modes; in drm_bridge_connector_get_modes()
286 return bridge->funcs->get_modes(bridge, connector); in drm_bridge_connector_get_modes()
290 * VGA output with the DDC bus unconnected. The KMS core will add the in drm_bridge_connector_get_modes()
303 /* -----------------------------------------------------------------------------
308 * drm_bridge_connector_init - Initialise a connector for a chain of bridges
315 * (&drm_bridge->ops) and bridge output type (&drm_bridge->type), and none of
326 struct i2c_adapter *ddc = NULL; in drm_bridge_connector_init() local
333 return ERR_PTR(-ENOMEM); in drm_bridge_connector_init()
335 bridge_connector->encoder = encoder; in drm_bridge_connector_init()
341 connector = &bridge_connector->base; in drm_bridge_connector_init()
342 connector->interlace_allowed = true; in drm_bridge_connector_init()
353 if (!bridge->interlace_allowed) in drm_bridge_connector_init()
354 connector->interlace_allowed = false; in drm_bridge_connector_init()
356 if (bridge->ops & DRM_BRIDGE_OP_EDID) in drm_bridge_connector_init()
357 bridge_connector->bridge_edid = bridge; in drm_bridge_connector_init()
358 if (bridge->ops & DRM_BRIDGE_OP_HPD) in drm_bridge_connector_init()
359 bridge_connector->bridge_hpd = bridge; in drm_bridge_connector_init()
360 if (bridge->ops & DRM_BRIDGE_OP_DETECT) in drm_bridge_connector_init()
361 bridge_connector->bridge_detect = bridge; in drm_bridge_connector_init()
362 if (bridge->ops & DRM_BRIDGE_OP_MODES) in drm_bridge_connector_init()
363 bridge_connector->bridge_modes = bridge; in drm_bridge_connector_init()
366 connector_type = bridge->type; in drm_bridge_connector_init()
370 bridge->of_node) in drm_bridge_connector_init()
371 connector->fwnode = fwnode_handle_get(of_fwnode_handle(bridge->of_node)); in drm_bridge_connector_init()
374 if (bridge->ddc) in drm_bridge_connector_init()
375 ddc = bridge->ddc; in drm_bridge_connector_init()
383 return ERR_PTR(-EINVAL); in drm_bridge_connector_init()
388 connector_type, ddc); in drm_bridge_connector_init()
396 if (bridge_connector->bridge_hpd) in drm_bridge_connector_init()
397 connector->polled = DRM_CONNECTOR_POLL_HPD; in drm_bridge_connector_init()
398 else if (bridge_connector->bridge_detect) in drm_bridge_connector_init()
399 connector->polled = DRM_CONNECTOR_POLL_CONNECT in drm_bridge_connector_init()