Lines Matching full:dp
120 {.compatible = "qcom,sc7180-dp"},
180 struct dp_display_private *dp; in dp_display_signal_audio_start() local
182 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_signal_audio_start()
184 reinit_completion(&dp->audio_comp); in dp_display_signal_audio_start()
189 struct dp_display_private *dp; in dp_display_signal_audio_complete() local
191 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_signal_audio_complete()
193 complete_all(&dp->audio_comp); in dp_display_signal_audio_complete()
200 struct dp_display_private *dp; in dp_display_bind() local
206 dp = container_of(g_dp_display, in dp_display_bind()
209 dp->dp_display.drm_dev = drm; in dp_display_bind()
211 priv->dp = &(dp->dp_display); in dp_display_bind()
213 rc = dp->parser->parse(dp->parser); in dp_display_bind()
219 dp->aux->drm_dev = drm; in dp_display_bind()
220 rc = dp_aux_register(dp->aux); in dp_display_bind()
222 DRM_ERROR("DRM DP AUX register failed\n"); in dp_display_bind()
226 rc = dp_power_client_init(dp->power); in dp_display_bind()
232 rc = dp_register_audio_driver(dev, dp->audio); in dp_display_bind()
234 DRM_ERROR("Audio registration Dp failed\n"); in dp_display_bind()
243 struct dp_display_private *dp; in dp_display_unbind() local
247 dp = container_of(g_dp_display, in dp_display_unbind()
250 dp_power_client_deinit(dp->power); in dp_display_unbind()
251 dp_aux_unregister(dp->aux); in dp_display_unbind()
252 priv->dp = NULL; in dp_display_unbind()
266 static bool dp_display_is_sink_count_zero(struct dp_display_private *dp) in dp_display_is_sink_count_zero() argument
268 DRM_DEBUG_DP("present=%#x sink_count=%d\n", dp->panel->dpcd[DP_DOWNSTREAMPORT_PRESENT], in dp_display_is_sink_count_zero()
269 dp->link->sink_count); in dp_display_is_sink_count_zero()
270 return dp_display_is_ds_bridge(dp->panel) && in dp_display_is_sink_count_zero()
271 (dp->link->sink_count == 0); in dp_display_is_sink_count_zero()
276 struct dp_display_private *dp; in dp_display_send_hpd_event() local
279 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_send_hpd_event()
281 connector = dp->dp_display.connector; in dp_display_send_hpd_event()
286 static int dp_display_send_hpd_notification(struct dp_display_private *dp, in dp_display_send_hpd_notification() argument
289 if ((hpd && dp->dp_display.is_connected) || in dp_display_send_hpd_notification()
290 (!hpd && !dp->dp_display.is_connected)) { in dp_display_send_hpd_notification()
297 dp->panel->video_test = false; in dp_display_send_hpd_notification()
299 dp->dp_display.is_connected = hpd; in dp_display_send_hpd_notification()
302 dp_display_send_hpd_event(&dp->dp_display); in dp_display_send_hpd_notification()
307 static int dp_display_process_hpd_high(struct dp_display_private *dp) in dp_display_process_hpd_high() argument
312 dp->panel->max_dp_lanes = dp->parser->max_dp_lanes; in dp_display_process_hpd_high()
314 rc = dp_panel_read_sink_caps(dp->panel, dp->dp_display.connector); in dp_display_process_hpd_high()
318 dp_link_process_request(dp->link); in dp_display_process_hpd_high()
320 edid = dp->panel->edid; in dp_display_process_hpd_high()
322 dp->audio_supported = drm_detect_monitor_audio(edid); in dp_display_process_hpd_high()
323 dp_panel_handle_sink_request(dp->panel); in dp_display_process_hpd_high()
325 dp->dp_display.max_pclk_khz = DP_MAX_PIXEL_CLK_KHZ; in dp_display_process_hpd_high()
326 dp->dp_display.max_dp_lanes = dp->parser->max_dp_lanes; in dp_display_process_hpd_high()
332 dp_link_psm_config(dp->link, &dp->panel->link_info, false); in dp_display_process_hpd_high()
334 dp_link_reset_phy_params_vx_px(dp->link); in dp_display_process_hpd_high()
335 rc = dp_ctrl_on_link(dp->ctrl); in dp_display_process_hpd_high()
337 DRM_ERROR("failed to complete DP link training\n"); in dp_display_process_hpd_high()
341 dp_add_event(dp, EV_USER_NOTIFICATION, true, 0); in dp_display_process_hpd_high()
347 static void dp_display_host_init(struct dp_display_private *dp, int reset) in dp_display_host_init() argument
351 DRM_DEBUG_DP("core_initialized=%d\n", dp->core_initialized); in dp_display_host_init()
352 if (dp->core_initialized) { in dp_display_host_init()
353 DRM_DEBUG_DP("DP core already initialized\n"); in dp_display_host_init()
357 if (dp->usbpd->orientation == ORIENTATION_CC2) in dp_display_host_init()
360 dp_power_init(dp->power, flip); in dp_display_host_init()
361 dp_ctrl_host_init(dp->ctrl, flip, reset); in dp_display_host_init()
362 dp_aux_init(dp->aux); in dp_display_host_init()
363 dp->core_initialized = true; in dp_display_host_init()
366 static void dp_display_host_deinit(struct dp_display_private *dp) in dp_display_host_deinit() argument
368 if (!dp->core_initialized) { in dp_display_host_deinit()
369 DRM_DEBUG_DP("DP core not initialized\n"); in dp_display_host_deinit()
373 dp_ctrl_host_deinit(dp->ctrl); in dp_display_host_deinit()
374 dp_aux_deinit(dp->aux); in dp_display_host_deinit()
375 dp_power_deinit(dp->power); in dp_display_host_deinit()
377 dp->core_initialized = false; in dp_display_host_deinit()
383 struct dp_display_private *dp; in dp_display_usbpd_configure_cb() local
391 dp = container_of(g_dp_display, in dp_display_usbpd_configure_cb()
394 dp_display_host_init(dp, false); in dp_display_usbpd_configure_cb()
396 rc = dp_display_process_hpd_high(dp); in dp_display_usbpd_configure_cb()
404 struct dp_display_private *dp; in dp_display_usbpd_disconnect_cb() local
412 dp = container_of(g_dp_display, in dp_display_usbpd_disconnect_cb()
415 dp_add_event(dp, EV_USER_NOTIFICATION, false, 0); in dp_display_usbpd_disconnect_cb()
420 static void dp_display_handle_video_request(struct dp_display_private *dp) in dp_display_handle_video_request() argument
422 if (dp->link->sink_request & DP_TEST_LINK_VIDEO_PATTERN) { in dp_display_handle_video_request()
423 dp->panel->video_test = true; in dp_display_handle_video_request()
424 dp_link_send_test_response(dp->link); in dp_display_handle_video_request()
428 static int dp_display_handle_port_ststus_changed(struct dp_display_private *dp) in dp_display_handle_port_ststus_changed() argument
432 if (dp_display_is_sink_count_zero(dp)) { in dp_display_handle_port_ststus_changed()
434 if (dp->hpd_state != ST_DISCONNECTED) { in dp_display_handle_port_ststus_changed()
435 dp->hpd_state = ST_DISCONNECT_PENDING; in dp_display_handle_port_ststus_changed()
436 dp_add_event(dp, EV_USER_NOTIFICATION, false, 0); in dp_display_handle_port_ststus_changed()
439 if (dp->hpd_state == ST_DISCONNECTED) { in dp_display_handle_port_ststus_changed()
440 dp->hpd_state = ST_CONNECT_PENDING; in dp_display_handle_port_ststus_changed()
441 rc = dp_display_process_hpd_high(dp); in dp_display_handle_port_ststus_changed()
443 dp->hpd_state = ST_DISCONNECTED; in dp_display_handle_port_ststus_changed()
450 static int dp_display_handle_irq_hpd(struct dp_display_private *dp) in dp_display_handle_irq_hpd() argument
452 u32 sink_request = dp->link->sink_request; in dp_display_handle_irq_hpd()
455 if (dp->hpd_state == ST_DISCONNECTED) { in dp_display_handle_irq_hpd()
463 dp_ctrl_handle_sink_request(dp->ctrl); in dp_display_handle_irq_hpd()
466 dp_display_handle_video_request(dp); in dp_display_handle_irq_hpd()
475 struct dp_display_private *dp; in dp_display_usbpd_attention_cb() local
482 dp = container_of(g_dp_display, in dp_display_usbpd_attention_cb()
486 rc = dp_link_process_request(dp->link); in dp_display_usbpd_attention_cb()
488 sink_request = dp->link->sink_request; in dp_display_usbpd_attention_cb()
489 DRM_DEBUG_DP("hpd_state=%d sink_request=%d\n", dp->hpd_state, sink_request); in dp_display_usbpd_attention_cb()
491 rc = dp_display_handle_port_ststus_changed(dp); in dp_display_usbpd_attention_cb()
493 rc = dp_display_handle_irq_hpd(dp); in dp_display_usbpd_attention_cb()
499 static int dp_hpd_plug_handle(struct dp_display_private *dp, u32 data) in dp_hpd_plug_handle() argument
501 struct dp_usbpd *hpd = dp->usbpd; in dp_hpd_plug_handle()
509 mutex_lock(&dp->event_mutex); in dp_hpd_plug_handle()
511 state = dp->hpd_state; in dp_hpd_plug_handle()
514 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
519 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
525 dp_add_event(dp, EV_HPD_PLUG_INT, 0, 1); /* delay = 1 */ in dp_hpd_plug_handle()
526 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
530 dp->hpd_state = ST_CONNECT_PENDING; in dp_hpd_plug_handle()
534 ret = dp_display_usbpd_configure_cb(&dp->pdev->dev); in dp_hpd_plug_handle()
537 dp->hpd_state = ST_DISCONNECTED; in dp_hpd_plug_handle()
540 dp->core_initialized = false; in dp_hpd_plug_handle()
545 dp_add_event(dp, EV_CONNECT_PENDING_TIMEOUT, 0, tout); in dp_hpd_plug_handle()
549 dp_catalog_hpd_config_intr(dp->catalog, in dp_hpd_plug_handle()
552 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
558 static int dp_display_enable(struct dp_display_private *dp, u32 data);
559 static int dp_display_disable(struct dp_display_private *dp, u32 data);
561 static int dp_connect_pending_timeout(struct dp_display_private *dp, u32 data) in dp_connect_pending_timeout() argument
565 mutex_lock(&dp->event_mutex); in dp_connect_pending_timeout()
567 state = dp->hpd_state; in dp_connect_pending_timeout()
569 dp->hpd_state = ST_CONNECTED; in dp_connect_pending_timeout()
571 mutex_unlock(&dp->event_mutex); in dp_connect_pending_timeout()
579 struct dp_display_private *dp; in dp_display_handle_plugged_change() local
581 dp = container_of(dp_display, in dp_display_handle_plugged_change()
586 dp->audio_supported) in dp_display_handle_plugged_change()
590 static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data) in dp_hpd_unplug_handle() argument
592 struct dp_usbpd *hpd = dp->usbpd; in dp_hpd_unplug_handle()
598 mutex_lock(&dp->event_mutex); in dp_hpd_unplug_handle()
600 state = dp->hpd_state; in dp_hpd_unplug_handle()
603 dp_catalog_hpd_config_intr(dp->catalog, in dp_hpd_unplug_handle()
607 dp_del_event(dp, EV_IRQ_HPD_INT); in dp_hpd_unplug_handle()
611 if (dp->link->sink_count == 0) { in dp_hpd_unplug_handle()
612 dp_ctrl_off_phy(dp->ctrl); in dp_hpd_unplug_handle()
614 dp->core_initialized = false; in dp_hpd_unplug_handle()
616 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
621 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
627 dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 1); /* delay = 1 */ in dp_hpd_unplug_handle()
628 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
632 dp->hpd_state = ST_DISCONNECT_PENDING; in dp_hpd_unplug_handle()
635 dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, false); in dp_hpd_unplug_handle()
643 dp_display_usbpd_disconnect_cb(&dp->pdev->dev); in dp_hpd_unplug_handle()
646 dp_add_event(dp, EV_DISCONNECT_PENDING_TIMEOUT, 0, DP_TIMEOUT_5_SECOND); in dp_hpd_unplug_handle()
653 dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, true); in dp_hpd_unplug_handle()
656 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
660 static int dp_disconnect_pending_timeout(struct dp_display_private *dp, u32 data) in dp_disconnect_pending_timeout() argument
664 mutex_lock(&dp->event_mutex); in dp_disconnect_pending_timeout()
666 state = dp->hpd_state; in dp_disconnect_pending_timeout()
668 dp->hpd_state = ST_DISCONNECTED; in dp_disconnect_pending_timeout()
670 mutex_unlock(&dp->event_mutex); in dp_disconnect_pending_timeout()
675 static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data) in dp_irq_hpd_handle() argument
680 mutex_lock(&dp->event_mutex); in dp_irq_hpd_handle()
683 state = dp->hpd_state; in dp_irq_hpd_handle()
685 mutex_unlock(&dp->event_mutex); in dp_irq_hpd_handle()
691 dp_add_event(dp, EV_IRQ_HPD_INT, 0, 1); /* delay = 1 */ in dp_irq_hpd_handle()
692 mutex_unlock(&dp->event_mutex); in dp_irq_hpd_handle()
698 dp_add_event(dp, EV_IRQ_HPD_INT, 0, 1); /* delay = 1 */ in dp_irq_hpd_handle()
699 mutex_unlock(&dp->event_mutex); in dp_irq_hpd_handle()
703 ret = dp_display_usbpd_attention_cb(&dp->pdev->dev); in dp_irq_hpd_handle()
705 dp->core_initialized = false; in dp_irq_hpd_handle()
709 mutex_unlock(&dp->event_mutex); in dp_irq_hpd_handle()
714 static void dp_display_deinit_sub_modules(struct dp_display_private *dp) in dp_display_deinit_sub_modules() argument
716 dp_debug_put(dp->debug); in dp_display_deinit_sub_modules()
717 dp_panel_put(dp->panel); in dp_display_deinit_sub_modules()
718 dp_aux_put(dp->aux); in dp_display_deinit_sub_modules()
719 dp_audio_put(dp->audio); in dp_display_deinit_sub_modules()
722 static int dp_init_sub_modules(struct dp_display_private *dp) in dp_init_sub_modules() argument
725 struct device *dev = &dp->pdev->dev; in dp_init_sub_modules()
726 struct dp_usbpd_cb *cb = &dp->usbpd_cb; in dp_init_sub_modules()
736 dp->usbpd = dp_hpd_get(dev, cb); in dp_init_sub_modules()
737 if (IS_ERR(dp->usbpd)) { in dp_init_sub_modules()
738 rc = PTR_ERR(dp->usbpd); in dp_init_sub_modules()
740 dp->usbpd = NULL; in dp_init_sub_modules()
744 dp->parser = dp_parser_get(dp->pdev); in dp_init_sub_modules()
745 if (IS_ERR(dp->parser)) { in dp_init_sub_modules()
746 rc = PTR_ERR(dp->parser); in dp_init_sub_modules()
748 dp->parser = NULL; in dp_init_sub_modules()
752 dp->catalog = dp_catalog_get(dev, &dp->parser->io); in dp_init_sub_modules()
753 if (IS_ERR(dp->catalog)) { in dp_init_sub_modules()
754 rc = PTR_ERR(dp->catalog); in dp_init_sub_modules()
756 dp->catalog = NULL; in dp_init_sub_modules()
760 dp->power = dp_power_get(dev, dp->parser); in dp_init_sub_modules()
761 if (IS_ERR(dp->power)) { in dp_init_sub_modules()
762 rc = PTR_ERR(dp->power); in dp_init_sub_modules()
764 dp->power = NULL; in dp_init_sub_modules()
768 dp->aux = dp_aux_get(dev, dp->catalog); in dp_init_sub_modules()
769 if (IS_ERR(dp->aux)) { in dp_init_sub_modules()
770 rc = PTR_ERR(dp->aux); in dp_init_sub_modules()
772 dp->aux = NULL; in dp_init_sub_modules()
776 dp->link = dp_link_get(dev, dp->aux); in dp_init_sub_modules()
777 if (IS_ERR(dp->link)) { in dp_init_sub_modules()
778 rc = PTR_ERR(dp->link); in dp_init_sub_modules()
780 dp->link = NULL; in dp_init_sub_modules()
784 panel_in.aux = dp->aux; in dp_init_sub_modules()
785 panel_in.catalog = dp->catalog; in dp_init_sub_modules()
786 panel_in.link = dp->link; in dp_init_sub_modules()
788 dp->panel = dp_panel_get(&panel_in); in dp_init_sub_modules()
789 if (IS_ERR(dp->panel)) { in dp_init_sub_modules()
790 rc = PTR_ERR(dp->panel); in dp_init_sub_modules()
792 dp->panel = NULL; in dp_init_sub_modules()
796 dp->ctrl = dp_ctrl_get(dev, dp->link, dp->panel, dp->aux, in dp_init_sub_modules()
797 dp->power, dp->catalog, dp->parser); in dp_init_sub_modules()
798 if (IS_ERR(dp->ctrl)) { in dp_init_sub_modules()
799 rc = PTR_ERR(dp->ctrl); in dp_init_sub_modules()
801 dp->ctrl = NULL; in dp_init_sub_modules()
805 dp->audio = dp_audio_get(dp->pdev, dp->panel, dp->catalog); in dp_init_sub_modules()
806 if (IS_ERR(dp->audio)) { in dp_init_sub_modules()
807 rc = PTR_ERR(dp->audio); in dp_init_sub_modules()
809 dp->audio = NULL; in dp_init_sub_modules()
816 dp_panel_put(dp->panel); in dp_init_sub_modules()
818 dp_aux_put(dp->aux); in dp_init_sub_modules()
826 struct dp_display_private *dp; in dp_display_set_mode() local
828 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_set_mode()
830 dp->panel->dp_mode.drm_mode = mode->drm_mode; in dp_display_set_mode()
831 dp->panel->dp_mode.bpp = mode->bpp; in dp_display_set_mode()
832 dp->panel->dp_mode.capabilities = mode->capabilities; in dp_display_set_mode()
833 dp_panel_init_panel_info(dp->panel); in dp_display_set_mode()
837 static int dp_display_prepare(struct msm_dp *dp) in dp_display_prepare() argument
842 static int dp_display_enable(struct dp_display_private *dp, u32 data) in dp_display_enable() argument
849 DRM_DEBUG_DP("sink_count=%d\n", dp->link->sink_count); in dp_display_enable()
855 rc = dp_ctrl_on_stream(dp->ctrl); in dp_display_enable()
864 struct dp_display_private *dp; in dp_display_post_enable() local
867 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_post_enable()
869 rate = dp->link->link_params.rate; in dp_display_post_enable()
871 if (dp->audio_supported) { in dp_display_post_enable()
872 dp->audio->bw_code = drm_dp_link_rate_to_bw_code(rate); in dp_display_post_enable()
873 dp->audio->lane_count = dp->link->link_params.num_lanes; in dp_display_post_enable()
881 static int dp_display_disable(struct dp_display_private *dp, u32 data) in dp_display_disable() argument
894 if (!wait_for_completion_timeout(&dp->audio_comp, in dp_display_disable()
902 if (dp->link->sink_count == 0) { in dp_display_disable()
903 dp_ctrl_off_link_stream(dp->ctrl); in dp_display_disable()
905 dp_ctrl_off(dp->ctrl); in dp_display_disable()
906 dp->core_initialized = false; in dp_display_disable()
911 DRM_DEBUG_DP("sink count: %d\n", dp->link->sink_count); in dp_display_disable()
915 static int dp_display_unprepare(struct msm_dp *dp) in dp_display_unprepare() argument
933 int dp_display_validate_mode(struct msm_dp *dp, u32 mode_pclk_khz) in dp_display_validate_mode() argument
940 if (!dp || !mode_pclk_khz || !dp->connector) { in dp_display_validate_mode()
945 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_validate_mode()
948 mode_bpp = dp->connector->display_info.bpc * num_components; in dp_display_validate_mode()
964 int dp_display_get_modes(struct msm_dp *dp, in dp_display_get_modes() argument
970 if (!dp) { in dp_display_get_modes()
975 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_get_modes()
978 dp->connector, dp_mode); in dp_display_get_modes()
980 dp->max_pclk_khz = dp_mode->drm_mode.clock; in dp_display_get_modes()
984 bool dp_display_check_video_test(struct msm_dp *dp) in dp_display_check_video_test() argument
988 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_check_video_test()
993 int dp_display_get_test_bpp(struct msm_dp *dp) in dp_display_get_test_bpp() argument
997 if (!dp) { in dp_display_get_test_bpp()
1002 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_get_test_bpp()
1008 void msm_dp_snapshot(struct msm_disp_state *disp_state, struct msm_dp *dp) in msm_dp_snapshot() argument
1012 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_snapshot()
1016 * however till DP cable is connected this will not happen as we in msm_dp_snapshot()
1018 * power_on status before dumping DP registers to avoid crash due in msm_dp_snapshot()
1023 if (!dp->power_on) { in msm_dp_snapshot()
1033 static void dp_display_config_hpd(struct dp_display_private *dp) in dp_display_config_hpd() argument
1036 dp_display_host_init(dp, true); in dp_display_config_hpd()
1037 dp_catalog_ctrl_hpd_config(dp->catalog); in dp_display_config_hpd()
1040 * we are leaving dp clocks on during disconnect in dp_display_config_hpd()
1043 enable_irq(dp->irq); in dp_display_config_hpd()
1143 struct dp_display_private *dp = dev_id; in dp_display_irq_handler() local
1147 if (!dp) { in dp_display_irq_handler()
1152 hpd_isr_status = dp_catalog_hpd_get_intr_status(dp->catalog); in dp_display_irq_handler()
1158 dp_add_event(dp, EV_HPD_PLUG_INT, 0, 0); in dp_display_irq_handler()
1162 dp_del_event(dp, EV_CONNECT_PENDING_TIMEOUT); in dp_display_irq_handler()
1163 dp_add_event(dp, EV_IRQ_HPD_INT, 0, 0); in dp_display_irq_handler()
1167 dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); in dp_display_irq_handler()
1168 dp_add_event(dp, EV_HPD_PLUG_INT, 0, 3); in dp_display_irq_handler()
1172 dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); in dp_display_irq_handler()
1175 /* DP controller isr */ in dp_display_irq_handler()
1176 dp_ctrl_isr(dp->ctrl); in dp_display_irq_handler()
1178 /* DP aux isr */ in dp_display_irq_handler()
1179 dp_aux_isr(dp->aux); in dp_display_irq_handler()
1187 struct dp_display_private *dp; in dp_display_request_irq() local
1194 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_request_irq()
1196 dp->irq = irq_of_parse_and_map(dp->pdev->dev.of_node, 0); in dp_display_request_irq()
1197 if (dp->irq < 0) { in dp_display_request_irq()
1198 rc = dp->irq; in dp_display_request_irq()
1203 rc = devm_request_irq(&dp->pdev->dev, dp->irq, in dp_display_request_irq()
1205 IRQF_TRIGGER_HIGH, "dp_display_isr", dp); in dp_display_request_irq()
1208 dp->irq, rc); in dp_display_request_irq()
1211 disable_irq(dp->irq); in dp_display_request_irq()
1219 struct dp_display_private *dp; in dp_display_probe() local
1226 dp = devm_kzalloc(&pdev->dev, sizeof(*dp), GFP_KERNEL); in dp_display_probe()
1227 if (!dp) in dp_display_probe()
1230 dp->pdev = pdev; in dp_display_probe()
1231 dp->name = "drm_dp"; in dp_display_probe()
1233 rc = dp_init_sub_modules(dp); in dp_display_probe()
1239 mutex_init(&dp->event_mutex); in dp_display_probe()
1240 g_dp_display = &dp->dp_display; in dp_display_probe()
1242 /* Store DP audio handle inside DP display */ in dp_display_probe()
1243 g_dp_display->dp_audio = dp->audio; in dp_display_probe()
1245 init_completion(&dp->audio_comp); in dp_display_probe()
1252 dp_display_deinit_sub_modules(dp); in dp_display_probe()
1260 struct dp_display_private *dp; in dp_display_remove() local
1262 dp = container_of(g_dp_display, in dp_display_remove()
1265 dp_display_deinit_sub_modules(dp); in dp_display_remove()
1277 struct dp_display_private *dp; in dp_pm_resume() local
1280 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_pm_resume()
1282 mutex_lock(&dp->event_mutex); in dp_pm_resume()
1285 dp->core_initialized, dp_display->power_on); in dp_pm_resume()
1288 dp->hpd_state = ST_DISCONNECTED; in dp_pm_resume()
1290 /* turn on dp ctrl/phy */ in dp_pm_resume()
1291 dp_display_host_init(dp, true); in dp_pm_resume()
1293 dp_catalog_ctrl_hpd_config(dp->catalog); in dp_pm_resume()
1299 dp_link_psm_config(dp->link, &dp->panel->link_info, false); in dp_pm_resume()
1301 if (dp_catalog_link_is_connected(dp->catalog)) { in dp_pm_resume()
1302 sink_count = drm_dp_read_sink_count(dp->aux); in dp_pm_resume()
1307 dp->link->sink_count = sink_count; in dp_pm_resume()
1314 if (dp->link->sink_count) { in dp_pm_resume()
1315 dp->dp_display.is_connected = true; in dp_pm_resume()
1317 dp->dp_display.is_connected = false; in dp_pm_resume()
1322 dp->link->sink_count, dp->dp_display.is_connected, in dp_pm_resume()
1323 dp->core_initialized, dp_display->power_on); in dp_pm_resume()
1325 mutex_unlock(&dp->event_mutex); in dp_pm_resume()
1334 struct dp_display_private *dp; in dp_pm_suspend() local
1336 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_pm_suspend()
1338 mutex_lock(&dp->event_mutex); in dp_pm_suspend()
1341 dp->core_initialized, dp_display->power_on); in dp_pm_suspend()
1343 if (dp->core_initialized == true) { in dp_pm_suspend()
1345 if (dp_power_clk_status(dp->power, DP_CTRL_PM)) in dp_pm_suspend()
1346 dp_ctrl_off_link_stream(dp->ctrl); in dp_pm_suspend()
1348 dp_display_host_deinit(dp); in dp_pm_suspend()
1351 dp->hpd_state = ST_SUSPENDED; in dp_pm_suspend()
1354 dp->core_initialized = false; in dp_pm_suspend()
1357 dp->core_initialized, dp_display->power_on); in dp_pm_suspend()
1359 mutex_unlock(&dp->event_mutex); in dp_pm_suspend()
1385 .name = "msm-dp-display",
1398 DRM_ERROR("Dp display driver register failed"); in msm_dp_register()
1410 struct dp_display_private *dp; in msm_dp_irq_postinstall() local
1415 dp = container_of(dp_display, struct dp_display_private, dp_display); in msm_dp_irq_postinstall()
1417 dp_hpd_event_setup(dp); in msm_dp_irq_postinstall()
1419 dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 100); in msm_dp_irq_postinstall()
1424 struct dp_display_private *dp; in msm_dp_debugfs_init() local
1428 dp = container_of(dp_display, struct dp_display_private, dp_display); in msm_dp_debugfs_init()
1429 dev = &dp->pdev->dev; in msm_dp_debugfs_init()
1431 dp->debug = dp_debug_get(dev, dp->panel, dp->usbpd, in msm_dp_debugfs_init()
1432 dp->link, &dp->dp_display.connector, in msm_dp_debugfs_init()
1434 if (IS_ERR(dp->debug)) { in msm_dp_debugfs_init()
1435 rc = PTR_ERR(dp->debug); in msm_dp_debugfs_init()
1437 dp->debug = NULL; in msm_dp_debugfs_init()
1465 "failed to create dp connector: %d\n", ret); in msm_dp_modeset_init()
1474 int msm_dp_display_enable(struct msm_dp *dp, struct drm_encoder *encoder) in msm_dp_display_enable() argument
1480 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_enable()
1491 rc = dp_display_set_mode(dp, &dp_display->dp_mode); in msm_dp_display_enable()
1498 rc = dp_display_prepare(dp); in msm_dp_display_enable()
1500 DRM_ERROR("DP display prepare failed, rc=%d\n", rc); in msm_dp_display_enable()
1512 rc = dp_display_post_enable(dp); in msm_dp_display_enable()
1514 DRM_ERROR("DP display post enable failed, rc=%d\n", rc); in msm_dp_display_enable()
1516 dp_display_unprepare(dp); in msm_dp_display_enable()
1531 int msm_dp_display_pre_disable(struct msm_dp *dp, struct drm_encoder *encoder) in msm_dp_display_pre_disable() argument
1535 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_pre_disable()
1542 int msm_dp_display_disable(struct msm_dp *dp, struct drm_encoder *encoder) in msm_dp_display_disable() argument
1548 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_disable()
1557 rc = dp_display_unprepare(dp); in msm_dp_display_disable()
1559 DRM_ERROR("DP display unprepare failed, rc=%d\n", rc); in msm_dp_display_disable()
1573 void msm_dp_display_mode_set(struct msm_dp *dp, struct drm_encoder *encoder, in msm_dp_display_mode_set() argument
1579 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_mode_set()
1583 if (dp_display_check_video_test(dp)) in msm_dp_display_mode_set()
1584 dp_display->dp_mode.bpp = dp_display_get_test_bpp(dp); in msm_dp_display_mode_set()
1586 dp_display->dp_mode.bpp = dp->connector->display_info.bpc * 3; in msm_dp_display_mode_set()