Lines Matching +full:ddc +full:- +full:i2c +full:- +full:bus

2  * Copyright 2007-8 Advanced Micro Devices, Inc.
42 struct drm_device *dev = connector->dev; in radeon_connector_hotplug()
43 struct radeon_device *rdev = dev->dev_private; in radeon_connector_hotplug()
49 if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) in radeon_connector_hotplug()
52 radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); in radeon_connector_hotplug()
56 if (connector->dpms != DRM_MODE_DPMS_ON) in radeon_connector_hotplug()
60 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { in radeon_connector_hotplug()
62 radeon_connector->con_priv; in radeon_connector_hotplug()
65 if (dig_connector->dp_sink_type != CONNECTOR_OBJECT_ID_DISPLAYPORT) in radeon_connector_hotplug()
69 dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); in radeon_connector_hotplug()
71 * passive dp->(dvi|hdmi) adaptor in radeon_connector_hotplug()
73 if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT && in radeon_connector_hotplug()
74 radeon_hpd_sense(rdev, radeon_connector->hpd.hpd) && in radeon_connector_hotplug()
91 struct drm_crtc *crtc = encoder->crtc; in radeon_property_change_mode()
93 if (crtc && crtc->enabled) { in radeon_property_change_mode()
94 drm_crtc_helper_set_mode(crtc, &crtc->mode, in radeon_property_change_mode()
95 crtc->x, crtc->y, crtc->primary->fb); in radeon_property_change_mode()
101 struct drm_device *dev = connector->dev; in radeon_get_monitor_bpc()
102 struct radeon_device *rdev = dev->dev_private; in radeon_get_monitor_bpc()
108 switch (connector->connector_type) { in radeon_get_monitor_bpc()
111 if (radeon_connector->use_digital) { in radeon_get_monitor_bpc()
113 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
114 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
121 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
122 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
126 dig_connector = radeon_connector->con_priv; in radeon_get_monitor_bpc()
127 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || in radeon_get_monitor_bpc()
128 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) || in radeon_get_monitor_bpc()
130 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
131 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
136 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
137 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
140 connector->helper_private; in radeon_get_monitor_bpc()
141 struct drm_encoder *encoder = connector_funcs->best_encoder(connector); in radeon_get_monitor_bpc()
143 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; in radeon_get_monitor_bpc()
145 if (dig->lcd_misc & ATOM_PANEL_MISC_V13_6BIT_PER_COLOR) in radeon_get_monitor_bpc()
147 else if (dig->lcd_misc & ATOM_PANEL_MISC_V13_8BIT_PER_COLOR) in radeon_get_monitor_bpc()
157 connector->name, bpc); in radeon_get_monitor_bpc()
162 * Pre DCE-8 hw can't handle > 12 bpc, and more than 12 bpc doesn't make in radeon_get_monitor_bpc()
165 * required by the HDMI-1.3 spec. Clamp to a safe 12 bpc maximum. in radeon_get_monitor_bpc()
169 connector->name, bpc); in radeon_get_monitor_bpc()
174 if (connector->display_info.max_tmds_clock > 0) { in radeon_get_monitor_bpc()
176 mode_clock = radeon_connector->pixelclock_for_modeset; in radeon_get_monitor_bpc()
179 max_tmds_clock = connector->display_info.max_tmds_clock; in radeon_get_monitor_bpc()
182 connector->name, mode_clock, max_tmds_clock); in radeon_get_monitor_bpc()
186 if ((connector->display_info.edid_hdmi_rgb444_dc_modes & DRM_EDID_HDMI_DC_30) && in radeon_get_monitor_bpc()
193 connector->name, bpc); in radeon_get_monitor_bpc()
199 connector->name, bpc); in radeon_get_monitor_bpc()
204 connector->name); in radeon_get_monitor_bpc()
211 connector->name); in radeon_get_monitor_bpc()
216 connector->name, connector->display_info.bpc, bpc); in radeon_get_monitor_bpc()
224 struct drm_device *dev = connector->dev; in radeon_connector_update_scratch_regs()
225 struct radeon_device *rdev = dev->dev_private; in radeon_connector_update_scratch_regs()
228 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_update_scratch_regs()
231 best_encoder = connector_funcs->best_encoder(connector); in radeon_connector_update_scratch_regs()
239 if (rdev->is_atom_bios) in radeon_connector_update_scratch_regs()
251 if (encoder->encoder_type == encoder_type) in radeon_find_encoder()
261 struct drm_property_blob *edid_blob = connector->edid_blob_ptr; in radeon_connector_edid()
263 if (radeon_connector->edid) { in radeon_connector_edid()
264 return radeon_connector->edid; in radeon_connector_edid()
266 struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL); in radeon_connector_edid()
268 radeon_connector->edid = edid; in radeon_connector_edid()
270 return radeon_connector->edid; in radeon_connector_edid()
275 struct drm_device *dev = connector->dev; in radeon_connector_get_edid()
276 struct radeon_device *rdev = dev->dev_private; in radeon_connector_get_edid()
279 if (radeon_connector->edid) in radeon_connector_get_edid()
283 if (radeon_connector->router.ddc_valid) in radeon_connector_get_edid()
288 radeon_connector->ddc_bus->has_aux) { in radeon_connector_get_edid()
289 radeon_connector->edid = drm_get_edid(connector, in radeon_connector_get_edid()
290 &radeon_connector->ddc_bus->aux.ddc); in radeon_connector_get_edid()
291 } else if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) || in radeon_connector_get_edid()
292 (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) { in radeon_connector_get_edid()
293 struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; in radeon_connector_get_edid()
295 if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT || in radeon_connector_get_edid()
296 dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) && in radeon_connector_get_edid()
297 radeon_connector->ddc_bus->has_aux) in radeon_connector_get_edid()
298 radeon_connector->edid = drm_get_edid(&radeon_connector->base, in radeon_connector_get_edid()
299 &radeon_connector->ddc_bus->aux.ddc); in radeon_connector_get_edid()
300 else if (radeon_connector->ddc_bus) in radeon_connector_get_edid()
301 radeon_connector->edid = drm_get_edid(&radeon_connector->base, in radeon_connector_get_edid()
302 &radeon_connector->ddc_bus->adapter); in radeon_connector_get_edid()
304 connector->connector_type == DRM_MODE_CONNECTOR_LVDS && in radeon_connector_get_edid()
305 radeon_connector->ddc_bus) { in radeon_connector_get_edid()
306 radeon_connector->edid = drm_get_edid_switcheroo(&radeon_connector->base, in radeon_connector_get_edid()
307 &radeon_connector->ddc_bus->adapter); in radeon_connector_get_edid()
308 } else if (radeon_connector->ddc_bus) { in radeon_connector_get_edid()
309 radeon_connector->edid = drm_get_edid(&radeon_connector->base, in radeon_connector_get_edid()
310 &radeon_connector->ddc_bus->adapter); in radeon_connector_get_edid()
313 if (!radeon_connector->edid) { in radeon_connector_get_edid()
314 /* don't fetch the edid from the vbios if ddc fails and runpm is in radeon_connector_get_edid()
317 if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) in radeon_connector_get_edid()
320 if (rdev->is_atom_bios) { in radeon_connector_get_edid()
322 if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || in radeon_connector_get_edid()
323 (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) in radeon_connector_get_edid()
324 radeon_connector->edid = radeon_bios_get_hardcoded_edid(rdev); in radeon_connector_get_edid()
327 radeon_connector->edid = radeon_bios_get_hardcoded_edid(rdev); in radeon_connector_get_edid()
336 kfree(radeon_connector->edid); in radeon_connector_free_edid()
337 radeon_connector->edid = NULL; in radeon_connector_free_edid()
345 if (radeon_connector->edid) { in radeon_ddc_get_modes()
346 drm_connector_update_edid_property(connector, radeon_connector->edid); in radeon_ddc_get_modes()
347 ret = drm_add_edid_modes(connector, radeon_connector->edid); in radeon_ddc_get_modes()
375 if (!list_empty(&connector->probed_modes)) { in radeon_get_native_mode()
377 list_first_entry(&connector->probed_modes, in radeon_get_native_mode()
380 radeon_encoder->native_mode = *preferred_mode; in radeon_get_native_mode()
382 radeon_encoder->native_mode.clock = 0; in radeon_get_native_mode()
388 * - search for other connectors sharing this encoder
398 struct drm_device *dev = connector->dev; in radeon_connector_analog_encoder_conflict_solve()
402 list_for_each_entry(conflict, &dev->mode_config.connector_list, head) { in radeon_connector_analog_encoder_conflict_solve()
413 if (conflict->status != connector_status_connected) in radeon_connector_analog_encoder_conflict_solve()
416 if (radeon_conflict->use_digital) in radeon_connector_analog_encoder_conflict_solve()
421 conflict->name); in radeon_connector_analog_encoder_conflict_solve()
423 connector->name); in radeon_connector_analog_encoder_conflict_solve()
424 conflict->status = connector_status_disconnected; in radeon_connector_analog_encoder_conflict_solve()
428 connector->name); in radeon_connector_analog_encoder_conflict_solve()
430 conflict->name); in radeon_connector_analog_encoder_conflict_solve()
443 struct drm_device *dev = encoder->dev; in radeon_fp_native_mode()
446 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_fp_native_mode()
448 if (native_mode->hdisplay != 0 && in radeon_fp_native_mode()
449 native_mode->vdisplay != 0 && in radeon_fp_native_mode()
450 native_mode->clock != 0) { in radeon_fp_native_mode()
454 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; in radeon_fp_native_mode()
457 DRM_DEBUG_KMS("Adding native panel mode %s\n", mode->name); in radeon_fp_native_mode()
458 } else if (native_mode->hdisplay != 0 && in radeon_fp_native_mode()
459 native_mode->vdisplay != 0) { in radeon_fp_native_mode()
467 mode = drm_cvt_mode(dev, native_mode->hdisplay, native_mode->vdisplay, 60, true, false, false); in radeon_fp_native_mode()
470 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; in radeon_fp_native_mode()
471 DRM_DEBUG_KMS("Adding cvt approximation of native panel mode %s\n", mode->name); in radeon_fp_native_mode()
478 struct drm_device *dev = encoder->dev; in radeon_add_common_modes()
481 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_add_common_modes()
507 if (radeon_encoder->devices & (ATOM_DEVICE_TV_SUPPORT)) { in radeon_add_common_modes()
512 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { in radeon_add_common_modes()
513 if (common_modes[i].w > native_mode->hdisplay || in radeon_add_common_modes()
514 common_modes[i].h > native_mode->vdisplay || in radeon_add_common_modes()
515 (common_modes[i].w == native_mode->hdisplay && in radeon_add_common_modes()
516 common_modes[i].h == native_mode->vdisplay)) in radeon_add_common_modes()
530 struct drm_device *dev = connector->dev; in radeon_connector_set_property()
531 struct radeon_device *rdev = dev->dev_private; in radeon_connector_set_property()
535 if (property == rdev->mode_info.coherent_mode_property) { in radeon_connector_set_property()
546 if (!radeon_encoder->enc_priv) in radeon_connector_set_property()
549 dig = radeon_encoder->enc_priv; in radeon_connector_set_property()
551 if (dig->coherent_mode != new_coherent_mode) { in radeon_connector_set_property()
552 dig->coherent_mode = new_coherent_mode; in radeon_connector_set_property()
553 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
557 if (property == rdev->mode_info.audio_property) { in radeon_connector_set_property()
566 if (radeon_connector->audio != val) { in radeon_connector_set_property()
567 radeon_connector->audio = val; in radeon_connector_set_property()
568 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
572 if (property == rdev->mode_info.dither_property) { in radeon_connector_set_property()
581 if (radeon_connector->dither != val) { in radeon_connector_set_property()
582 radeon_connector->dither = val; in radeon_connector_set_property()
583 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
587 if (property == rdev->mode_info.underscan_property) { in radeon_connector_set_property()
595 if (radeon_encoder->underscan_type != val) { in radeon_connector_set_property()
596 radeon_encoder->underscan_type = val; in radeon_connector_set_property()
597 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
601 if (property == rdev->mode_info.underscan_hborder_property) { in radeon_connector_set_property()
609 if (radeon_encoder->underscan_hborder != val) { in radeon_connector_set_property()
610 radeon_encoder->underscan_hborder = val; in radeon_connector_set_property()
611 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
615 if (property == rdev->mode_info.underscan_vborder_property) { in radeon_connector_set_property()
623 if (radeon_encoder->underscan_vborder != val) { in radeon_connector_set_property()
624 radeon_encoder->underscan_vborder = val; in radeon_connector_set_property()
625 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
629 if (property == rdev->mode_info.tv_std_property) { in radeon_connector_set_property()
639 if (!radeon_encoder->enc_priv) in radeon_connector_set_property()
643 dac_int = radeon_encoder->enc_priv; in radeon_connector_set_property()
644 dac_int->tv_std = val; in radeon_connector_set_property()
647 dac_int = radeon_encoder->enc_priv; in radeon_connector_set_property()
648 dac_int->tv_std = val; in radeon_connector_set_property()
650 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
653 if (property == rdev->mode_info.load_detect_property) { in radeon_connector_set_property()
658 radeon_connector->dac_load_detect = false; in radeon_connector_set_property()
660 radeon_connector->dac_load_detect = true; in radeon_connector_set_property()
663 if (property == rdev->mode_info.tmds_pll_property) { in radeon_connector_set_property()
673 tmds = radeon_encoder->enc_priv; in radeon_connector_set_property()
678 if (rdev->is_atom_bios) in radeon_connector_set_property()
686 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
689 if (property == dev->mode_config.scaling_mode_property) { in radeon_connector_set_property()
692 if (connector->encoder) in radeon_connector_set_property()
693 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_connector_set_property()
695 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_set_property()
696 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_connector_set_property()
706 if (radeon_encoder->rmx_type == rmx_type) in radeon_connector_set_property()
710 (radeon_encoder->native_mode.clock == 0)) in radeon_connector_set_property()
713 radeon_encoder->rmx_type = rmx_type; in radeon_connector_set_property()
715 radeon_property_change_mode(&radeon_encoder->base); in radeon_connector_set_property()
718 if (property == rdev->mode_info.output_csc_property) { in radeon_connector_set_property()
719 if (connector->encoder) in radeon_connector_set_property()
720 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_connector_set_property()
722 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_set_property()
723 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_connector_set_property()
726 if (radeon_encoder->output_csc == val) in radeon_connector_set_property()
729 radeon_encoder->output_csc = val; in radeon_connector_set_property()
731 if (connector->encoder && connector->encoder->crtc) { in radeon_connector_set_property()
732 struct drm_crtc *crtc = connector->encoder->crtc; in radeon_connector_set_property()
735 radeon_crtc->output_csc = radeon_encoder->output_csc; in radeon_connector_set_property()
741 crtc->funcs->gamma_set(crtc, NULL, NULL, NULL, 0, NULL); in radeon_connector_set_property()
752 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_fixup_lvds_native_mode()
756 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in radeon_fixup_lvds_native_mode()
757 if (mode->type & DRM_MODE_TYPE_PREFERRED) { in radeon_fixup_lvds_native_mode()
758 if (mode->hdisplay != native_mode->hdisplay || in radeon_fixup_lvds_native_mode()
759 mode->vdisplay != native_mode->vdisplay) in radeon_fixup_lvds_native_mode()
765 if (!native_mode->clock) { in radeon_fixup_lvds_native_mode()
766 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in radeon_fixup_lvds_native_mode()
767 if (mode->hdisplay == native_mode->hdisplay && in radeon_fixup_lvds_native_mode()
768 mode->vdisplay == native_mode->vdisplay) { in radeon_fixup_lvds_native_mode()
777 if (!native_mode->clock) { in radeon_fixup_lvds_native_mode()
779 radeon_encoder->rmx_type = RMX_OFF; in radeon_fixup_lvds_native_mode()
811 connector->display_info.width_mm = mode->width_mm; in radeon_lvds_get_modes()
812 connector->display_info.height_mm = mode->height_mm; in radeon_lvds_get_modes()
825 if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) in radeon_lvds_mode_valid()
830 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_lvds_mode_valid()
835 if ((mode->hdisplay > native_mode->hdisplay) || in radeon_lvds_mode_valid()
836 (mode->vdisplay > native_mode->vdisplay)) in radeon_lvds_mode_valid()
839 /* if scaling is disabled, block non-native modes */ in radeon_lvds_mode_valid()
840 if (radeon_encoder->rmx_type == RMX_OFF) { in radeon_lvds_mode_valid()
841 if ((mode->hdisplay != native_mode->hdisplay) || in radeon_lvds_mode_valid()
842 (mode->vdisplay != native_mode->vdisplay)) in radeon_lvds_mode_valid()
853 struct drm_device *dev = connector->dev; in radeon_lvds_detect()
854 struct radeon_device *rdev = dev->dev_private; in radeon_lvds_detect()
861 r = pm_runtime_get_sync(connector->dev->dev); in radeon_lvds_detect()
863 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_lvds_detect()
870 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_lvds_detect()
873 if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) in radeon_lvds_detect()
875 /* don't fetch the edid from the vbios if ddc fails and runpm is in radeon_lvds_detect()
878 if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) in radeon_lvds_detect()
884 if (radeon_connector->edid) in radeon_lvds_detect()
891 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_lvds_detect()
892 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_lvds_detect()
902 if (radeon_connector->ddc_bus && radeon_connector->ddc_bus->has_aux) { in radeon_connector_unregister()
903 drm_dp_aux_unregister(&radeon_connector->ddc_bus->aux); in radeon_connector_unregister()
904 radeon_connector->ddc_bus->has_aux = false; in radeon_connector_unregister()
913 kfree(radeon_connector->con_priv); in radeon_connector_destroy()
923 struct drm_device *dev = connector->dev; in radeon_lvds_set_property()
928 if (property != dev->mode_config.scaling_mode_property) in radeon_lvds_set_property()
931 if (connector->encoder) in radeon_lvds_set_property()
932 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_lvds_set_property()
934 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_lvds_set_property()
935 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_lvds_set_property()
945 if (radeon_encoder->rmx_type == rmx_type) in radeon_lvds_set_property()
948 radeon_encoder->rmx_type = rmx_type; in radeon_lvds_set_property()
950 radeon_property_change_mode(&radeon_encoder->base); in radeon_lvds_set_property()
985 struct drm_device *dev = connector->dev; in radeon_vga_mode_valid()
986 struct radeon_device *rdev = dev->dev_private; in radeon_vga_mode_valid()
990 if ((mode->clock / 10) > rdev->clock.max_pixel_clock) in radeon_vga_mode_valid()
999 struct drm_device *dev = connector->dev; in radeon_vga_detect()
1000 struct radeon_device *rdev = dev->dev_private; in radeon_vga_detect()
1009 r = pm_runtime_get_sync(connector->dev->dev); in radeon_vga_detect()
1011 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_vga_detect()
1020 if (radeon_connector->ddc_bus) in radeon_vga_detect()
1023 radeon_connector->detected_by_load = false; in radeon_vga_detect()
1027 if (!radeon_connector->edid) { in radeon_vga_detect()
1029 connector->name); in radeon_vga_detect()
1032 radeon_connector->use_digital = in radeon_vga_detect()
1033 !!(radeon_connector->edid->input & DRM_EDID_INPUT_DIGITAL); in radeon_vga_detect()
1036 * with a shared ddc line (often vga + hdmi) in radeon_vga_detect()
1038 if (radeon_connector->use_digital && radeon_connector->shared_ddc) { in radeon_vga_detect()
1052 if (radeon_connector->detected_by_load) in radeon_vga_detect()
1053 ret = connector->status; in radeon_vga_detect()
1057 if (radeon_connector->dac_load_detect && encoder) { in radeon_vga_detect()
1058 encoder_funcs = encoder->helper_private; in radeon_vga_detect()
1059 ret = encoder_funcs->detect(encoder, connector); in radeon_vga_detect()
1061 radeon_connector->detected_by_load = true; in radeon_vga_detect()
1072 if ((!rdev->is_atom_bios) && in radeon_vga_detect()
1074 rdev->mode_info.bios_hardcoded_edid_size) { in radeon_vga_detect()
1082 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_vga_detect()
1083 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_vga_detect()
1106 struct drm_device *dev = connector->dev; in radeon_tv_get_modes()
1107 struct radeon_device *rdev = dev->dev_private; in radeon_tv_get_modes()
1116 if (rdev->family >= CHIP_RS600) in radeon_tv_get_modes()
1120 /* only 800x600 is supported right now on pre-avivo chips */ in radeon_tv_get_modes()
1124 tv_mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; in radeon_tv_get_modes()
1133 if ((mode->hdisplay > 1024) || (mode->vdisplay > 768)) in radeon_tv_mode_valid()
1147 if (!radeon_connector->dac_load_detect) in radeon_tv_detect()
1151 r = pm_runtime_get_sync(connector->dev->dev); in radeon_tv_detect()
1153 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_tv_detect()
1162 encoder_funcs = encoder->helper_private; in radeon_tv_detect()
1163 ret = encoder_funcs->detect(encoder, connector); in radeon_tv_detect()
1170 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_tv_detect()
1171 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_tv_detect()
1194 struct drm_device *dev = connector->dev; in radeon_check_hpd_status_unchanged()
1195 struct radeon_device *rdev = dev->dev_private; in radeon_check_hpd_status_unchanged()
1200 if (rdev->family >= CHIP_R600 in radeon_check_hpd_status_unchanged()
1201 && radeon_connector->hpd.hpd != RADEON_HPD_NONE) { in radeon_check_hpd_status_unchanged()
1202 if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) in radeon_check_hpd_status_unchanged()
1206 if (connector->status == status) in radeon_check_hpd_status_unchanged()
1215 * Do a DDC probe, if DDC probe passes, get the full EDID so
1217 * If the monitor is an analog monitor or we got no DDC,
1219 * If we got no DDC, we do load detection on the DAC encoder object.
1220 * If we got analog DDC or load detection passes on the DAC encoder
1227 struct drm_device *dev = connector->dev; in radeon_dvi_detect()
1228 struct radeon_device *rdev = dev->dev_private; in radeon_dvi_detect()
1237 r = pm_runtime_get_sync(connector->dev->dev); in radeon_dvi_detect()
1239 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dvi_detect()
1244 if (radeon_connector->detected_hpd_without_ddc) { in radeon_dvi_detect()
1246 radeon_connector->detected_hpd_without_ddc = false; in radeon_dvi_detect()
1250 ret = connector->status; in radeon_dvi_detect()
1254 if (radeon_connector->ddc_bus) { in radeon_dvi_detect()
1257 /* Sometimes the pins required for the DDC probe on DVI in radeon_dvi_detect()
1259 * for HPD do. If the DDC probe fails even though we had an HPD in radeon_dvi_detect()
1262 connector->status != connector_status_connected) { in radeon_dvi_detect()
1263 DRM_DEBUG_KMS("hpd detected without ddc, retrying in 1 second\n"); in radeon_dvi_detect()
1264 radeon_connector->detected_hpd_without_ddc = true; in radeon_dvi_detect()
1265 schedule_delayed_work(&rdev->hotplug_work, in radeon_dvi_detect()
1271 radeon_connector->detected_by_load = false; in radeon_dvi_detect()
1275 if (!radeon_connector->edid) { in radeon_dvi_detect()
1277 connector->name); in radeon_dvi_detect()
1280 if ((rdev->family == CHIP_RS690 || rdev->family == CHIP_RS740) && in radeon_dvi_detect()
1281 radeon_connector->base.null_edid_counter) { in radeon_dvi_detect()
1283 DRM_ERROR("%s: detected RS690 floating bus bug, stopping ddc detect\n", in radeon_dvi_detect()
1284 connector->name); in radeon_dvi_detect()
1285 radeon_connector->ddc_bus = NULL; in radeon_dvi_detect()
1291 radeon_connector->use_digital = in radeon_dvi_detect()
1292 !!(radeon_connector->edid->input & DRM_EDID_INPUT_DIGITAL); in radeon_dvi_detect()
1295 * with a shared ddc line (often vga + hdmi) in radeon_dvi_detect()
1297 if ((!radeon_connector->use_digital) && radeon_connector->shared_ddc) { in radeon_dvi_detect()
1304 * shared DDC line and we have boards with DVI-D + HDMI with a shared in radeon_dvi_detect()
1305 * DDC line. The latter is more complex because with DVI<->HDMI adapters in radeon_dvi_detect()
1308 if (radeon_connector->shared_ddc && (ret == connector_status_connected)) { in radeon_dvi_detect()
1311 list_for_each_entry(list_connector, &dev->mode_config.connector_list, head) { in radeon_dvi_detect()
1315 if (list_radeon_connector->shared_ddc && in radeon_dvi_detect()
1316 (list_radeon_connector->ddc_bus->rec.i2c_id == in radeon_dvi_detect()
1317 radeon_connector->ddc_bus->rec.i2c_id)) { in radeon_dvi_detect()
1319 if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) { in radeon_dvi_detect()
1321 if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { in radeon_dvi_detect()
1332 if ((ret == connector_status_connected) && (radeon_connector->use_digital == true)) in radeon_dvi_detect()
1335 /* DVI-D and HDMI-A are digital only */ in radeon_dvi_detect()
1336 if ((connector->connector_type == DRM_MODE_CONNECTOR_DVID) || in radeon_dvi_detect()
1337 (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)) in radeon_dvi_detect()
1345 if (radeon_connector->detected_by_load) in radeon_dvi_detect()
1346 ret = connector->status; in radeon_dvi_detect()
1351 if (radeon_connector->dac_load_detect) { in radeon_dvi_detect()
1353 if (encoder->encoder_type != DRM_MODE_ENCODER_DAC && in radeon_dvi_detect()
1354 encoder->encoder_type != DRM_MODE_ENCODER_TVDAC) in radeon_dvi_detect()
1357 encoder_funcs = encoder->helper_private; in radeon_dvi_detect()
1358 if (encoder_funcs->detect) { in radeon_dvi_detect()
1361 /* deal with analog monitors without DDC */ in radeon_dvi_detect()
1362 ret = encoder_funcs->detect(encoder, connector); in radeon_dvi_detect()
1364 radeon_connector->use_digital = false; in radeon_dvi_detect()
1367 radeon_connector->detected_by_load = true; in radeon_dvi_detect()
1372 radeon_connector->use_digital = true; in radeon_dvi_detect()
1373 lret = encoder_funcs->detect(encoder, connector); in radeon_dvi_detect()
1374 DRM_DEBUG_KMS("load_detect %x returned: %x\n", encoder->encoder_type, lret); in radeon_dvi_detect()
1376 radeon_connector->use_digital = false; in radeon_dvi_detect()
1383 if ((ret == connector_status_connected) && (radeon_connector->use_digital == false) && in radeon_dvi_detect()
1395 if ((!rdev->is_atom_bios) && in radeon_dvi_detect()
1397 rdev->mode_info.bios_hardcoded_edid_size) { in radeon_dvi_detect()
1398 radeon_connector->use_digital = true; in radeon_dvi_detect()
1405 if ((radeon_audio != 0) && radeon_connector->use_digital) { in radeon_dvi_detect()
1407 connector->helper_private; in radeon_dvi_detect()
1409 encoder = connector_funcs->best_encoder(connector); in radeon_dvi_detect()
1410 if (encoder && (encoder->encoder_type == DRM_MODE_ENCODER_TMDS)) { in radeon_dvi_detect()
1418 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_dvi_detect()
1419 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dvi_detect()
1432 if (radeon_connector->use_digital == true) { in radeon_dvi_encoder()
1433 if (encoder->encoder_type == DRM_MODE_ENCODER_TMDS) in radeon_dvi_encoder()
1436 if (encoder->encoder_type == DRM_MODE_ENCODER_DAC || in radeon_dvi_encoder()
1437 encoder->encoder_type == DRM_MODE_ENCODER_TVDAC) in radeon_dvi_encoder()
1455 if (connector->force == DRM_FORCE_ON) in radeon_dvi_force()
1456 radeon_connector->use_digital = false; in radeon_dvi_force()
1457 if (connector->force == DRM_FORCE_ON_DIGITAL) in radeon_dvi_force()
1458 radeon_connector->use_digital = true; in radeon_dvi_force()
1464 struct drm_device *dev = connector->dev; in radeon_dvi_mode_valid()
1465 struct radeon_device *rdev = dev->dev_private; in radeon_dvi_mode_valid()
1471 if (radeon_connector->use_digital && in radeon_dvi_mode_valid()
1472 (rdev->family == CHIP_RV100) && in radeon_dvi_mode_valid()
1473 (mode->clock > 135000)) in radeon_dvi_mode_valid()
1476 if (radeon_connector->use_digital && (mode->clock > 165000)) { in radeon_dvi_mode_valid()
1477 if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) || in radeon_dvi_mode_valid()
1478 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) || in radeon_dvi_mode_valid()
1479 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_HDMI_TYPE_B)) in radeon_dvi_mode_valid()
1483 if (mode->clock > 340000) in radeon_dvi_mode_valid()
1493 if ((mode->clock / 10) > rdev->clock.max_pixel_clock) in radeon_dvi_mode_valid()
1518 struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; in radeon_dp_get_modes()
1522 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_get_modes()
1523 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_get_modes()
1526 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { in radeon_dp_get_modes()
1527 if (!radeon_dig_connector->edp_on) in radeon_dp_get_modes()
1532 if (!radeon_dig_connector->edp_on) in radeon_dp_get_modes()
1536 /* need to setup ddc on the bridge */ in radeon_dp_get_modes()
1564 connector->display_info.width_mm = mode->width_mm; in radeon_dp_get_modes()
1565 connector->display_info.height_mm = mode->height_mm; in radeon_dp_get_modes()
1570 /* need to setup ddc on the bridge */ in radeon_dp_get_modes()
1593 switch (radeon_encoder->encoder_id) { in radeon_connector_encoder_get_dp_bridge_encoder_id()
1596 return radeon_encoder->encoder_id; in radeon_connector_encoder_get_dp_bridge_encoder_id()
1613 if (radeon_encoder->caps & ATOM_ENCODER_CAP_RECORD_HBR2) in radeon_connector_encoder_is_hbr2()
1622 struct drm_device *dev = connector->dev; in radeon_connector_is_dp12_capable()
1623 struct radeon_device *rdev = dev->dev_private; in radeon_connector_is_dp12_capable()
1626 (rdev->clock.default_dispclk >= 53900) && in radeon_connector_is_dp12_capable()
1637 struct drm_device *dev = connector->dev; in radeon_dp_detect()
1638 struct radeon_device *rdev = dev->dev_private; in radeon_dp_detect()
1641 struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; in radeon_dp_detect()
1646 r = pm_runtime_get_sync(connector->dev->dev); in radeon_dp_detect()
1648 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dp_detect()
1654 ret = connector->status; in radeon_dp_detect()
1660 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_detect()
1661 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_detect()
1664 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_dp_detect()
1667 if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) in radeon_dp_detect()
1669 /* don't fetch the edid from the vbios if ddc fails and runpm is in radeon_dp_detect()
1672 if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) in radeon_dp_detect()
1676 radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; in radeon_dp_detect()
1677 if (!radeon_dig_connector->edp_on) in radeon_dp_detect()
1682 if (!radeon_dig_connector->edp_on) in radeon_dp_detect()
1688 radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; in radeon_dp_detect()
1693 /* setup ddc on the bridge */ in radeon_dp_detect()
1696 if (radeon_ddc_probe(radeon_connector, true)) /* try DDC */ in radeon_dp_detect()
1698 else if (radeon_connector->dac_load_detect) { /* try load detection */ in radeon_dp_detect()
1699 const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; in radeon_dp_detect()
1700 ret = encoder_funcs->detect(encoder, connector); in radeon_dp_detect()
1704 radeon_dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); in radeon_dp_detect()
1705 if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { in radeon_dp_detect()
1707 if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) in radeon_dp_detect()
1710 if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { in radeon_dp_detect()
1714 /* try non-aux ddc (DP to DVI/HDMI/etc. adapter) */ in radeon_dp_detect()
1730 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_dp_detect()
1731 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dp_detect()
1740 struct drm_device *dev = connector->dev; in radeon_dp_mode_valid()
1741 struct radeon_device *rdev = dev->dev_private; in radeon_dp_mode_valid()
1743 struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; in radeon_dp_mode_valid()
1747 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_mode_valid()
1748 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_mode_valid()
1751 if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) in radeon_dp_mode_valid()
1756 struct drm_display_mode *native_mode = &radeon_encoder->native_mode; in radeon_dp_mode_valid()
1761 if ((mode->hdisplay > native_mode->hdisplay) || in radeon_dp_mode_valid()
1762 (mode->vdisplay > native_mode->vdisplay)) in radeon_dp_mode_valid()
1765 /* if scaling is disabled, block non-native modes */ in radeon_dp_mode_valid()
1766 if (radeon_encoder->rmx_type == RMX_OFF) { in radeon_dp_mode_valid()
1767 if ((mode->hdisplay != native_mode->hdisplay) || in radeon_dp_mode_valid()
1768 (mode->vdisplay != native_mode->vdisplay)) in radeon_dp_mode_valid()
1773 if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || in radeon_dp_mode_valid()
1774 (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { in radeon_dp_mode_valid()
1779 if (mode->clock > 340000) in radeon_dp_mode_valid()
1782 if (mode->clock > 165000) in radeon_dp_mode_valid()
1838 struct radeon_device *rdev = dev->dev_private; in radeon_add_atom_connector()
1844 struct i2c_adapter *ddc = NULL; in radeon_add_atom_connector() local
1861 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_add_atom_connector()
1863 if (radeon_connector->connector_id == connector_id) { in radeon_add_atom_connector()
1864 radeon_connector->devices |= supported_device; in radeon_add_atom_connector()
1867 if (radeon_connector->ddc_bus && i2c_bus->valid) { in radeon_add_atom_connector()
1868 if (radeon_connector->ddc_bus->rec.i2c_id == i2c_bus->i2c_id) { in radeon_add_atom_connector()
1869 radeon_connector->shared_ddc = true; in radeon_add_atom_connector()
1872 if (radeon_connector->router_bus && router->ddc_valid && in radeon_add_atom_connector()
1873 (radeon_connector->router.router_id == router->router_id)) { in radeon_add_atom_connector()
1874 radeon_connector->shared_ddc = false; in radeon_add_atom_connector()
1881 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in radeon_add_atom_connector()
1883 if (radeon_encoder->devices & supported_device) { in radeon_add_atom_connector()
1884 switch (radeon_encoder->encoder_id) { in radeon_add_atom_connector()
1899 connector = &radeon_connector->base; in radeon_add_atom_connector()
1901 radeon_connector->connector_id = connector_id; in radeon_add_atom_connector()
1902 radeon_connector->devices = supported_device; in radeon_add_atom_connector()
1903 radeon_connector->shared_ddc = shared_ddc; in radeon_add_atom_connector()
1904 radeon_connector->connector_object_id = connector_object_id; in radeon_add_atom_connector()
1905 radeon_connector->hpd = *hpd; in radeon_add_atom_connector()
1907 radeon_connector->router = *router; in radeon_add_atom_connector()
1908 if (router->ddc_valid || router->cd_valid) { in radeon_add_atom_connector()
1909 radeon_connector->router_bus = radeon_i2c_lookup(rdev, &router->i2c_info); in radeon_add_atom_connector()
1910 if (!radeon_connector->router_bus) in radeon_add_atom_connector()
1911 DRM_ERROR("Failed to assign router i2c bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
1918 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
1919 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
1920 if (i2c_bus->valid) { in radeon_add_atom_connector()
1921 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
1922 if (radeon_connector->ddc_bus) { in radeon_add_atom_connector()
1924 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
1926 DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
1933 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
1936 ddc); in radeon_add_atom_connector()
1937 drm_connector_helper_add(&radeon_connector->base, in radeon_add_atom_connector()
1939 connector->interlace_allowed = true; in radeon_add_atom_connector()
1940 connector->doublescan_allowed = true; in radeon_add_atom_connector()
1941 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
1942 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1943 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
1945 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1946 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
1949 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1950 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
1958 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
1961 ddc); in radeon_add_atom_connector()
1962 drm_connector_helper_add(&radeon_connector->base, in radeon_add_atom_connector()
1964 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1965 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
1967 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1968 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
1970 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1971 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
1974 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1975 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
1978 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1979 rdev->mode_info.dither_property, in radeon_add_atom_connector()
1983 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1984 rdev->mode_info.audio_property, in radeon_add_atom_connector()
1986 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
1989 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
1990 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
1994 connector->interlace_allowed = true; in radeon_add_atom_connector()
1996 connector->doublescan_allowed = true; in radeon_add_atom_connector()
1998 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2000 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2001 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2002 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2008 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2011 ddc); in radeon_add_atom_connector()
2012 drm_connector_helper_add(&radeon_connector->base, in radeon_add_atom_connector()
2014 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2015 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2018 connector->interlace_allowed = false; in radeon_add_atom_connector()
2019 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2025 if (i2c_bus->valid) { in radeon_add_atom_connector()
2026 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2027 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2028 DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2030 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2032 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2035 ddc); in radeon_add_atom_connector()
2036 drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); in radeon_add_atom_connector()
2037 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2038 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2039 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2042 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2043 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2046 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2047 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2050 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_atom_connector()
2051 connector->interlace_allowed = true; in radeon_add_atom_connector()
2052 connector->doublescan_allowed = true; 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("DVIA: 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()
2089 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2090 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2091 if (i2c_bus->valid) { in radeon_add_atom_connector()
2092 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2093 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2094 DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2096 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2098 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2101 ddc); in radeon_add_atom_connector()
2102 drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); in radeon_add_atom_connector()
2104 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2105 rdev->mode_info.coherent_mode_property, in radeon_add_atom_connector()
2108 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2109 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
2111 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2112 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
2114 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2115 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
2117 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2118 rdev->mode_info.dither_property, in radeon_add_atom_connector()
2120 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2121 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2125 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2126 rdev->mode_info.audio_property, in radeon_add_atom_connector()
2128 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
2131 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2132 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2133 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2137 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2138 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2140 connector->interlace_allowed = true; in radeon_add_atom_connector()
2142 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2144 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2151 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2152 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2153 if (i2c_bus->valid) { in radeon_add_atom_connector()
2154 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2155 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2156 DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2158 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2160 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2163 ddc); in radeon_add_atom_connector()
2164 drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); in radeon_add_atom_connector()
2165 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2166 rdev->mode_info.coherent_mode_property, in radeon_add_atom_connector()
2169 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2170 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
2172 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2173 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
2175 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2176 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
2178 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2179 rdev->mode_info.dither_property, in radeon_add_atom_connector()
2181 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2182 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2186 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2187 rdev->mode_info.audio_property, in radeon_add_atom_connector()
2189 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
2192 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2193 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2196 connector->interlace_allowed = true; in radeon_add_atom_connector()
2198 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2200 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2206 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2207 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2208 if (i2c_bus->valid) { in radeon_add_atom_connector()
2209 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2210 if (radeon_connector->ddc_bus) { in radeon_add_atom_connector()
2212 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2214 DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2217 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2220 ddc); in radeon_add_atom_connector()
2221 drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs); in radeon_add_atom_connector()
2223 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2224 rdev->mode_info.coherent_mode_property, in radeon_add_atom_connector()
2227 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2228 rdev->mode_info.underscan_property, in radeon_add_atom_connector()
2230 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2231 rdev->mode_info.underscan_hborder_property, in radeon_add_atom_connector()
2233 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2234 rdev->mode_info.underscan_vborder_property, in radeon_add_atom_connector()
2236 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2237 rdev->mode_info.dither_property, in radeon_add_atom_connector()
2239 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2240 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2244 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2245 rdev->mode_info.audio_property, in radeon_add_atom_connector()
2247 radeon_connector->audio = RADEON_AUDIO_AUTO; in radeon_add_atom_connector()
2250 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2251 rdev->mode_info.output_csc_property, in radeon_add_atom_connector()
2253 connector->interlace_allowed = true; in radeon_add_atom_connector()
2255 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2261 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2262 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2263 if (i2c_bus->valid) { in radeon_add_atom_connector()
2264 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2265 if (radeon_connector->ddc_bus) { in radeon_add_atom_connector()
2267 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_atom_connector()
2269 DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2272 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2275 ddc); in radeon_add_atom_connector()
2276 drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs); in radeon_add_atom_connector()
2277 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2278 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2281 connector->interlace_allowed = false; in radeon_add_atom_connector()
2282 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2287 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_atom_connector()
2290 ddc); in radeon_add_atom_connector()
2291 drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); in radeon_add_atom_connector()
2292 radeon_connector->dac_load_detect = true; in radeon_add_atom_connector()
2293 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2294 rdev->mode_info.load_detect_property, in radeon_add_atom_connector()
2296 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2297 rdev->mode_info.tv_std_property, in radeon_add_atom_connector()
2300 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_atom_connector()
2301 connector->interlace_allowed = false; in radeon_add_atom_connector()
2302 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2308 radeon_dig_connector->igp_lane_info = igp_lane_info; in radeon_add_atom_connector()
2309 radeon_connector->con_priv = radeon_dig_connector; in radeon_add_atom_connector()
2310 if (i2c_bus->valid) { in radeon_add_atom_connector()
2311 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_atom_connector()
2312 if (!radeon_connector->ddc_bus) in radeon_add_atom_connector()
2313 DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_atom_connector()
2315 ddc = &radeon_connector->ddc_bus->adapter; 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_lvds_connector_helper_funcs); in radeon_add_atom_connector()
2322 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_atom_connector()
2323 dev->mode_config.scaling_mode_property, in radeon_add_atom_connector()
2326 connector->interlace_allowed = false; in radeon_add_atom_connector()
2327 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2332 if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) { in radeon_add_atom_connector()
2333 if (i2c_bus->valid) { in radeon_add_atom_connector()
2334 connector->polled = DRM_CONNECTOR_POLL_CONNECT | in radeon_add_atom_connector()
2338 connector->polled = DRM_CONNECTOR_POLL_HPD; in radeon_add_atom_connector()
2340 connector->display_info.subpixel_order = subpixel_order; in radeon_add_atom_connector()
2362 struct radeon_device *rdev = dev->dev_private; in radeon_add_legacy_connector()
2365 struct i2c_adapter *ddc = NULL; in radeon_add_legacy_connector() local
2379 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_add_legacy_connector()
2381 if (radeon_connector->connector_id == connector_id) { in radeon_add_legacy_connector()
2382 radeon_connector->devices |= supported_device; in radeon_add_legacy_connector()
2391 connector = &radeon_connector->base; in radeon_add_legacy_connector()
2393 radeon_connector->connector_id = connector_id; in radeon_add_legacy_connector()
2394 radeon_connector->devices = supported_device; in radeon_add_legacy_connector()
2395 radeon_connector->connector_object_id = connector_object_id; in radeon_add_legacy_connector()
2396 radeon_connector->hpd = *hpd; in radeon_add_legacy_connector()
2400 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2401 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2402 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2403 DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2405 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2407 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2410 ddc); in radeon_add_legacy_connector()
2411 drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); in radeon_add_legacy_connector()
2412 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2413 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2414 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2417 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_legacy_connector()
2418 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2419 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2422 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2423 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2424 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2425 DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2427 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2429 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2432 ddc); in radeon_add_legacy_connector()
2433 drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); in radeon_add_legacy_connector()
2434 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2435 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2436 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2439 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_legacy_connector()
2440 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2441 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2445 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2446 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2447 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2448 DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2450 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2452 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2455 ddc); in radeon_add_legacy_connector()
2456 drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); in radeon_add_legacy_connector()
2458 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2459 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2460 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2464 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2466 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2468 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2473 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2476 ddc); in radeon_add_legacy_connector()
2477 drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); in radeon_add_legacy_connector()
2478 radeon_connector->dac_load_detect = true; in radeon_add_legacy_connector()
2484 if (rdev->family == CHIP_RS400 || rdev->family == CHIP_RS480) in radeon_add_legacy_connector()
2485 radeon_connector->dac_load_detect = false; in radeon_add_legacy_connector()
2486 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2487 rdev->mode_info.load_detect_property, in radeon_add_legacy_connector()
2488 radeon_connector->dac_load_detect); in radeon_add_legacy_connector()
2489 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2490 rdev->mode_info.tv_std_property, in radeon_add_legacy_connector()
2493 radeon_connector->hpd.hpd = RADEON_HPD_NONE; in radeon_add_legacy_connector()
2494 connector->interlace_allowed = false; in radeon_add_legacy_connector()
2495 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2498 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2499 radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus); in radeon_add_legacy_connector()
2500 if (!radeon_connector->ddc_bus) in radeon_add_legacy_connector()
2501 DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n"); in radeon_add_legacy_connector()
2503 ddc = &radeon_connector->ddc_bus->adapter; in radeon_add_legacy_connector()
2505 drm_connector_init_with_ddc(dev, &radeon_connector->base, in radeon_add_legacy_connector()
2508 ddc); in radeon_add_legacy_connector()
2509 drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs); in radeon_add_legacy_connector()
2510 drm_object_attach_property(&radeon_connector->base.base, in radeon_add_legacy_connector()
2511 dev->mode_config.scaling_mode_property, in radeon_add_legacy_connector()
2514 connector->interlace_allowed = false; in radeon_add_legacy_connector()
2515 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2519 if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) { in radeon_add_legacy_connector()
2520 if (i2c_bus->valid) { in radeon_add_legacy_connector()
2521 connector->polled = DRM_CONNECTOR_POLL_CONNECT | in radeon_add_legacy_connector()
2525 connector->polled = DRM_CONNECTOR_POLL_HPD; in radeon_add_legacy_connector()
2527 connector->display_info.subpixel_order = subpixel_order; in radeon_add_legacy_connector()