Lines Matching +full:no +full:- +full:hpd

2  * Copyright 2007-8 Advanced Micro Devices, Inc.
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
45 struct drm_device *dev = connector->dev; in amdgpu_connector_hotplug()
49 /* bail if the connector does not have hpd pin, e.g., in amdgpu_connector_hotplug()
52 if (amdgpu_connector->hpd.hpd == AMDGPU_HPD_NONE) in amdgpu_connector_hotplug()
55 amdgpu_display_hpd_set_polarity(adev, amdgpu_connector->hpd.hpd); in amdgpu_connector_hotplug()
58 if (connector->dpms != DRM_MODE_DPMS_ON) in amdgpu_connector_hotplug()
62 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { in amdgpu_connector_hotplug()
64 amdgpu_connector->con_priv; in amdgpu_connector_hotplug()
66 /* if existing sink type was not DP no need to retrain */ in amdgpu_connector_hotplug()
67 if (dig_connector->dp_sink_type != CONNECTOR_OBJECT_ID_DISPLAYPORT) in amdgpu_connector_hotplug()
71 dig_connector->dp_sink_type = amdgpu_atombios_dp_get_sinktype(amdgpu_connector); in amdgpu_connector_hotplug()
73 * passive dp->(dvi|hdmi) adaptor in amdgpu_connector_hotplug()
75 if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT && in amdgpu_connector_hotplug()
76 amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd) && in amdgpu_connector_hotplug()
93 struct drm_crtc *crtc = encoder->crtc; in amdgpu_connector_property_change_mode()
95 if (crtc && crtc->enabled) { in amdgpu_connector_property_change_mode()
96 drm_crtc_helper_set_mode(crtc, &crtc->mode, in amdgpu_connector_property_change_mode()
97 crtc->x, crtc->y, crtc->primary->fb); in amdgpu_connector_property_change_mode()
108 switch (connector->connector_type) { in amdgpu_connector_get_monitor_bpc()
111 if (amdgpu_connector->use_digital) { in amdgpu_connector_get_monitor_bpc()
112 if (connector->display_info.is_hdmi) { in amdgpu_connector_get_monitor_bpc()
113 if (connector->display_info.bpc) in amdgpu_connector_get_monitor_bpc()
114 bpc = connector->display_info.bpc; in amdgpu_connector_get_monitor_bpc()
120 if (connector->display_info.is_hdmi) { in amdgpu_connector_get_monitor_bpc()
121 if (connector->display_info.bpc) in amdgpu_connector_get_monitor_bpc()
122 bpc = connector->display_info.bpc; in amdgpu_connector_get_monitor_bpc()
126 dig_connector = amdgpu_connector->con_priv; in amdgpu_connector_get_monitor_bpc()
127 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || in amdgpu_connector_get_monitor_bpc()
128 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) || in amdgpu_connector_get_monitor_bpc()
129 connector->display_info.is_hdmi) { in amdgpu_connector_get_monitor_bpc()
130 if (connector->display_info.bpc) in amdgpu_connector_get_monitor_bpc()
131 bpc = connector->display_info.bpc; in amdgpu_connector_get_monitor_bpc()
136 if (connector->display_info.bpc) in amdgpu_connector_get_monitor_bpc()
137 bpc = connector->display_info.bpc; in amdgpu_connector_get_monitor_bpc()
140 connector->helper_private; in amdgpu_connector_get_monitor_bpc()
141 struct drm_encoder *encoder = connector_funcs->best_encoder(connector); in amdgpu_connector_get_monitor_bpc()
143 struct amdgpu_encoder_atom_dig *dig = amdgpu_encoder->enc_priv; in amdgpu_connector_get_monitor_bpc()
145 if (dig->lcd_misc & ATOM_PANEL_MISC_V13_6BIT_PER_COLOR) in amdgpu_connector_get_monitor_bpc()
147 else if (dig->lcd_misc & ATOM_PANEL_MISC_V13_8BIT_PER_COLOR) in amdgpu_connector_get_monitor_bpc()
153 if (connector->display_info.is_hdmi) { in amdgpu_connector_get_monitor_bpc()
155 * Pre DCE-8 hw can't handle > 12 bpc, and more than 12 bpc doesn't make in amdgpu_connector_get_monitor_bpc()
158 * required by the HDMI-1.3 spec. Clamp to a safe 12 bpc maximum. in amdgpu_connector_get_monitor_bpc()
162 connector->name, bpc); in amdgpu_connector_get_monitor_bpc()
167 if (connector->display_info.max_tmds_clock > 0) { in amdgpu_connector_get_monitor_bpc()
169 mode_clock = amdgpu_connector->pixelclock_for_modeset; in amdgpu_connector_get_monitor_bpc()
172 max_tmds_clock = connector->display_info.max_tmds_clock; in amdgpu_connector_get_monitor_bpc()
175 connector->name, mode_clock, max_tmds_clock); in amdgpu_connector_get_monitor_bpc()
179 if ((connector->display_info.edid_hdmi_rgb444_dc_modes & DRM_EDID_HDMI_DC_30) && in amdgpu_connector_get_monitor_bpc()
186 connector->name, bpc); in amdgpu_connector_get_monitor_bpc()
192 connector->name, bpc); in amdgpu_connector_get_monitor_bpc()
197 connector->name); in amdgpu_connector_get_monitor_bpc()
204 connector->name); in amdgpu_connector_get_monitor_bpc()
209 connector->name, connector->display_info.bpc, bpc); in amdgpu_connector_get_monitor_bpc()
220 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in amdgpu_connector_update_scratch_regs()
223 best_encoder = connector_funcs->best_encoder(connector); in amdgpu_connector_update_scratch_regs()
242 if (encoder->encoder_type == encoder_type) in amdgpu_connector_find_encoder()
252 struct drm_property_blob *edid_blob = connector->edid_blob_ptr; in amdgpu_connector_edid()
254 if (amdgpu_connector->edid) { in amdgpu_connector_edid()
255 return amdgpu_connector->edid; in amdgpu_connector_edid()
257 struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL); in amdgpu_connector_edid()
260 amdgpu_connector->edid = edid; in amdgpu_connector_edid()
262 return amdgpu_connector->edid; in amdgpu_connector_edid()
268 if (adev->mode_info.bios_hardcoded_edid) { in amdgpu_connector_get_hardcoded_edid()
269 return kmemdup((unsigned char *)adev->mode_info.bios_hardcoded_edid, in amdgpu_connector_get_hardcoded_edid()
270 adev->mode_info.bios_hardcoded_edid_size, GFP_KERNEL); in amdgpu_connector_get_hardcoded_edid()
277 struct drm_device *dev = connector->dev; in amdgpu_connector_get_edid()
281 if (amdgpu_connector->edid) in amdgpu_connector_get_edid()
285 if (amdgpu_connector->router.ddc_valid) in amdgpu_connector_get_edid()
290 amdgpu_connector->ddc_bus->has_aux) { in amdgpu_connector_get_edid()
291 amdgpu_connector->edid = drm_get_edid(connector, in amdgpu_connector_get_edid()
292 &amdgpu_connector->ddc_bus->aux.ddc); in amdgpu_connector_get_edid()
293 } else if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) || in amdgpu_connector_get_edid()
294 (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) { in amdgpu_connector_get_edid()
295 struct amdgpu_connector_atom_dig *dig = amdgpu_connector->con_priv; in amdgpu_connector_get_edid()
297 if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT || in amdgpu_connector_get_edid()
298 dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) && in amdgpu_connector_get_edid()
299 amdgpu_connector->ddc_bus->has_aux) in amdgpu_connector_get_edid()
300 amdgpu_connector->edid = drm_get_edid(connector, in amdgpu_connector_get_edid()
301 &amdgpu_connector->ddc_bus->aux.ddc); in amdgpu_connector_get_edid()
302 else if (amdgpu_connector->ddc_bus) in amdgpu_connector_get_edid()
303 amdgpu_connector->edid = drm_get_edid(connector, in amdgpu_connector_get_edid()
304 &amdgpu_connector->ddc_bus->adapter); in amdgpu_connector_get_edid()
305 } else if (amdgpu_connector->ddc_bus) { in amdgpu_connector_get_edid()
306 amdgpu_connector->edid = drm_get_edid(connector, in amdgpu_connector_get_edid()
307 &amdgpu_connector->ddc_bus->adapter); in amdgpu_connector_get_edid()
310 if (!amdgpu_connector->edid) { in amdgpu_connector_get_edid()
312 if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || in amdgpu_connector_get_edid()
313 (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) { in amdgpu_connector_get_edid()
314 amdgpu_connector->edid = amdgpu_connector_get_hardcoded_edid(adev); in amdgpu_connector_get_edid()
315 drm_connector_update_edid_property(connector, amdgpu_connector->edid); in amdgpu_connector_get_edid()
324 kfree(amdgpu_connector->edid); in amdgpu_connector_free_edid()
325 amdgpu_connector->edid = NULL; in amdgpu_connector_free_edid()
333 if (amdgpu_connector->edid) { in amdgpu_connector_ddc_get_modes()
334 drm_connector_update_edid_property(connector, amdgpu_connector->edid); in amdgpu_connector_ddc_get_modes()
335 ret = drm_add_edid_modes(connector, amdgpu_connector->edid); in amdgpu_connector_ddc_get_modes()
364 if (!list_empty(&connector->probed_modes)) { in amdgpu_get_native_mode()
366 list_first_entry(&connector->probed_modes, in amdgpu_get_native_mode()
369 amdgpu_encoder->native_mode = *preferred_mode; in amdgpu_get_native_mode()
371 amdgpu_encoder->native_mode.clock = 0; in amdgpu_get_native_mode()
378 struct drm_device *dev = encoder->dev; in amdgpu_connector_lcd_native_mode()
381 struct drm_display_mode *native_mode = &amdgpu_encoder->native_mode; in amdgpu_connector_lcd_native_mode()
383 if (native_mode->hdisplay != 0 && in amdgpu_connector_lcd_native_mode()
384 native_mode->vdisplay != 0 && in amdgpu_connector_lcd_native_mode()
385 native_mode->clock != 0) { in amdgpu_connector_lcd_native_mode()
390 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; in amdgpu_connector_lcd_native_mode()
393 DRM_DEBUG_KMS("Adding native panel mode %s\n", mode->name); in amdgpu_connector_lcd_native_mode()
394 } else if (native_mode->hdisplay != 0 && in amdgpu_connector_lcd_native_mode()
395 native_mode->vdisplay != 0) { in amdgpu_connector_lcd_native_mode()
403 mode = drm_cvt_mode(dev, native_mode->hdisplay, native_mode->vdisplay, 60, true, false, false); in amdgpu_connector_lcd_native_mode()
407 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; in amdgpu_connector_lcd_native_mode()
408 DRM_DEBUG_KMS("Adding cvt approximation of native panel mode %s\n", mode->name); in amdgpu_connector_lcd_native_mode()
416 struct drm_device *dev = encoder->dev; in amdgpu_connector_add_common_modes()
419 struct drm_display_mode *native_mode = &amdgpu_encoder->native_mode; in amdgpu_connector_add_common_modes()
445 if (amdgpu_encoder->devices & (ATOM_DEVICE_TV_SUPPORT)) { in amdgpu_connector_add_common_modes()
450 if (amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { in amdgpu_connector_add_common_modes()
451 if (common_modes[i].w > native_mode->hdisplay || in amdgpu_connector_add_common_modes()
452 common_modes[i].h > native_mode->vdisplay || in amdgpu_connector_add_common_modes()
453 (common_modes[i].w == native_mode->hdisplay && in amdgpu_connector_add_common_modes()
454 common_modes[i].h == native_mode->vdisplay)) in amdgpu_connector_add_common_modes()
469 struct drm_device *dev = connector->dev; in amdgpu_connector_set_property()
474 if (property == adev->mode_info.coherent_mode_property) { in amdgpu_connector_set_property()
485 if (!amdgpu_encoder->enc_priv) in amdgpu_connector_set_property()
488 dig = amdgpu_encoder->enc_priv; in amdgpu_connector_set_property()
490 if (dig->coherent_mode != new_coherent_mode) { in amdgpu_connector_set_property()
491 dig->coherent_mode = new_coherent_mode; in amdgpu_connector_set_property()
492 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_property()
496 if (property == adev->mode_info.audio_property) { in amdgpu_connector_set_property()
505 if (amdgpu_connector->audio != val) { in amdgpu_connector_set_property()
506 amdgpu_connector->audio = val; in amdgpu_connector_set_property()
507 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_property()
511 if (property == adev->mode_info.dither_property) { in amdgpu_connector_set_property()
520 if (amdgpu_connector->dither != val) { in amdgpu_connector_set_property()
521 amdgpu_connector->dither = val; in amdgpu_connector_set_property()
522 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_property()
526 if (property == adev->mode_info.underscan_property) { in amdgpu_connector_set_property()
534 if (amdgpu_encoder->underscan_type != val) { in amdgpu_connector_set_property()
535 amdgpu_encoder->underscan_type = val; in amdgpu_connector_set_property()
536 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_property()
540 if (property == adev->mode_info.underscan_hborder_property) { in amdgpu_connector_set_property()
548 if (amdgpu_encoder->underscan_hborder != val) { in amdgpu_connector_set_property()
549 amdgpu_encoder->underscan_hborder = val; in amdgpu_connector_set_property()
550 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_property()
554 if (property == adev->mode_info.underscan_vborder_property) { in amdgpu_connector_set_property()
562 if (amdgpu_encoder->underscan_vborder != val) { in amdgpu_connector_set_property()
563 amdgpu_encoder->underscan_vborder = val; in amdgpu_connector_set_property()
564 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_property()
568 if (property == adev->mode_info.load_detect_property) { in amdgpu_connector_set_property()
573 amdgpu_connector->dac_load_detect = false; in amdgpu_connector_set_property()
575 amdgpu_connector->dac_load_detect = true; in amdgpu_connector_set_property()
578 if (property == dev->mode_config.scaling_mode_property) { in amdgpu_connector_set_property()
581 if (connector->encoder) { in amdgpu_connector_set_property()
582 amdgpu_encoder = to_amdgpu_encoder(connector->encoder); in amdgpu_connector_set_property()
584 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in amdgpu_connector_set_property()
586 amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector)); in amdgpu_connector_set_property()
605 if (amdgpu_encoder->rmx_type == rmx_type) in amdgpu_connector_set_property()
609 (amdgpu_encoder->native_mode.clock == 0)) in amdgpu_connector_set_property()
612 amdgpu_encoder->rmx_type = rmx_type; in amdgpu_connector_set_property()
614 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_property()
625 struct drm_display_mode *native_mode = &amdgpu_encoder->native_mode; in amdgpu_connector_fixup_lcd_native_mode()
629 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in amdgpu_connector_fixup_lcd_native_mode()
630 if (mode->type & DRM_MODE_TYPE_PREFERRED) { in amdgpu_connector_fixup_lcd_native_mode()
631 if (mode->hdisplay != native_mode->hdisplay || in amdgpu_connector_fixup_lcd_native_mode()
632 mode->vdisplay != native_mode->vdisplay) in amdgpu_connector_fixup_lcd_native_mode()
638 if (!native_mode->clock) { in amdgpu_connector_fixup_lcd_native_mode()
639 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in amdgpu_connector_fixup_lcd_native_mode()
640 if (mode->hdisplay == native_mode->hdisplay && in amdgpu_connector_fixup_lcd_native_mode()
641 mode->vdisplay == native_mode->vdisplay) { in amdgpu_connector_fixup_lcd_native_mode()
650 if (!native_mode->clock) { in amdgpu_connector_fixup_lcd_native_mode()
651 DRM_DEBUG_KMS("No LVDS native mode details, disabling RMX\n"); in amdgpu_connector_fixup_lcd_native_mode()
652 amdgpu_encoder->rmx_type = RMX_OFF; in amdgpu_connector_fixup_lcd_native_mode()
678 /* we have no EDID modes */ in amdgpu_connector_lvds_get_modes()
684 connector->display_info.width_mm = mode->width_mm; in amdgpu_connector_lvds_get_modes()
685 connector->display_info.height_mm = mode->height_mm; in amdgpu_connector_lvds_get_modes()
698 if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) in amdgpu_connector_lvds_mode_valid()
703 struct drm_display_mode *native_mode = &amdgpu_encoder->native_mode; in amdgpu_connector_lvds_mode_valid()
708 if ((mode->hdisplay > native_mode->hdisplay) || in amdgpu_connector_lvds_mode_valid()
709 (mode->vdisplay > native_mode->vdisplay)) in amdgpu_connector_lvds_mode_valid()
712 /* if scaling is disabled, block non-native modes */ in amdgpu_connector_lvds_mode_valid()
713 if (amdgpu_encoder->rmx_type == RMX_OFF) { in amdgpu_connector_lvds_mode_valid()
714 if ((mode->hdisplay != native_mode->hdisplay) || in amdgpu_connector_lvds_mode_valid()
715 (mode->vdisplay != native_mode->vdisplay)) in amdgpu_connector_lvds_mode_valid()
732 r = pm_runtime_get_sync(connector->dev->dev); in amdgpu_connector_lvds_detect()
734 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_lvds_detect()
741 struct drm_display_mode *native_mode = &amdgpu_encoder->native_mode; in amdgpu_connector_lvds_detect()
744 if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) in amdgpu_connector_lvds_detect()
751 if (amdgpu_connector->edid) in amdgpu_connector_lvds_detect()
758 pm_runtime_mark_last_busy(connector->dev->dev); in amdgpu_connector_lvds_detect()
759 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_lvds_detect()
769 if (amdgpu_connector->ddc_bus && amdgpu_connector->ddc_bus->has_aux) { in amdgpu_connector_unregister()
770 drm_dp_aux_unregister(&amdgpu_connector->ddc_bus->aux); in amdgpu_connector_unregister()
771 amdgpu_connector->ddc_bus->has_aux = false; in amdgpu_connector_unregister()
780 kfree(amdgpu_connector->con_priv); in amdgpu_connector_destroy()
790 struct drm_device *dev = connector->dev; in amdgpu_connector_set_lcd_property()
795 if (property != dev->mode_config.scaling_mode_property) in amdgpu_connector_set_lcd_property()
798 if (connector->encoder) in amdgpu_connector_set_lcd_property()
799 amdgpu_encoder = to_amdgpu_encoder(connector->encoder); in amdgpu_connector_set_lcd_property()
801 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in amdgpu_connector_set_lcd_property()
803 amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector)); in amdgpu_connector_set_lcd_property()
822 if (amdgpu_encoder->rmx_type == rmx_type) in amdgpu_connector_set_lcd_property()
825 amdgpu_encoder->rmx_type = rmx_type; in amdgpu_connector_set_lcd_property()
827 amdgpu_connector_property_change_mode(&amdgpu_encoder->base); in amdgpu_connector_set_lcd_property()
861 struct drm_device *dev = connector->dev; in amdgpu_connector_vga_mode_valid()
866 if ((mode->clock / 10) > adev->clock.max_pixel_clock) in amdgpu_connector_vga_mode_valid()
883 r = pm_runtime_get_sync(connector->dev->dev); in amdgpu_connector_vga_detect()
885 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_vga_detect()
894 if (amdgpu_connector->ddc_bus) in amdgpu_connector_vga_detect()
897 amdgpu_connector->detected_by_load = false; in amdgpu_connector_vga_detect()
901 if (!amdgpu_connector->edid) { in amdgpu_connector_vga_detect()
902 DRM_ERROR("%s: probed a monitor but no|invalid EDID\n", in amdgpu_connector_vga_detect()
903 connector->name); in amdgpu_connector_vga_detect()
906 amdgpu_connector->use_digital = in amdgpu_connector_vga_detect()
907 !!(amdgpu_connector->edid->input & DRM_EDID_INPUT_DIGITAL); in amdgpu_connector_vga_detect()
912 if (amdgpu_connector->use_digital && amdgpu_connector->shared_ddc) { in amdgpu_connector_vga_detect()
926 if (amdgpu_connector->detected_by_load) in amdgpu_connector_vga_detect()
927 ret = connector->status; in amdgpu_connector_vga_detect()
931 if (amdgpu_connector->dac_load_detect && encoder) { in amdgpu_connector_vga_detect()
932 encoder_funcs = encoder->helper_private; in amdgpu_connector_vga_detect()
933 ret = encoder_funcs->detect(encoder, connector); in amdgpu_connector_vga_detect()
935 amdgpu_connector->detected_by_load = true; in amdgpu_connector_vga_detect()
943 pm_runtime_mark_last_busy(connector->dev->dev); in amdgpu_connector_vga_detect()
944 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_vga_detect()
968 struct drm_device *dev = connector->dev; in amdgpu_connector_check_hpd_status_unchanged()
973 if (amdgpu_connector->hpd.hpd != AMDGPU_HPD_NONE) { in amdgpu_connector_check_hpd_status_unchanged()
974 if (amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) in amdgpu_connector_check_hpd_status_unchanged()
978 if (connector->status == status) in amdgpu_connector_check_hpd_status_unchanged()
992 struct drm_device *dev = connector->dev; in amdgpu_connector_shared_ddc()
995 if (amdgpu_connector->shared_ddc && *status == connector_status_connected) { in amdgpu_connector_shared_ddc()
1002 if (list_amdgpu_connector->shared_ddc && in amdgpu_connector_shared_ddc()
1003 list_amdgpu_connector->ddc_bus->rec.i2c_id == in amdgpu_connector_shared_ddc()
1004 amdgpu_connector->ddc_bus->rec.i2c_id) { in amdgpu_connector_shared_ddc()
1006 if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) { in amdgpu_connector_shared_ddc()
1007 /* hpd is our only option in this case */ in amdgpu_connector_shared_ddc()
1009 amdgpu_connector->hpd.hpd)) { in amdgpu_connector_shared_ddc()
1024 * If the monitor is an analog monitor or we got no DDC,
1026 * If we got no DDC, we do load detection on the DAC encoder object.
1034 struct drm_device *dev = connector->dev; in amdgpu_connector_dvi_detect()
1043 r = pm_runtime_get_sync(connector->dev->dev); in amdgpu_connector_dvi_detect()
1045 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_dvi_detect()
1050 if (amdgpu_connector->detected_hpd_without_ddc) { in amdgpu_connector_dvi_detect()
1052 amdgpu_connector->detected_hpd_without_ddc = false; in amdgpu_connector_dvi_detect()
1056 ret = connector->status; in amdgpu_connector_dvi_detect()
1060 if (amdgpu_connector->ddc_bus) { in amdgpu_connector_dvi_detect()
1065 * for HPD do. If the DDC probe fails even though we had an HPD in amdgpu_connector_dvi_detect()
1069 amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) { in amdgpu_connector_dvi_detect()
1070 DRM_DEBUG_KMS("hpd detected without ddc, retrying in 1 second\n"); in amdgpu_connector_dvi_detect()
1071 amdgpu_connector->detected_hpd_without_ddc = true; in amdgpu_connector_dvi_detect()
1072 schedule_delayed_work(&adev->hotplug_work, in amdgpu_connector_dvi_detect()
1078 amdgpu_connector->detected_by_load = false; in amdgpu_connector_dvi_detect()
1082 if (!amdgpu_connector->edid) { in amdgpu_connector_dvi_detect()
1083 DRM_ERROR("%s: probed a monitor but no|invalid EDID\n", in amdgpu_connector_dvi_detect()
1084 connector->name); in amdgpu_connector_dvi_detect()
1088 amdgpu_connector->use_digital = in amdgpu_connector_dvi_detect()
1089 !!(amdgpu_connector->edid->input & DRM_EDID_INPUT_DIGITAL); in amdgpu_connector_dvi_detect()
1094 if ((!amdgpu_connector->use_digital) && amdgpu_connector->shared_ddc) { in amdgpu_connector_dvi_detect()
1102 * shared DDC line and we have boards with DVI-D + HDMI with a shared in amdgpu_connector_dvi_detect()
1103 * DDC line. The latter is more complex because with DVI<->HDMI adapters in amdgpu_connector_dvi_detect()
1110 if ((ret == connector_status_connected) && (amdgpu_connector->use_digital == true)) in amdgpu_connector_dvi_detect()
1113 /* DVI-D and HDMI-A are digital only */ in amdgpu_connector_dvi_detect()
1114 if ((connector->connector_type == DRM_MODE_CONNECTOR_DVID) || in amdgpu_connector_dvi_detect()
1115 (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)) in amdgpu_connector_dvi_detect()
1123 if (amdgpu_connector->detected_by_load) in amdgpu_connector_dvi_detect()
1124 ret = connector->status; in amdgpu_connector_dvi_detect()
1129 if (amdgpu_connector->dac_load_detect) { in amdgpu_connector_dvi_detect()
1133 if (encoder->encoder_type != DRM_MODE_ENCODER_DAC && in amdgpu_connector_dvi_detect()
1134 encoder->encoder_type != DRM_MODE_ENCODER_TVDAC) in amdgpu_connector_dvi_detect()
1137 encoder_funcs = encoder->helper_private; in amdgpu_connector_dvi_detect()
1138 if (encoder_funcs->detect) { in amdgpu_connector_dvi_detect()
1142 ret = encoder_funcs->detect(encoder, connector); in amdgpu_connector_dvi_detect()
1144 amdgpu_connector->use_digital = false; in amdgpu_connector_dvi_detect()
1147 amdgpu_connector->detected_by_load = true; in amdgpu_connector_dvi_detect()
1152 amdgpu_connector->use_digital = true; in amdgpu_connector_dvi_detect()
1153 lret = encoder_funcs->detect(encoder, connector); in amdgpu_connector_dvi_detect()
1155 encoder->encoder_type, lret); in amdgpu_connector_dvi_detect()
1157 amdgpu_connector->use_digital = false; in amdgpu_connector_dvi_detect()
1170 pm_runtime_mark_last_busy(connector->dev->dev); in amdgpu_connector_dvi_detect()
1171 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_dvi_detect()
1185 if (amdgpu_connector->use_digital == true) { in amdgpu_connector_dvi_encoder()
1186 if (encoder->encoder_type == DRM_MODE_ENCODER_TMDS) in amdgpu_connector_dvi_encoder()
1189 if (encoder->encoder_type == DRM_MODE_ENCODER_DAC || in amdgpu_connector_dvi_encoder()
1190 encoder->encoder_type == DRM_MODE_ENCODER_TVDAC) in amdgpu_connector_dvi_encoder()
1209 if (connector->force == DRM_FORCE_ON) in amdgpu_connector_dvi_force()
1210 amdgpu_connector->use_digital = false; in amdgpu_connector_dvi_force()
1211 if (connector->force == DRM_FORCE_ON_DIGITAL) in amdgpu_connector_dvi_force()
1212 amdgpu_connector->use_digital = true; in amdgpu_connector_dvi_force()
1218 struct drm_device *dev = connector->dev; in amdgpu_connector_dvi_mode_valid()
1224 if (amdgpu_connector->use_digital && (mode->clock > 165000)) { in amdgpu_connector_dvi_mode_valid()
1225 if ((amdgpu_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) || in amdgpu_connector_dvi_mode_valid()
1226 (amdgpu_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) || in amdgpu_connector_dvi_mode_valid()
1227 (amdgpu_connector->connector_object_id == CONNECTOR_OBJECT_ID_HDMI_TYPE_B)) { in amdgpu_connector_dvi_mode_valid()
1229 } else if (connector->display_info.is_hdmi) { in amdgpu_connector_dvi_mode_valid()
1231 if (mode->clock > 340000) in amdgpu_connector_dvi_mode_valid()
1241 if ((mode->clock / 10) > adev->clock.max_pixel_clock) in amdgpu_connector_dvi_mode_valid()
1266 struct amdgpu_connector_atom_dig *amdgpu_dig_connector = amdgpu_connector->con_priv; in amdgpu_connector_dp_get_modes()
1270 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in amdgpu_connector_dp_get_modes()
1271 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in amdgpu_connector_dp_get_modes()
1274 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { in amdgpu_connector_dp_get_modes()
1275 if (!amdgpu_dig_connector->edp_on) in amdgpu_connector_dp_get_modes()
1280 if (!amdgpu_dig_connector->edp_on) in amdgpu_connector_dp_get_modes()
1306 /* we have no EDID modes */ in amdgpu_connector_dp_get_modes()
1312 connector->display_info.width_mm = mode->width_mm; in amdgpu_connector_dp_get_modes()
1313 connector->display_info.height_mm = mode->height_mm; in amdgpu_connector_dp_get_modes()
1341 switch (amdgpu_encoder->encoder_id) { in amdgpu_connector_encoder_get_dp_bridge_encoder_id()
1344 return amdgpu_encoder->encoder_id; in amdgpu_connector_encoder_get_dp_bridge_encoder_id()
1361 if (amdgpu_encoder->caps & ATOM_ENCODER_CAP_RECORD_HBR2) in amdgpu_connector_encoder_is_hbr2()
1370 struct drm_device *dev = connector->dev; in amdgpu_connector_is_dp12_capable()
1373 if ((adev->clock.default_dispclk >= 53900) && in amdgpu_connector_is_dp12_capable()
1384 struct drm_device *dev = connector->dev; in amdgpu_connector_dp_detect()
1388 struct amdgpu_connector_atom_dig *amdgpu_dig_connector = amdgpu_connector->con_priv; in amdgpu_connector_dp_detect()
1393 r = pm_runtime_get_sync(connector->dev->dev); in amdgpu_connector_dp_detect()
1395 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_dp_detect()
1401 ret = connector->status; in amdgpu_connector_dp_detect()
1407 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in amdgpu_connector_dp_detect()
1408 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in amdgpu_connector_dp_detect()
1411 struct drm_display_mode *native_mode = &amdgpu_encoder->native_mode; in amdgpu_connector_dp_detect()
1414 if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) in amdgpu_connector_dp_detect()
1418 amdgpu_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; in amdgpu_connector_dp_detect()
1419 if (!amdgpu_dig_connector->edp_on) in amdgpu_connector_dp_detect()
1424 if (!amdgpu_dig_connector->edp_on) in amdgpu_connector_dp_detect()
1430 amdgpu_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; in amdgpu_connector_dp_detect()
1441 else if (amdgpu_connector->dac_load_detect) { /* try load detection */ in amdgpu_connector_dp_detect()
1442 const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; in amdgpu_connector_dp_detect()
1444 ret = encoder_funcs->detect(encoder, connector); in amdgpu_connector_dp_detect()
1448 amdgpu_dig_connector->dp_sink_type = in amdgpu_connector_dp_detect()
1450 if (amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) { in amdgpu_connector_dp_detect()
1452 if (amdgpu_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) in amdgpu_connector_dp_detect()
1455 if (amdgpu_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { in amdgpu_connector_dp_detect()
1459 /* try non-aux ddc (DP to DVI/HDMI/etc. adapter) */ in amdgpu_connector_dp_detect()
1470 pm_runtime_mark_last_busy(connector->dev->dev); in amdgpu_connector_dp_detect()
1471 pm_runtime_put_autosuspend(connector->dev->dev); in amdgpu_connector_dp_detect()
1474 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort || in amdgpu_connector_dp_detect()
1475 connector->connector_type == DRM_MODE_CONNECTOR_eDP) in amdgpu_connector_dp_detect()
1476 drm_dp_set_subconnector_property(&amdgpu_connector->base, in amdgpu_connector_dp_detect()
1478 amdgpu_dig_connector->dpcd, in amdgpu_connector_dp_detect()
1479 amdgpu_dig_connector->downstream_ports); in amdgpu_connector_dp_detect()
1487 struct amdgpu_connector_atom_dig *amdgpu_dig_connector = amdgpu_connector->con_priv; in amdgpu_connector_dp_mode_valid()
1491 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in amdgpu_connector_dp_mode_valid()
1492 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in amdgpu_connector_dp_mode_valid()
1495 if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) in amdgpu_connector_dp_mode_valid()
1500 struct drm_display_mode *native_mode = &amdgpu_encoder->native_mode; in amdgpu_connector_dp_mode_valid()
1505 if ((mode->hdisplay > native_mode->hdisplay) || in amdgpu_connector_dp_mode_valid()
1506 (mode->vdisplay > native_mode->vdisplay)) in amdgpu_connector_dp_mode_valid()
1509 /* if scaling is disabled, block non-native modes */ in amdgpu_connector_dp_mode_valid()
1510 if (amdgpu_encoder->rmx_type == RMX_OFF) { in amdgpu_connector_dp_mode_valid()
1511 if ((mode->hdisplay != native_mode->hdisplay) || in amdgpu_connector_dp_mode_valid()
1512 (mode->vdisplay != native_mode->vdisplay)) in amdgpu_connector_dp_mode_valid()
1518 if ((amdgpu_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || in amdgpu_connector_dp_mode_valid()
1519 (amdgpu_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { in amdgpu_connector_dp_mode_valid()
1522 if (connector->display_info.is_hdmi) { in amdgpu_connector_dp_mode_valid()
1524 if (mode->clock > 340000) in amdgpu_connector_dp_mode_valid()
1527 if (mode->clock > 165000) in amdgpu_connector_dp_mode_valid()
1542 if (amdgpu_connector->ddc_bus->has_aux) { in amdgpu_connector_late_register()
1543 amdgpu_connector->ddc_bus->aux.dev = amdgpu_connector->base.kdev; in amdgpu_connector_late_register()
1544 r = drm_dp_aux_register(&amdgpu_connector->ddc_bus->aux); in amdgpu_connector_late_register()
1585 struct amdgpu_hpd *hpd, in amdgpu_connector_add() argument
1608 if (amdgpu_connector->connector_id == connector_id) { in amdgpu_connector_add()
1609 amdgpu_connector->devices |= supported_device; in amdgpu_connector_add()
1613 if (amdgpu_connector->ddc_bus && i2c_bus->valid) { in amdgpu_connector_add()
1614 if (amdgpu_connector->ddc_bus->rec.i2c_id == i2c_bus->i2c_id) { in amdgpu_connector_add()
1615 amdgpu_connector->shared_ddc = true; in amdgpu_connector_add()
1618 if (amdgpu_connector->router_bus && router->ddc_valid && in amdgpu_connector_add()
1619 (amdgpu_connector->router.router_id == router->router_id)) { in amdgpu_connector_add()
1620 amdgpu_connector->shared_ddc = false; in amdgpu_connector_add()
1628 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in amdgpu_connector_add()
1630 if (amdgpu_encoder->devices & supported_device) { in amdgpu_connector_add()
1631 switch (amdgpu_encoder->encoder_id) { in amdgpu_connector_add()
1646 connector = &amdgpu_connector->base; in amdgpu_connector_add()
1648 amdgpu_connector->connector_id = connector_id; in amdgpu_connector_add()
1649 amdgpu_connector->devices = supported_device; in amdgpu_connector_add()
1650 amdgpu_connector->shared_ddc = shared_ddc; in amdgpu_connector_add()
1651 amdgpu_connector->connector_object_id = connector_object_id; in amdgpu_connector_add()
1652 amdgpu_connector->hpd = *hpd; in amdgpu_connector_add()
1654 amdgpu_connector->router = *router; in amdgpu_connector_add()
1655 if (router->ddc_valid || router->cd_valid) { in amdgpu_connector_add()
1656 amdgpu_connector->router_bus = amdgpu_i2c_lookup(adev, &router->i2c_info); in amdgpu_connector_add()
1657 if (!amdgpu_connector->router_bus) in amdgpu_connector_add()
1665 amdgpu_connector->con_priv = amdgpu_dig_connector; in amdgpu_connector_add()
1666 if (i2c_bus->valid) { in amdgpu_connector_add()
1667 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1668 if (amdgpu_connector->ddc_bus) { in amdgpu_connector_add()
1670 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
1679 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1683 drm_connector_helper_add(&amdgpu_connector->base, in amdgpu_connector_add()
1685 connector->interlace_allowed = true; in amdgpu_connector_add()
1686 connector->doublescan_allowed = true; in amdgpu_connector_add()
1687 amdgpu_connector->dac_load_detect = true; in amdgpu_connector_add()
1688 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1689 adev->mode_info.load_detect_property, in amdgpu_connector_add()
1691 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1692 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1700 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1704 drm_connector_helper_add(&amdgpu_connector->base, in amdgpu_connector_add()
1706 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1707 adev->mode_info.underscan_property, in amdgpu_connector_add()
1709 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1710 adev->mode_info.underscan_hborder_property, in amdgpu_connector_add()
1712 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1713 adev->mode_info.underscan_vborder_property, in amdgpu_connector_add()
1716 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1717 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1720 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1721 adev->mode_info.dither_property, in amdgpu_connector_add()
1725 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1726 adev->mode_info.audio_property, in amdgpu_connector_add()
1728 amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; in amdgpu_connector_add()
1732 connector->interlace_allowed = true; in amdgpu_connector_add()
1734 connector->doublescan_allowed = true; in amdgpu_connector_add()
1736 connector->doublescan_allowed = false; in amdgpu_connector_add()
1738 amdgpu_connector->dac_load_detect = true; in amdgpu_connector_add()
1739 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1740 adev->mode_info.load_detect_property, in amdgpu_connector_add()
1746 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1750 drm_connector_helper_add(&amdgpu_connector->base, in amdgpu_connector_add()
1752 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1753 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1756 connector->interlace_allowed = false; in amdgpu_connector_add()
1757 connector->doublescan_allowed = false; in amdgpu_connector_add()
1763 if (i2c_bus->valid) { in amdgpu_connector_add()
1764 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1765 if (!amdgpu_connector->ddc_bus) in amdgpu_connector_add()
1768 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
1770 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1774 drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_vga_helper_funcs); in amdgpu_connector_add()
1775 amdgpu_connector->dac_load_detect = true; in amdgpu_connector_add()
1776 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1777 adev->mode_info.load_detect_property, in amdgpu_connector_add()
1779 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1780 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1782 /* no HPD on analog connectors */ in amdgpu_connector_add()
1783 amdgpu_connector->hpd.hpd = AMDGPU_HPD_NONE; in amdgpu_connector_add()
1784 connector->interlace_allowed = true; in amdgpu_connector_add()
1785 connector->doublescan_allowed = true; in amdgpu_connector_add()
1788 if (i2c_bus->valid) { in amdgpu_connector_add()
1789 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1790 if (!amdgpu_connector->ddc_bus) in amdgpu_connector_add()
1793 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
1795 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1799 drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_vga_helper_funcs); in amdgpu_connector_add()
1800 amdgpu_connector->dac_load_detect = true; in amdgpu_connector_add()
1801 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1802 adev->mode_info.load_detect_property, in amdgpu_connector_add()
1804 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1805 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1807 /* no HPD on analog connectors */ in amdgpu_connector_add()
1808 amdgpu_connector->hpd.hpd = AMDGPU_HPD_NONE; in amdgpu_connector_add()
1809 connector->interlace_allowed = true; in amdgpu_connector_add()
1810 connector->doublescan_allowed = true; in amdgpu_connector_add()
1817 amdgpu_connector->con_priv = amdgpu_dig_connector; in amdgpu_connector_add()
1818 if (i2c_bus->valid) { in amdgpu_connector_add()
1819 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1820 if (!amdgpu_connector->ddc_bus) in amdgpu_connector_add()
1823 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
1825 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1829 drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dvi_helper_funcs); in amdgpu_connector_add()
1831 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1832 adev->mode_info.coherent_mode_property, in amdgpu_connector_add()
1834 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1835 adev->mode_info.underscan_property, in amdgpu_connector_add()
1837 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1838 adev->mode_info.underscan_hborder_property, in amdgpu_connector_add()
1840 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1841 adev->mode_info.underscan_vborder_property, in amdgpu_connector_add()
1843 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1844 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1848 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1849 adev->mode_info.audio_property, in amdgpu_connector_add()
1851 amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; in amdgpu_connector_add()
1853 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1854 adev->mode_info.dither_property, in amdgpu_connector_add()
1857 amdgpu_connector->dac_load_detect = true; in amdgpu_connector_add()
1858 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1859 adev->mode_info.load_detect_property, in amdgpu_connector_add()
1862 connector->interlace_allowed = true; in amdgpu_connector_add()
1864 connector->doublescan_allowed = true; in amdgpu_connector_add()
1866 connector->doublescan_allowed = false; in amdgpu_connector_add()
1873 amdgpu_connector->con_priv = amdgpu_dig_connector; in amdgpu_connector_add()
1874 if (i2c_bus->valid) { in amdgpu_connector_add()
1875 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1876 if (!amdgpu_connector->ddc_bus) in amdgpu_connector_add()
1879 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
1881 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1885 drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dvi_helper_funcs); in amdgpu_connector_add()
1886 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1887 adev->mode_info.coherent_mode_property, in amdgpu_connector_add()
1889 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1890 adev->mode_info.underscan_property, in amdgpu_connector_add()
1892 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1893 adev->mode_info.underscan_hborder_property, in amdgpu_connector_add()
1895 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1896 adev->mode_info.underscan_vborder_property, in amdgpu_connector_add()
1898 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1899 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1902 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1903 adev->mode_info.audio_property, in amdgpu_connector_add()
1905 amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; in amdgpu_connector_add()
1907 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1908 adev->mode_info.dither_property, in amdgpu_connector_add()
1911 connector->interlace_allowed = true; in amdgpu_connector_add()
1913 connector->doublescan_allowed = true; in amdgpu_connector_add()
1915 connector->doublescan_allowed = false; in amdgpu_connector_add()
1921 amdgpu_connector->con_priv = amdgpu_dig_connector; in amdgpu_connector_add()
1922 if (i2c_bus->valid) { in amdgpu_connector_add()
1923 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1924 if (amdgpu_connector->ddc_bus) { in amdgpu_connector_add()
1926 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
1931 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1935 drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dp_helper_funcs); in amdgpu_connector_add()
1937 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1938 adev->mode_info.coherent_mode_property, in amdgpu_connector_add()
1940 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1941 adev->mode_info.underscan_property, in amdgpu_connector_add()
1943 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1944 adev->mode_info.underscan_hborder_property, in amdgpu_connector_add()
1946 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1947 adev->mode_info.underscan_vborder_property, in amdgpu_connector_add()
1949 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1950 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1953 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1954 adev->mode_info.audio_property, in amdgpu_connector_add()
1956 amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; in amdgpu_connector_add()
1958 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1959 adev->mode_info.dither_property, in amdgpu_connector_add()
1961 connector->interlace_allowed = true; in amdgpu_connector_add()
1963 connector->doublescan_allowed = false; in amdgpu_connector_add()
1969 amdgpu_connector->con_priv = amdgpu_dig_connector; in amdgpu_connector_add()
1970 if (i2c_bus->valid) { in amdgpu_connector_add()
1971 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1972 if (amdgpu_connector->ddc_bus) { in amdgpu_connector_add()
1974 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
1979 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
1983 drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_dp_helper_funcs); in amdgpu_connector_add()
1984 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
1985 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
1988 connector->interlace_allowed = false; in amdgpu_connector_add()
1989 connector->doublescan_allowed = false; in amdgpu_connector_add()
1995 amdgpu_connector->con_priv = amdgpu_dig_connector; in amdgpu_connector_add()
1996 if (i2c_bus->valid) { in amdgpu_connector_add()
1997 amdgpu_connector->ddc_bus = amdgpu_i2c_lookup(adev, i2c_bus); in amdgpu_connector_add()
1998 if (!amdgpu_connector->ddc_bus) in amdgpu_connector_add()
2001 ddc = &amdgpu_connector->ddc_bus->adapter; in amdgpu_connector_add()
2003 drm_connector_init_with_ddc(dev, &amdgpu_connector->base, in amdgpu_connector_add()
2007 drm_connector_helper_add(&amdgpu_connector->base, &amdgpu_connector_lvds_helper_funcs); in amdgpu_connector_add()
2008 drm_object_attach_property(&amdgpu_connector->base.base, in amdgpu_connector_add()
2009 dev->mode_config.scaling_mode_property, in amdgpu_connector_add()
2012 connector->interlace_allowed = false; in amdgpu_connector_add()
2013 connector->doublescan_allowed = false; in amdgpu_connector_add()
2018 if (amdgpu_connector->hpd.hpd == AMDGPU_HPD_NONE) { in amdgpu_connector_add()
2019 if (i2c_bus->valid) { in amdgpu_connector_add()
2020 connector->polled = DRM_CONNECTOR_POLL_CONNECT | in amdgpu_connector_add()
2024 connector->polled = DRM_CONNECTOR_POLL_HPD; in amdgpu_connector_add()
2026 connector->display_info.subpixel_order = subpixel_order; in amdgpu_connector_add()
2033 drm_connector_attach_dp_subconnector_property(&amdgpu_connector->base); in amdgpu_connector_add()