Subversion Repositories Kolibri OS

Rev

Rev 3120 | Rev 3764 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3120 Rev 3192
Line 29... Line 29...
29
#include 
29
#include 
30
#include 
30
#include 
31
#include "radeon.h"
31
#include "radeon.h"
32
#include "atom.h"
32
#include "atom.h"
Line -... Line 33...
-
 
33
 
-
 
34
#define DISABLE_DP 0
-
 
35
 
33
 
36
 
34
extern void
37
extern void
35
radeon_combios_connected_scratch_regs(struct drm_connector *connector,
38
radeon_combios_connected_scratch_regs(struct drm_connector *connector,
36
				      struct drm_encoder *encoder,
39
				      struct drm_encoder *encoder,
37
				      bool connected);
40
				      bool connected);
Line 610... Line 613...
610
{
613
{
611
	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
614
	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
612
	struct drm_encoder *encoder = radeon_best_single_encoder(connector);
615
	struct drm_encoder *encoder = radeon_best_single_encoder(connector);
613
	enum drm_connector_status ret = connector_status_disconnected;
616
	enum drm_connector_status ret = connector_status_disconnected;
Line -... Line 617...
-
 
617
 
-
 
618
    ENTER();
614
 
619
 
615
	if (encoder) {
620
	if (encoder) {
616
		struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
621
		struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
Line 617... Line 622...
617
		struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
622
		struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
Line 634... Line 639...
634
		}
639
		}
635
	}
640
	}
636
	/* check acpi lid status ??? */
641
	/* check acpi lid status ??? */
Line 637... Line 642...
637
 
642
 
-
 
643
	radeon_connector_update_scratch_regs(connector, ret);
638
	radeon_connector_update_scratch_regs(connector, ret);
644
    LEAVE();
639
	return ret;
645
	return ret;
Line 640... Line 646...
640
}
646
}
641
 
647
 
Line 739... Line 745...
739
	encoder = radeon_best_single_encoder(connector);
745
	encoder = radeon_best_single_encoder(connector);
740
	if (!encoder)
746
	if (!encoder)
741
		ret = connector_status_disconnected;
747
		ret = connector_status_disconnected;
Line 742... Line 748...
742
 
748
 
743
	if (radeon_connector->ddc_bus)
749
	if (radeon_connector->ddc_bus)
744
		dret = radeon_ddc_probe(radeon_connector);
750
		dret = radeon_ddc_probe(radeon_connector, false);
