Lines Matching refs:msm_dp_display
95 struct msm_dp msm_dp_display; member
209 return container_of(dp, struct msm_dp_display_private, msm_dp_display); in dev_get_dp_display_private()
266 void msm_dp_display_signal_audio_start(struct msm_dp *msm_dp_display) in msm_dp_display_signal_audio_start() argument
270 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_signal_audio_start()
275 void msm_dp_display_signal_audio_complete(struct msm_dp *msm_dp_display) in msm_dp_display_signal_audio_complete() argument
279 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_signal_audio_complete()
294 dp->msm_dp_display.drm_dev = drm; in msm_dp_display_bind()
295 priv->kms->dp[dp->id] = &dp->msm_dp_display; in msm_dp_display_bind()
337 static void msm_dp_display_send_hpd_event(struct msm_dp *msm_dp_display) in msm_dp_display_send_hpd_event() argument
342 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_send_hpd_event()
344 connector = dp->msm_dp_display.connector; in msm_dp_display_send_hpd_event()
351 if ((hpd && dp->msm_dp_display.link_ready) || in msm_dp_display_send_hpd_notification()
352 (!hpd && !dp->msm_dp_display.link_ready)) { in msm_dp_display_send_hpd_notification()
360 if (!dp->msm_dp_display.is_edp) in msm_dp_display_send_hpd_notification()
361 drm_dp_set_subconnector_property(dp->msm_dp_display.connector, in msm_dp_display_send_hpd_notification()
367 dp->msm_dp_display.link_ready = hpd; in msm_dp_display_send_hpd_notification()
370 dp->msm_dp_display.connector_type, hpd); in msm_dp_display_send_hpd_notification()
371 msm_dp_display_send_hpd_event(&dp->msm_dp_display); in msm_dp_display_send_hpd_notification()
395 struct drm_connector *connector = dp->msm_dp_display.connector; in msm_dp_display_process_hpd_high()
412 if (!dp->msm_dp_display.is_edp) in msm_dp_display_process_hpd_high()
418 dp->msm_dp_display.psr_supported = dp->panel->psr_cap.version && psr_enabled; in msm_dp_display_process_hpd_high()
445 dp->msm_dp_display.connector_type, dp->core_initialized, in msm_dp_display_host_phy_init()
457 dp->msm_dp_display.connector_type, dp->core_initialized, in msm_dp_display_host_phy_exit()
469 dp->msm_dp_display.connector_type, dp->core_initialized, in msm_dp_display_host_init()
482 dp->msm_dp_display.connector_type, dp->core_initialized, in msm_dp_display_host_deinit()
587 struct platform_device *pdev = dp->msm_dp_display.pdev; in msm_dp_hpd_plug_handle()
595 dp->msm_dp_display.connector_type, state); in msm_dp_hpd_plug_handle()
630 dp->msm_dp_display.connector_type, state); in msm_dp_hpd_plug_handle()
637 static void msm_dp_display_handle_plugged_change(struct msm_dp *msm_dp_display, in msm_dp_display_handle_plugged_change() argument
642 dp = container_of(msm_dp_display, in msm_dp_display_handle_plugged_change()
643 struct msm_dp_display_private, msm_dp_display); in msm_dp_display_handle_plugged_change()
647 drm_connector_hdmi_audio_plugged_notify(msm_dp_display->connector, in msm_dp_display_handle_plugged_change()
654 struct platform_device *pdev = dp->msm_dp_display.pdev; in msm_dp_hpd_unplug_handle()
663 dp->msm_dp_display.connector_type, state); in msm_dp_hpd_unplug_handle()
673 msm_dp_display_notify_disconnect(&dp->msm_dp_display.pdev->dev); in msm_dp_hpd_unplug_handle()
683 msm_dp_display_notify_disconnect(&dp->msm_dp_display.pdev->dev); in msm_dp_hpd_unplug_handle()
693 msm_dp_display_notify_disconnect(&dp->msm_dp_display.pdev->dev); in msm_dp_hpd_unplug_handle()
702 msm_dp_display_handle_plugged_change(&dp->msm_dp_display, false); in msm_dp_hpd_unplug_handle()
705 dp->msm_dp_display.connector_type, state); in msm_dp_hpd_unplug_handle()
722 dp->msm_dp_display.connector_type, state); in msm_dp_irq_hpd_handle()
736 msm_dp_display_usbpd_attention_cb(&dp->msm_dp_display.pdev->dev); in msm_dp_irq_hpd_handle()
739 dp->msm_dp_display.connector_type, state); in msm_dp_irq_hpd_handle()
756 struct device *dev = &dp->msm_dp_display.pdev->dev; in msm_dp_init_sub_modules()
764 dp->msm_dp_display.is_edp ? PHY_SUBMODE_EDP : PHY_SUBMODE_DP); in msm_dp_init_sub_modules()
770 dp->aux = msm_dp_aux_get(dev, phy, dp->msm_dp_display.is_edp, dp->aux_base); in msm_dp_init_sub_modules()
803 dp->audio = msm_dp_audio_get(dp->msm_dp_display.pdev, dp->link_base); in msm_dp_init_sub_modules()
821 static int msm_dp_display_set_mode(struct msm_dp *msm_dp_display, in msm_dp_display_set_mode() argument
826 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_set_mode()
838 struct msm_dp *msm_dp_display = &dp->msm_dp_display; in msm_dp_display_enable() local
841 if (msm_dp_display->power_on) { in msm_dp_display_enable()
848 msm_dp_display->power_on = true; in msm_dp_display_enable()
853 static int msm_dp_display_post_enable(struct msm_dp *msm_dp_display) in msm_dp_display_post_enable() argument
858 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_post_enable()
868 msm_dp_display_handle_plugged_change(msm_dp_display, true); in msm_dp_display_post_enable()
870 if (msm_dp_display->psr_supported) in msm_dp_display_post_enable()
878 struct msm_dp *msm_dp_display = &dp->msm_dp_display; in msm_dp_display_disable() local
880 if (!msm_dp_display->power_on) in msm_dp_display_disable()
884 if (msm_dp_display->audio_enabled) { in msm_dp_display_disable()
886 msm_dp_display_handle_plugged_change(msm_dp_display, false); in msm_dp_display_disable()
892 msm_dp_display->audio_enabled = false; in msm_dp_display_disable()
909 msm_dp_display->power_on = false; in msm_dp_display_disable()
927 struct msm_dp_display_private *msm_dp_display; in msm_dp_bridge_mode_valid() local
933 dp = to_dp_bridge(bridge)->msm_dp_display; in msm_dp_bridge_mode_valid()
940 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_bridge_mode_valid()
941 link_info = &msm_dp_display->panel->link_info; in msm_dp_bridge_mode_valid()
944 msm_dp_display->panel->vsc_sdp_supported) || in msm_dp_bridge_mode_valid()
955 mode_bpp = msm_dp_panel_get_mode_bpp(msm_dp_display->panel, in msm_dp_bridge_mode_valid()
969 struct msm_dp_display_private *msm_dp_display; in msm_dp_display_get_modes() local
976 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_get_modes()
978 return msm_dp_panel_get_modes(msm_dp_display->panel, in msm_dp_display_get_modes()
984 struct msm_dp_display_private *msm_dp_display; in msm_dp_display_check_video_test() local
986 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_check_video_test()
988 return msm_dp_display->panel->video_test; in msm_dp_display_check_video_test()
993 struct msm_dp_display_private *msm_dp_display; in msm_dp_display_get_test_bpp() local
1000 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_get_test_bpp()
1003 msm_dp_display->link->test_video.test_bit_depth); in msm_dp_display_get_test_bpp()
1008 struct msm_dp_display_private *msm_dp_display; in msm_dp_snapshot() local
1010 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_snapshot()
1019 mutex_lock(&msm_dp_display->event_mutex); in msm_dp_snapshot()
1022 mutex_unlock(&msm_dp_display->event_mutex); in msm_dp_snapshot()
1026 msm_disp_snapshot_add_block(disp_state, msm_dp_display->ahb_len, in msm_dp_snapshot()
1027 msm_dp_display->ahb_base, "dp_ahb"); in msm_dp_snapshot()
1028 msm_disp_snapshot_add_block(disp_state, msm_dp_display->aux_len, in msm_dp_snapshot()
1029 msm_dp_display->aux_base, "dp_aux"); in msm_dp_snapshot()
1030 msm_disp_snapshot_add_block(disp_state, msm_dp_display->link_len, in msm_dp_snapshot()
1031 msm_dp_display->link_base, "dp_link"); in msm_dp_snapshot()
1032 msm_disp_snapshot_add_block(disp_state, msm_dp_display->p0_len, in msm_dp_snapshot()
1033 msm_dp_display->p0_base, "dp_p0"); in msm_dp_snapshot()
1035 mutex_unlock(&msm_dp_display->event_mutex); in msm_dp_snapshot()
1038 void msm_dp_display_set_psr(struct msm_dp *msm_dp_display, bool enter) in msm_dp_display_set_psr() argument
1042 if (!msm_dp_display) { in msm_dp_display_set_psr()
1047 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_set_psr()
1160 dp->msm_dp_display.connector_type, hpd_isr_status); in msm_dp_display_irq_handler()
1189 struct platform_device *pdev = dp->msm_dp_display.pdev; in msm_dp_display_request_irq()
1303 struct platform_device *pdev = display->msm_dp_display.pdev; in msm_dp_display_get_io()
1373 dp->msm_dp_display.pdev = pdev; in msm_dp_display_probe()
1375 dp->msm_dp_display.connector_type = msm_dp_display_get_connector_type(pdev, desc); in msm_dp_display_probe()
1377 dp->msm_dp_display.is_edp = in msm_dp_display_probe()
1378 (dp->msm_dp_display.connector_type == DRM_MODE_CONNECTOR_eDP); in msm_dp_display_probe()
1396 dp->msm_dp_display.msm_dp_audio = dp->audio; in msm_dp_display_probe()
1400 platform_set_drvdata(pdev, &dp->msm_dp_display); in msm_dp_display_probe()
1410 if (dp->msm_dp_display.is_edp) { in msm_dp_display_probe()
1444 if (dp->msm_dp_display.is_edp) { in msm_dp_pm_runtime_suspend()
1466 if (dp->msm_dp_display.is_edp) { in msm_dp_pm_runtime_resume()
1508 bool msm_dp_is_yuv_420_enabled(const struct msm_dp *msm_dp_display, in msm_dp_is_yuv_420_enabled() argument
1514 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_is_yuv_420_enabled()
1515 info = &msm_dp_display->connector->display_info; in msm_dp_is_yuv_420_enabled()
1520 bool msm_dp_needs_periph_flush(const struct msm_dp *msm_dp_display, in msm_dp_needs_periph_flush() argument
1523 return msm_dp_is_yuv_420_enabled(msm_dp_display, mode); in msm_dp_needs_periph_flush()
1526 bool msm_dp_wide_bus_available(const struct msm_dp *msm_dp_display) in msm_dp_wide_bus_available() argument
1530 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_wide_bus_available()
1538 void msm_dp_display_debugfs_init(struct msm_dp *msm_dp_display, struct dentry *root, bool is_edp) in msm_dp_display_debugfs_init() argument
1544 dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_display_debugfs_init()
1545 dev = &dp->msm_dp_display.pdev->dev; in msm_dp_display_debugfs_init()
1547 rc = msm_dp_debug_init(dev, dp->panel, dp->link, dp->msm_dp_display.connector, root, is_edp); in msm_dp_display_debugfs_init()
1552 int msm_dp_modeset_init(struct msm_dp *msm_dp_display, struct drm_device *dev, in msm_dp_modeset_init() argument
1558 msm_dp_display->drm_dev = dev; in msm_dp_modeset_init()
1560 msm_dp_priv = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); in msm_dp_modeset_init()
1562 ret = msm_dp_bridge_init(msm_dp_display, dev, encoder, yuv_supported); in msm_dp_modeset_init()
1569 msm_dp_display->connector = msm_dp_drm_connector_init(msm_dp_display, encoder); in msm_dp_modeset_init()
1570 if (IS_ERR(msm_dp_display->connector)) { in msm_dp_modeset_init()
1571 ret = PTR_ERR(msm_dp_display->connector); in msm_dp_modeset_init()
1574 msm_dp_display->connector = NULL; in msm_dp_modeset_init()
1578 msm_dp_priv->panel->connector = msm_dp_display->connector; in msm_dp_modeset_init()
1587 struct msm_dp *dp = msm_dp_bridge->msm_dp_display; in msm_dp_bridge_atomic_enable()
1589 struct msm_dp_display_private *msm_dp_display; in msm_dp_bridge_atomic_enable() local
1593 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_bridge_atomic_enable()
1594 if (!msm_dp_display->msm_dp_mode.drm_mode.clock) { in msm_dp_bridge_atomic_enable()
1600 msm_dp_hpd_plug_handle(msm_dp_display, 0); in msm_dp_bridge_atomic_enable()
1602 mutex_lock(&msm_dp_display->event_mutex); in msm_dp_bridge_atomic_enable()
1605 mutex_unlock(&msm_dp_display->event_mutex); in msm_dp_bridge_atomic_enable()
1609 hpd_state = msm_dp_display->hpd_state; in msm_dp_bridge_atomic_enable()
1611 mutex_unlock(&msm_dp_display->event_mutex); in msm_dp_bridge_atomic_enable()
1615 rc = msm_dp_display_set_mode(dp, &msm_dp_display->msm_dp_mode); in msm_dp_bridge_atomic_enable()
1618 mutex_unlock(&msm_dp_display->event_mutex); in msm_dp_bridge_atomic_enable()
1622 hpd_state = msm_dp_display->hpd_state; in msm_dp_bridge_atomic_enable()
1625 msm_dp_display_host_phy_init(msm_dp_display); in msm_dp_bridge_atomic_enable()
1629 msm_dp_display_enable(msm_dp_display, force_link_train); in msm_dp_bridge_atomic_enable()
1634 msm_dp_display_disable(msm_dp_display); in msm_dp_bridge_atomic_enable()
1638 msm_dp_display->hpd_state = ST_CONNECTED; in msm_dp_bridge_atomic_enable()
1641 mutex_unlock(&msm_dp_display->event_mutex); in msm_dp_bridge_atomic_enable()
1648 struct msm_dp *dp = msm_dp_bridge->msm_dp_display; in msm_dp_bridge_atomic_disable()
1649 struct msm_dp_display_private *msm_dp_display; in msm_dp_bridge_atomic_disable() local
1651 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_bridge_atomic_disable()
1653 msm_dp_ctrl_push_idle(msm_dp_display->ctrl); in msm_dp_bridge_atomic_disable()
1660 struct msm_dp *dp = msm_dp_bridge->msm_dp_display; in msm_dp_bridge_atomic_post_disable()
1662 struct msm_dp_display_private *msm_dp_display; in msm_dp_bridge_atomic_post_disable() local
1664 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_bridge_atomic_post_disable()
1667 msm_dp_hpd_unplug_handle(msm_dp_display, 0); in msm_dp_bridge_atomic_post_disable()
1669 mutex_lock(&msm_dp_display->event_mutex); in msm_dp_bridge_atomic_post_disable()
1671 hpd_state = msm_dp_display->hpd_state; in msm_dp_bridge_atomic_post_disable()
1676 msm_dp_display_disable(msm_dp_display); in msm_dp_bridge_atomic_post_disable()
1678 hpd_state = msm_dp_display->hpd_state; in msm_dp_bridge_atomic_post_disable()
1681 msm_dp_display->hpd_state = ST_DISCONNECTED; in msm_dp_bridge_atomic_post_disable()
1683 msm_dp_display->hpd_state = ST_DISPLAY_OFF; in msm_dp_bridge_atomic_post_disable()
1689 mutex_unlock(&msm_dp_display->event_mutex); in msm_dp_bridge_atomic_post_disable()
1697 struct msm_dp *dp = msm_dp_bridge->msm_dp_display; in msm_dp_bridge_mode_set()
1698 struct msm_dp_display_private *msm_dp_display; in msm_dp_bridge_mode_set() local
1701 msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); in msm_dp_bridge_mode_set()
1702 msm_dp_panel = msm_dp_display->panel; in msm_dp_bridge_mode_set()
1704 memset(&msm_dp_display->msm_dp_mode, 0x0, sizeof(struct msm_dp_display_mode)); in msm_dp_bridge_mode_set()
1707 msm_dp_display->msm_dp_mode.bpp = msm_dp_display_get_test_bpp(dp); in msm_dp_bridge_mode_set()
1709 msm_dp_display->msm_dp_mode.bpp = dp->connector->display_info.bpc * 3; in msm_dp_bridge_mode_set()
1711 if (!msm_dp_display->msm_dp_mode.bpp) in msm_dp_bridge_mode_set()
1712 msm_dp_display->msm_dp_mode.bpp = 24; /* Default bpp */ in msm_dp_bridge_mode_set()
1714 drm_mode_copy(&msm_dp_display->msm_dp_mode.drm_mode, adjusted_mode); in msm_dp_bridge_mode_set()
1716 msm_dp_display->msm_dp_mode.v_active_low = in msm_dp_bridge_mode_set()
1717 !!(msm_dp_display->msm_dp_mode.drm_mode.flags & DRM_MODE_FLAG_NVSYNC); in msm_dp_bridge_mode_set()
1719 msm_dp_display->msm_dp_mode.h_active_low = in msm_dp_bridge_mode_set()
1720 !!(msm_dp_display->msm_dp_mode.drm_mode.flags & DRM_MODE_FLAG_NHSYNC); in msm_dp_bridge_mode_set()
1722 msm_dp_display->msm_dp_mode.out_fmt_is_yuv_420 = in msm_dp_bridge_mode_set()
1727 msm_dp_display->ctrl->wide_bus_en = in msm_dp_bridge_mode_set()
1728 msm_dp_display->msm_dp_mode.out_fmt_is_yuv_420 ? false : msm_dp_display->wide_bus_supported; in msm_dp_bridge_mode_set()
1734 struct msm_dp *msm_dp_display = msm_dp_bridge->msm_dp_display; in msm_dp_bridge_hpd_enable() local
1735 …uct msm_dp_display_private *dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_d… in msm_dp_bridge_hpd_enable()
1746 if (pm_runtime_resume_and_get(&msm_dp_display->pdev->dev)) { in msm_dp_bridge_hpd_enable()
1755 msm_dp_display->internal_hpd = true; in msm_dp_bridge_hpd_enable()
1762 struct msm_dp *msm_dp_display = msm_dp_bridge->msm_dp_display; in msm_dp_bridge_hpd_disable() local
1763 …uct msm_dp_display_private *dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_d… in msm_dp_bridge_hpd_disable()
1770 msm_dp_display->internal_hpd = false; in msm_dp_bridge_hpd_disable()
1772 pm_runtime_put_sync(&msm_dp_display->pdev->dev); in msm_dp_bridge_hpd_disable()
1780 struct msm_dp *msm_dp_display = msm_dp_bridge->msm_dp_display; in msm_dp_bridge_hpd_notify() local
1781 …uct msm_dp_display_private *dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_d… in msm_dp_bridge_hpd_notify()
1784 if (msm_dp_display->internal_hpd) in msm_dp_bridge_hpd_notify()
1787 if (!msm_dp_display->link_ready && status == connector_status_connected) in msm_dp_bridge_hpd_notify()
1789 else if (msm_dp_display->link_ready && status == connector_status_disconnected) in msm_dp_bridge_hpd_notify()