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()
116 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_pre_enable()
131 static void panel_bridge_atomic_enable(struct drm_bridge *bridge, in panel_bridge_atomic_enable() argument
134 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()
156 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_disable()
171 static void panel_bridge_atomic_post_disable(struct drm_bridge *bridge, in panel_bridge_atomic_post_disable() argument
174 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_atomic_post_disable()
176 struct drm_encoder *encoder = bridge->encoder; in panel_bridge_atomic_post_disable()
191 static int panel_bridge_get_modes(struct drm_bridge *bridge, in panel_bridge_get_modes() argument
194 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_get_modes()
199 static void panel_bridge_debugfs_init(struct drm_bridge *bridge, in panel_bridge_debugfs_init() argument
202 struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); in panel_bridge_debugfs_init()
228 * @bridge: The drm_bridge to be checked.
230 * Returns true if the bridge is a panel bridge, or false otherwise.
232 bool drm_bridge_is_panel(const struct drm_bridge *bridge) in drm_bridge_is_panel() argument
234 return bridge->funcs == &panel_bridge_bridge_funcs; in drm_bridge_is_panel()
248 * wrap that panel in the new bridge, and the result can then be
252 * with connector creation. When done with the bridge (after
253 * drm_mode_config_cleanup() if the bridge has already been attached), then
301 panel_bridge->bridge.funcs = &panel_bridge_bridge_funcs; in drm_panel_bridge_add_typed()
302 panel_bridge->bridge.of_node = panel->dev->of_node; in drm_panel_bridge_add_typed()
303 panel_bridge->bridge.ops = DRM_BRIDGE_OP_MODES; in drm_panel_bridge_add_typed()
304 panel_bridge->bridge.type = connector_type; in drm_panel_bridge_add_typed()
306 drm_bridge_add(&panel_bridge->bridge); in drm_panel_bridge_add_typed()
308 return &panel_bridge->bridge; in drm_panel_bridge_add_typed()
316 * @bridge: The drm_bridge being freed.
318 void drm_panel_bridge_remove(struct drm_bridge *bridge) in drm_panel_bridge_remove() argument
322 if (!bridge) in drm_panel_bridge_remove()
325 if (bridge->funcs != &panel_bridge_bridge_funcs) 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()
331 devm_kfree(panel_bridge->panel->dev, bridge); in drm_panel_bridge_remove()
337 * from the bridge that can be transformed to panel bridge.
340 * @bridge: The drm_bridge to be transformed to panel bridge.
345 struct drm_bridge *bridge) in drm_panel_bridge_set_orientation() argument
349 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_set_orientation()
358 struct drm_bridge *bridge = *(struct drm_bridge **)res; in devm_drm_panel_bridge_release() local
360 if (!bridge) in devm_drm_panel_bridge_release()
363 drm_bridge_remove(bridge); in devm_drm_panel_bridge_release()
369 * @dev: device to tie the bridge lifetime to
389 * @dev: device to tie the bridge lifetime to
404 struct drm_bridge **ptr, *bridge; in devm_drm_panel_bridge_add_typed() local
411 bridge = drm_panel_bridge_add_typed(panel, connector_type); in devm_drm_panel_bridge_add_typed()
412 if (IS_ERR(bridge)) { in devm_drm_panel_bridge_add_typed()
414 return bridge; in devm_drm_panel_bridge_add_typed()
417 bridge->pre_enable_prev_first = panel->prepare_prev_first; in devm_drm_panel_bridge_add_typed()
419 *ptr = bridge; in devm_drm_panel_bridge_add_typed()
422 return bridge; in devm_drm_panel_bridge_add_typed()
428 struct drm_bridge *bridge = ptr; in drmm_drm_panel_bridge_release() local
430 drm_panel_bridge_remove(bridge); in drmm_drm_panel_bridge_release()
438 * @drm: DRM device to tie the bridge lifetime to
448 struct drm_bridge *bridge; in drmm_panel_bridge_add() local
451 bridge = drm_panel_bridge_add_typed(panel, panel->connector_type); in drmm_panel_bridge_add()
452 if (IS_ERR(bridge)) in drmm_panel_bridge_add()
453 return bridge; in drmm_panel_bridge_add()
456 bridge); in drmm_panel_bridge_add()
460 bridge->pre_enable_prev_first = panel->prepare_prev_first; in drmm_panel_bridge_add()
462 return bridge; in drmm_panel_bridge_add()
467 * drm_panel_bridge_connector - return the connector for the panel bridge
468 * @bridge: The drm_bridge.
475 struct drm_connector *drm_panel_bridge_connector(struct drm_bridge *bridge) in drm_panel_bridge_connector() argument
479 panel_bridge = drm_bridge_to_panel_bridge(bridge); in drm_panel_bridge_connector()
487 * devm_drm_of_get_bridge - Return next bridge in the chain
488 * @dev: device to tie the bridge lifetime to
494 * and returns the associated bridge if any, or creates and returns a
495 * drm panel bridge instance if a panel is connected.
497 * Returns a pointer to the bridge if successful, or an error pointer
504 struct drm_bridge *bridge; in devm_drm_of_get_bridge() local
509 &panel, &bridge); in devm_drm_of_get_bridge()
514 bridge = devm_drm_panel_bridge_add(dev, panel); in devm_drm_of_get_bridge()
516 return bridge; in devm_drm_of_get_bridge()
521 * drmm_of_get_bridge - Return next bridge in the chain
522 * @drm: device to tie the bridge lifetime to
528 * and returns the associated bridge if any, or creates and returns a
529 * drm panel bridge instance if a panel is connected.
531 * Returns a drmm managed pointer to the bridge if successful, or an error
538 struct drm_bridge *bridge; in drmm_of_get_bridge() local
543 &panel, &bridge); in drmm_of_get_bridge()
548 bridge = drmm_panel_bridge_add(drm, panel); in drmm_of_get_bridge()
550 return bridge; in drmm_of_get_bridge()