745
	if (dret) {
751
	if (dret) {
746
		radeon_connector->detected_by_load = false;
752
		radeon_connector->detected_by_load = false;
747
		if (radeon_connector->edid) {
753
		if (radeon_connector->edid) {
748
			kfree(radeon_connector->edid);
754
			kfree(radeon_connector->edid);
Line 946... Line 952...
946
 
952
 
947
	if (!force && radeon_check_hpd_status_unchanged(connector))
953
	if (!force && radeon_check_hpd_status_unchanged(connector))
Line 948... Line 954...
948
		return connector->status;
954
		return connector->status;
949
 
955
 
950
	if (radeon_connector->ddc_bus)
956
	if (radeon_connector->ddc_bus)
951
		dret = radeon_ddc_probe(radeon_connector);
957
		dret = radeon_ddc_probe(radeon_connector, false);
952
	if (dret) {
958
	if (dret) {
953
		radeon_connector->detected_by_load = false;
959
		radeon_connector->detected_by_load = false;
954
		if (radeon_connector->edid) {
960
		if (radeon_connector->edid) {
Line 1362... Line 1368...
1362
	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
1368
	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
1363
	enum drm_connector_status ret = connector_status_disconnected;
1369
	enum drm_connector_status ret = connector_status_disconnected;
1364
	struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv;
1370
	struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv;
1365
	struct drm_encoder *encoder = radeon_best_single_encoder(connector);
1371
	struct drm_encoder *encoder = radeon_best_single_encoder(connector);
Line -... Line 1372...
-
 
1372
 
-
 
1373
    dbgprintf("%s radeon_connector %p encoder %p\n",
-
 
1374
              __FUNCTION__, radeon_connector, encoder);
-
 
1375
 
-
 
1376
#if DISABLE_DP
-
 
1377
    connector->status = connector_status_disconnected;
-
 
1378
    return connector->status;
-
 
1379
#endif
1366
 
1380
 
1367
	if (!force && radeon_check_hpd_status_unchanged(connector))
1381
	if (!force && radeon_check_hpd_status_unchanged(connector))
Line 1368... Line 1382...
1368
		return connector->status;
1382
		return connector->status;
1369
 
1383
 
Line 1385... Line 1399...
1385
		/* eDP is always DP */
1399
		/* eDP is always DP */
1386
		radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT;
1400
		radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT;
1387
		if (!radeon_dig_connector->edp_on)
1401
		if (!radeon_dig_connector->edp_on)
1388
			atombios_set_edp_panel_power(connector,
1402
			atombios_set_edp_panel_power(connector,
1389
						     ATOM_TRANSMITTER_ACTION_POWER_ON);
1403
						     ATOM_TRANSMITTER_ACTION_POWER_ON);
-
 
1404
        dbgprintf("check eDP\n");
1390
		if (radeon_dp_getdpcd(radeon_connector))
1405
		if (radeon_dp_getdpcd(radeon_connector))
1391
			ret = connector_status_connected;
1406
			ret = connector_status_connected;
1392
		if (!radeon_dig_connector->edp_on)
1407
		if (!radeon_dig_connector->edp_on)
1393
			atombios_set_edp_panel_power(connector,
1408
			atombios_set_edp_panel_power(connector,
1394
						     ATOM_TRANSMITTER_ACTION_POWER_OFF);
1409
						     ATOM_TRANSMITTER_ACTION_POWER_OFF);
Line 1400... Line 1415...
1400
		radeon_dp_getdpcd(radeon_connector);
1415
		radeon_dp_getdpcd(radeon_connector);
Line 1401... Line 1416...
1401
 
1416
 
1402
		if (encoder) {
1417
		if (encoder) {
1403
			/* setup ddc on the bridge */
1418
			/* setup ddc on the bridge */
-
 
1419
				radeon_atom_ext_encoder_setup_ddc(encoder);
1404
				radeon_atom_ext_encoder_setup_ddc(encoder);
1420
			/* bridge chips are always aux */
1405
			if (radeon_ddc_probe(radeon_connector)) /* try DDC */
1421
			if (radeon_ddc_probe(radeon_connector, true)) /* try DDC */
1406
				ret = connector_status_connected;
1422
				ret = connector_status_connected;
1407
			else if (radeon_connector->dac_load_detect) { /* try load detection */
1423
			else if (radeon_connector->dac_load_detect) { /* try load detection */
1408
				struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
1424
				struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
1409
				ret = encoder_funcs->detect(encoder, connector);
1425
				ret = encoder_funcs->detect(encoder, connector);
Line 1418... Line 1434...
1418
		} else {
1434
		} else {
1419
		if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
1435
		if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
1420
			if (radeon_dp_getdpcd(radeon_connector))
1436
			if (radeon_dp_getdpcd(radeon_connector))
1421
				ret = connector_status_connected;
1437
				ret = connector_status_connected;
1422
		} else {
1438
		} else {
-
 
1439
				/* try non-aux ddc (DP to DVI/HMDI/etc. adapter) */
1423
				if (radeon_ddc_probe(radeon_connector))
1440
				if (radeon_ddc_probe(radeon_connector, false))
1424
			ret = connector_status_connected;
1441
			ret = connector_status_connected;
1425
		}
1442
		}
1426
	}
1443
	}
1427
	}
1444
	}
Line 1428... Line 1445...
1428
 
1445
 
-
 
1446
	radeon_connector_update_scratch_regs(connector, ret);
1429
	radeon_connector_update_scratch_regs(connector, ret);
1447
    LEAVE();
1430
	return ret;
1448
	return ret;
Line 1431... Line 1449...
1431
}
1449
}
1432
 
1450
 
Line 1598... Line 1616...
1598
		case DRM_MODE_CONNECTOR_DVIA:
1616
		case DRM_MODE_CONNECTOR_DVIA:
1599
		default:
1617
		default:
1600
			connector->interlace_allowed = true;
1618
			connector->interlace_allowed = true;
1601
			connector->doublescan_allowed = true;
1619
			connector->doublescan_allowed = true;
1602
			radeon_connector->dac_load_detect = true;
1620
			radeon_connector->dac_load_detect = true;
1603
			drm_connector_attach_property(&radeon_connector->base,
1621
			drm_object_attach_property(&radeon_connector->base.base,
1604
						      rdev->mode_info.load_detect_property,
1622
						      rdev->mode_info.load_detect_property,
1605
						      1);
1623
						      1);
1606
			break;
1624
			break;
1607
		case DRM_MODE_CONNECTOR_DVII:
1625
		case DRM_MODE_CONNECTOR_DVII:
1608
		case DRM_MODE_CONNECTOR_DVID:
1626
		case DRM_MODE_CONNECTOR_DVID:
1609
		case DRM_MODE_CONNECTOR_HDMIA:
1627
		case DRM_MODE_CONNECTOR_HDMIA:
1610
		case DRM_MODE_CONNECTOR_HDMIB:
1628
		case DRM_MODE_CONNECTOR_HDMIB:
1611
		case DRM_MODE_CONNECTOR_DisplayPort:
1629
		case DRM_MODE_CONNECTOR_DisplayPort:
1612
			drm_connector_attach_property(&radeon_connector->base,
1630
			drm_object_attach_property(&radeon_connector->base.base,
1613
						      rdev->mode_info.underscan_property,
1631
						      rdev->mode_info.underscan_property,
1614
						      UNDERSCAN_OFF);
1632
						      UNDERSCAN_OFF);
1615
			drm_connector_attach_property(&radeon_connector->base,
1633
			drm_object_attach_property(&radeon_connector->base.base,
1616
						      rdev->mode_info.underscan_hborder_property,
1634
						      rdev->mode_info.underscan_hborder_property,
1617
						      0);
1635
						      0);
1618
			drm_connector_attach_property(&radeon_connector->base,
1636
			drm_object_attach_property(&radeon_connector->base.base,
1619
						      rdev->mode_info.underscan_vborder_property,
1637
						      rdev->mode_info.underscan_vborder_property,
1620
						      0);
1638
						      0);
1621
			subpixel_order = SubPixelHorizontalRGB;
1639
			subpixel_order = SubPixelHorizontalRGB;
1622
			connector->interlace_allowed = true;
1640
			connector->interlace_allowed = true;
1623
			if (connector_type == DRM_MODE_CONNECTOR_HDMIB)
1641
			if (connector_type == DRM_MODE_CONNECTOR_HDMIB)
1624
				connector->doublescan_allowed = true;
1642
				connector->doublescan_allowed = true;
1625
			else
1643
			else
1626
				connector->doublescan_allowed = false;
1644
				connector->doublescan_allowed = false;
1627
			if (connector_type == DRM_MODE_CONNECTOR_DVII) {
1645
			if (connector_type == DRM_MODE_CONNECTOR_DVII) {
1628
				radeon_connector->dac_load_detect = true;
1646
				radeon_connector->dac_load_detect = true;
1629
				drm_connector_attach_property(&radeon_connector->base,
1647
				drm_object_attach_property(&radeon_connector->base.base,
1630
							      rdev->mode_info.load_detect_property,
1648
							      rdev->mode_info.load_detect_property,
1631
							      1);
1649
							      1);
1632
			}
1650
			}
1633
			break;
1651
			break;
1634
		case DRM_MODE_CONNECTOR_LVDS:
1652
		case DRM_MODE_CONNECTOR_LVDS:
1635
		case DRM_MODE_CONNECTOR_eDP:
1653
		case DRM_MODE_CONNECTOR_eDP:
1636
			drm_connector_attach_property(&radeon_connector->base,
1654
			drm_object_attach_property(&radeon_connector->base.base,
1637
						      dev->mode_config.scaling_mode_property,
1655
						      dev->mode_config.scaling_mode_property,
1638
						      DRM_MODE_SCALE_FULLSCREEN);
1656
						      DRM_MODE_SCALE_FULLSCREEN);
1639
			subpixel_order = SubPixelHorizontalRGB;
1657
			subpixel_order = SubPixelHorizontalRGB;
1640
			connector->interlace_allowed = false;
1658
			connector->interlace_allowed = false;
1641
			connector->doublescan_allowed = false;
1659
			connector->doublescan_allowed = false;
Line 1650... Line 1668...
1650
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1668
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1651
			if (!radeon_connector->ddc_bus)
1669
			if (!radeon_connector->ddc_bus)
1652
				DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1670
				DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1653
		}
1671
		}
1654
		radeon_connector->dac_load_detect = true;
1672
		radeon_connector->dac_load_detect = true;
1655
		drm_connector_attach_property(&radeon_connector->base,
1673
			drm_object_attach_property(&radeon_connector->base.base,
1656
					      rdev->mode_info.load_detect_property,
1674
					      rdev->mode_info.load_detect_property,
1657
					      1);
1675
					      1);
1658
		/* no HPD on analog connectors */
1676
		/* no HPD on analog connectors */
1659
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1677
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1660
		connector->polled = DRM_CONNECTOR_POLL_CONNECT;
1678
		connector->polled = DRM_CONNECTOR_POLL_CONNECT;
Line 1668... Line 1686...
1668
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1686
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1669
			if (!radeon_connector->ddc_bus)
1687
			if (!radeon_connector->ddc_bus)
1670
				DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1688
				DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1671
		}
1689
		}
