Lines Matching full:bridge

22 	struct drm_bridge bridge;  member
29 drm_bridge_to_panel_bridge(struct drm_bridge *bridge) in drm_bridge_to_panel_bridge() argument
31 return container_of(bridge, struct panel_bridge, bridge); in drm_bridge_to_panel_bridge()
61 static int panel_bridge_attach(struct drm_bridge *bridge, in panel_bridge_attach() argument
65 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_attach()
75 ret = drm_connector_init(bridge->dev, connector, in panel_bridge_attach()
83 drm_panel_bridge_set_orientation(connector, bridge); in panel_bridge_attach()
88 if (bridge->dev->registered) { in panel_bridge_attach()
97 static void panel_bridge_detach(struct drm_bridge *bridge) in panel_bridge_detach() argument
99 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_detach()
107 * drm_device pointer can only be retrieved when the bridge is attached. in panel_bridge_detach()
113 static void panel_bridge_atomic_pre_enable(struct drm_bridge *bridge, in panel_bridge_atomic_pre_enable() argument
116 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_pre_enable()
117 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_pre_enable()
132 static void panel_bridge_atomic_enable(struct drm_bridge *bridge, in panel_bridge_atomic_enable() argument
135 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_enable()
136 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_enable()
151 static void panel_bridge_atomic_disable(struct drm_bridge *bridge, in panel_bridge_atomic_disable() argument
154 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_disable()
155 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_disable()
170 static void panel_bridge_atomic_post_disable(struct drm_bridge *bridge, in panel_bridge_atomic_post_disable() argument
173 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_post_disable()
174 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_post_disable()
189 static int panel_bridge_get_modes(struct drm_bridge *bridge, in panel_bridge_get_modes() argument
192 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_get_modes()
197 static void panel_bridge_debugfs_init(struct drm_bridge *bridge, in panel_bridge_debugfs_init() argument
200 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_debugfs_init()
226 * @bridge: The drm_bridge to be checked.
228 * Returns true if the bridge is a panel bridge, or false otherwise.
230 bool drm_bridge_is_panel(const struct drm_bridge *bridge) in drm_bridge_is_panel() argument
232 return bridge->funcs == &panel_bridge_bridge_funcs; in drm_bridge_is_panel()
246 * wrap that panel in the new bridge, and the result can then be
250 * with connector creation. When done with the bridge (after
251 * drm_mode_config_cleanup() if the bridge has already been attached), then
291 panel_bridge = devm_drm_bridge_alloc(panel->dev, struct panel_bridge, bridge, in drm_panel_bridge_add_typed()
299 panel_bridge->bridge.of_node = panel->dev->of_node; in drm_panel_bridge_add_typed()
300 panel_bridge->bridge.ops = DRM_BRIDGE_OP_MODES; in drm_panel_bridge_add_typed()
301 panel_bridge->bridge.type = connector_type; in drm_panel_bridge_add_typed()
302 panel_bridge->bridge.pre_enable_prev_first = panel->prepare_prev_first; in drm_panel_bridge_add_typed()
304 drm_bridge_add(&panel_bridge->bridge); in drm_panel_bridge_add_typed()
306 return &panel_bridge->bridge; in drm_panel_bridge_add_typed()
314 * @bridge: The drm_bridge being freed.
316 void drm_panel_bridge_remove(struct drm_bridge *bridge) in drm_panel_bridge_remove() argument
320 if (!bridge) in drm_panel_bridge_remove()
323 if (!drm_bridge_is_panel(bridge)) { in drm_panel_bridge_remove()
324 drm_warn(bridge->dev, "%s: called on non-panel bridge!\n", __func__); in drm_panel_bridge_remove()
328 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_remove()
330 drm_bridge_remove(bridge); in drm_panel_bridge_remove()
332 devm_drm_put_bridge(panel_bridge->panel->dev, bridge); in drm_panel_bridge_remove()
338 * from the bridge that can be transformed to panel bridge.
341 * @bridge: The drm_bridge to be transformed to panel bridge.
346 struct drm_bridge *bridge) in drm_panel_bridge_set_orientation() argument
350 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_set_orientation()
359 struct drm_bridge *bridge = *(struct drm_bridge **)res; in devm_drm_panel_bridge_release() local
361 if (!bridge) in devm_drm_panel_bridge_release()
364 drm_bridge_remove(bridge); in devm_drm_panel_bridge_release()
370 * @dev: device to tie the bridge lifetime to
390 * @dev: device to tie the bridge lifetime to
405 struct drm_bridge **ptr, *bridge; in devm_drm_panel_bridge_add_typed() local
412 bridge = drm_panel_bridge_add_typed(panel, connector_type); in devm_drm_panel_bridge_add_typed()
413 if (IS_ERR(bridge)) { in devm_drm_panel_bridge_add_typed()
415 return bridge; in devm_drm_panel_bridge_add_typed()
418 *ptr = bridge; in devm_drm_panel_bridge_add_typed()
421 return bridge; in devm_drm_panel_bridge_add_typed()
427 struct drm_bridge *bridge = ptr; in drmm_drm_panel_bridge_release() local
429 drm_panel_bridge_remove(bridge); in drmm_drm_panel_bridge_release()
437 * @drm: DRM device to tie the bridge lifetime to
447 struct drm_bridge *bridge; in drmm_panel_bridge_add() local
450 bridge = drm_panel_bridge_add_typed(panel, panel->connector_type); in drmm_panel_bridge_add()
451 if (IS_ERR(bridge)) in drmm_panel_bridge_add()
452 return bridge; in drmm_panel_bridge_add()
455 bridge); in drmm_panel_bridge_add()
459 return bridge; in drmm_panel_bridge_add()
464 * drm_panel_bridge_connector - return the connector for the panel bridge
465 * @bridge: The drm_bridge.
472 struct drm_connector *drm_panel_bridge_connector(struct drm_bridge *bridge) in drm_panel_bridge_connector() argument
476 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_connector()
484 * devm_drm_of_get_bridge - Return next bridge in the chain
485 * @dev: device to tie the bridge lifetime to
491 * and returns the associated bridge if any, or creates and returns a
492 * drm panel bridge instance if a panel is connected.
494 * Returns a pointer to the bridge if successful, or an error pointer
501 struct drm_bridge *bridge; in devm_drm_of_get_bridge() local
506 &panel, &bridge); in devm_drm_of_get_bridge()
511 bridge = devm_drm_panel_bridge_add(dev, panel); in devm_drm_of_get_bridge()
513 return bridge; in devm_drm_of_get_bridge()
518 * drmm_of_get_bridge - Return next bridge in the chain
519 * @drm: device to tie the bridge lifetime to
525 * and returns the associated bridge if any, or creates and returns a
526 * drm panel bridge instance if a panel is connected.
528 * Returns a drmm managed pointer to the bridge if successful, or an error
535 struct drm_bridge *bridge; in drmm_of_get_bridge() local
540 &panel, &bridge); in drmm_of_get_bridge()
545 bridge = drmm_panel_bridge_add(drm, panel); in drmm_of_get_bridge()
547 return bridge; in drmm_of_get_bridge()