Lines Matching full:bridge
21 struct drm_bridge bridge; member
28 drm_bridge_to_panel_bridge(struct drm_bridge *bridge) in drm_bridge_to_panel_bridge() argument
30 return container_of(bridge, struct panel_bridge, bridge); in drm_bridge_to_panel_bridge()
60 static int panel_bridge_attach(struct drm_bridge *bridge, in panel_bridge_attach() argument
63 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_attach()
73 ret = drm_connector_init(bridge->dev, connector, in panel_bridge_attach()
81 drm_panel_bridge_set_orientation(connector, bridge); in panel_bridge_attach()
84 bridge->encoder); in panel_bridge_attach()
86 if (bridge->dev->registered) { in panel_bridge_attach()
95 static void panel_bridge_detach(struct drm_bridge *bridge) in panel_bridge_detach() argument
97 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_detach()
105 * drm_device pointer can only be retrieved when the bridge is attached. in panel_bridge_detach()
111 static void panel_bridge_atomic_pre_enable(struct drm_bridge *bridge, in panel_bridge_atomic_pre_enable() argument
114 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_pre_enable()
115 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_pre_enable()
130 static void panel_bridge_atomic_enable(struct drm_bridge *bridge, in panel_bridge_atomic_enable() argument
133 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_enable()
134 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_enable()
149 static void panel_bridge_atomic_disable(struct drm_bridge *bridge, in panel_bridge_atomic_disable() argument
152 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_disable()
153 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_disable()
168 static void panel_bridge_atomic_post_disable(struct drm_bridge *bridge, in panel_bridge_atomic_post_disable() argument
171 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_post_disable()
172 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_post_disable()
187 static int panel_bridge_get_modes(struct drm_bridge *bridge, in panel_bridge_get_modes() argument
190 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_get_modes()
195 static void panel_bridge_debugfs_init(struct drm_bridge *bridge, in panel_bridge_debugfs_init() argument
198 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_debugfs_init()
224 * @bridge: The drm_bridge to be checked.
226 * Returns true if the bridge is a panel bridge, or false otherwise.
228 bool drm_bridge_is_panel(const struct drm_bridge *bridge) in drm_bridge_is_panel() argument
230 return bridge->funcs == &panel_bridge_bridge_funcs; in drm_bridge_is_panel()
244 * wrap that panel in the new bridge, and the result can then be
248 * with connector creation. When done with the bridge (after
249 * drm_mode_config_cleanup() if the bridge has already been attached), then
297 panel_bridge->bridge.funcs = &panel_bridge_bridge_funcs; in drm_panel_bridge_add_typed()
298 panel_bridge->bridge.of_node = panel->dev->of_node; in drm_panel_bridge_add_typed()
299 panel_bridge->bridge.ops = DRM_BRIDGE_OP_MODES; in drm_panel_bridge_add_typed()
300 panel_bridge->bridge.type = connector_type; in drm_panel_bridge_add_typed()
302 drm_bridge_add(&panel_bridge->bridge); in drm_panel_bridge_add_typed()
304 return &panel_bridge->bridge; in drm_panel_bridge_add_typed()
312 * @bridge: The drm_bridge being freed.
314 void drm_panel_bridge_remove(struct drm_bridge *bridge) in drm_panel_bridge_remove() argument
318 if (!bridge) in drm_panel_bridge_remove()
321 if (!drm_bridge_is_panel(bridge)) { in drm_panel_bridge_remove()
322 drm_warn(bridge->dev, "%s: called on non-panel bridge!\n", __func__); in drm_panel_bridge_remove()
326 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_remove()
328 drm_bridge_remove(bridge); in drm_panel_bridge_remove()
329 devm_kfree(panel_bridge->panel->dev, bridge); in drm_panel_bridge_remove()
335 * from the bridge that can be transformed to panel bridge.
338 * @bridge: The drm_bridge to be transformed to panel bridge.
343 struct drm_bridge *bridge) in drm_panel_bridge_set_orientation() argument
347 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_set_orientation()
356 struct drm_bridge *bridge = *(struct drm_bridge **)res; in devm_drm_panel_bridge_release() local
358 if (!bridge) in devm_drm_panel_bridge_release()
361 drm_bridge_remove(bridge); in devm_drm_panel_bridge_release()
367 * @dev: device to tie the bridge lifetime to
387 * @dev: device to tie the bridge lifetime to
402 struct drm_bridge **ptr, *bridge; in devm_drm_panel_bridge_add_typed() local
409 bridge = drm_panel_bridge_add_typed(panel, connector_type); in devm_drm_panel_bridge_add_typed()
410 if (IS_ERR(bridge)) { in devm_drm_panel_bridge_add_typed()
412 return bridge; in devm_drm_panel_bridge_add_typed()
415 bridge->pre_enable_prev_first = panel->prepare_prev_first; in devm_drm_panel_bridge_add_typed()
417 *ptr = bridge; in devm_drm_panel_bridge_add_typed()
420 return bridge; in devm_drm_panel_bridge_add_typed()
426 struct drm_bridge *bridge = ptr; in drmm_drm_panel_bridge_release() local
428 drm_panel_bridge_remove(bridge); in drmm_drm_panel_bridge_release()
436 * @drm: DRM device to tie the bridge lifetime to
446 struct drm_bridge *bridge; in drmm_panel_bridge_add() local
449 bridge = drm_panel_bridge_add_typed(panel, panel->connector_type); in drmm_panel_bridge_add()
450 if (IS_ERR(bridge)) in drmm_panel_bridge_add()
451 return bridge; in drmm_panel_bridge_add()
454 bridge); in drmm_panel_bridge_add()
458 bridge->pre_enable_prev_first = panel->prepare_prev_first; in drmm_panel_bridge_add()
460 return bridge; in drmm_panel_bridge_add()
465 * drm_panel_bridge_connector - return the connector for the panel bridge
466 * @bridge: The drm_bridge.
473 struct drm_connector *drm_panel_bridge_connector(struct drm_bridge *bridge) in drm_panel_bridge_connector() argument
477 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_connector()
485 * devm_drm_of_get_bridge - Return next bridge in the chain
486 * @dev: device to tie the bridge lifetime to
492 * and returns the associated bridge if any, or creates and returns a
493 * drm panel bridge instance if a panel is connected.
495 * Returns a pointer to the bridge if successful, or an error pointer
502 struct drm_bridge *bridge; in devm_drm_of_get_bridge() local
507 &panel, &bridge); in devm_drm_of_get_bridge()
512 bridge = devm_drm_panel_bridge_add(dev, panel); in devm_drm_of_get_bridge()
514 return bridge; in devm_drm_of_get_bridge()
519 * drmm_of_get_bridge - Return next bridge in the chain
520 * @drm: device to tie the bridge lifetime to
526 * and returns the associated bridge if any, or creates and returns a
527 * drm panel bridge instance if a panel is connected.
529 * Returns a drmm managed pointer to the bridge if successful, or an error
536 struct drm_bridge *bridge; in drmm_of_get_bridge() local
541 &panel, &bridge); in drmm_of_get_bridge()
546 bridge = drmm_panel_bridge_add(drm, panel); in drmm_of_get_bridge()
548 return bridge; in drmm_of_get_bridge()