1672
		radeon_connector->dac_load_detect = true;
1690
		radeon_connector->dac_load_detect = true;
1673
		drm_connector_attach_property(&radeon_connector->base,
1691
			drm_object_attach_property(&radeon_connector->base.base,
1674
					      rdev->mode_info.load_detect_property,
1692
					      rdev->mode_info.load_detect_property,
1675
					      1);
1693
					      1);
1676
		/* no HPD on analog connectors */
1694
		/* no HPD on analog connectors */
1677
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1695
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1678
		connector->interlace_allowed = true;
1696
		connector->interlace_allowed = true;
Line 1691... Line 1709...
1691
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1709
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1692
			if (!radeon_connector->ddc_bus)
1710
			if (!radeon_connector->ddc_bus)
1693
				DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1711
				DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1694
		}
1712
		}
1695
		subpixel_order = SubPixelHorizontalRGB;
1713
		subpixel_order = SubPixelHorizontalRGB;
1696
		drm_connector_attach_property(&radeon_connector->base,
1714
			drm_object_attach_property(&radeon_connector->base.base,
1697
					      rdev->mode_info.coherent_mode_property,
1715
					      rdev->mode_info.coherent_mode_property,
1698
					      1);
1716
					      1);
1699
		if (ASIC_IS_AVIVO(rdev)) {
1717
		if (ASIC_IS_AVIVO(rdev)) {
1700
			drm_connector_attach_property(&radeon_connector->base,
1718
				drm_object_attach_property(&radeon_connector->base.base,
1701
						      rdev->mode_info.underscan_property,
1719
						      rdev->mode_info.underscan_property,
1702
						      UNDERSCAN_OFF);
1720
						      UNDERSCAN_OFF);
1703
			drm_connector_attach_property(&radeon_connector->base,
1721
				drm_object_attach_property(&radeon_connector->base.base,
1704
						      rdev->mode_info.underscan_hborder_property,
1722
						      rdev->mode_info.underscan_hborder_property,
1705
						      0);
1723
						      0);
1706
			drm_connector_attach_property(&radeon_connector->base,
1724
				drm_object_attach_property(&radeon_connector->base.base,
1707
						      rdev->mode_info.underscan_vborder_property,
1725
						      rdev->mode_info.underscan_vborder_property,
1708
						      0);
1726
						      0);
1709
		}
1727
		}
