Lines Matching full:bridge
29 * The DRM bridge connector helper object provides a DRM connector
35 * To use the helper, display controller drivers create a bridge connector with
41 * The DRM bridge connector operations are implemented based on the operations
43 * to the bridge closest to the connector (at the end of the chain) that
46 * To make use of this helper, all bridges in the chain shall report bridge
47 * operation flags (&drm_bridge->ops) and bridge output type
69 * The last bridge in the chain (closest to the connector) that provides
76 * The last bridge in the chain (closest to the connector) that provides
83 * The last bridge in the chain (closest to the connector) that provides
90 * The last bridge in the chain (closest to the connector) that provides
97 * The bridge in the chain that implements necessary support for the
107 * Bridge Connector Hot-Plug Handling
115 struct drm_bridge *bridge; in drm_bridge_connector_hpd_notify() local
118 drm_for_each_bridge_in_chain(bridge_connector->encoder, bridge) { in drm_bridge_connector_hpd_notify()
119 if (bridge->funcs->hpd_notify) in drm_bridge_connector_hpd_notify()
120 bridge->funcs->hpd_notify(bridge, status); in drm_bridge_connector_hpd_notify()
176 * Bridge Connector Functions
228 struct drm_bridge *bridge; in drm_bridge_connector_debugfs_init() local
230 list_for_each_entry(bridge, &encoder->bridge_chain, chain_node) { in drm_bridge_connector_debugfs_init()
231 if (bridge->funcs->debugfs_init) in drm_bridge_connector_debugfs_init()
232 bridge->funcs->debugfs_init(bridge, root); in drm_bridge_connector_debugfs_init()
259 * Bridge Connector Helper Functions
263 struct drm_bridge *bridge) in drm_bridge_connector_get_modes_edid() argument
273 drm_edid = drm_bridge_edid_read(bridge, connector); in drm_bridge_connector_get_modes_edid()
294 struct drm_bridge *bridge; in drm_bridge_connector_get_modes() local
297 * If there is a HDMI bridge, EDID has been updated as a part of in drm_bridge_connector_get_modes()
300 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_get_modes()
301 if (bridge) in drm_bridge_connector_get_modes()
308 bridge = bridge_connector->bridge_edid; in drm_bridge_connector_get_modes()
309 if (bridge) in drm_bridge_connector_get_modes()
310 return drm_bridge_connector_get_modes_edid(connector, bridge); in drm_bridge_connector_get_modes()
316 bridge = bridge_connector->bridge_modes; in drm_bridge_connector_get_modes()
317 if (bridge) in drm_bridge_connector_get_modes()
318 return bridge->funcs->get_modes(bridge, connector); in drm_bridge_connector_get_modes()
368 struct drm_bridge *bridge; in drm_bridge_connector_tmds_char_rate_valid() local
370 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_tmds_char_rate_valid()
371 if (!bridge) in drm_bridge_connector_tmds_char_rate_valid()
374 if (bridge->funcs->hdmi_tmds_char_rate_valid) in drm_bridge_connector_tmds_char_rate_valid()
375 return bridge->funcs->hdmi_tmds_char_rate_valid(bridge, mode, tmds_rate); in drm_bridge_connector_tmds_char_rate_valid()
385 struct drm_bridge *bridge; in drm_bridge_connector_clear_infoframe() local
387 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_clear_infoframe()
388 if (!bridge) in drm_bridge_connector_clear_infoframe()
391 return bridge->funcs->hdmi_clear_infoframe(bridge, type); in drm_bridge_connector_clear_infoframe()
400 struct drm_bridge *bridge; in drm_bridge_connector_write_infoframe() local
402 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_write_infoframe()
403 if (!bridge) in drm_bridge_connector_write_infoframe()
406 return bridge->funcs->hdmi_write_infoframe(bridge, type, buffer, len); in drm_bridge_connector_write_infoframe()
414 struct drm_bridge *bridge; in drm_bridge_connector_read_edid() local
416 bridge = bridge_connector->bridge_edid; in drm_bridge_connector_read_edid()
417 if (!bridge) in drm_bridge_connector_read_edid()
420 return drm_bridge_edid_read(bridge, connector); in drm_bridge_connector_read_edid()
434 struct drm_bridge *bridge; in drm_bridge_connector_audio_startup() local
436 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_audio_startup()
437 if (!bridge) in drm_bridge_connector_audio_startup()
440 if (!bridge->funcs->hdmi_audio_startup) in drm_bridge_connector_audio_startup()
443 return bridge->funcs->hdmi_audio_startup(connector, bridge); in drm_bridge_connector_audio_startup()
452 struct drm_bridge *bridge; in drm_bridge_connector_audio_prepare() local
454 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_audio_prepare()
455 if (!bridge) in drm_bridge_connector_audio_prepare()
458 return bridge->funcs->hdmi_audio_prepare(connector, bridge, fmt, hparms); in drm_bridge_connector_audio_prepare()
465 struct drm_bridge *bridge; in drm_bridge_connector_audio_shutdown() local
467 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_audio_shutdown()
468 if (!bridge) in drm_bridge_connector_audio_shutdown()
471 bridge->funcs->hdmi_audio_shutdown(connector, bridge); in drm_bridge_connector_audio_shutdown()
479 struct drm_bridge *bridge; in drm_bridge_connector_audio_mute_stream() local
481 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_audio_mute_stream()
482 if (!bridge) in drm_bridge_connector_audio_mute_stream()
485 if (bridge->funcs->hdmi_audio_mute_stream) in drm_bridge_connector_audio_mute_stream()
486 return bridge->funcs->hdmi_audio_mute_stream(connector, bridge, in drm_bridge_connector_audio_mute_stream()
500 * Bridge Connector Initialisation
506 * @encoder: the encoder where the bridge chain starts
510 * the @encoder. All bridges in the chain shall report bridge operation flags
511 * (&drm_bridge->ops) and bridge output type (&drm_bridge->type), and none of
523 struct drm_bridge *bridge, *panel_bridge = NULL; in drm_bridge_connector_init() local
550 drm_for_each_bridge_in_chain(encoder, bridge) { in drm_bridge_connector_init()
551 if (!bridge->interlace_allowed) in drm_bridge_connector_init()
553 if (!bridge->ycbcr_420_allowed) in drm_bridge_connector_init()
556 if (bridge->ops & DRM_BRIDGE_OP_EDID) in drm_bridge_connector_init()
557 bridge_connector->bridge_edid = bridge; in drm_bridge_connector_init()
558 if (bridge->ops & DRM_BRIDGE_OP_HPD) in drm_bridge_connector_init()
559 bridge_connector->bridge_hpd = bridge; in drm_bridge_connector_init()
560 if (bridge->ops & DRM_BRIDGE_OP_DETECT) in drm_bridge_connector_init()
561 bridge_connector->bridge_detect = bridge; in drm_bridge_connector_init()
562 if (bridge->ops & DRM_BRIDGE_OP_MODES) in drm_bridge_connector_init()
563 bridge_connector->bridge_modes = bridge; in drm_bridge_connector_init()
564 if (bridge->ops & DRM_BRIDGE_OP_HDMI) { in drm_bridge_connector_init()
567 if (!bridge->funcs->hdmi_write_infoframe || in drm_bridge_connector_init()
568 !bridge->funcs->hdmi_clear_infoframe) in drm_bridge_connector_init()
571 bridge_connector->bridge_hdmi = bridge; in drm_bridge_connector_init()
573 if (bridge->supported_formats) in drm_bridge_connector_init()
574 supported_formats = bridge->supported_formats; in drm_bridge_connector_init()
575 if (bridge->max_bpc) in drm_bridge_connector_init()
576 max_bpc = bridge->max_bpc; in drm_bridge_connector_init()
579 if (!drm_bridge_get_next_bridge(bridge)) in drm_bridge_connector_init()
580 connector_type = bridge->type; in drm_bridge_connector_init()
583 if (!drm_bridge_get_next_bridge(bridge) && in drm_bridge_connector_init()
584 bridge->of_node) in drm_bridge_connector_init()
585 connector->fwnode = fwnode_handle_get(of_fwnode_handle(bridge->of_node)); in drm_bridge_connector_init()
588 if (bridge->ddc) in drm_bridge_connector_init()
589 ddc = bridge->ddc; in drm_bridge_connector_init()
591 if (drm_bridge_is_panel(bridge)) in drm_bridge_connector_init()
592 panel_bridge = bridge; in drm_bridge_connector_init()
602 bridge = bridge_connector->bridge_hdmi; in drm_bridge_connector_init()
615 if (bridge->hdmi_audio_max_i2s_playback_channels || in drm_bridge_connector_init()
616 bridge->hdmi_audio_spdif_playback) { in drm_bridge_connector_init()
617 if (!bridge->funcs->hdmi_audio_prepare || in drm_bridge_connector_init()
618 !bridge->funcs->hdmi_audio_shutdown) in drm_bridge_connector_init()
622 bridge->hdmi_audio_dev, in drm_bridge_connector_init()
624 bridge->hdmi_audio_max_i2s_playback_channels, in drm_bridge_connector_init()
625 bridge->hdmi_audio_spdif_playback, in drm_bridge_connector_init()
626 bridge->hdmi_audio_dai_port); in drm_bridge_connector_init()