Lines Matching refs:dp

145 	struct msm_dp *dp = dev_get_drvdata(dev);  in dev_get_dp_display_private()  local
147 return container_of(dp, struct dp_display_private, dp_display); in dev_get_dp_display_private()
206 struct dp_display_private *dp; in dp_display_signal_audio_start() local
208 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_signal_audio_start()
210 reinit_completion(&dp->audio_comp); in dp_display_signal_audio_start()
215 struct dp_display_private *dp; in dp_display_signal_audio_complete() local
217 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_signal_audio_complete()
219 complete_all(&dp->audio_comp); in dp_display_signal_audio_complete()
226 struct dp_display_private *dp = dev_get_dp_display_private(dev); in dp_display_bind() local
232 dp->dp_display.drm_dev = drm; in dp_display_bind()
234 priv->dp[dp->id] = &dp->dp_display; in dp_display_bind()
236 rc = dp->parser->parse(dp->parser, dp->dp_display.connector_type); in dp_display_bind()
242 dp->dp_display.panel_bridge = dp->parser->panel_bridge; in dp_display_bind()
244 dp->aux->drm_dev = drm; in dp_display_bind()
245 rc = dp_aux_register(dp->aux); in dp_display_bind()
251 rc = dp_power_client_init(dp->power); in dp_display_bind()
257 rc = dp_register_audio_driver(dev, dp->audio); in dp_display_bind()
268 struct dp_display_private *dp = dev_get_dp_display_private(dev); in dp_display_unbind() local
272 dp_power_client_deinit(dp->power); in dp_display_unbind()
273 dp_aux_unregister(dp->aux); in dp_display_unbind()
274 priv->dp[dp->id] = NULL; in dp_display_unbind()
288 static bool dp_display_is_sink_count_zero(struct dp_display_private *dp) in dp_display_is_sink_count_zero() argument
290 DRM_DEBUG_DP("present=%#x sink_count=%d\n", dp->panel->dpcd[DP_DOWNSTREAMPORT_PRESENT], in dp_display_is_sink_count_zero()
291 dp->link->sink_count); in dp_display_is_sink_count_zero()
292 return dp_display_is_ds_bridge(dp->panel) && in dp_display_is_sink_count_zero()
293 (dp->link->sink_count == 0); in dp_display_is_sink_count_zero()
298 struct dp_display_private *dp; in dp_display_send_hpd_event() local
301 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_send_hpd_event()
303 connector = dp->dp_display.connector; in dp_display_send_hpd_event()
308 static int dp_display_send_hpd_notification(struct dp_display_private *dp, in dp_display_send_hpd_notification() argument
311 if ((hpd && dp->dp_display.is_connected) || in dp_display_send_hpd_notification()
312 (!hpd && !dp->dp_display.is_connected)) { in dp_display_send_hpd_notification()
319 dp->panel->video_test = false; in dp_display_send_hpd_notification()
321 dp->dp_display.is_connected = hpd; in dp_display_send_hpd_notification()
324 dp_display_send_hpd_event(&dp->dp_display); in dp_display_send_hpd_notification()
329 static int dp_display_process_hpd_high(struct dp_display_private *dp) in dp_display_process_hpd_high() argument
334 dp->panel->max_dp_lanes = dp->parser->max_dp_lanes; in dp_display_process_hpd_high()
336 rc = dp_panel_read_sink_caps(dp->panel, dp->dp_display.connector); in dp_display_process_hpd_high()
340 dp_link_process_request(dp->link); in dp_display_process_hpd_high()
342 edid = dp->panel->edid; in dp_display_process_hpd_high()
344 dp->audio_supported = drm_detect_monitor_audio(edid); in dp_display_process_hpd_high()
345 dp_panel_handle_sink_request(dp->panel); in dp_display_process_hpd_high()
347 dp->dp_display.max_pclk_khz = DP_MAX_PIXEL_CLK_KHZ; in dp_display_process_hpd_high()
348 dp->dp_display.max_dp_lanes = dp->parser->max_dp_lanes; in dp_display_process_hpd_high()
354 dp_link_psm_config(dp->link, &dp->panel->link_info, false); in dp_display_process_hpd_high()
356 dp_link_reset_phy_params_vx_px(dp->link); in dp_display_process_hpd_high()
357 rc = dp_ctrl_on_link(dp->ctrl); in dp_display_process_hpd_high()
363 dp_add_event(dp, EV_USER_NOTIFICATION, true, 0); in dp_display_process_hpd_high()
369 static void dp_display_host_init(struct dp_display_private *dp, int reset) in dp_display_host_init() argument
373 DRM_DEBUG_DP("core_initialized=%d\n", dp->core_initialized); in dp_display_host_init()
374 if (dp->core_initialized) { in dp_display_host_init()
379 if (dp->usbpd->orientation == ORIENTATION_CC2) in dp_display_host_init()
382 dp_power_init(dp->power, flip); in dp_display_host_init()
383 dp_ctrl_host_init(dp->ctrl, flip, reset); in dp_display_host_init()
384 dp_aux_init(dp->aux); in dp_display_host_init()
385 dp->core_initialized = true; in dp_display_host_init()
388 static void dp_display_host_deinit(struct dp_display_private *dp) in dp_display_host_deinit() argument
390 if (!dp->core_initialized) { in dp_display_host_deinit()
395 dp_ctrl_host_deinit(dp->ctrl); in dp_display_host_deinit()
396 dp_aux_deinit(dp->aux); in dp_display_host_deinit()
397 dp_power_deinit(dp->power); in dp_display_host_deinit()
399 dp->core_initialized = false; in dp_display_host_deinit()
404 struct dp_display_private *dp = dev_get_dp_display_private(dev); in dp_display_usbpd_configure_cb() local
406 dp_display_host_init(dp, false); in dp_display_usbpd_configure_cb()
408 return dp_display_process_hpd_high(dp); in dp_display_usbpd_configure_cb()
414 struct dp_display_private *dp = dev_get_dp_display_private(dev); in dp_display_usbpd_disconnect_cb() local
416 dp_add_event(dp, EV_USER_NOTIFICATION, false, 0); in dp_display_usbpd_disconnect_cb()
421 static void dp_display_handle_video_request(struct dp_display_private *dp) in dp_display_handle_video_request() argument
423 if (dp->link->sink_request & DP_TEST_LINK_VIDEO_PATTERN) { in dp_display_handle_video_request()
424 dp->panel->video_test = true; in dp_display_handle_video_request()
425 dp_link_send_test_response(dp->link); in dp_display_handle_video_request()
429 static int dp_display_handle_port_ststus_changed(struct dp_display_private *dp) in dp_display_handle_port_ststus_changed() argument
433 if (dp_display_is_sink_count_zero(dp)) { in dp_display_handle_port_ststus_changed()
435 if (dp->hpd_state != ST_DISCONNECTED) { in dp_display_handle_port_ststus_changed()
436 dp->hpd_state = ST_DISCONNECT_PENDING; in dp_display_handle_port_ststus_changed()
437 dp_add_event(dp, EV_USER_NOTIFICATION, false, 0); in dp_display_handle_port_ststus_changed()
440 if (dp->hpd_state == ST_DISCONNECTED) { in dp_display_handle_port_ststus_changed()
441 dp->hpd_state = ST_CONNECT_PENDING; in dp_display_handle_port_ststus_changed()
442 rc = dp_display_process_hpd_high(dp); in dp_display_handle_port_ststus_changed()
444 dp->hpd_state = ST_DISCONNECTED; in dp_display_handle_port_ststus_changed()
451 static int dp_display_handle_irq_hpd(struct dp_display_private *dp) in dp_display_handle_irq_hpd() argument
453 u32 sink_request = dp->link->sink_request; in dp_display_handle_irq_hpd()
456 if (dp->hpd_state == ST_DISCONNECTED) { in dp_display_handle_irq_hpd()
464 dp_ctrl_handle_sink_request(dp->ctrl); in dp_display_handle_irq_hpd()
467 dp_display_handle_video_request(dp); in dp_display_handle_irq_hpd()
476 struct dp_display_private *dp = dev_get_dp_display_private(dev); in dp_display_usbpd_attention_cb() local
479 rc = dp_link_process_request(dp->link); in dp_display_usbpd_attention_cb()
481 sink_request = dp->link->sink_request; in dp_display_usbpd_attention_cb()
482 DRM_DEBUG_DP("hpd_state=%d sink_request=%d\n", dp->hpd_state, sink_request); in dp_display_usbpd_attention_cb()
484 rc = dp_display_handle_port_ststus_changed(dp); in dp_display_usbpd_attention_cb()
486 rc = dp_display_handle_irq_hpd(dp); in dp_display_usbpd_attention_cb()
492 static int dp_hpd_plug_handle(struct dp_display_private *dp, u32 data) in dp_hpd_plug_handle() argument
494 struct dp_usbpd *hpd = dp->usbpd; in dp_hpd_plug_handle()
502 mutex_lock(&dp->event_mutex); in dp_hpd_plug_handle()
504 state = dp->hpd_state; in dp_hpd_plug_handle()
507 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
512 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
518 dp_add_event(dp, EV_HPD_PLUG_INT, 0, 1); /* delay = 1 */ in dp_hpd_plug_handle()
519 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
523 dp->hpd_state = ST_CONNECT_PENDING; in dp_hpd_plug_handle()
527 ret = dp_display_usbpd_configure_cb(&dp->pdev->dev); in dp_hpd_plug_handle()
530 dp->hpd_state = ST_DISCONNECTED; in dp_hpd_plug_handle()
533 dp->core_initialized = false; in dp_hpd_plug_handle()
538 dp_add_event(dp, EV_CONNECT_PENDING_TIMEOUT, 0, tout); in dp_hpd_plug_handle()
542 dp_catalog_hpd_config_intr(dp->catalog, in dp_hpd_plug_handle()
545 mutex_unlock(&dp->event_mutex); in dp_hpd_plug_handle()
551 static int dp_display_enable(struct dp_display_private *dp, u32 data);
552 static int dp_display_disable(struct dp_display_private *dp, u32 data);
554 static int dp_connect_pending_timeout(struct dp_display_private *dp, u32 data) in dp_connect_pending_timeout() argument
558 mutex_lock(&dp->event_mutex); in dp_connect_pending_timeout()
560 state = dp->hpd_state; in dp_connect_pending_timeout()
562 dp->hpd_state = ST_CONNECTED; in dp_connect_pending_timeout()
564 mutex_unlock(&dp->event_mutex); in dp_connect_pending_timeout()
572 struct dp_display_private *dp; in dp_display_handle_plugged_change() local
574 dp = container_of(dp_display, in dp_display_handle_plugged_change()
579 dp->audio_supported) in dp_display_handle_plugged_change()
583 static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data) in dp_hpd_unplug_handle() argument
585 struct dp_usbpd *hpd = dp->usbpd; in dp_hpd_unplug_handle()
591 mutex_lock(&dp->event_mutex); in dp_hpd_unplug_handle()
593 state = dp->hpd_state; in dp_hpd_unplug_handle()
596 dp_catalog_hpd_config_intr(dp->catalog, in dp_hpd_unplug_handle()
600 dp_del_event(dp, EV_IRQ_HPD_INT); in dp_hpd_unplug_handle()
604 if (dp->link->sink_count == 0) { in dp_hpd_unplug_handle()
605 dp_ctrl_off_phy(dp->ctrl); in dp_hpd_unplug_handle()
607 dp->core_initialized = false; in dp_hpd_unplug_handle()
609 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
614 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
620 dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 1); /* delay = 1 */ in dp_hpd_unplug_handle()
621 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
625 dp->hpd_state = ST_DISCONNECT_PENDING; in dp_hpd_unplug_handle()
628 dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, false); in dp_hpd_unplug_handle()
636 dp_display_usbpd_disconnect_cb(&dp->pdev->dev); in dp_hpd_unplug_handle()
639 dp_add_event(dp, EV_DISCONNECT_PENDING_TIMEOUT, 0, DP_TIMEOUT_5_SECOND); in dp_hpd_unplug_handle()
643 dp_display_handle_plugged_change(&dp->dp_display, false); in dp_hpd_unplug_handle()
646 dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, true); in dp_hpd_unplug_handle()
649 mutex_unlock(&dp->event_mutex); in dp_hpd_unplug_handle()
653 static int dp_disconnect_pending_timeout(struct dp_display_private *dp, u32 data) in dp_disconnect_pending_timeout() argument
657 mutex_lock(&dp->event_mutex); in dp_disconnect_pending_timeout()
659 state = dp->hpd_state; in dp_disconnect_pending_timeout()
661 dp->hpd_state = ST_DISCONNECTED; in dp_disconnect_pending_timeout()
663 mutex_unlock(&dp->event_mutex); in dp_disconnect_pending_timeout()
668 static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data) in dp_irq_hpd_handle() argument
673 mutex_lock(&dp->event_mutex); in dp_irq_hpd_handle()
676 state = dp->hpd_state; in dp_irq_hpd_handle()
678 mutex_unlock(&dp->event_mutex); in dp_irq_hpd_handle()
684 dp_add_event(dp, EV_IRQ_HPD_INT, 0, 1); /* delay = 1 */ 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()
696 ret = dp_display_usbpd_attention_cb(&dp->pdev->dev); in dp_irq_hpd_handle()
698 dp->core_initialized = false; in dp_irq_hpd_handle()
702 mutex_unlock(&dp->event_mutex); in dp_irq_hpd_handle()
707 static void dp_display_deinit_sub_modules(struct dp_display_private *dp) in dp_display_deinit_sub_modules() argument
709 dp_debug_put(dp->debug); in dp_display_deinit_sub_modules()
710 dp_panel_put(dp->panel); in dp_display_deinit_sub_modules()
711 dp_aux_put(dp->aux); in dp_display_deinit_sub_modules()
712 dp_audio_put(dp->audio); in dp_display_deinit_sub_modules()
715 static int dp_init_sub_modules(struct dp_display_private *dp) in dp_init_sub_modules() argument
718 struct device *dev = &dp->pdev->dev; in dp_init_sub_modules()
719 struct dp_usbpd_cb *cb = &dp->usbpd_cb; in dp_init_sub_modules()
729 dp->usbpd = dp_hpd_get(dev, cb); in dp_init_sub_modules()
730 if (IS_ERR(dp->usbpd)) { in dp_init_sub_modules()
731 rc = PTR_ERR(dp->usbpd); in dp_init_sub_modules()
733 dp->usbpd = NULL; in dp_init_sub_modules()
737 dp->parser = dp_parser_get(dp->pdev); in dp_init_sub_modules()
738 if (IS_ERR(dp->parser)) { in dp_init_sub_modules()
739 rc = PTR_ERR(dp->parser); in dp_init_sub_modules()
741 dp->parser = NULL; in dp_init_sub_modules()
745 dp->catalog = dp_catalog_get(dev, &dp->parser->io); in dp_init_sub_modules()
746 if (IS_ERR(dp->catalog)) { in dp_init_sub_modules()
747 rc = PTR_ERR(dp->catalog); in dp_init_sub_modules()
749 dp->catalog = NULL; in dp_init_sub_modules()
753 dp->power = dp_power_get(dev, dp->parser); in dp_init_sub_modules()
754 if (IS_ERR(dp->power)) { in dp_init_sub_modules()
755 rc = PTR_ERR(dp->power); in dp_init_sub_modules()
757 dp->power = NULL; in dp_init_sub_modules()
761 dp->aux = dp_aux_get(dev, dp->catalog); in dp_init_sub_modules()
762 if (IS_ERR(dp->aux)) { in dp_init_sub_modules()
763 rc = PTR_ERR(dp->aux); in dp_init_sub_modules()
765 dp->aux = NULL; in dp_init_sub_modules()
769 dp->link = dp_link_get(dev, dp->aux); in dp_init_sub_modules()
770 if (IS_ERR(dp->link)) { in dp_init_sub_modules()
771 rc = PTR_ERR(dp->link); in dp_init_sub_modules()
773 dp->link = NULL; in dp_init_sub_modules()
777 panel_in.aux = dp->aux; in dp_init_sub_modules()
778 panel_in.catalog = dp->catalog; in dp_init_sub_modules()
779 panel_in.link = dp->link; in dp_init_sub_modules()
781 dp->panel = dp_panel_get(&panel_in); in dp_init_sub_modules()
782 if (IS_ERR(dp->panel)) { in dp_init_sub_modules()
783 rc = PTR_ERR(dp->panel); in dp_init_sub_modules()
785 dp->panel = NULL; in dp_init_sub_modules()
789 dp->ctrl = dp_ctrl_get(dev, dp->link, dp->panel, dp->aux, in dp_init_sub_modules()
790 dp->power, dp->catalog, dp->parser); in dp_init_sub_modules()
791 if (IS_ERR(dp->ctrl)) { in dp_init_sub_modules()
792 rc = PTR_ERR(dp->ctrl); in dp_init_sub_modules()
794 dp->ctrl = NULL; in dp_init_sub_modules()
798 dp->audio = dp_audio_get(dp->pdev, dp->panel, dp->catalog); in dp_init_sub_modules()
799 if (IS_ERR(dp->audio)) { in dp_init_sub_modules()
800 rc = PTR_ERR(dp->audio); in dp_init_sub_modules()
802 dp->audio = NULL; in dp_init_sub_modules()
809 dp_panel_put(dp->panel); in dp_init_sub_modules()
811 dp_aux_put(dp->aux); in dp_init_sub_modules()
819 struct dp_display_private *dp; in dp_display_set_mode() local
821 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_set_mode()
823 dp->panel->dp_mode.drm_mode = mode->drm_mode; in dp_display_set_mode()
824 dp->panel->dp_mode.bpp = mode->bpp; in dp_display_set_mode()
825 dp->panel->dp_mode.capabilities = mode->capabilities; in dp_display_set_mode()
826 dp_panel_init_panel_info(dp->panel); in dp_display_set_mode()
835 static int dp_display_enable(struct dp_display_private *dp, u32 data) in dp_display_enable() argument
838 struct msm_dp *dp_display = &dp->dp_display; in dp_display_enable()
840 DRM_DEBUG_DP("sink_count=%d\n", dp->link->sink_count); in dp_display_enable()
846 rc = dp_ctrl_on_stream(dp->ctrl); in dp_display_enable()
855 struct dp_display_private *dp; in dp_display_post_enable() local
858 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_post_enable()
860 rate = dp->link->link_params.rate; in dp_display_post_enable()
862 if (dp->audio_supported) { in dp_display_post_enable()
863 dp->audio->bw_code = drm_dp_link_rate_to_bw_code(rate); in dp_display_post_enable()
864 dp->audio->lane_count = dp->link->link_params.num_lanes; in dp_display_post_enable()
872 static int dp_display_disable(struct dp_display_private *dp, u32 data) in dp_display_disable() argument
874 struct msm_dp *dp_display = &dp->dp_display; in dp_display_disable()
883 if (!wait_for_completion_timeout(&dp->audio_comp, in dp_display_disable()
891 if (dp->link->sink_count == 0) { in dp_display_disable()
892 dp_ctrl_off_link_stream(dp->ctrl); in dp_display_disable()
894 dp_ctrl_off(dp->ctrl); in dp_display_disable()
895 dp->core_initialized = false; in dp_display_disable()
900 DRM_DEBUG_DP("sink count: %d\n", dp->link->sink_count); in dp_display_disable()
922 int dp_display_validate_mode(struct msm_dp *dp, u32 mode_pclk_khz) in dp_display_validate_mode() argument
929 if (!dp || !mode_pclk_khz || !dp->connector) { in dp_display_validate_mode()
934 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_validate_mode()
937 mode_bpp = dp->connector->display_info.bpc * num_components; in dp_display_validate_mode()
953 int dp_display_get_modes(struct msm_dp *dp, in dp_display_get_modes() argument
959 if (!dp) { in dp_display_get_modes()
964 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_get_modes()
967 dp->connector, dp_mode); in dp_display_get_modes()
969 dp->max_pclk_khz = dp_mode->drm_mode.clock; in dp_display_get_modes()
973 bool dp_display_check_video_test(struct msm_dp *dp) in dp_display_check_video_test() argument
977 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_check_video_test()
982 int dp_display_get_test_bpp(struct msm_dp *dp) in dp_display_get_test_bpp() argument
986 if (!dp) { in dp_display_get_test_bpp()
991 dp_display = container_of(dp, struct dp_display_private, dp_display); in dp_display_get_test_bpp()
997 void msm_dp_snapshot(struct msm_disp_state *disp_state, struct msm_dp *dp) in msm_dp_snapshot() argument
1001 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_snapshot()
1012 if (!dp->power_on) { in msm_dp_snapshot()
1022 static void dp_display_config_hpd(struct dp_display_private *dp) in dp_display_config_hpd() argument
1025 dp_display_host_init(dp, true); in dp_display_config_hpd()
1026 dp_catalog_ctrl_hpd_config(dp->catalog); in dp_display_config_hpd()
1032 enable_irq(dp->irq); in dp_display_config_hpd()
1132 struct dp_display_private *dp = dev_id; in dp_display_irq_handler() local
1136 if (!dp) { in dp_display_irq_handler()
1141 hpd_isr_status = dp_catalog_hpd_get_intr_status(dp->catalog); in dp_display_irq_handler()
1147 dp_add_event(dp, EV_HPD_PLUG_INT, 0, 0); in dp_display_irq_handler()
1151 dp_del_event(dp, EV_CONNECT_PENDING_TIMEOUT); in dp_display_irq_handler()
1152 dp_add_event(dp, EV_IRQ_HPD_INT, 0, 0); in dp_display_irq_handler()
1156 dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); in dp_display_irq_handler()
1157 dp_add_event(dp, EV_HPD_PLUG_INT, 0, 3); in dp_display_irq_handler()
1161 dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); in dp_display_irq_handler()
1165 dp_ctrl_isr(dp->ctrl); in dp_display_irq_handler()
1168 dp_aux_isr(dp->aux); in dp_display_irq_handler()
1176 struct dp_display_private *dp; in dp_display_request_irq() local
1183 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_display_request_irq()
1185 dp->irq = irq_of_parse_and_map(dp->pdev->dev.of_node, 0); in dp_display_request_irq()
1186 if (dp->irq < 0) { in dp_display_request_irq()
1187 rc = dp->irq; in dp_display_request_irq()
1192 rc = devm_request_irq(&dp->pdev->dev, dp->irq, in dp_display_request_irq()
1194 IRQF_TRIGGER_HIGH, "dp_display_isr", dp); in dp_display_request_irq()
1197 dp->irq, rc); in dp_display_request_irq()
1200 disable_irq(dp->irq); in dp_display_request_irq()
1230 struct dp_display_private *dp; in dp_display_probe() local
1238 dp = devm_kzalloc(&pdev->dev, sizeof(*dp), GFP_KERNEL); in dp_display_probe()
1239 if (!dp) in dp_display_probe()
1242 desc = dp_display_get_desc(pdev, &dp->id); in dp_display_probe()
1246 dp->pdev = pdev; in dp_display_probe()
1247 dp->name = "drm_dp"; in dp_display_probe()
1248 dp->dp_display.connector_type = desc->connector_type; in dp_display_probe()
1250 rc = dp_init_sub_modules(dp); in dp_display_probe()
1256 mutex_init(&dp->event_mutex); in dp_display_probe()
1259 dp->dp_display.dp_audio = dp->audio; in dp_display_probe()
1261 init_completion(&dp->audio_comp); in dp_display_probe()
1263 platform_set_drvdata(pdev, &dp->dp_display); in dp_display_probe()
1268 dp_display_deinit_sub_modules(dp); in dp_display_probe()
1276 struct dp_display_private *dp = dev_get_dp_display_private(&pdev->dev); in dp_display_remove() local
1278 dp_display_deinit_sub_modules(dp); in dp_display_remove()
1290 struct dp_display_private *dp; in dp_pm_resume() local
1293 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_pm_resume()
1295 mutex_lock(&dp->event_mutex); in dp_pm_resume()
1298 dp->core_initialized, dp_display->power_on); in dp_pm_resume()
1301 dp->hpd_state = ST_DISCONNECTED; in dp_pm_resume()
1304 dp_display_host_init(dp, true); in dp_pm_resume()
1306 dp_catalog_ctrl_hpd_config(dp->catalog); in dp_pm_resume()
1312 dp_link_psm_config(dp->link, &dp->panel->link_info, false); in dp_pm_resume()
1314 if (dp_catalog_link_is_connected(dp->catalog)) { in dp_pm_resume()
1315 sink_count = drm_dp_read_sink_count(dp->aux); in dp_pm_resume()
1320 dp->link->sink_count = sink_count; in dp_pm_resume()
1327 if (dp->link->sink_count) { in dp_pm_resume()
1328 dp->dp_display.is_connected = true; in dp_pm_resume()
1330 dp->dp_display.is_connected = false; in dp_pm_resume()
1335 dp->link->sink_count, dp->dp_display.is_connected, in dp_pm_resume()
1336 dp->core_initialized, dp_display->power_on); in dp_pm_resume()
1338 mutex_unlock(&dp->event_mutex); in dp_pm_resume()
1347 struct dp_display_private *dp; in dp_pm_suspend() local
1349 dp = container_of(dp_display, struct dp_display_private, dp_display); in dp_pm_suspend()
1351 mutex_lock(&dp->event_mutex); in dp_pm_suspend()
1354 dp->core_initialized, dp_display->power_on); in dp_pm_suspend()
1356 if (dp->core_initialized == true) { in dp_pm_suspend()
1358 if (dp_power_clk_status(dp->power, DP_CTRL_PM)) in dp_pm_suspend()
1359 dp_ctrl_off_link_stream(dp->ctrl); in dp_pm_suspend()
1361 dp_display_host_deinit(dp); in dp_pm_suspend()
1364 dp->hpd_state = ST_SUSPENDED; in dp_pm_suspend()
1367 dp->core_initialized = false; in dp_pm_suspend()
1370 dp->core_initialized, dp_display->power_on); in dp_pm_suspend()
1372 mutex_unlock(&dp->event_mutex); in dp_pm_suspend()
1423 struct dp_display_private *dp; in msm_dp_irq_postinstall() local
1428 dp = container_of(dp_display, struct dp_display_private, dp_display); in msm_dp_irq_postinstall()
1430 dp_hpd_event_setup(dp); in msm_dp_irq_postinstall()
1432 dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 100); in msm_dp_irq_postinstall()
1437 struct dp_display_private *dp; in msm_dp_debugfs_init() local
1441 dp = container_of(dp_display, struct dp_display_private, dp_display); in msm_dp_debugfs_init()
1442 dev = &dp->pdev->dev; in msm_dp_debugfs_init()
1444 dp->debug = dp_debug_get(dev, dp->panel, dp->usbpd, in msm_dp_debugfs_init()
1445 dp->link, dp->dp_display.connector, in msm_dp_debugfs_init()
1447 if (IS_ERR(dp->debug)) { in msm_dp_debugfs_init()
1448 rc = PTR_ERR(dp->debug); in msm_dp_debugfs_init()
1450 dp->debug = NULL; in msm_dp_debugfs_init()
1487 int msm_dp_display_enable(struct msm_dp *dp, struct drm_encoder *encoder) in msm_dp_display_enable() argument
1493 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_enable()
1504 rc = dp_display_set_mode(dp, &dp_display->dp_mode); in msm_dp_display_enable()
1511 rc = dp_display_prepare(dp); in msm_dp_display_enable()
1525 rc = dp_display_post_enable(dp); in msm_dp_display_enable()
1529 dp_display_unprepare(dp); in msm_dp_display_enable()
1544 int msm_dp_display_pre_disable(struct msm_dp *dp, struct drm_encoder *encoder) in msm_dp_display_pre_disable() argument
1548 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_pre_disable()
1555 int msm_dp_display_disable(struct msm_dp *dp, struct drm_encoder *encoder) in msm_dp_display_disable() argument
1561 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_disable()
1570 rc = dp_display_unprepare(dp); in msm_dp_display_disable()
1586 void msm_dp_display_mode_set(struct msm_dp *dp, struct drm_encoder *encoder, in msm_dp_display_mode_set() argument
1592 dp_display = container_of(dp, struct dp_display_private, dp_display); in msm_dp_display_mode_set()
1596 if (dp_display_check_video_test(dp)) in msm_dp_display_mode_set()
1597 dp_display->dp_mode.bpp = dp_display_get_test_bpp(dp); in msm_dp_display_mode_set()
1599 dp_display->dp_mode.bpp = dp->connector->display_info.bpc * 3; in msm_dp_display_mode_set()