1710
		if (connector_type == DRM_MODE_CONNECTOR_DVII) {
1728
		if (connector_type == DRM_MODE_CONNECTOR_DVII) {
1711
		radeon_connector->dac_load_detect = true;
1729
		radeon_connector->dac_load_detect = true;
1712
		drm_connector_attach_property(&radeon_connector->base,
1730
				drm_object_attach_property(&radeon_connector->base.base,
1713
					      rdev->mode_info.load_detect_property,
1731
					      rdev->mode_info.load_detect_property,
1714
					      1);
1732
					      1);
1715
		}
1733
		}
1716
		connector->interlace_allowed = true;
1734
		connector->interlace_allowed = true;
1717
		if (connector_type == DRM_MODE_CONNECTOR_DVII)
1735
		if (connector_type == DRM_MODE_CONNECTOR_DVII)
Line 1731... Line 1749...
1731
		if (i2c_bus->valid) {
1749
		if (i2c_bus->valid) {
1732
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1750
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1733
			if (!radeon_connector->ddc_bus)
1751
			if (!radeon_connector->ddc_bus)
1734
				DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1752
				DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1735
		}
1753
		}
1736
		drm_connector_attach_property(&radeon_connector->base,
1754
			drm_object_attach_property(&radeon_connector->base.base,
1737
					      rdev->mode_info.coherent_mode_property,
1755
					      rdev->mode_info.coherent_mode_property,
1738
					      1);
1756
					      1);
