Lines Matching refs:connector
38 static int radeon_dp_handle_hpd(struct drm_connector *connector) in radeon_dp_handle_hpd() argument
40 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dp_handle_hpd()
48 void radeon_connector_hotplug(struct drm_connector *connector) in radeon_connector_hotplug() argument
50 struct drm_device *dev = connector->dev; in radeon_connector_hotplug()
52 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_connector_hotplug()
54 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { in radeon_connector_hotplug()
61 radeon_dp_handle_hpd(connector); in radeon_connector_hotplug()
75 if (connector->dpms != DRM_MODE_DPMS_ON) in radeon_connector_hotplug()
79 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { in radeon_connector_hotplug()
93 int saved_dpms = connector->dpms; in radeon_connector_hotplug()
96 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); in radeon_connector_hotplug()
107 connector->dpms = DRM_MODE_DPMS_OFF; in radeon_connector_hotplug()
108 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); in radeon_connector_hotplug()
110 connector->dpms = saved_dpms; in radeon_connector_hotplug()
125 int radeon_get_monitor_bpc(struct drm_connector *connector) in radeon_get_monitor_bpc() argument
127 struct drm_device *dev = connector->dev; in radeon_get_monitor_bpc()
129 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_get_monitor_bpc()
134 switch (connector->connector_type) { in radeon_get_monitor_bpc()
138 if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { in radeon_get_monitor_bpc()
139 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
140 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
146 if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { in radeon_get_monitor_bpc()
147 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
148 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
155 drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { in radeon_get_monitor_bpc()
156 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
157 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
162 if (connector->display_info.bpc) in radeon_get_monitor_bpc()
163 bpc = connector->display_info.bpc; in radeon_get_monitor_bpc()
166 connector->helper_private; in radeon_get_monitor_bpc()
167 struct drm_encoder *encoder = connector_funcs->best_encoder(connector); in radeon_get_monitor_bpc()
179 if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { in radeon_get_monitor_bpc()
183 connector->name, bpc); in radeon_get_monitor_bpc()
195 connector->name, bpc); in radeon_get_monitor_bpc()
200 if (connector->max_tmds_clock > 0) { in radeon_get_monitor_bpc()
205 max_tmds_clock = connector->max_tmds_clock * 1000; in radeon_get_monitor_bpc()
208 connector->name, mode_clock, max_tmds_clock); in radeon_get_monitor_bpc()
212 if ((connector->display_info.edid_hdmi_dc_modes & DRM_EDID_HDMI_DC_30) && in radeon_get_monitor_bpc()
219 connector->name, bpc); in radeon_get_monitor_bpc()
225 connector->name, bpc); in radeon_get_monitor_bpc()
231 connector->name); in radeon_get_monitor_bpc()
238 connector->name); in radeon_get_monitor_bpc()
243 connector->name, connector->display_info.bpc, bpc); in radeon_get_monitor_bpc()
249 radeon_connector_update_scratch_regs(struct drm_connector *connector, enum drm_connector_status sta… in radeon_connector_update_scratch_regs() argument
251 struct drm_device *dev = connector->dev; in radeon_connector_update_scratch_regs()
255 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_update_scratch_regs()
259 best_encoder = connector_funcs->best_encoder(connector); in radeon_connector_update_scratch_regs()
262 if (connector->encoder_ids[i] == 0) in radeon_connector_update_scratch_regs()
265 encoder = drm_encoder_find(connector->dev, in radeon_connector_update_scratch_regs()
266 connector->encoder_ids[i]); in radeon_connector_update_scratch_regs()
276 radeon_atombios_connected_scratch_regs(connector, encoder, connected); in radeon_connector_update_scratch_regs()
278 radeon_combios_connected_scratch_regs(connector, encoder, connected); in radeon_connector_update_scratch_regs()
283 static struct drm_encoder *radeon_find_encoder(struct drm_connector *connector, int encoder_type) in radeon_find_encoder() argument
289 if (connector->encoder_ids[i] == 0) in radeon_find_encoder()
292 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); in radeon_find_encoder()
302 struct edid *radeon_connector_edid(struct drm_connector *connector) in radeon_connector_edid() argument
304 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_connector_edid()
305 struct drm_property_blob *edid_blob = connector->edid_blob_ptr; in radeon_connector_edid()
317 static void radeon_connector_get_edid(struct drm_connector *connector) in radeon_connector_get_edid() argument
319 struct drm_device *dev = connector->dev; in radeon_connector_get_edid()
321 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_connector_get_edid()
330 if ((radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != in radeon_connector_get_edid()
333 radeon_connector->edid = drm_get_edid(connector, in radeon_connector_get_edid()
335 } else if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) || in radeon_connector_get_edid()
336 (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) { in radeon_connector_get_edid()
361 if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || in radeon_connector_get_edid()
362 (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) in radeon_connector_get_edid()
371 static void radeon_connector_free_edid(struct drm_connector *connector) in radeon_connector_free_edid() argument
373 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_connector_free_edid()
381 static int radeon_ddc_get_modes(struct drm_connector *connector) in radeon_ddc_get_modes() argument
383 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_ddc_get_modes()
387 drm_mode_connector_update_edid_property(connector, radeon_connector->edid); in radeon_ddc_get_modes()
388 ret = drm_add_edid_modes(connector, radeon_connector->edid); in radeon_ddc_get_modes()
389 drm_edid_to_eld(connector, radeon_connector->edid); in radeon_ddc_get_modes()
392 drm_mode_connector_update_edid_property(connector, NULL); in radeon_ddc_get_modes()
396 static struct drm_encoder *radeon_best_single_encoder(struct drm_connector *connector) in radeon_best_single_encoder() argument
398 int enc_id = connector->encoder_ids[0]; in radeon_best_single_encoder()
401 return drm_encoder_find(connector->dev, enc_id); in radeon_best_single_encoder()
405 static void radeon_get_native_mode(struct drm_connector *connector) in radeon_get_native_mode() argument
407 struct drm_encoder *encoder = radeon_best_single_encoder(connector); in radeon_get_native_mode()
415 if (!list_empty(&connector->probed_modes)) { in radeon_get_native_mode()
417 list_first_entry(&connector->probed_modes, in radeon_get_native_mode()
433 radeon_connector_analog_encoder_conflict_solve(struct drm_connector *connector, in radeon_connector_analog_encoder_conflict_solve() argument
438 struct drm_device *dev = connector->dev; in radeon_connector_analog_encoder_conflict_solve()
444 if (conflict == connector) in radeon_connector_analog_encoder_conflict_solve()
464 connector->name); in radeon_connector_analog_encoder_conflict_solve()
469 connector->name); in radeon_connector_analog_encoder_conflict_solve()
513 static void radeon_add_common_modes(struct drm_encoder *encoder, struct drm_connector *connector) in radeon_add_common_modes() argument
560 drm_mode_probed_add(connector, mode); in radeon_add_common_modes()
564 static int radeon_connector_set_property(struct drm_connector *connector, struct drm_property *prop… in radeon_connector_set_property() argument
567 struct drm_device *dev = connector->dev; in radeon_connector_set_property()
577 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); in radeon_connector_set_property()
595 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_connector_set_property()
597 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); in radeon_connector_set_property()
610 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_connector_set_property()
612 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); in radeon_connector_set_property()
626 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); in radeon_connector_set_property()
640 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); in radeon_connector_set_property()
654 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); in radeon_connector_set_property()
667 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TVDAC); in radeon_connector_set_property()
669 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_DAC); in radeon_connector_set_property()
692 to_radeon_connector(connector); in radeon_connector_set_property()
704 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); in radeon_connector_set_property()
729 if (connector->encoder) in radeon_connector_set_property()
730 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_connector_set_property()
732 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_set_property()
733 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_connector_set_property()
756 if (connector->encoder) in radeon_connector_set_property()
757 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_connector_set_property()
759 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_connector_set_property()
760 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_connector_set_property()
768 if (connector->encoder->crtc) { in radeon_connector_set_property()
769 struct drm_crtc *crtc = connector->encoder->crtc; in radeon_connector_set_property()
783 struct drm_connector *connector) in radeon_fixup_lvds_native_mode() argument
790 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in radeon_fixup_lvds_native_mode()
800 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { in radeon_fixup_lvds_native_mode()
817 static int radeon_lvds_get_modes(struct drm_connector *connector) in radeon_lvds_get_modes() argument
823 radeon_connector_get_edid(connector); in radeon_lvds_get_modes()
824 ret = radeon_ddc_get_modes(connector); in radeon_lvds_get_modes()
826 encoder = radeon_best_single_encoder(connector); in radeon_lvds_get_modes()
828 radeon_fixup_lvds_native_mode(encoder, connector); in radeon_lvds_get_modes()
830 radeon_add_common_modes(encoder, connector); in radeon_lvds_get_modes()
835 encoder = radeon_best_single_encoder(connector); in radeon_lvds_get_modes()
843 drm_mode_probed_add(connector, mode); in radeon_lvds_get_modes()
845 connector->display_info.width_mm = mode->width_mm; in radeon_lvds_get_modes()
846 connector->display_info.height_mm = mode->height_mm; in radeon_lvds_get_modes()
848 radeon_add_common_modes(encoder, connector); in radeon_lvds_get_modes()
854 static int radeon_lvds_mode_valid(struct drm_connector *connector, in radeon_lvds_mode_valid() argument
857 struct drm_encoder *encoder = radeon_best_single_encoder(connector); in radeon_lvds_mode_valid()
885 radeon_lvds_detect(struct drm_connector *connector, bool force) in radeon_lvds_detect() argument
887 struct drm_device *dev = connector->dev; in radeon_lvds_detect()
889 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_lvds_detect()
890 struct drm_encoder *encoder = radeon_best_single_encoder(connector); in radeon_lvds_detect()
894 r = pm_runtime_get_sync(connector->dev->dev); in radeon_lvds_detect()
913 radeon_connector_get_edid(connector); in radeon_lvds_detect()
918 radeon_connector_update_scratch_regs(connector, ret); in radeon_lvds_detect()
919 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_lvds_detect()
920 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_lvds_detect()
924 static void radeon_connector_destroy(struct drm_connector *connector) in radeon_connector_destroy() argument
926 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_connector_destroy()
928 radeon_connector_free_edid(connector); in radeon_connector_destroy()
930 drm_connector_unregister(connector); in radeon_connector_destroy()
931 drm_connector_cleanup(connector); in radeon_connector_destroy()
932 kfree(connector); in radeon_connector_destroy()
935 static int radeon_lvds_set_property(struct drm_connector *connector, in radeon_lvds_set_property() argument
939 struct drm_device *dev = connector->dev; in radeon_lvds_set_property()
947 if (connector->encoder) in radeon_lvds_set_property()
948 radeon_encoder = to_radeon_encoder(connector->encoder); in radeon_lvds_set_property()
950 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; in radeon_lvds_set_property()
951 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); in radeon_lvds_set_property()
985 static int radeon_vga_get_modes(struct drm_connector *connector) in radeon_vga_get_modes() argument
989 radeon_connector_get_edid(connector); in radeon_vga_get_modes()
990 ret = radeon_ddc_get_modes(connector); in radeon_vga_get_modes()
992 radeon_get_native_mode(connector); in radeon_vga_get_modes()
997 static int radeon_vga_mode_valid(struct drm_connector *connector, in radeon_vga_mode_valid() argument
1000 struct drm_device *dev = connector->dev; in radeon_vga_mode_valid()
1012 radeon_vga_detect(struct drm_connector *connector, bool force) in radeon_vga_detect() argument
1014 struct drm_device *dev = connector->dev; in radeon_vga_detect()
1016 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_vga_detect()
1023 r = pm_runtime_get_sync(connector->dev->dev); in radeon_vga_detect()
1027 encoder = radeon_best_single_encoder(connector); in radeon_vga_detect()
1035 radeon_connector_free_edid(connector); in radeon_vga_detect()
1036 radeon_connector_get_edid(connector); in radeon_vga_detect()
1040 connector->name); in radeon_vga_detect()
1050 radeon_connector_free_edid(connector); in radeon_vga_detect()
1064 ret = connector->status; in radeon_vga_detect()
1070 ret = encoder_funcs->detect(encoder, connector); in radeon_vga_detect()
1077 ret = radeon_connector_analog_encoder_conflict_solve(connector, encoder, ret, true); in radeon_vga_detect()
1089 radeon_connector_update_scratch_regs(connector, ret); in radeon_vga_detect()
1092 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_vga_detect()
1093 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_vga_detect()
1112 static int radeon_tv_get_modes(struct drm_connector *connector) in radeon_tv_get_modes() argument
1114 struct drm_device *dev = connector->dev; in radeon_tv_get_modes()
1119 encoder = radeon_best_single_encoder(connector); in radeon_tv_get_modes()
1126 radeon_add_common_modes(encoder, connector); in radeon_tv_get_modes()
1131 drm_mode_probed_add(connector, tv_mode); in radeon_tv_get_modes()
1136 static int radeon_tv_mode_valid(struct drm_connector *connector, in radeon_tv_mode_valid() argument
1145 radeon_tv_detect(struct drm_connector *connector, bool force) in radeon_tv_detect() argument
1149 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_tv_detect()
1156 r = pm_runtime_get_sync(connector->dev->dev); in radeon_tv_detect()
1160 encoder = radeon_best_single_encoder(connector); in radeon_tv_detect()
1165 ret = encoder_funcs->detect(encoder, connector); in radeon_tv_detect()
1168 ret = radeon_connector_analog_encoder_conflict_solve(connector, encoder, ret, false); in radeon_tv_detect()
1169 radeon_connector_update_scratch_regs(connector, ret); 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()
1189 static bool radeon_check_hpd_status_unchanged(struct drm_connector *connector) in radeon_check_hpd_status_unchanged() argument
1191 struct drm_device *dev = connector->dev; in radeon_check_hpd_status_unchanged()
1193 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_check_hpd_status_unchanged()
1203 if (connector->status == status) in radeon_check_hpd_status_unchanged()
1222 radeon_dvi_detect(struct drm_connector *connector, bool force) in radeon_dvi_detect() argument
1224 struct drm_device *dev = connector->dev; in radeon_dvi_detect()
1226 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dvi_detect()
1233 r = pm_runtime_get_sync(connector->dev->dev); in radeon_dvi_detect()
1242 if (!force && radeon_check_hpd_status_unchanged(connector)) { in radeon_dvi_detect()
1243 ret = connector->status; in radeon_dvi_detect()
1255 connector->status != connector_status_connected) { in radeon_dvi_detect()
1265 radeon_connector_free_edid(connector); in radeon_dvi_detect()
1266 radeon_connector_get_edid(connector); in radeon_dvi_detect()
1270 connector->name); in radeon_dvi_detect()
1277 connector->name); in radeon_dvi_detect()
1291 radeon_connector_free_edid(connector); in radeon_dvi_detect()
1305 if (connector == list_connector) in radeon_dvi_detect()
1315 radeon_connector_free_edid(connector); in radeon_dvi_detect()
1329 if ((connector->connector_type == DRM_MODE_CONNECTOR_DVID) || in radeon_dvi_detect()
1330 (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)) in radeon_dvi_detect()
1339 ret = connector->status; in radeon_dvi_detect()
1346 if (connector->encoder_ids[i] == 0) in radeon_dvi_detect()
1349 encoder = drm_encoder_find(connector->dev, in radeon_dvi_detect()
1350 connector->encoder_ids[i]); in radeon_dvi_detect()
1363 ret = encoder_funcs->detect(encoder, connector); in radeon_dvi_detect()
1374 lret = encoder_funcs->detect(encoder, connector); in radeon_dvi_detect()
1386 ret = radeon_connector_analog_encoder_conflict_solve(connector, encoder, ret, true); in radeon_dvi_detect()
1404 radeon_connector_update_scratch_regs(connector, ret); in radeon_dvi_detect()
1408 connector->helper_private; in radeon_dvi_detect()
1410 encoder = connector_funcs->best_encoder(connector); in radeon_dvi_detect()
1412 radeon_connector_get_edid(connector); in radeon_dvi_detect()
1413 radeon_audio_detect(connector, encoder, ret); 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()
1425 static struct drm_encoder *radeon_dvi_encoder(struct drm_connector *connector) in radeon_dvi_encoder() argument
1427 int enc_id = connector->encoder_ids[0]; in radeon_dvi_encoder()
1428 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dvi_encoder()
1432 if (connector->encoder_ids[i] == 0) in radeon_dvi_encoder()
1435 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); in radeon_dvi_encoder()
1454 return drm_encoder_find(connector->dev, enc_id); in radeon_dvi_encoder()
1458 static void radeon_dvi_force(struct drm_connector *connector) in radeon_dvi_force() argument
1460 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dvi_force()
1461 if (connector->force == DRM_FORCE_ON) in radeon_dvi_force()
1463 if (connector->force == DRM_FORCE_ON_DIGITAL) in radeon_dvi_force()
1467 static int radeon_dvi_mode_valid(struct drm_connector *connector, in radeon_dvi_mode_valid() argument
1470 struct drm_device *dev = connector->dev; in radeon_dvi_mode_valid()
1472 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dvi_mode_valid()
1487 else if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { in radeon_dvi_mode_valid()
1520 static int radeon_dp_get_modes(struct drm_connector *connector) in radeon_dp_get_modes() argument
1522 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dp_get_modes()
1524 struct drm_encoder *encoder = radeon_best_single_encoder(connector); in radeon_dp_get_modes()
1527 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_get_modes()
1528 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_get_modes()
1531 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { in radeon_dp_get_modes()
1533 atombios_set_edp_panel_power(connector, in radeon_dp_get_modes()
1535 radeon_connector_get_edid(connector); in radeon_dp_get_modes()
1536 ret = radeon_ddc_get_modes(connector); in radeon_dp_get_modes()
1538 atombios_set_edp_panel_power(connector, in radeon_dp_get_modes()
1542 if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != in radeon_dp_get_modes()
1547 radeon_connector_get_edid(connector); in radeon_dp_get_modes()
1548 ret = radeon_ddc_get_modes(connector); in radeon_dp_get_modes()
1553 radeon_fixup_lvds_native_mode(encoder, connector); in radeon_dp_get_modes()
1555 radeon_add_common_modes(encoder, connector); in radeon_dp_get_modes()
1567 drm_mode_probed_add(connector, mode); in radeon_dp_get_modes()
1569 connector->display_info.width_mm = mode->width_mm; in radeon_dp_get_modes()
1570 connector->display_info.height_mm = mode->height_mm; in radeon_dp_get_modes()
1572 radeon_add_common_modes(encoder, connector); in radeon_dp_get_modes()
1576 if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != in radeon_dp_get_modes()
1581 radeon_connector_get_edid(connector); in radeon_dp_get_modes()
1582 ret = radeon_ddc_get_modes(connector); in radeon_dp_get_modes()
1584 radeon_get_native_mode(connector); in radeon_dp_get_modes()
1590 u16 radeon_connector_encoder_get_dp_bridge_encoder_id(struct drm_connector *connector) in radeon_connector_encoder_get_dp_bridge_encoder_id() argument
1597 if (connector->encoder_ids[i] == 0) in radeon_connector_encoder_get_dp_bridge_encoder_id()
1600 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); in radeon_connector_encoder_get_dp_bridge_encoder_id()
1618 static bool radeon_connector_encoder_is_hbr2(struct drm_connector *connector) in radeon_connector_encoder_is_hbr2() argument
1626 if (connector->encoder_ids[i] == 0) in radeon_connector_encoder_is_hbr2()
1629 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); in radeon_connector_encoder_is_hbr2()
1641 bool radeon_connector_is_dp12_capable(struct drm_connector *connector) in radeon_connector_is_dp12_capable() argument
1643 struct drm_device *dev = connector->dev; in radeon_connector_is_dp12_capable()
1648 radeon_connector_encoder_is_hbr2(connector)) { in radeon_connector_is_dp12_capable()
1656 radeon_dp_detect(struct drm_connector *connector, bool force) in radeon_dp_detect() argument
1658 struct drm_device *dev = connector->dev; in radeon_dp_detect()
1660 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dp_detect()
1663 struct drm_encoder *encoder = radeon_best_single_encoder(connector); in radeon_dp_detect()
1669 r = pm_runtime_get_sync(connector->dev->dev); in radeon_dp_detect()
1673 if (!force && radeon_check_hpd_status_unchanged(connector)) { in radeon_dp_detect()
1674 ret = connector->status; in radeon_dp_detect()
1678 radeon_connector_free_edid(connector); in radeon_dp_detect()
1680 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_detect()
1681 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_detect()
1698 atombios_set_edp_panel_power(connector, in radeon_dp_detect()
1703 atombios_set_edp_panel_power(connector, in radeon_dp_detect()
1705 } else if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != in radeon_dp_detect()
1720 ret = encoder_funcs->detect(encoder, connector); in radeon_dp_detect()
1750 radeon_connector_update_scratch_regs(connector, ret); in radeon_dp_detect()
1753 radeon_connector_get_edid(connector); in radeon_dp_detect()
1754 radeon_audio_detect(connector, encoder, ret); in radeon_dp_detect()
1758 pm_runtime_mark_last_busy(connector->dev->dev); in radeon_dp_detect()
1759 pm_runtime_put_autosuspend(connector->dev->dev); in radeon_dp_detect()
1764 static int radeon_dp_mode_valid(struct drm_connector *connector, in radeon_dp_mode_valid() argument
1767 struct drm_device *dev = connector->dev; in radeon_dp_mode_valid()
1769 struct radeon_connector *radeon_connector = to_radeon_connector(connector); in radeon_dp_mode_valid()
1774 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || in radeon_dp_mode_valid()
1775 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { in radeon_dp_mode_valid()
1776 struct drm_encoder *encoder = radeon_best_single_encoder(connector); in radeon_dp_mode_valid()
1802 return radeon_dp_mode_valid_helper(connector, mode); in radeon_dp_mode_valid()
1804 if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { in radeon_dp_mode_valid()
1863 struct drm_connector *connector; in radeon_add_atom_connector() local
1884 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_add_atom_connector()
1885 radeon_connector = to_radeon_connector(connector); in radeon_add_atom_connector()
1922 connector = &radeon_connector->base; in radeon_add_atom_connector()
1958 connector->interlace_allowed = true; in radeon_add_atom_connector()
1959 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2011 connector->interlace_allowed = true; in radeon_add_atom_connector()
2013 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2015 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2033 connector->interlace_allowed = false; in radeon_add_atom_connector()
2034 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2061 connector->polled = DRM_CONNECTOR_POLL_CONNECT; in radeon_add_atom_connector()
2062 connector->interlace_allowed = true; in radeon_add_atom_connector()
2063 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2087 connector->interlace_allowed = true; in radeon_add_atom_connector()
2088 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2141 connector->interlace_allowed = true; in radeon_add_atom_connector()
2143 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2145 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2192 connector->interlace_allowed = true; in radeon_add_atom_connector()
2194 connector->doublescan_allowed = true; in radeon_add_atom_connector()
2196 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2244 connector->interlace_allowed = true; in radeon_add_atom_connector()
2246 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2267 connector->interlace_allowed = false; in radeon_add_atom_connector()
2268 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2284 connector->interlace_allowed = false; in radeon_add_atom_connector()
2285 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2304 connector->interlace_allowed = false; in radeon_add_atom_connector()
2305 connector->doublescan_allowed = false; in radeon_add_atom_connector()
2312 connector->polled = DRM_CONNECTOR_POLL_CONNECT; in radeon_add_atom_connector()
2314 connector->polled = DRM_CONNECTOR_POLL_HPD; in radeon_add_atom_connector()
2316 connector->display_info.subpixel_order = subpixel_order; in radeon_add_atom_connector()
2317 drm_connector_register(connector); in radeon_add_atom_connector()
2325 drm_connector_cleanup(connector); in radeon_add_atom_connector()
2326 kfree(connector); in radeon_add_atom_connector()
2339 struct drm_connector *connector; in radeon_add_legacy_connector() local
2354 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_add_legacy_connector()
2355 radeon_connector = to_radeon_connector(connector); in radeon_add_legacy_connector()
2366 connector = &radeon_connector->base; in radeon_add_legacy_connector()
2388 connector->polled = DRM_CONNECTOR_POLL_CONNECT; in radeon_add_legacy_connector()
2389 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2390 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2406 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2407 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2425 connector->interlace_allowed = true; in radeon_add_legacy_connector()
2427 connector->doublescan_allowed = true; in radeon_add_legacy_connector()
2429 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2452 connector->interlace_allowed = false; in radeon_add_legacy_connector()
2453 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2467 connector->interlace_allowed = false; in radeon_add_legacy_connector()
2468 connector->doublescan_allowed = false; in radeon_add_legacy_connector()
2474 connector->polled = DRM_CONNECTOR_POLL_CONNECT; in radeon_add_legacy_connector()
2476 connector->polled = DRM_CONNECTOR_POLL_HPD; in radeon_add_legacy_connector()
2477 connector->display_info.subpixel_order = subpixel_order; in radeon_add_legacy_connector()
2478 drm_connector_register(connector); in radeon_add_legacy_connector()
2484 struct drm_connector *connector; in radeon_setup_mst_connector() local
2493 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in radeon_setup_mst_connector()
2496 radeon_connector = to_radeon_connector(connector); in radeon_setup_mst_connector()
2498 if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) in radeon_setup_mst_connector()