Lines Matching +full:e +full:- +full:ddc

1 // SPDX-License-Identifier: GPL-2.0+
40 * operation flags (&drm_bridge->ops) and bridge output type
41 * (&drm_bridge->type), as well as the DRM_BRIDGE_ATTACH_NO_CONNECTOR attach
46 * struct drm_bridge_connector - A connector backed by a chain of bridges
70 * hot-plug detection notification, if any (see &DRM_BRIDGE_OP_HPD).
92 /* -----------------------------------------------------------------------------
93 * Bridge Connector Hot-Plug Handling
104 drm_for_each_bridge_in_chain(bridge_connector->encoder, bridge) { in drm_bridge_connector_hpd_notify()
105 if (bridge->funcs->hpd_notify) in drm_bridge_connector_hpd_notify()
106 bridge->funcs->hpd_notify(bridge, status); in drm_bridge_connector_hpd_notify()
114 struct drm_connector *connector = &drm_bridge_connector->base; in drm_bridge_connector_hpd_cb()
115 struct drm_device *dev = connector->dev; in drm_bridge_connector_hpd_cb()
118 mutex_lock(&dev->mode_config.mutex); 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()
121 mutex_unlock(&dev->mode_config.mutex); in drm_bridge_connector_hpd_cb()
132 * drm_bridge_connector_enable_hpd - Enable hot-plug detection for the connector
135 * This function enables hot-plug detection for the given bridge connector.
142 struct drm_bridge *hpd = bridge_connector->bridge_hpd; in drm_bridge_connector_enable_hpd()
151 * drm_bridge_connector_disable_hpd - Disable hot-plug detection for the
155 * This function disables hot-plug detection for the given bridge connector.
162 struct drm_bridge *hpd = bridge_connector->bridge_hpd; in drm_bridge_connector_disable_hpd()
169 /* -----------------------------------------------------------------------------
178 struct drm_bridge *detect = bridge_connector->bridge_detect; in drm_bridge_connector_detect()
182 status = detect->funcs->detect(detect); in drm_bridge_connector_detect()
186 switch (connector->connector_type) { in drm_bridge_connector_detect()
207 if (bridge_connector->bridge_hpd) { in drm_bridge_connector_destroy()
208 struct drm_bridge *hpd = bridge_connector->bridge_hpd; in drm_bridge_connector_destroy()
228 /* -----------------------------------------------------------------------------
243 edid = bridge->funcs->get_edid(bridge, connector); in drm_bridge_connector_get_modes_edid()
270 bridge = bridge_connector->bridge_edid; in drm_bridge_connector_get_modes()
275 * Otherwise if the display pipeline reports modes (e.g. with a fixed in drm_bridge_connector_get_modes()
278 bridge = bridge_connector->bridge_modes; in drm_bridge_connector_get_modes()
280 return bridge->funcs->get_modes(bridge, connector); in drm_bridge_connector_get_modes()
284 * VGA output with the DDC bus unconnected. The KMS core will add the in drm_bridge_connector_get_modes()
295 /* -----------------------------------------------------------------------------
300 * drm_bridge_connector_init - Initialise a connector for a chain of bridges
307 * (&drm_bridge->ops) and bridge output type (&drm_bridge->type), and none of
318 struct i2c_adapter *ddc = NULL; in drm_bridge_connector_init() local
324 return ERR_PTR(-ENOMEM); in drm_bridge_connector_init()
326 bridge_connector->encoder = encoder; in drm_bridge_connector_init()
332 connector = &bridge_connector->base; in drm_bridge_connector_init()
333 connector->interlace_allowed = true; in drm_bridge_connector_init()
344 if (!bridge->interlace_allowed) in drm_bridge_connector_init()
345 connector->interlace_allowed = false; in drm_bridge_connector_init()
347 if (bridge->ops & DRM_BRIDGE_OP_EDID) in drm_bridge_connector_init()
348 bridge_connector->bridge_edid = bridge; in drm_bridge_connector_init()
349 if (bridge->ops & DRM_BRIDGE_OP_HPD) in drm_bridge_connector_init()
350 bridge_connector->bridge_hpd = bridge; in drm_bridge_connector_init()
351 if (bridge->ops & DRM_BRIDGE_OP_DETECT) in drm_bridge_connector_init()
352 bridge_connector->bridge_detect = bridge; in drm_bridge_connector_init()
353 if (bridge->ops & DRM_BRIDGE_OP_MODES) in drm_bridge_connector_init()
354 bridge_connector->bridge_modes = bridge; in drm_bridge_connector_init()
357 connector_type = bridge->type; in drm_bridge_connector_init()
359 if (bridge->ddc) in drm_bridge_connector_init()
360 ddc = bridge->ddc; in drm_bridge_connector_init()
365 return ERR_PTR(-EINVAL); in drm_bridge_connector_init()
369 connector_type, ddc); in drm_bridge_connector_init()
372 if (bridge_connector->bridge_hpd) in drm_bridge_connector_init()
373 connector->polled = DRM_CONNECTOR_POLL_HPD; in drm_bridge_connector_init()
374 else if (bridge_connector->bridge_detect) in drm_bridge_connector_init()
375 connector->polled = DRM_CONNECTOR_POLL_CONNECT in drm_bridge_connector_init()