1739
		if (ASIC_IS_AVIVO(rdev)) {
1757
		if (ASIC_IS_AVIVO(rdev)) {
1740
			drm_connector_attach_property(&radeon_connector->base,
1758
				drm_object_attach_property(&radeon_connector->base.base,
1741
						      rdev->mode_info.underscan_property,
1759
						      rdev->mode_info.underscan_property,
1742
						      UNDERSCAN_OFF);
1760
						      UNDERSCAN_OFF);
1743
			drm_connector_attach_property(&radeon_connector->base,
1761
				drm_object_attach_property(&radeon_connector->base.base,
1744
						      rdev->mode_info.underscan_hborder_property,
1762
						      rdev->mode_info.underscan_hborder_property,
1745
						      0);
1763
						      0);
1746
			drm_connector_attach_property(&radeon_connector->base,
1764
				drm_object_attach_property(&radeon_connector->base.base,
1747
						      rdev->mode_info.underscan_vborder_property,
1765
						      rdev->mode_info.underscan_vborder_property,
1748
						      0);
1766
						      0);
1749
		}
1767
		}
1750
		subpixel_order = SubPixelHorizontalRGB;
1768
		subpixel_order = SubPixelHorizontalRGB;
1751
		connector->interlace_allowed = true;
1769
		connector->interlace_allowed = true;
Line 1770... Line 1788...
1770
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1788
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1771
			if (!radeon_connector->ddc_bus)
1789
			if (!radeon_connector->ddc_bus)
1772
				DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1790
				DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1773
		}
1791
		}
1774
		subpixel_order = SubPixelHorizontalRGB;
1792
		subpixel_order = SubPixelHorizontalRGB;
1775
		drm_connector_attach_property(&radeon_connector->base,
1793
			drm_object_attach_property(&radeon_connector->base.base,
1776
					      rdev->mode_info.coherent_mode_property,
1794
					      rdev->mode_info.coherent_mode_property,
1777
					      1);
1795
					      1);
1778
		if (ASIC_IS_AVIVO(rdev)) {
1796
		if (ASIC_IS_AVIVO(rdev)) {
1779
			drm_connector_attach_property(&radeon_connector->base,
1797
				drm_object_attach_property(&radeon_connector->base.base,
1780
						      rdev->mode_info.underscan_property,
1798
						      rdev->mode_info.underscan_property,
1781
						      UNDERSCAN_OFF);
1799
						      UNDERSCAN_OFF);
1782
			drm_connector_attach_property(&radeon_connector->base,
1800
				drm_object_attach_property(&radeon_connector->base.base,
1783
						      rdev->mode_info.underscan_hborder_property,
1801
						      rdev->mode_info.underscan_hborder_property,
1784
						      0);
1802
						      0);
1785
			drm_connector_attach_property(&radeon_connector->base,
1803
				drm_object_attach_property(&radeon_connector->base.base,
1786
						      rdev->mode_info.underscan_vborder_property,
1804
						      rdev->mode_info.underscan_vborder_property,
1787
						      0);
1805
						      0);
1788
		}
1806
		}
1789
		connector->interlace_allowed = true;
1807
		connector->interlace_allowed = true;
1790
		/* in theory with a DP to VGA converter... */
1808
		/* in theory with a DP to VGA converter... */
Line 1805... Line 1823...
1805
					DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n");
1823
					DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n");
1806
				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1824
				radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1807
				if (!radeon_connector->ddc_bus)
1825
				if (!radeon_connector->ddc_bus)
1808
					DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1826
					DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1809
			}
1827
			}
