Lines Matching +full:e +full:- +full:ddc
2 * Copyright 2007-8 Advanced Micro Devices, Inc.
46 if (ret == -EINVAL) in radeon_dp_handle_hpd()
52 struct drm_device *dev = connector->dev; in radeon_connector_hotplug()
53 struct radeon_device *rdev = dev->dev_private; in radeon_connector_hotplug()
56 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { in radeon_connector_hotplug()
58 radeon_connector->con_priv; in radeon_connector_hotplug()
60 if (radeon_connector->is_mst_connector) in radeon_connector_hotplug()
62 if (dig_connector->is_mst) { in radeon_connector_hotplug()
67 /* bail if the connector does not have hpd pin, e.g., in radeon_connector_hotplug()
70 if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) in radeon_connector_hotplug()
73 radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); in radeon_connector_hotplug()
77 if (connector->dpms != DRM_MODE_DPMS_ON) in radeon_connector_hotplug()
81 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { in radeon_connector_hotplug()
83 radeon_connector->con_priv; in radeon_connector_hotplug()
86 if (dig_connector->dp_sink_type != CONNECTOR_OBJECT_ID_DISPLAYPORT) in radeon_connector_hotplug()
90 dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); in radeon_connector_hotplug()
91 /* don't do anything if sink is not display port, i.e., in radeon_connector_hotplug()
92 * passive dp->(dvi|hdmi) adaptor in radeon_connector_hotplug()
94 if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT && in radeon_connector_hotplug()
95 radeon_hpd_sense(rdev, radeon_connector->hpd.hpd) && in radeon_connector_hotplug()
112 struct drm_crtc *crtc = encoder->crtc; in radeon_property_change_mode()
114 if (crtc && crtc->enabled) { in radeon_property_change_mode()
115 drm_crtc_helper_set_mode(crtc, &crtc->mode, in radeon_property_change_mode()
116 crtc->x, crtc->y, crtc->primary->fb); in radeon_property_change_mode()
122 struct drm_device *dev = connector->dev; in radeon_get_monitor_bpc()
123 struct radeon_device *rdev = dev->dev_private; in radeon_get_monitor_bpc()
129 switch (connector->connector_type) { in radeon_get_monitor_bpc()
132 if (radeon_connector->use_digital) { in radeon_get_monitor_bpc()
134 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
135 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
142 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
143 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
147 dig_connector = radeon_connector->con_priv; in radeon_get_monitor_bpc()
148 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || in radeon_get_monitor_bpc()
149 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) || in radeon_get_monitor_bpc()
151 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
152 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
157 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
158 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
161 connector->helper_private; in radeon_get_monitor_bpc()
162 struct drm_encoder *encoder = connector_funcs->best_encoder(connector); in radeon_get_monitor_bpc()
164 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; in radeon_get_monitor_bpc()
166 if (dig->lcd_misc & ATOM_PANEL_MISC_V13_6BIT_PER_COLOR) in radeon_get_monitor_bpc()
168 else if (dig->lcd_misc & ATOM_PANEL_MISC_V13_8BIT_PER_COLOR) in radeon_get_monitor_bpc()
178 connector->name, bpc); in radeon_get_monitor_bpc()
183 * Pre DCE-8 hw can't handle > 12 bpc, and more than 12 bpc doesn't make in radeon_get_monitor_bpc()
186 * required by the HDMI-1.3 spec. Clamp to a safe 12 bpc maximum. in radeon_get_monitor_bpc()
190 connector->name, bpc); in radeon_get_monitor_bpc()
195 if (connector->display_info.max_tmds_clock > 0) { in radeon_get_monitor_bpc()
197 mode_clock = radeon_connector->pixelclock_for_modeset; in radeon_get_monitor_bpc()
200 max_tmds_clock = connector->display_info.max_tmds_clock; in radeon_get_monitor_bpc()
203 connector->name, mode_clock, max_tmds_clock); in radeon_get_monitor_bpc()
207 if ((connector->display_info.edid_hdmi_dc_modes & DRM_EDID_HDMI_DC_30) && in radeon_get_monitor_bpc()
214 connector->name, bpc); in radeon_get_monitor_bpc()
220 connector->name, bpc); in radeon_get_monitor_bpc()
226 connector->name); in radeon_get_monitor_bpc()
233 connector->name); in radeon_get_monitor_bpc()
238 connector->name, connector->display_info.bpc, bpc); in radeon_get_monitor_bpc()
246 struct drm_device *dev = connector->dev; in radeon_connector_update_scratch_regs()
247 struct radeon_device *rdev = dev->dev_private; in radeon_connector_update_scratch_regs()
250 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_update_scratch_regs()
253 best_encoder = connector_funcs->best_encoder(connector); in radeon_connector_update_scratch_regs()
261 if (rdev->is_atom_bios) in radeon_connector_update_scratch_regs()
273 if (encoder->encoder_type == encoder_type) in radeon_find_encoder()
283 struct drm_property_blob *edid_blob = connector->edid_blob_ptr; in radeon_connector_edid()
285 if (radeon_connector->edid) { in radeon_connector_edid()
286 return radeon_connector->edid; in radeon_connector_edid()
288 struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL); in radeon_connector_edid()
290 radeon_connector->edid = edid; in radeon_connector_edid()
292 return radeon_connector->edid; in radeon_connector_edid()
297 struct drm_device *dev = connector->dev; in radeon_connector_get_edid()
298 struct radeon_device *rdev = dev->dev_private; in radeon_connector_get_edid()
301 if (radeon_connector->edid) in radeon_connector_get_edid()
305 if (radeon_connector->router.ddc_valid) in radeon_connector_get_edid()
310 radeon_connector->ddc_bus->has_aux) { in radeon_connector_get_edid()
311 radeon_connector->edid = drm_get_edid(connector, in radeon_connector_get_edid()
312 &radeon_connector->ddc_bus->aux.ddc); in radeon_connector_get_edid()
313 } else if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) || in radeon_connector_get_edid()
314 (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) { in radeon_connector_get_edid()
315 struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; in radeon_connector_get_edid()
317 if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT || in radeon_connector_get_edid()
318 dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) && in radeon_connector_get_edid()
319 radeon_connector->ddc_bus->has_aux) in radeon_connector_get_edid()
320 radeon_connector->edid = drm_get_edid(&radeon_connector->base, in radeon_connector_get_edid()
321 &radeon_connector->ddc_bus->aux.ddc); in radeon_connector_get_edid()
322 else if (radeon_connector->ddc_bus) in radeon_connector_get_edid()
323 radeon_connector->edid = drm_get_edid(&radeon_connector->base, in radeon_connector_get_edid()
324 &radeon_connector->ddc_bus->adapter); in radeon_connector_get_edid()
326 connector->connector_type == DRM_MODE_CONNECTOR_LVDS && in radeon_connector_get_edid()
327 radeon_connector->ddc_bus) { in radeon_connector_get_edid()
328 radeon_connector->edid = drm_get_edid_switcheroo(&radeon_connector->base, in radeon_connector_get_edid()
329 &radeon_connector->ddc_bus->adapter); in radeon_connector_get_edid()
330 } else if (radeon_connector->ddc_bus) { in radeon_connector_get_edid()
331 radeon_connector->edid = drm_get_edid(&radeon_connector->base, in radeon_connector_get_edid()
332 &radeon_connector->ddc_bus->adapter); in radeon_connector_get_edid()
335 if (!radeon_connector->edid) { in radeon_connector_get_edid()
336 /* don't fetch the edid from the vbios if ddc fails and runpm is in radeon_connector_get_edid()
339 if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) in radeon_connector_get_edid()
342 if (rdev->is_atom_bios) { in radeon_connector_get_edid()
344 if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || in radeon_connector_get_edid()
345 (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) in radeon_connector_get_edid()
346 radeon_connector->edid = radeon_bios_get_hardcoded_edid(rdev); in radeon_connector_get_edid()
349 radeon_connector->edid = radeon_bios_get_hardcoded_edid(rdev); in radeon_connector_get_edid()
358 if (radeon_connector->edid) { in radeon_connector_free_edid()
359 kfree(radeon_connector->edid); in radeon_connector_free_edid()
360 radeon_connector->edid = NULL; in radeon_connector_free_edid()
369 if (radeon_connector->edid) { in radeon_ddc_get_modes()
370 drm_connector_update_edid_property(connector, radeon_connector->edid); in radeon_ddc_get_modes()
371 ret = drm_add_edid_modes(connector, radeon_connector->edid); in radeon_ddc_get_modes()
399 if (!list_empty(&connector->probed_modes)) { in radeon_get_native_mode()
401 list_first_entry(&connector->probed_modes, in radeon_get_native_mode()
404 radeon_encoder->native_mode = *preferred_mode; in radeon_get_native_mode()
406 radeon_encoder->native_mode.clock = 0; in radeon_get_native_mode()
412 * - search for other connectors sharing this encoder
422 struct drm_device *dev = connector->dev; in radeon_connector_analog_encoder_conflict_solve()
426 list_for_each_entry(conflict, &dev->mode_config.connector_list, head) { in radeon_connector_analog_encoder_conflict_solve()
437 if (conflict->status != connector_status_connected) in radeon_connector_analog_encoder_conflict_solve()
440 if (radeon_conflict->use_digital) in radeon_connector_analog_encoder_conflict_solve()
445 conflict->name); in radeon_connector_analog_encoder_conflict_solve()
447 connector->name); in radeon_connector_analog_encoder_conflict_solve()
448 conflict->status = connector_status_disconnected; in radeon_connector_analog_encoder_conflict_solve()
452 connector->name); in radeon_connector_analog_encoder_conflict_solve()
454 conflict->name); in radeon_connector_analog_encoder_conflict_solve()
467 struct drm_device *dev = encoder->dev; in radeon_fp_native_mode()
470 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_fp_native_mode()
472 if (native_mode->hdisplay != 0 && in radeon_fp_native_mode()
473 native_mode->vdisplay != 0 && in radeon_fp_native_mode()
474 native_mode->clock != 0) { in radeon_fp_native_mode()
476 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; in radeon_fp_native_mode()
479 DRM_DEBUG_KMS("Adding native panel mode %s\n", mode->name); in radeon_fp_native_mode()
480 } else if (native_mode->hdisplay != 0 && in radeon_fp_native_mode()
481 native_mode->vdisplay != 0) { in radeon_fp_native_mode()
489 mode = drm_cvt_mode(dev, native_mode->hdisplay, native_mode->vdisplay, 60, true, false, false); in radeon_fp_native_mode()
490 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; in radeon_fp_native_mode()
491 DRM_DEBUG_KMS("Adding cvt approximation of native panel mode %s\n", mode->name); in radeon_fp_native_mode()
498 struct drm_device *dev = encoder->dev; in radeon_add_common_modes()
501 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_add_common_modes()
527 if (radeon_encoder->devices & (ATOM_DEVICE_TV_SUPPORT)) { in radeon_add_common_modes()
532 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { in radeon_add_common_modes()
533 if (common_modes[i].w > native_mode->hdisplay || in radeon_add_common_modes()
534 common_modes[i].h > native_mode->vdisplay || in radeon_add_common_modes()
535 (common_modes[i].w == native_mode->hdisplay && in radeon_add_common_modes()
536 common_modes[i].h == native_mode->vdisplay)) in radeon_add_common_modes()
550 struct drm_device *dev = connector->dev; in radeon_connector_set_property()
551 struct radeon_device *rdev = dev->dev_private; in radeon_connector_set_property()
555 if (property == rdev->mode_info.coherent_mode_property) { in radeon_connector_set_property()
566 if (!radeon_encoder->enc_priv) in radeon_connector_set_property()
569 dig = radeon_encoder->enc_priv; in radeon_connector_set_property()
571 if (dig->coherent_mode != new_coherent_mode) { in radeon_connector_set_property()
572 dig->coherent_mode = new_coherent_mode; in radeon_connector_set_property()
573 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
577 if (property == rdev->mode_info.audio_property) { in radeon_connector_set_property()
586 if (radeon_connector->audio != val) { in radeon_connector_set_property()
587 radeon_connector->audio = val; in radeon_connector_set_property()
588 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
592 if (property == rdev->mode_info.dither_property) { in radeon_connector_set_property()
601 if (radeon_connector->dither != val) { in radeon_connector_set_property()
602 radeon_connector->dither = val; in radeon_connector_set_property()
603 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
607 if (property == rdev->mode_info.underscan_property) { in radeon_connector_set_property()
615 if (radeon_encoder->underscan_type != val) { in radeon_connector_set_property()
616 radeon_encoder->underscan_type = val; in radeon_connector_set_property()
617 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
621 if (property == rdev->mode_info.underscan_hborder_property) { in radeon_connector_set_property()
629 if (radeon_encoder->underscan_hborder != val) { in radeon_connector_set_property()
630 radeon_encoder->underscan_hborder = val; in radeon_connector_set_property()
631 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
635 if (property == rdev->mode_info.underscan_vborder_property) { in radeon_connector_set_property()
643 if (radeon_encoder->underscan_vborder != val) { in radeon_connector_set_property()
644 radeon_encoder->underscan_vborder = val; in radeon_connector_set_property()
645 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
649 if (property == rdev->mode_info.tv_std_property) { in radeon_connector_set_property()
659 if (!radeon_encoder->enc_priv) in radeon_connector_set_property()
663 dac_int = radeon_encoder->enc_priv; in radeon_connector_set_property()
664 dac_int->tv_std = val; in radeon_connector_set_property()
667 dac_int = radeon_encoder->enc_priv; in radeon_connector_set_property()
668 dac_int->tv_std = val; in radeon_connector_set_property()
670 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
673 if (property == rdev->mode_info.load_detect_property) { in radeon_connector_set_property()
678 radeon_connector->dac_load_detect = false; in radeon_connector_set_property()
680 radeon_connector->dac_load_detect = true; in radeon_connector_set_property()
683 if (property == rdev->mode_info.tmds_pll_property) { in radeon_connector_set_property()
693 tmds = radeon_encoder->enc_priv; in radeon_connector_set_property()
698 if (rdev->is_atom_bios) in radeon_connector_set_property()
706 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
709 if (property == dev->mode_config.scaling_mode_property) { in radeon_connector_set_property()
712 if (connector->encoder) in radeon_connector_set_property()
713 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_connector_set_property()
715 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_set_property()
716 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_connector_set_property()
726 if (radeon_encoder->rmx_type == rmx_type) in radeon_connector_set_property()
730 (radeon_encoder->native_mode.clock == 0)) in radeon_connector_set_property()
733 radeon_encoder->rmx_type = rmx_type; in radeon_connector_set_property()
735 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
738 if (property == rdev->mode_info.output_csc_property) { in radeon_connector_set_property()
739 if (connector->encoder) in radeon_connector_set_property()
740 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_connector_set_property()
742 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_set_property()
743 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_connector_set_property()
746 if (radeon_encoder->output_csc == val) in radeon_connector_set_property()
749 radeon_encoder->output_csc = val; in radeon_connector_set_property()
751 if (connector->encoder && connector->encoder->crtc) { in radeon_connector_set_property()
752 struct drm_crtc *crtc = connector->encoder->crtc; in radeon_connector_set_property()
755 radeon_crtc->output_csc = radeon_encoder->output_csc; in radeon_connector_set_property()
761 crtc->funcs->gamma_set(crtc, NULL, NULL, NULL, 0, NULL); in radeon_connector_set_property()
772 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_fixup_lvds_native_mode()
776 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in radeon_fixup_lvds_native_mode()
777 if (mode->type & DRM_MODE_TYPE_PREFERRED) { in radeon_fixup_lvds_native_mode()
778 if (mode->hdisplay != native_mode->hdisplay || in radeon_fixup_lvds_native_mode()
779 mode->vdisplay != native_mode->vdisplay) in radeon_fixup_lvds_native_mode()
785 if (!native_mode->clock) { in radeon_fixup_lvds_native_mode()
786 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in radeon_fixup_lvds_native_mode()
787 if (mode->hdisplay == native_mode->hdisplay && in radeon_fixup_lvds_native_mode()
788 mode->vdisplay == native_mode->vdisplay) { in radeon_fixup_lvds_native_mode()
797 if (!native_mode->clock) { in radeon_fixup_lvds_native_mode()
799 radeon_encoder->rmx_type = RMX_OFF; in radeon_fixup_lvds_native_mode()
831 connector->display_info.width_mm = mode->width_mm; in radeon_lvds_get_modes()
832 connector->display_info.height_mm = mode->height_mm; in radeon_lvds_get_modes()
845 if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) in radeon_lvds_mode_valid()
850 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_lvds_mode_valid()
855 if ((mode->hdisplay > native_mode->hdisplay) || in radeon_lvds_mode_valid()
856 (mode->vdisplay > native_mode->vdisplay)) in radeon_lvds_mode_valid()
859 /* if scaling is disabled, block non-native modes */ in radeon_lvds_mode_valid()
860 if (radeon_encoder->rmx_type == RMX_OFF) { in radeon_lvds_mode_valid()
861 if ((mode->hdisplay != native_mode->hdisplay) || in radeon_lvds_mode_valid()
862 (mode->vdisplay != native_mode->vdisplay)) in radeon_lvds_mode_valid()
873 struct drm_device *dev = connector->dev; in radeon_lvds_detect()
874 struct radeon_device *rdev = dev->dev_private; in radeon_lvds_detect()
881 r = pm_runtime_get_sync(connector->dev->dev); in radeon_lvds_detect()
883 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_lvds_detect()
890 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_lvds_detect()
893 if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) in radeon_lvds_detect()
895 /* don't fetch the edid from the vbios if ddc fails and runpm is in radeon_lvds_detect()
898 if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) in radeon_lvds_detect()
904 if (radeon_connector->edid) in radeon_lvds_detect()
911 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_lvds_detect()
912 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_lvds_detect()
922 if (radeon_connector->ddc_bus && radeon_connector->ddc_bus->has_aux) { in radeon_connector_unregister()
923 drm_dp_aux_unregister(&radeon_connector->ddc_bus->aux); in radeon_connector_unregister()
924 radeon_connector->ddc_bus->has_aux = false; in radeon_connector_unregister()
933 kfree(radeon_connector->con_priv); in radeon_connector_destroy()
943 struct drm_device *dev = connector->dev; in radeon_lvds_set_property()
948 if (property != dev->mode_config.scaling_mode_property) in radeon_lvds_set_property()
951 if (connector->encoder) in radeon_lvds_set_property()
952 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_lvds_set_property()
954 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_lvds_set_property()
955 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_lvds_set_property()
965 if (radeon_encoder->rmx_type == rmx_type) in radeon_lvds_set_property()
968 radeon_encoder->rmx_type = rmx_type; in radeon_lvds_set_property()
970 radeon_property_change_mode(&radeon_encoder->base); in radeon_lvds_set_property()
1005 struct drm_device *dev = connector->dev; in radeon_vga_mode_valid()
1006 struct radeon_device *rdev = dev->dev_private; in radeon_vga_mode_valid()
1010 if ((mode->clock / 10) > rdev->clock.max_pixel_clock) in radeon_vga_mode_valid()
1019 struct drm_device *dev = connector->dev; in radeon_vga_detect()
1020 struct radeon_device *rdev = dev->dev_private; in radeon_vga_detect()
1029 r = pm_runtime_get_sync(connector->dev->dev); in radeon_vga_detect()
1031 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_vga_detect()
1040 if (radeon_connector->ddc_bus) in radeon_vga_detect()
1043 radeon_connector->detected_by_load = false; in radeon_vga_detect()
1047 if (!radeon_connector->edid) { in radeon_vga_detect()
1049 connector->name); in radeon_vga_detect()
1052 radeon_connector->use_digital = in radeon_vga_detect()
1053 !!(radeon_connector->edid->input & DRM_EDID_INPUT_DIGITAL); in radeon_vga_detect()
1056 * with a shared ddc line (often vga + hdmi) in radeon_vga_detect()
1058 if (radeon_connector->use_digital && radeon_connector->shared_ddc) { in radeon_vga_detect()
1072 if (radeon_connector->detected_by_load) in radeon_vga_detect()
1073 ret = connector->status; in radeon_vga_detect()
1077 if (radeon_connector->dac_load_detect && encoder) { in radeon_vga_detect()
1078 encoder_funcs = encoder->helper_private; in radeon_vga_detect()
1079 ret = encoder_funcs->detect(encoder, connector); in radeon_vga_detect()
1081 radeon_connector->detected_by_load = true; in radeon_vga_detect()
1092 if ((!rdev->is_atom_bios) && in radeon_vga_detect()
1094 rdev->mode_info.bios_hardcoded_edid_size) { in radeon_vga_detect()
1102 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_vga_detect()
1103 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_vga_detect()
1126 struct drm_device *dev = connector->dev; in radeon_tv_get_modes()
1127 struct radeon_device *rdev = dev->dev_private; in radeon_tv_get_modes()
1136 if (rdev->family >= CHIP_RS600) in radeon_tv_get_modes()
1140 /* only 800x600 is supported right now on pre-avivo chips */ in radeon_tv_get_modes()
1142 tv_mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; in radeon_tv_get_modes()
1151 if ((mode->hdisplay > 1024) || (mode->vdisplay > 768)) in radeon_tv_mode_valid()
1165 if (!radeon_connector->dac_load_detect) in radeon_tv_detect()
1169 r = pm_runtime_get_sync(connector->dev->dev); in radeon_tv_detect()
1171 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_tv_detect()
1180 encoder_funcs = encoder->helper_private; in radeon_tv_detect()
1181 ret = encoder_funcs->detect(encoder, connector); in radeon_tv_detect()
1188 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_tv_detect()
1189 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_tv_detect()
1212 struct drm_device *dev = connector->dev; in radeon_check_hpd_status_unchanged()
1213 struct radeon_device *rdev = dev->dev_private; in radeon_check_hpd_status_unchanged()
1218 if (rdev->family >= CHIP_R600 in radeon_check_hpd_status_unchanged()
1219 && radeon_connector->hpd.hpd != RADEON_HPD_NONE) { in radeon_check_hpd_status_unchanged()
1220 if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) in radeon_check_hpd_status_unchanged()
1224 if (connector->status == status) in radeon_check_hpd_status_unchanged()
1233 * Do a DDC probe, if DDC probe passes, get the full EDID so
1235 * If the monitor is an analog monitor or we got no DDC,
1237 * If we got no DDC, we do load detection on the DAC encoder object.
1238 * If we got analog DDC or load detection passes on the DAC encoder
1245 struct drm_device *dev = connector->dev; in radeon_dvi_detect()
1246 struct radeon_device *rdev = dev->dev_private; in radeon_dvi_detect()
1255 r = pm_runtime_get_sync(connector->dev->dev); in radeon_dvi_detect()
1257 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dvi_detect()
1262 if (radeon_connector->detected_hpd_without_ddc) { in radeon_dvi_detect()
1264 radeon_connector->detected_hpd_without_ddc = false; in radeon_dvi_detect()
1268 ret = connector->status; in radeon_dvi_detect()
1272 if (radeon_connector->ddc_bus) { in radeon_dvi_detect()
1275 /* Sometimes the pins required for the DDC probe on DVI in radeon_dvi_detect()
1277 * for HPD do. If the DDC probe fails even though we had an HPD in radeon_dvi_detect()
1280 connector->status != connector_status_connected) { in radeon_dvi_detect()
1281 DRM_DEBUG_KMS("hpd detected without ddc, retrying in 1 second\n"); in radeon_dvi_detect()
1282 radeon_connector->detected_hpd_without_ddc = true; in radeon_dvi_detect()
1283 schedule_delayed_work(&rdev->hotplug_work, in radeon_dvi_detect()
1289 radeon_connector->detected_by_load = false; in radeon_dvi_detect()
1293 if (!radeon_connector->edid) { in radeon_dvi_detect()
1295 connector->name); in radeon_dvi_detect()
1298 if ((rdev->family == CHIP_RS690 || rdev->family == CHIP_RS740) && in radeon_dvi_detect()
1299 radeon_connector->base.null_edid_counter) { in radeon_dvi_detect()
1301 DRM_ERROR("%s: detected RS690 floating bus bug, stopping ddc detect\n", in radeon_dvi_detect()
1302 connector->name); in radeon_dvi_detect()
1303 radeon_connector->ddc_bus = NULL; in radeon_dvi_detect()
1309 radeon_connector->use_digital = in radeon_dvi_detect()
1310 !!(radeon_connector->edid->input & DRM_EDID_INPUT_DIGITAL); in radeon_dvi_detect()
1313 * with a shared ddc line (often vga + hdmi) in radeon_dvi_detect()
1315 if ((!radeon_connector->use_digital) && radeon_connector->shared_ddc) { in radeon_dvi_detect()
1322 * shared DDC line and we have boards with DVI-D + HDMI with a shared in radeon_dvi_detect()
1323 * DDC line. The latter is more complex because with DVI<->HDMI adapters in radeon_dvi_detect()
1326 if (radeon_connector->shared_ddc && (ret == connector_status_connected)) { in radeon_dvi_detect()
1329 list_for_each_entry(list_connector, &dev->mode_config.connector_list, head) { in radeon_dvi_detect()
1333 if (list_radeon_connector->shared_ddc && in radeon_dvi_detect()
1334 (list_radeon_connector->ddc_bus->rec.i2c_id == in radeon_dvi_detect()
1335 radeon_connector->ddc_bus->rec.i2c_id)) { in radeon_dvi_detect()
1337 if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) { in radeon_dvi_detect()
1339 if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { in radeon_dvi_detect()
1350 if ((ret == connector_status_connected) && (radeon_connector->use_digital == true)) in radeon_dvi_detect()
1353 /* DVI-D and HDMI-A are digital only */ in radeon_dvi_detect()
1354 if ((connector->connector_type == DRM_MODE_CONNECTOR_DVID) || in radeon_dvi_detect()
1355 (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)) in radeon_dvi_detect()
1363 if (radeon_connector->detected_by_load) in radeon_dvi_detect()
1364 ret = connector->status; in radeon_dvi_detect()
1369 if (radeon_connector->dac_load_detect) { in radeon_dvi_detect()
1371 if (encoder->encoder_type != DRM_MODE_ENCODER_DAC && in radeon_dvi_detect()
1372 encoder->encoder_type != DRM_MODE_ENCODER_TVDAC) in radeon_dvi_detect()
1375 encoder_funcs = encoder->helper_private; in radeon_dvi_detect()
1376 if (encoder_funcs->detect) { in radeon_dvi_detect()
1379 /* deal with analog monitors without DDC */ in radeon_dvi_detect()
1380 ret = encoder_funcs->detect(encoder, connector); in radeon_dvi_detect()
1382 radeon_connector->use_digital = false; in radeon_dvi_detect()
1385 radeon_connector->detected_by_load = true; in radeon_dvi_detect()
1390 radeon_connector->use_digital = true; in radeon_dvi_detect()
1391 lret = encoder_funcs->detect(encoder, connector); in radeon_dvi_detect()
1392 DRM_DEBUG_KMS("load_detect %x returned: %x\n",encoder->encoder_type,lret); in radeon_dvi_detect()
1394 radeon_connector->use_digital = false; in radeon_dvi_detect()
1401 if ((ret == connector_status_connected) && (radeon_connector->use_digital == false) && in radeon_dvi_detect()
1413 if ((!rdev->is_atom_bios) && in radeon_dvi_detect()
1415 rdev->mode_info.bios_hardcoded_edid_size) { in radeon_dvi_detect()
1416 radeon_connector->use_digital = true; in radeon_dvi_detect()
1423 if ((radeon_audio != 0) && radeon_connector->use_digital) { in radeon_dvi_detect()
1425 connector->helper_private; in radeon_dvi_detect()
1427 encoder = connector_funcs->best_encoder(connector); in radeon_dvi_detect()
1428 if (encoder && (encoder->encoder_type == DRM_MODE_ENCODER_TMDS)) { in radeon_dvi_detect()
1436 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_dvi_detect()
1437 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dvi_detect()
1450 if (radeon_connector->use_digital == true) { in radeon_dvi_encoder()
1451 if (encoder->encoder_type == DRM_MODE_ENCODER_TMDS) in radeon_dvi_encoder()
1454 if (encoder->encoder_type == DRM_MODE_ENCODER_DAC || in radeon_dvi_encoder()
1455 encoder->encoder_type == DRM_MODE_ENCODER_TVDAC) in radeon_dvi_encoder()
1473 if (connector->force == DRM_FORCE_ON) in radeon_dvi_force()
1474 radeon_connector->use_digital = false; in radeon_dvi_force()
1475 if (connector->force == DRM_FORCE_ON_DIGITAL) in radeon_dvi_force()
1476 radeon_connector->use_digital = true; in radeon_dvi_force()
1482 struct drm_device *dev = connector->dev; in radeon_dvi_mode_valid()
1483 struct radeon_device *rdev = dev->dev_private; in radeon_dvi_mode_valid()
1489 if (radeon_connector->use_digital && in radeon_dvi_mode_valid()
1490 (rdev->family == CHIP_RV100) && in radeon_dvi_mode_valid()
1491 (mode->clock > 135000)) in radeon_dvi_mode_valid()
1494 if (radeon_connector->use_digital && (mode->clock > 165000)) { in radeon_dvi_mode_valid()
1495 if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) || in radeon_dvi_mode_valid()
1496 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) || in radeon_dvi_mode_valid()
1497 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_HDMI_TYPE_B)) in radeon_dvi_mode_valid()
1501 if (mode->clock > 340000) in radeon_dvi_mode_valid()
1511 if ((mode->clock / 10) > rdev->clock.max_pixel_clock) in radeon_dvi_mode_valid()
1536 struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; in radeon_dp_get_modes()
1540 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_get_modes()
1541 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_get_modes()
1544 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { in radeon_dp_get_modes()
1545 if (!radeon_dig_connector->edp_on) in radeon_dp_get_modes()
1550 if (!radeon_dig_connector->edp_on) in radeon_dp_get_modes()
1554 /* need to setup ddc on the bridge */ in radeon_dp_get_modes()
1582 connector->display_info.width_mm = mode->width_mm; in radeon_dp_get_modes()
1583 connector->display_info.height_mm = mode->height_mm; in radeon_dp_get_modes()
1588 /* need to setup ddc on the bridge */ in radeon_dp_get_modes()
1611 switch (radeon_encoder->encoder_id) { in radeon_connector_encoder_get_dp_bridge_encoder_id()
1614 return radeon_encoder->encoder_id; in radeon_connector_encoder_get_dp_bridge_encoder_id()
1631 if (radeon_encoder->caps & ATOM_ENCODER_CAP_RECORD_HBR2) in radeon_connector_encoder_is_hbr2()
1640 struct drm_device *dev = connector->dev; in radeon_connector_is_dp12_capable()
1641 struct radeon_device *rdev = dev->dev_private; in radeon_connector_is_dp12_capable()
1644 (rdev->clock.default_dispclk >= 53900) && in radeon_connector_is_dp12_capable()
1655 struct drm_device *dev = connector->dev; in radeon_dp_detect()
1656 struct radeon_device *rdev = dev->dev_private; in radeon_dp_detect()
1659 struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; in radeon_dp_detect()
1663 if (radeon_dig_connector->is_mst) in radeon_dp_detect()
1667 r = pm_runtime_get_sync(connector->dev->dev); in radeon_dp_detect()
1669 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dp_detect()
1675 ret = connector->status; in radeon_dp_detect()
1681 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_detect()
1682 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_detect()
1685 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_dp_detect()
1688 if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) in radeon_dp_detect()
1690 /* don't fetch the edid from the vbios if ddc fails and runpm is in radeon_dp_detect()
1693 if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) in radeon_dp_detect()
1697 radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; in radeon_dp_detect()
1698 if (!radeon_dig_connector->edp_on) in radeon_dp_detect()
1703 if (!radeon_dig_connector->edp_on) in radeon_dp_detect()
1709 radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; in radeon_dp_detect()
1714 /* setup ddc on the bridge */ in radeon_dp_detect()
1717 if (radeon_ddc_probe(radeon_connector, true)) /* try DDC */ in radeon_dp_detect()
1719 else if (radeon_connector->dac_load_detect) { /* try load detection */ in radeon_dp_detect()
1720 const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; in radeon_dp_detect()
1721 ret = encoder_funcs->detect(encoder, connector); in radeon_dp_detect()
1725 radeon_dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); in radeon_dp_detect()
1726 if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { in radeon_dp_detect()
1728 if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { in radeon_dp_detect()
1735 if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { in radeon_dp_detect()
1744 /* try non-aux ddc (DP to DVI/HDMI/etc. adapter) */ in radeon_dp_detect()
1760 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_dp_detect()
1761 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dp_detect()
1770 struct drm_device *dev = connector->dev; in radeon_dp_mode_valid()
1771 struct radeon_device *rdev = dev->dev_private; in radeon_dp_mode_valid()
1773 struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; in radeon_dp_mode_valid()
1777 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_mode_valid()
1778 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_mode_valid()
1781 if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) in radeon_dp_mode_valid()
1786 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_dp_mode_valid()
1791 if ((mode->hdisplay > native_mode->hdisplay) || in radeon_dp_mode_valid()
1792 (mode->vdisplay > native_mode->vdisplay)) in radeon_dp_mode_valid()
1795 /* if scaling is disabled, block non-native modes */ in radeon_dp_mode_valid()
1796 if (radeon_encoder->rmx_type == RMX_OFF) { in radeon_dp_mode_valid()
1797 if ((mode->hdisplay != native_mode->hdisplay) || in radeon_dp_mode_valid()
1798 (mode->vdisplay != native_mode->vdisplay)) in radeon_dp_mode_valid()
1803 if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || in radeon_dp_mode_valid()
1804 (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { in radeon_dp_mode_valid()
1809 if (mode->clock > 340000) in radeon_dp_mode_valid()
1812 if (mode->clock > 165000) in radeon_dp_mode_valid()
1868 struct radeon_device *rdev = dev->dev_private; in radeon_add_atom_connector()
1874 struct i2c_adapter *ddc = NULL; in radeon_add_atom_connector() local
1891 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_add_atom_connector()
1893 if (radeon_connector->connector_id == connector_id) { in radeon_add_atom_connector()
1894 radeon_connector->devices |= supported_device; in radeon_add_atom_connector()
1897 if (radeon_connector->ddc_bus && i2c_bus->valid) { in radeon_add_atom_connector()
1898 if (radeon_connector->ddc_bus->rec.i2c_id == i2c_bus->i2c_id) { in radeon_add_atom_connector()
1899 radeon_connector->shared_ddc = true; in radeon_add_atom_connector()
1902 if (radeon_connector->router_bus && router->ddc_valid && in radeon_add_atom_connector()
1903 (radeon_connector->router.router_id == router->router_id)) { in radeon_add_atom_connector()
1904 radeon_connector->shared_ddc = false; in radeon_add_atom_connector()
1911 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in radeon_add_atom_connector()
1913 if (radeon_encoder->devices & supported_device) { in radeon_add_atom_connector()
1914 switch (radeon_encoder->encoder_id) { in radeon_add_atom_connector()
1929 connector = &radeon_connector->base; in radeon_add_atom_connector()
1931 radeon_connector->connector_id = connector_id; in radeon_add_atom_connector()
1932 radeon_connector->devices = supported_device; in radeon_add_atom_connector()
1933 radeon_connector->shared_ddc = shared_ddc; in radeon_add_atom_connector()
1934 radeon_connector->connector_object_id = connector_object_id; in radeon_add_atom_connector()
1935 radeon_connector->hpd = *hpd; in radeon_add_atom_connector()
1937 radeon_connector->router = *router; in radeon_add_atom_connector()
1938 if (router->ddc_valid || router->cd_valid) { in radeon_add_atom_connector()
1939 radeon_connector->router_bus = radeon_i2c_lookup(rdev, &router->i2c_info); in radeon_add_atom_connector()
1940 if (!radeon_connector->router_bus) in radeon_add_atom_connector()
1948 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
1949 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
1950 if (i2c_bus->valid) { in radeon_add_atom_connector()
1951 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
1952 if (radeon_connector->ddc_bus) { in radeon_add_atom_connector()
1954 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
1956 DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
1963 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
1966 ddc); in radeon_add_atom_connector()
1967 drm_connector_helper_add(&radeon_connector->base, in radeon_add_atom_connector()
1969 connector->interlace_allowed = true; in radeon_add_atom_connector()
1970 connector->doublescan_allowed = true; in radeon_add_atom_connector()
1971 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
1972 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1973 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
1975 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1976 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
1979 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1980 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
1988 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
1991 ddc); in radeon_add_atom_connector()
1992 drm_connector_helper_add(&radeon_connector->base, in radeon_add_atom_connector()
1994 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1995 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
1997 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1998 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
2000 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2001 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
2004 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2005 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2008 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2009 rdev->mode_info.dither_property, in radeon_add_atom_connector()
2013 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2014 rdev->mode_info.audio_property, in radeon_add_atom_connector()
2016 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
2019 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2020 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2024 connector->interlace_allowed = true; in radeon_add_atom_connector()
2026 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2028 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2030 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2031 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2032 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2038 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2041 ddc); in radeon_add_atom_connector()
2042 drm_connector_helper_add(&radeon_connector->base, in radeon_add_atom_connector()
2044 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2045 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2048 connector->interlace_allowed = false; in radeon_add_atom_connector()
2049 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2055 if (i2c_bus->valid) { in radeon_add_atom_connector()
2056 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2057 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2058 DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2060 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2062 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2065 ddc); in radeon_add_atom_connector()
2066 drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); in radeon_add_atom_connector()
2067 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2068 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2069 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2072 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2073 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2076 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2077 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2080 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_atom_connector()
2081 connector->interlace_allowed = true; in radeon_add_atom_connector()
2082 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2085 if (i2c_bus->valid) { in radeon_add_atom_connector()
2086 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2087 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2088 DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2090 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2092 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2095 ddc); in radeon_add_atom_connector()
2096 drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); in radeon_add_atom_connector()
2097 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2098 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2099 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2102 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2103 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2106 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2107 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2110 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_atom_connector()
2111 connector->interlace_allowed = true; in radeon_add_atom_connector()
2112 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2119 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2120 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2121 if (i2c_bus->valid) { in radeon_add_atom_connector()
2122 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2123 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2124 DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2126 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2128 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2131 ddc); in radeon_add_atom_connector()
2132 drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); in radeon_add_atom_connector()
2134 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2135 rdev->mode_info.coherent_mode_property, in radeon_add_atom_connector()
2138 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2139 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
2141 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2142 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
2144 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2145 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
2147 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2148 rdev->mode_info.dither_property, in radeon_add_atom_connector()
2150 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2151 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2155 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2156 rdev->mode_info.audio_property, in radeon_add_atom_connector()
2158 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
2161 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2162 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2163 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2167 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2168 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2170 connector->interlace_allowed = true; in radeon_add_atom_connector()
2172 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2174 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2181 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2182 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2183 if (i2c_bus->valid) { in radeon_add_atom_connector()
2184 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2185 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2186 DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2188 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2190 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2193 ddc); in radeon_add_atom_connector()
2194 drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); in radeon_add_atom_connector()
2195 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2196 rdev->mode_info.coherent_mode_property, in radeon_add_atom_connector()
2199 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2200 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
2202 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2203 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
2205 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2206 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
2208 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2209 rdev->mode_info.dither_property, in radeon_add_atom_connector()
2211 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2212 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2216 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2217 rdev->mode_info.audio_property, in radeon_add_atom_connector()
2219 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
2222 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2223 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2226 connector->interlace_allowed = true; in radeon_add_atom_connector()
2228 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2230 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2236 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2237 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2238 if (i2c_bus->valid) { in radeon_add_atom_connector()
2239 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2240 if (radeon_connector->ddc_bus) { in radeon_add_atom_connector()
2242 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2244 DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2247 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2250 ddc); in radeon_add_atom_connector()
2251 drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs); in radeon_add_atom_connector()
2253 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2254 rdev->mode_info.coherent_mode_property, in radeon_add_atom_connector()
2257 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2258 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
2260 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2261 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
2263 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2264 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
2266 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2267 rdev->mode_info.dither_property, in radeon_add_atom_connector()
2269 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2270 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2274 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2275 rdev->mode_info.audio_property, in radeon_add_atom_connector()
2277 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
2280 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2281 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2283 connector->interlace_allowed = true; in radeon_add_atom_connector()
2285 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2291 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2292 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2293 if (i2c_bus->valid) { in radeon_add_atom_connector()
2294 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2295 if (radeon_connector->ddc_bus) { in radeon_add_atom_connector()
2297 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2299 DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2302 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2305 ddc); in radeon_add_atom_connector()
2306 drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs); in radeon_add_atom_connector()
2307 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2308 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2311 connector->interlace_allowed = false; in radeon_add_atom_connector()
2312 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2317 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2320 ddc); in radeon_add_atom_connector()
2321 drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); in radeon_add_atom_connector()
2322 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2323 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2324 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2326 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2327 rdev->mode_info.tv_std_property, in radeon_add_atom_connector()
2330 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_atom_connector()
2331 connector->interlace_allowed = false; in radeon_add_atom_connector()
2332 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2338 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2339 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2340 if (i2c_bus->valid) { in radeon_add_atom_connector()
2341 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2342 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2343 DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2345 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2347 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2350 ddc); in radeon_add_atom_connector()
2351 drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs); in radeon_add_atom_connector()
2352 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2353 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2356 connector->interlace_allowed = false; in radeon_add_atom_connector()
2357 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2362 if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) { in radeon_add_atom_connector()
2363 if (i2c_bus->valid) { in radeon_add_atom_connector()
2364 connector->polled = DRM_CONNECTOR_POLL_CONNECT | in radeon_add_atom_connector()
2368 connector->polled = DRM_CONNECTOR_POLL_HPD; in radeon_add_atom_connector()
2370 connector->display_info.subpixel_order = subpixel_order; in radeon_add_atom_connector()
2392 struct radeon_device *rdev = dev->dev_private; in radeon_add_legacy_connector()
2395 struct i2c_adapter *ddc = NULL; in radeon_add_legacy_connector() local
2409 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_add_legacy_connector()
2411 if (radeon_connector->connector_id == connector_id) { in radeon_add_legacy_connector()
2412 radeon_connector->devices |= supported_device; in radeon_add_legacy_connector()
2421 connector = &radeon_connector->base; in radeon_add_legacy_connector()
2423 radeon_connector->connector_id = connector_id; in radeon_add_legacy_connector()
2424 radeon_connector->devices = supported_device; in radeon_add_legacy_connector()
2425 radeon_connector->connector_object_id = connector_object_id; in radeon_add_legacy_connector()
2426 radeon_connector->hpd = *hpd; in radeon_add_legacy_connector()
2430 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2431 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2432 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2433 DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2435 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2437 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2440 ddc); in radeon_add_legacy_connector()
2441 drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); in radeon_add_legacy_connector()
2442 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2443 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2444 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2447 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_legacy_connector()
2448 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2449 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2452 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2453 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2454 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2455 DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2457 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2459 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2462 ddc); in radeon_add_legacy_connector()
2463 drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); in radeon_add_legacy_connector()
2464 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2465 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2466 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2469 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_legacy_connector()
2470 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2471 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2475 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2476 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2477 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2478 DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2480 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2482 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2485 ddc); in radeon_add_legacy_connector()
2486 drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); in radeon_add_legacy_connector()
2488 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2489 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2490 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2494 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2496 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2498 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2503 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2506 ddc); in radeon_add_legacy_connector()
2507 drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); in radeon_add_legacy_connector()
2508 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2514 if (rdev->family == CHIP_RS400 || rdev->family == CHIP_RS480) in radeon_add_legacy_connector()
2515 radeon_connector->dac_load_detect = false; in radeon_add_legacy_connector()
2516 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2517 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2518 radeon_connector->dac_load_detect); in radeon_add_legacy_connector()
2519 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2520 rdev->mode_info.tv_std_property, in radeon_add_legacy_connector()
2523 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_legacy_connector()
2524 connector->interlace_allowed = false; in radeon_add_legacy_connector()
2525 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2528 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2529 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2530 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2531 DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2533 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2535 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2538 ddc); in radeon_add_legacy_connector()
2539 drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs); in radeon_add_legacy_connector()
2540 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2541 dev->mode_config.scaling_mode_property, in radeon_add_legacy_connector()
2544 connector->interlace_allowed = false; in radeon_add_legacy_connector()
2545 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2549 if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) { in radeon_add_legacy_connector()
2550 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2551 connector->polled = DRM_CONNECTOR_POLL_CONNECT | in radeon_add_legacy_connector()
2555 connector->polled = DRM_CONNECTOR_POLL_HPD; in radeon_add_legacy_connector()
2557 connector->display_info.subpixel_order = subpixel_order; in radeon_add_legacy_connector()
2563 struct radeon_device *rdev = dev->dev_private; in radeon_setup_mst_connector()
2573 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_setup_mst_connector()
2578 if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) in radeon_setup_mst_connector()