Lines Matching +full:lvds +full:- +full:encoder

2  * Copyright 2007-8 Advanced Micro Devices, Inc.
46 static void radeon_legacy_encoder_disable(struct drm_encoder *encoder)
48 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
51 encoder_funcs = encoder->helper_private;
52 encoder_funcs->dpms(encoder, DRM_MODE_DPMS_OFF);
53 radeon_encoder->active_device = 0;
56 static void radeon_legacy_lvds_update(struct drm_encoder *encoder, int mode)
58 struct drm_device *dev = encoder->dev;
59 struct radeon_device *rdev = dev->dev_private;
60 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
70 if (radeon_encoder->enc_priv) {
71 if (rdev->is_atom_bios) {
72 struct radeon_encoder_atom_dig *lvds = radeon_encoder->enc_priv;
73 panel_pwr_delay = lvds->panel_pwr_delay;
74 if (lvds->bl_dev)
75 backlight_level = lvds->backlight_level;
77 struct radeon_encoder_lvds *lvds = radeon_encoder->enc_priv;
78 panel_pwr_delay = lvds->panel_pwr_delay;
79 if (lvds->bl_dev)
80 backlight_level = lvds->backlight_level;
84 /* macs (and possibly some x86 oem systems?) wire up LVDS strangely
87 if ((rdev->mode_info.connector_table == CT_IBOOK) ||
88 (rdev->mode_info.connector_table == CT_POWERBOOK_EXTERNAL) ||
89 (rdev->mode_info.connector_table == CT_POWERBOOK_INTERNAL) ||
90 (rdev->mode_info.connector_table == CT_POWERBOOK_VGA))
138 if (rdev->is_atom_bios)
139 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
141 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
145 static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
147 struct radeon_device *rdev = encoder->dev->dev_private;
148 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
151 if (radeon_encoder->enc_priv) {
152 if (rdev->is_atom_bios) {
153 struct radeon_encoder_atom_dig *lvds = radeon_encoder->enc_priv;
154 lvds->dpms_mode = mode;
156 struct radeon_encoder_lvds *lvds = radeon_encoder->enc_priv;
157 lvds->dpms_mode = mode;
161 radeon_legacy_lvds_update(encoder, mode);
164 static void radeon_legacy_lvds_prepare(struct drm_encoder *encoder)
166 struct radeon_device *rdev = encoder->dev->dev_private;
168 if (rdev->is_atom_bios)
169 radeon_atom_output_lock(encoder, true);
171 radeon_combios_output_lock(encoder, true);
172 radeon_legacy_lvds_dpms(encoder, DRM_MODE_DPMS_OFF);
175 static void radeon_legacy_lvds_commit(struct drm_encoder *encoder)
177 struct radeon_device *rdev = encoder->dev->dev_private;
179 radeon_legacy_lvds_dpms(encoder, DRM_MODE_DPMS_ON);
180 if (rdev->is_atom_bios)
181 radeon_atom_output_lock(encoder, false);
183 radeon_combios_output_lock(encoder, false);
186 static void radeon_legacy_lvds_mode_set(struct drm_encoder *encoder,
190 struct drm_device *dev = encoder->dev;
191 struct radeon_device *rdev = dev->dev_private;
192 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
193 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
202 if (rdev->is_atom_bios) {
206 radeon_encoder->pixel_clock = adjusted_mode->clock;
207 atombios_digital_setup(encoder, PANEL_ENCODER_ACTION_ENABLE);
210 struct radeon_encoder_lvds *lvds = (struct radeon_encoder_lvds *)radeon_encoder->enc_priv;
211 if (lvds) {
212 DRM_DEBUG_KMS("bios LVDS_GEN_CNTL: 0x%x\n", lvds->lvds_gen_cntl);
213 lvds_gen_cntl = lvds->lvds_gen_cntl;
216 lvds_ss_gen_cntl |= ((lvds->panel_digon_delay << RADEON_LVDS_PWRSEQ_DELAY1_SHIFT) |
217 (lvds->panel_blon_delay << RADEON_LVDS_PWRSEQ_DELAY2_SHIFT));
230 if (radeon_crtc->crtc_id == 0) {
232 if (radeon_encoder->rmx_type != RMX_OFF)
247 if (rdev->family == CHIP_RV410)
250 if (rdev->is_atom_bios)
251 radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
253 radeon_combios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
256 static bool radeon_legacy_mode_fixup(struct drm_encoder *encoder,
260 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
262 /* set the active encoder to connector routing */
263 radeon_encoder_set_active_device(encoder);
266 /* get the native mode for LVDS */
267 if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT))
268 radeon_panel_mode_fixup(encoder, adjusted_mode);
285 struct drm_device *dev = radeon_encoder->base.dev;
286 struct radeon_device *rdev = dev->dev_private;
298 struct drm_device *dev = radeon_encoder->base.dev;
299 struct radeon_device *rdev = dev->dev_private;
302 if (radeon_encoder->enc_priv) {
303 if (rdev->is_atom_bios) {
304 struct radeon_encoder_atom_dig *lvds = radeon_encoder->enc_priv;
305 if (lvds->backlight_level > 0)
306 dpms_mode = lvds->dpms_mode;
309 lvds->backlight_level = level;
311 struct radeon_encoder_lvds *lvds = radeon_encoder->enc_priv;
312 if (lvds->backlight_level > 0)
313 dpms_mode = lvds->dpms_mode;
316 lvds->backlight_level = level;
320 radeon_legacy_lvds_update(&radeon_encoder->base, dpms_mode);
329 if (bd->props.brightness < 0)
331 else if (bd->props.brightness > RADEON_MAX_BL_LEVEL)
334 level = bd->props.brightness;
336 if (pdata->negative)
337 level = RADEON_MAX_BL_LEVEL - level;
345 struct radeon_encoder *radeon_encoder = pdata->encoder;
356 struct radeon_encoder *radeon_encoder = pdata->encoder;
357 struct drm_device *dev = radeon_encoder->base.dev;
358 struct radeon_device *rdev = dev->dev_private;
364 return pdata->negative ? RADEON_MAX_BL_LEVEL - backlight_level : backlight_level;
375 struct drm_device *dev = radeon_encoder->base.dev;
376 struct radeon_device *rdev = dev->dev_private;
383 if (!radeon_encoder->enc_priv)
393 drm_info(dev, "Skipping radeon legacy LVDS backlight registration\n");
407 "radeon_bl%d", dev->primary->index);
408 bd = backlight_device_register(bl_name, drm_connector->kdev,
415 pdata->encoder = radeon_encoder;
424 pdata->negative = true;
426 pdata->negative = false;
431 pdata->negative = (rdev->family != CHIP_RV200 &&
432 rdev->family != CHIP_RV250 &&
433 rdev->family != CHIP_RV280 &&
434 rdev->family != CHIP_RV350);
437 pdata->negative = (pdata->negative ||
444 if (rdev->is_atom_bios) {
445 struct radeon_encoder_atom_dig *lvds = radeon_encoder->enc_priv;
446 lvds->bl_dev = bd;
448 struct radeon_encoder_lvds *lvds = radeon_encoder->enc_priv;
449 lvds->bl_dev = bd;
452 bd->props.brightness = radeon_legacy_backlight_get_brightness(bd);
453 bd->props.power = BACKLIGHT_POWER_ON;
456 DRM_INFO("radeon legacy LVDS backlight initialized\n");
457 rdev->mode_info.bl_encoder = radeon_encoder;
468 struct drm_device *dev = radeon_encoder->base.dev;
469 struct radeon_device *rdev = dev->dev_private;
472 if (!radeon_encoder->enc_priv)
475 if (rdev->is_atom_bios) {
476 struct radeon_encoder_atom_dig *lvds = radeon_encoder->enc_priv;
477 bd = lvds->bl_dev;
478 lvds->bl_dev = NULL;
480 struct radeon_encoder_lvds *lvds = radeon_encoder->enc_priv;
481 bd = lvds->bl_dev;
482 lvds->bl_dev = NULL;
492 DRM_INFO("radeon legacy LVDS backlight unloaded\n");
496 static void radeon_lvds_enc_destroy(struct drm_encoder *encoder)
498 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
500 if (radeon_encoder->enc_priv) {
502 kfree(radeon_encoder->enc_priv);
504 drm_encoder_cleanup(encoder);
512 static void radeon_legacy_primary_dac_dpms(struct drm_encoder *encoder, int mode)
514 struct drm_device *dev = encoder->dev;
515 struct radeon_device *rdev = dev->dev_private;
542 if (!(rdev->flags & RADEON_SINGLE_CRTC))
547 if (rdev->is_atom_bios)
548 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
550 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
554 static void radeon_legacy_primary_dac_prepare(struct drm_encoder *encoder)
556 struct radeon_device *rdev = encoder->dev->dev_private;
558 if (rdev->is_atom_bios)
559 radeon_atom_output_lock(encoder, true);
561 radeon_combios_output_lock(encoder, true);
562 radeon_legacy_primary_dac_dpms(encoder, DRM_MODE_DPMS_OFF);
565 static void radeon_legacy_primary_dac_commit(struct drm_encoder *encoder)
567 struct radeon_device *rdev = encoder->dev->dev_private;
569 radeon_legacy_primary_dac_dpms(encoder, DRM_MODE_DPMS_ON);
571 if (rdev->is_atom_bios)
572 radeon_atom_output_lock(encoder, false);
574 radeon_combios_output_lock(encoder, false);
577 static void radeon_legacy_primary_dac_mode_set(struct drm_encoder *encoder,
581 struct drm_device *dev = encoder->dev;
582 struct radeon_device *rdev = dev->dev_private;
583 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
584 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
589 if (radeon_crtc->crtc_id == 0) {
590 if (rdev->family == CHIP_R200 || ASIC_IS_R300(rdev)) {
599 if (rdev->family == CHIP_R200 || ASIC_IS_R300(rdev)) {
612 /* TODO 6-bits */
620 if (radeon_encoder->enc_priv) {
621 struct radeon_encoder_primary_dac *p_dac = (struct radeon_encoder_primary_dac *)radeon_encoder->enc_priv;
622 dac_macro_cntl = p_dac->ps2_pdac_adj;
628 if (rdev->is_atom_bios)
629 radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
631 radeon_combios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
634 static enum drm_connector_status radeon_legacy_primary_dac_detect(struct drm_encoder *encoder,
637 struct drm_device *dev = encoder->dev;
638 struct radeon_device *rdev = dev->dev_private;
646 * everyone happy report the encoder as always connected.
724 static void radeon_legacy_tmds_int_dpms(struct drm_encoder *encoder, int mode)
726 struct drm_device *dev = encoder->dev;
727 struct radeon_device *rdev = dev->dev_private;
744 if (rdev->is_atom_bios)
745 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
747 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
751 static void radeon_legacy_tmds_int_prepare(struct drm_encoder *encoder)
753 struct radeon_device *rdev = encoder->dev->dev_private;
755 if (rdev->is_atom_bios)
756 radeon_atom_output_lock(encoder, true);
758 radeon_combios_output_lock(encoder, true);
759 radeon_legacy_tmds_int_dpms(encoder, DRM_MODE_DPMS_OFF);
762 static void radeon_legacy_tmds_int_commit(struct drm_encoder *encoder)
764 struct radeon_device *rdev = encoder->dev->dev_private;
766 radeon_legacy_tmds_int_dpms(encoder, DRM_MODE_DPMS_ON);
768 if (rdev->is_atom_bios)
769 radeon_atom_output_lock(encoder, true);
771 radeon_combios_output_lock(encoder, true);
774 static void radeon_legacy_tmds_int_mode_set(struct drm_encoder *encoder,
778 struct drm_device *dev = encoder->dev;
779 struct radeon_device *rdev = dev->dev_private;
780 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
781 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
789 if (rdev->family == CHIP_RV280) {
790 /* bit 22 of TMDS_PLL_CNTL is read-back inverted */
795 if (radeon_encoder->enc_priv) {
796 struct radeon_encoder_int_tmds *tmds = (struct radeon_encoder_int_tmds *)radeon_encoder->enc_priv;
799 if (tmds->tmds_pll[i].freq == 0)
801 if ((uint32_t)(mode->clock / 10) < tmds->tmds_pll[i].freq) {
802 tmp = tmds->tmds_pll[i].value ;
808 if (ASIC_IS_R300(rdev) || (rdev->family == CHIP_RV280)) {
821 if (rdev->family == CHIP_R200 ||
822 rdev->family == CHIP_R100 ||
847 if (radeon_crtc->crtc_id == 0) {
848 if (ASIC_IS_R300(rdev) || rdev->family == CHIP_R200) {
850 if (radeon_encoder->rmx_type != RMX_OFF)
857 if (ASIC_IS_R300(rdev) || rdev->family == CHIP_R200) {
868 if (rdev->is_atom_bios)
869 radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
871 radeon_combios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
888 static void radeon_legacy_tmds_ext_dpms(struct drm_encoder *encoder, int mode)
890 struct drm_device *dev = encoder->dev;
891 struct radeon_device *rdev = dev->dev_private;
910 if (rdev->is_atom_bios)
911 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
913 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
917 static void radeon_legacy_tmds_ext_prepare(struct drm_encoder *encoder)
919 struct radeon_device *rdev = encoder->dev->dev_private;
921 if (rdev->is_atom_bios)
922 radeon_atom_output_lock(encoder, true);
924 radeon_combios_output_lock(encoder, true);
925 radeon_legacy_tmds_ext_dpms(encoder, DRM_MODE_DPMS_OFF);
928 static void radeon_legacy_tmds_ext_commit(struct drm_encoder *encoder)
930 struct radeon_device *rdev = encoder->dev->dev_private;
931 radeon_legacy_tmds_ext_dpms(encoder, DRM_MODE_DPMS_ON);
933 if (rdev->is_atom_bios)
934 radeon_atom_output_lock(encoder, false);
936 radeon_combios_output_lock(encoder, false);
939 static void radeon_legacy_tmds_ext_mode_set(struct drm_encoder *encoder,
943 struct drm_device *dev = encoder->dev;
944 struct radeon_device *rdev = dev->dev_private;
945 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
946 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
951 if (rdev->is_atom_bios) {
952 radeon_encoder->pixel_clock = adjusted_mode->clock;
953 atombios_dvo_setup(encoder, ATOM_ENABLE);
969 if ((rdev->pdev->device == 0x4850) &&
970 (rdev->pdev->subsystem_vendor == 0x1028) &&
971 (rdev->pdev->subsystem_device == 0x2001)) /* Dell Inspiron 8600 */
976 /*if (mode->clock > 165000)
979 if (!radeon_combios_external_tmds_setup(encoder))
980 radeon_external_tmds_setup(encoder);
983 if (radeon_crtc->crtc_id == 0) {
984 if ((rdev->family == CHIP_R200) || ASIC_IS_R300(rdev)) {
986 if (radeon_encoder->rmx_type != RMX_OFF)
993 if ((rdev->family == CHIP_R200) || ASIC_IS_R300(rdev)) {
1002 if (rdev->is_atom_bios)
1003 radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
1005 radeon_combios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
1008 static void radeon_ext_tmds_enc_destroy(struct drm_encoder *encoder)
1010 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1012 kfree(radeon_encoder->enc_priv);
1013 drm_encoder_cleanup(encoder);
1031 static void radeon_legacy_tv_dac_dpms(struct drm_encoder *encoder, int mode)
1033 struct drm_device *dev = encoder->dev;
1034 struct radeon_device *rdev = dev->dev_private;
1035 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1041 is_tv = radeon_encoder->active_device & ATOM_DEVICE_TV_SUPPORT ? true : false;
1043 if (rdev->family == CHIP_R200)
1055 if (rdev->family == CHIP_R200) {
1063 if (rdev->family == CHIP_R420 ||
1064 rdev->family == CHIP_R423 ||
1065 rdev->family == CHIP_RV410)
1080 if (rdev->family == CHIP_R200)
1088 if (rdev->family == CHIP_R420 ||
1089 rdev->family == CHIP_R423 ||
1090 rdev->family == CHIP_RV410)
1104 if (rdev->family == CHIP_R200) {
1110 else if (!(rdev->flags & RADEON_SINGLE_CRTC))
1115 if (rdev->is_atom_bios)
1116 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
1118 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
1122 static void radeon_legacy_tv_dac_prepare(struct drm_encoder *encoder)
1124 struct radeon_device *rdev = encoder->dev->dev_private;
1126 if (rdev->is_atom_bios)
1127 radeon_atom_output_lock(encoder, true);
1129 radeon_combios_output_lock(encoder, true);
1130 radeon_legacy_tv_dac_dpms(encoder, DRM_MODE_DPMS_OFF);
1133 static void radeon_legacy_tv_dac_commit(struct drm_encoder *encoder)
1135 struct radeon_device *rdev = encoder->dev->dev_private;
1137 radeon_legacy_tv_dac_dpms(encoder, DRM_MODE_DPMS_ON);
1139 if (rdev->is_atom_bios)
1140 radeon_atom_output_lock(encoder, true);
1142 radeon_combios_output_lock(encoder, true);
1145 static void radeon_legacy_tv_dac_mode_set(struct drm_encoder *encoder,
1149 struct drm_device *dev = encoder->dev;
1150 struct radeon_device *rdev = dev->dev_private;
1151 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1152 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1153 struct radeon_encoder_tv_dac *tv_dac = radeon_encoder->enc_priv;
1160 is_tv = radeon_encoder->active_device & ATOM_DEVICE_TV_SUPPORT ? true : false;
1162 if (rdev->family != CHIP_R200) {
1164 if (rdev->family == CHIP_R420 ||
1165 rdev->family == CHIP_R423 ||
1166 rdev->family == CHIP_RV410) {
1186 if (tv_dac->tv_std == TV_STD_NTSC ||
1187 tv_dac->tv_std == TV_STD_NTSC_J ||
1188 tv_dac->tv_std == TV_STD_PAL_M ||
1189 tv_dac->tv_std == TV_STD_PAL_60)
1190 tv_dac_cntl |= tv_dac->ntsc_tvdac_adj;
1192 tv_dac_cntl |= tv_dac->pal_tvdac_adj;
1194 if (tv_dac->tv_std == TV_STD_NTSC ||
1195 tv_dac->tv_std == TV_STD_NTSC_J)
1201 tv_dac->ps2_tvdac_adj);
1209 } else if (rdev->family != CHIP_R200)
1211 else if (rdev->family == CHIP_R200)
1214 if (rdev->family >= CHIP_R200)
1228 if (radeon_crtc->crtc_id == 0) {
1234 if (rdev->family >= CHIP_R200) {
1244 if (rdev->family >= CHIP_R200) {
1255 if (radeon_crtc->crtc_id == 0) {
1259 } else if (rdev->family == CHIP_R200) {
1268 } else if (rdev->family == CHIP_R200) {
1281 } else if (rdev->family != CHIP_R200)
1283 else if (rdev->family == CHIP_R200)
1286 if (rdev->family >= CHIP_R200)
1290 radeon_legacy_tv_mode_set(encoder, mode, adjusted_mode);
1292 if (rdev->is_atom_bios)
1293 radeon_atombios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
1295 radeon_combios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
1299 static bool r300_legacy_tv_detect(struct drm_encoder *encoder,
1302 struct drm_device *dev = encoder->dev;
1303 struct radeon_device *rdev = dev->dev_private;
1355 DRM_DEBUG_KMS("S-video TV connection detected\n");
1370 static bool radeon_legacy_tv_detect(struct drm_encoder *encoder,
1373 struct drm_device *dev = encoder->dev;
1374 struct radeon_device *rdev = dev->dev_private;
1380 return r300_legacy_tv_detect(encoder, connector);
1421 DRM_DEBUG_KMS("S-video TV connection detected\n");
1434 static bool radeon_legacy_ext_dac_detect(struct drm_encoder *encoder,
1437 struct drm_device *dev = encoder->dev;
1438 struct radeon_device *rdev = dev->dev_private;
1524 static enum drm_connector_status radeon_legacy_tv_dac_detect(struct drm_encoder *encoder,
1527 struct drm_device *dev = encoder->dev;
1528 struct radeon_device *rdev = dev->dev_private;
1533 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1534 struct radeon_encoder_tv_dac *tv_dac = radeon_encoder->enc_priv;
1538 /* find out if crtc2 is in use or if this encoder is using it */
1539 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
1541 if ((radeon_crtc->crtc_id == 1) && crtc->enabled) {
1542 if (encoder->crtc != crtc) {
1548 if (connector->connector_type == DRM_MODE_CONNECTOR_SVIDEO ||
1549 connector->connector_type == DRM_MODE_CONNECTOR_Composite ||
1550 connector->connector_type == DRM_MODE_CONNECTOR_9PinDIN) {
1553 if (radeon_encoder->active_device && !(radeon_encoder->active_device & ATOM_DEVICE_TV_SUPPORT))
1556 tv_detect = radeon_legacy_tv_detect(encoder, connector);
1562 /* don't probe if the encoder is being used for something else not CRT related */
1563 if (radeon_encoder->active_device && !(radeon_encoder->active_device & ATOM_DEVICE_CRT_SUPPORT)) {
1564 DRM_INFO("not detecting due to %08x\n", radeon_encoder->active_device);
1569 if (rdev->family == CHIP_R200) {
1570 if (radeon_legacy_ext_dac_detect(encoder, connector))
1578 if (rdev->flags & RADEON_SINGLE_CRTC) {
1597 if (rdev->flags & RADEON_SINGLE_CRTC) {
1657 if (rdev->flags & RADEON_SINGLE_CRTC) {
1691 static struct radeon_encoder_int_tmds *radeon_legacy_get_tmds_info(struct radeon_encoder *encoder)
1693 struct drm_device *dev = encoder->base.dev;
1694 struct radeon_device *rdev = dev->dev_private;
1703 if (rdev->is_atom_bios)
1704 ret = radeon_atombios_get_tmds_info(encoder, tmds);
1706 ret = radeon_legacy_get_tmds_info_from_combios(encoder, tmds);
1709 radeon_legacy_get_tmds_info_from_table(encoder, tmds);
1714 static struct radeon_encoder_ext_tmds *radeon_legacy_get_ext_tmds_info(struct radeon_encoder *encoder)
1716 struct drm_device *dev = encoder->base.dev;
1717 struct radeon_device *rdev = dev->dev_private;
1721 if (rdev->is_atom_bios)
1729 ret = radeon_legacy_get_ext_tmds_info_from_combios(encoder, tmds);
1732 radeon_legacy_get_ext_tmds_info_from_table(encoder, tmds);
1740 struct radeon_device *rdev = dev->dev_private;
1741 struct drm_encoder *encoder;
1745 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
1746 radeon_encoder = to_radeon_encoder(encoder);
1747 if (radeon_encoder->encoder_enum == encoder_enum) {
1748 radeon_encoder->devices |= supported_device;
1759 encoder = &radeon_encoder->base;
1760 if (rdev->flags & RADEON_SINGLE_CRTC)
1761 encoder->possible_crtcs = 0x1;
1763 encoder->possible_crtcs = 0x3;
1765 radeon_encoder->enc_priv = NULL;
1767 radeon_encoder->encoder_enum = encoder_enum;
1768 radeon_encoder->encoder_id = (encoder_enum & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
1769 radeon_encoder->devices = supported_device;
1770 radeon_encoder->rmx_type = RMX_OFF;
1772 switch (radeon_encoder->encoder_id) {
1774 encoder->possible_crtcs = 0x1;
1775 drm_encoder_init(dev, encoder, &radeon_legacy_lvds_enc_funcs,
1777 drm_encoder_helper_add(encoder, &radeon_legacy_lvds_helper_funcs);
1778 if (rdev->is_atom_bios)
1779 radeon_encoder->enc_priv = radeon_atombios_get_lvds_info(radeon_encoder);
1781 radeon_encoder->enc_priv = radeon_combios_get_lvds_info(radeon_encoder);
1782 radeon_encoder->rmx_type = RMX_FULL;
1785 drm_encoder_init(dev, encoder, &radeon_legacy_tmds_int_enc_funcs,
1787 drm_encoder_helper_add(encoder, &radeon_legacy_tmds_int_helper_funcs);
1788 radeon_encoder->enc_priv = radeon_legacy_get_tmds_info(radeon_encoder);
1791 drm_encoder_init(dev, encoder, &radeon_legacy_primary_dac_enc_funcs,
1793 drm_encoder_helper_add(encoder, &radeon_legacy_primary_dac_helper_funcs);
1794 if (rdev->is_atom_bios)
1795 radeon_encoder->enc_priv = radeon_atombios_get_primary_dac_info(radeon_encoder);
1797 radeon_encoder->enc_priv = radeon_combios_get_primary_dac_info(radeon_encoder);
1800 drm_encoder_init(dev, encoder, &radeon_legacy_tv_dac_enc_funcs,
1802 drm_encoder_helper_add(encoder, &radeon_legacy_tv_dac_helper_funcs);
1803 if (rdev->is_atom_bios)
1804 radeon_encoder->enc_priv = radeon_atombios_get_tv_dac_info(radeon_encoder);
1806 radeon_encoder->enc_priv = radeon_combios_get_tv_dac_info(radeon_encoder);
1809 drm_encoder_init(dev, encoder, &radeon_legacy_tmds_ext_enc_funcs,
1811 drm_encoder_helper_add(encoder, &radeon_legacy_tmds_ext_helper_funcs);
1812 if (!rdev->is_atom_bios)
1813 radeon_encoder->enc_priv = radeon_legacy_get_ext_tmds_info(radeon_encoder);