1810
			drm_connector_attach_property(&radeon_connector->base,
1828
			drm_object_attach_property(&radeon_connector->base.base,
1811
						      dev->mode_config.scaling_mode_property,
1829
						      dev->mode_config.scaling_mode_property,
1812
						      DRM_MODE_SCALE_FULLSCREEN);
1830
						      DRM_MODE_SCALE_FULLSCREEN);
1813
			subpixel_order = SubPixelHorizontalRGB;
1831
			subpixel_order = SubPixelHorizontalRGB;
1814
			connector->interlace_allowed = false;
1832
			connector->interlace_allowed = false;
1815
			connector->doublescan_allowed = false;
1833
			connector->doublescan_allowed = false;
Line 1818... Line 1836...
1818
	case DRM_MODE_CONNECTOR_Composite:
1836
	case DRM_MODE_CONNECTOR_Composite:
1819
	case DRM_MODE_CONNECTOR_9PinDIN:
1837
	case DRM_MODE_CONNECTOR_9PinDIN:
1820
			drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
1838
			drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
1821
			drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
1839
			drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
1822
			radeon_connector->dac_load_detect = true;
1840
			radeon_connector->dac_load_detect = true;
1823
		drm_connector_attach_property(&radeon_connector->base,
1841
			drm_object_attach_property(&radeon_connector->base.base,
1824
					      rdev->mode_info.load_detect_property,
1842
					      rdev->mode_info.load_detect_property,
1825
					      1);
1843
					      1);
1826
			drm_connector_attach_property(&radeon_connector->base,
1844
			drm_object_attach_property(&radeon_connector->base.base,
1827
						      rdev->mode_info.tv_std_property,
1845
						      rdev->mode_info.tv_std_property,
1828
						      radeon_atombios_get_tv_info(rdev));
1846
						      radeon_atombios_get_tv_info(rdev));
1829
			/* no HPD on analog connectors */
1847
			/* no HPD on analog connectors */
1830
			radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1848
			radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1831
		connector->interlace_allowed = false;
1849
		connector->interlace_allowed = false;
Line 1842... Line 1860...
1842
		if (i2c_bus->valid) {
1860
		if (i2c_bus->valid) {
1843
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1861
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1844
			if (!radeon_connector->ddc_bus)
1862
			if (!radeon_connector->ddc_bus)
1845
				DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1863
				DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1846
		}
1864
		}
1847
		drm_connector_attach_property(&radeon_connector->base,
1865
			drm_object_attach_property(&radeon_connector->base.base,
1848
					      dev->mode_config.scaling_mode_property,
1866
					      dev->mode_config.scaling_mode_property,
1849
					      DRM_MODE_SCALE_FULLSCREEN);
1867
					      DRM_MODE_SCALE_FULLSCREEN);
1850
		subpixel_order = SubPixelHorizontalRGB;
1868
		subpixel_order = SubPixelHorizontalRGB;
1851
		connector->interlace_allowed = false;
1869
		connector->interlace_allowed = false;
1852
		connector->doublescan_allowed = false;
1870
		connector->doublescan_allowed = false;
Line 1921... Line 1939...
1921
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1939
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1922
			if (!radeon_connector->ddc_bus)
1940
			if (!radeon_connector->ddc_bus)
1923
				DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1941
				DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1924
		}
1942
		}
1925
		radeon_connector->dac_load_detect = true;
1943
		radeon_connector->dac_load_detect = true;
1926
		drm_connector_attach_property(&radeon_connector->base,
1944
		drm_object_attach_property(&radeon_connector->base.base,
1927
					      rdev->mode_info.load_detect_property,
1945
					      rdev->mode_info.load_detect_property,
1928
					      1);
1946
					      1);
1929
		/* no HPD on analog connectors */
1947
		/* no HPD on analog connectors */
1930
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1948
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1931
		connector->polled = DRM_CONNECTOR_POLL_CONNECT;
1949
		connector->polled = DRM_CONNECTOR_POLL_CONNECT;
Line 1939... Line 1957...
1939
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1957
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
1940
			if (!radeon_connector->ddc_bus)
1958
			if (!radeon_connector->ddc_bus)
1941
				DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1959
				DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1942
		}
1960
		}
1943
		radeon_connector->dac_load_detect = true;
1961
		radeon_connector->dac_load_detect = true;
1944
		drm_connector_attach_property(&radeon_connector->base,
1962
		drm_object_attach_property(&radeon_connector->base.base,
1945
					      rdev->mode_info.load_detect_property,
1963
					      rdev->mode_info.load_detect_property,
1946
					      1);
1964
					      1);
1947
		/* no HPD on analog connectors */
1965
		/* no HPD on analog connectors */
1948
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1966
		radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1949
		connector->interlace_allowed = true;
1967
		connector->interlace_allowed = true;
Line 1958... Line 1976...
1958
			if (!radeon_connector->ddc_bus)
1976
			if (!radeon_connector->ddc_bus)
1959
				DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1977
				DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
1960
		}
1978
		}
1961
		if (connector_type == DRM_MODE_CONNECTOR_DVII) {
1979
		if (connector_type == DRM_MODE_CONNECTOR_DVII) {
1962
			radeon_connector->dac_load_detect = true;
1980
			radeon_connector->dac_load_detect = true;
1963
			drm_connector_attach_property(&radeon_connector->base,
1981
			drm_object_attach_property(&radeon_connector->base.base,
1964
						      rdev->mode_info.load_detect_property,
1982
						      rdev->mode_info.load_detect_property,
1965
						      1);
1983
						      1);
1966
		}
1984
		}
1967
		subpixel_order = SubPixelHorizontalRGB;
1985
		subpixel_order = SubPixelHorizontalRGB;
1968
		connector->interlace_allowed = true;
1986
		connector->interlace_allowed = true;
Line 1982... Line 2000...
1982
			 * found a way to make load detect reliable on those
2000
			 * found a way to make load detect reliable on those
1983
			 * chipset, thus just disable it for TV.
2001
			 * chipset, thus just disable it for TV.
1984
			 */
2002
			 */
1985
			if (rdev->family == CHIP_RS400 || rdev->family == CHIP_RS480)
2003
			if (rdev->family == CHIP_RS400 || rdev->family == CHIP_RS480)
1986
				radeon_connector->dac_load_detect = false;
2004
				radeon_connector->dac_load_detect = false;
1987
			drm_connector_attach_property(&radeon_connector->base,
2005
		drm_object_attach_property(&radeon_connector->base.base,
1988
						      rdev->mode_info.load_detect_property,
2006
						      rdev->mode_info.load_detect_property,
1989
						      radeon_connector->dac_load_detect);
2007
						      radeon_connector->dac_load_detect);
1990
			drm_connector_attach_property(&radeon_connector->base,
2008
		drm_object_attach_property(&radeon_connector->base.base,
1991
						      rdev->mode_info.tv_std_property,
2009
						      rdev->mode_info.tv_std_property,
1992
						      radeon_combios_get_tv_info(rdev));
2010
						      radeon_combios_get_tv_info(rdev));
1993
			/* no HPD on analog connectors */
2011
			/* no HPD on analog connectors */
1994
			radeon_connector->hpd.hpd = RADEON_HPD_NONE;
2012
			radeon_connector->hpd.hpd = RADEON_HPD_NONE;
1995
		connector->interlace_allowed = false;
2013
		connector->interlace_allowed = false;
Line 2001... Line 2019...
2001
		if (i2c_bus->valid) {
2019
		if (i2c_bus->valid) {
2002
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
2020
			radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
2003
			if (!radeon_connector->ddc_bus)
2021
			if (!radeon_connector->ddc_bus)
2004
				DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
2022
				DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
2005
		}
2023
		}
2006
		drm_connector_attach_property(&radeon_connector->base,
2024
		drm_object_attach_property(&radeon_connector->base.base,
2007
					      dev->mode_config.scaling_mode_property,
2025
					      dev->mode_config.scaling_mode_property,
2008
					      DRM_MODE_SCALE_FULLSCREEN);
2026
					      DRM_MODE_SCALE_FULLSCREEN);
2009
		subpixel_order = SubPixelHorizontalRGB;
2027
		subpixel_order = SubPixelHorizontalRGB;
2010
		connector->interlace_allowed = false;
2028
		connector->interlace_allowed = false;
2011
		connector->doublescan_allowed = false;
2029
		connector->doublescan_allowed = false;