Subversion Repositories Kolibri OS

Rev

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

Rev 1414 Rev 1430
Line 193... Line 193...
193
 
193
 
194
int r100_pci_gart_enable(struct radeon_device *rdev)
194
int r100_pci_gart_enable(struct radeon_device *rdev)
195
{
195
{
Line -... Line 196...
-
 
196
	uint32_t tmp;
196
	uint32_t tmp;
197
 
197
 
198
	radeon_gart_restore(rdev);
198
	/* discard memory request outside of configured range */
199
	/* discard memory request outside of configured range */
199
	tmp = RREG32(RADEON_AIC_CNTL) | RADEON_DIS_OUT_OF_PCI_GART_ACCESS;
200
	tmp = RREG32(RADEON_AIC_CNTL) | RADEON_DIS_OUT_OF_PCI_GART_ACCESS;
200
	WREG32(RADEON_AIC_CNTL, tmp);
201
	WREG32(RADEON_AIC_CNTL, tmp);
201
	/* set address range for PCI address translate */
-
 
202
	WREG32(RADEON_AIC_LO_ADDR, rdev->mc.gtt_location);
202
	/* set address range for PCI address translate */
203
	tmp = rdev->mc.gtt_location + rdev->mc.gtt_size - 1;
203
	WREG32(RADEON_AIC_LO_ADDR, rdev->mc.gtt_start);
204
	WREG32(RADEON_AIC_HI_ADDR, tmp);
204
	WREG32(RADEON_AIC_HI_ADDR, rdev->mc.gtt_end);
205
	/* set PCI GART page-table base address */
205
	/* set PCI GART page-table base address */
206
	WREG32(RADEON_AIC_PT_BASE, rdev->gart.table_addr);
206
	WREG32(RADEON_AIC_PT_BASE, rdev->gart.table_addr);
207
	tmp = RREG32(RADEON_AIC_CNTL) | RADEON_PCIGART_TRANSLATE_EN;
207
	tmp = RREG32(RADEON_AIC_CNTL) | RADEON_PCIGART_TRANSLATE_EN;
Line 282... Line 282...
282
	radeon_ring_write(rdev, PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0));
282
	radeon_ring_write(rdev, PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0));
283
	radeon_ring_write(rdev, RADEON_RB3D_DC_FLUSH_ALL);
283
	radeon_ring_write(rdev, RADEON_RB3D_DC_FLUSH_ALL);
284
	radeon_ring_write(rdev, PACKET0(RADEON_RB3D_ZCACHE_CTLSTAT, 0));
284
	radeon_ring_write(rdev, PACKET0(RADEON_RB3D_ZCACHE_CTLSTAT, 0));
285
	radeon_ring_write(rdev, RADEON_RB3D_ZC_FLUSH_ALL);
285
	radeon_ring_write(rdev, RADEON_RB3D_ZC_FLUSH_ALL);
286
	/* Wait until IDLE & CLEAN */
286
	/* Wait until IDLE & CLEAN */
287
	radeon_ring_write(rdev, PACKET0(0x1720, 0));
287
	radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0));
288
	radeon_ring_write(rdev, (1 << 16) | (1 << 17));
288
	radeon_ring_write(rdev, RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_3D_IDLECLEAN);
289
	radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
289
	radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
290
	radeon_ring_write(rdev, rdev->config.r100.hdp_cntl |
290
	radeon_ring_write(rdev, rdev->config.r100.hdp_cntl |
291
				RADEON_HDP_READ_BUFFER_INVALIDATE);
291
				RADEON_HDP_READ_BUFFER_INVALIDATE);
292
	radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
292
	radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
293
	radeon_ring_write(rdev, rdev->config.r100.hdp_cntl);
293
	radeon_ring_write(rdev, rdev->config.r100.hdp_cntl);
Line 708... Line 708...
708
{
708
{
709
	uint32_t tmp;
709
	uint32_t tmp;
710
	bool reinit_cp;
710
	bool reinit_cp;
711
	int i;
711
	int i;
Line 712... Line -...
712
 
-
 
713
    ENTER();
-
 
714
 
712
 
715
	reinit_cp = rdev->cp.ready;
713
	reinit_cp = rdev->cp.ready;
716
	rdev->cp.ready = false;
714
	rdev->cp.ready = false;
717
	WREG32(RADEON_CP_CSQ_MODE, 0);
715
	WREG32(RADEON_CP_CSQ_MODE, 0);
718
	WREG32(RADEON_CP_CSQ_CNTL, 0);
716
	WREG32(RADEON_CP_CSQ_CNTL, 0);
Line 1628... Line 1626...
1628
		printk(KERN_WARNING "radeon: wait for empty RBBM fifo failed !"
1626
		printk(KERN_WARNING "radeon: wait for empty RBBM fifo failed !"
1629
		       " Bad things might happen.\n");
1627
		       " Bad things might happen.\n");
1630
	}
1628
	}
1631
	for (i = 0; i < rdev->usec_timeout; i++) {
1629
	for (i = 0; i < rdev->usec_timeout; i++) {
1632
		tmp = RREG32(RADEON_RBBM_STATUS);
1630
		tmp = RREG32(RADEON_RBBM_STATUS);
1633
		if (!(tmp & (1 << 31))) {
1631
		if (!(tmp & RADEON_RBBM_ACTIVE)) {
1634
			return 0;
1632
			return 0;
1635
		}
1633
		}
1636
		DRM_UDELAY(1);
1634
		DRM_UDELAY(1);
1637
	}
1635
	}
1638
	return -1;
1636
	return -1;
Line 1643... Line 1641...
1643
	unsigned i;
1641
	unsigned i;
1644
	uint32_t tmp;
1642
	uint32_t tmp;
Line 1645... Line 1643...
1645
 
1643
 
1646
	for (i = 0; i < rdev->usec_timeout; i++) {
1644
	for (i = 0; i < rdev->usec_timeout; i++) {
1647
		/* read MC_STATUS */
1645
		/* read MC_STATUS */
1648
		tmp = RREG32(0x0150);
1646
		tmp = RREG32(RADEON_MC_STATUS);
1649
		if (tmp & (1 << 2)) {
1647
		if (tmp & RADEON_MC_IDLE) {
1650
			return 0;
1648
			return 0;
1651
		}
1649
		}
1652
		DRM_UDELAY(1);
1650
		DRM_UDELAY(1);
1653
	}
1651
	}
Line 1662... Line 1660...
1662
 
1660
 
1663
void r100_hdp_reset(struct radeon_device *rdev)
1661
void r100_hdp_reset(struct radeon_device *rdev)
1664
{
1662
{
Line 1665... Line -...
1665
	uint32_t tmp;
-
 
1666
 
-
 
1667
    ENTER();
1663
	uint32_t tmp;
1668
 
1664
 
1669
	tmp = RREG32(RADEON_HOST_PATH_CNTL) & RADEON_HDP_APER_CNTL;
1665
	tmp = RREG32(RADEON_HOST_PATH_CNTL) & RADEON_HDP_APER_CNTL;
1670
	tmp |= (7 << 28);
1666
	tmp |= (7 << 28);
1671
	WREG32(RADEON_HOST_PATH_CNTL, tmp | RADEON_HDP_SOFT_RESET | RADEON_HDP_READ_BUFFER_INVALIDATE);
1667
	WREG32(RADEON_HOST_PATH_CNTL, tmp | RADEON_HDP_SOFT_RESET | RADEON_HDP_READ_BUFFER_INVALIDATE);
Line 1679... Line 1675...
1679
int r100_rb2d_reset(struct radeon_device *rdev)
1675
int r100_rb2d_reset(struct radeon_device *rdev)
1680
{
1676
{
1681
	uint32_t tmp;
1677
	uint32_t tmp;
1682
	int i;
1678
	int i;
Line 1683... Line -...
1683
 
-
 
1684
       ENTER();
-
 
1685
 
1679
 
1686
	WREG32(RADEON_RBBM_SOFT_RESET, RADEON_SOFT_RESET_E2);
1680
	WREG32(RADEON_RBBM_SOFT_RESET, RADEON_SOFT_RESET_E2);
1687
	(void)RREG32(RADEON_RBBM_SOFT_RESET);
1681
	(void)RREG32(RADEON_RBBM_SOFT_RESET);
1688
	udelay(200);
1682
	udelay(200);
1689
	WREG32(RADEON_RBBM_SOFT_RESET, 0);
1683
	WREG32(RADEON_RBBM_SOFT_RESET, 0);
Line 1721... Line 1715...
1721
	if (status & (1 << 16)) {
1715
	if (status & (1 << 16)) {
1722
		r100_cp_reset(rdev);
1716
		r100_cp_reset(rdev);
1723
	}
1717
	}
1724
	/* Check if GPU is idle */
1718
	/* Check if GPU is idle */
1725
	status = RREG32(RADEON_RBBM_STATUS);
1719
	status = RREG32(RADEON_RBBM_STATUS);
1726
	if (status & (1 << 31)) {
1720
	if (status & RADEON_RBBM_ACTIVE) {
1727
		DRM_ERROR("Failed to reset GPU (RBBM_STATUS=0x%08X)\n", status);
1721
		DRM_ERROR("Failed to reset GPU (RBBM_STATUS=0x%08X)\n", status);
1728
		return -1;
1722
		return -1;
1729
	}
1723
	}
1730
	DRM_INFO("GPU reset succeed (RBBM_STATUS=0x%08X)\n", status);
1724
	DRM_INFO("GPU reset succeed (RBBM_STATUS=0x%08X)\n", status);
1731
	return 0;
1725
	return 0;
1732
}
1726
}
Line 1733... Line 1727...
1733
 
1727
 
1734
void r100_set_common_regs(struct radeon_device *rdev)
1728
void r100_set_common_regs(struct radeon_device *rdev)
-
 
1729
{
-
 
1730
	struct drm_device *dev = rdev->ddev;
-
 
1731
	bool force_dac2 = false;
1735
{
1732
 
1736
	/* set these so they don't interfere with anything */
1733
	/* set these so they don't interfere with anything */
1737
	WREG32(RADEON_OV0_SCALE_CNTL, 0);
1734
	WREG32(RADEON_OV0_SCALE_CNTL, 0);
1738
	WREG32(RADEON_SUBPIC_CNTL, 0);
1735
	WREG32(RADEON_SUBPIC_CNTL, 0);
1739
	WREG32(RADEON_VIPH_CONTROL, 0);
1736
	WREG32(RADEON_VIPH_CONTROL, 0);
1740
	WREG32(RADEON_I2C_CNTL_1, 0);
1737
	WREG32(RADEON_I2C_CNTL_1, 0);
1741
	WREG32(RADEON_DVI_I2C_CNTL_1, 0);
1738
	WREG32(RADEON_DVI_I2C_CNTL_1, 0);
1742
	WREG32(RADEON_CAP0_TRIG_CNTL, 0);
1739
	WREG32(RADEON_CAP0_TRIG_CNTL, 0);
-
 
1740
	WREG32(RADEON_CAP1_TRIG_CNTL, 0);
-
 
1741
 
-
 
1742
	/* always set up dac2 on rn50 and some rv100 as lots
-
 
1743
	 * of servers seem to wire it up to a VGA port but
-
 
1744
	 * don't report it in the bios connector
-
 
1745
	 * table.
-
 
1746
	 */
-
 
1747
	switch (dev->pdev->device) {
-
 
1748
		/* RN50 */
-
 
1749
	case 0x515e:
-
 
1750
	case 0x5969:
-
 
1751
		force_dac2 = true;
-
 
1752
		break;
-
 
1753
		/* RV100*/
-
 
1754
	case 0x5159:
-
 
1755
	case 0x515a:
-
 
1756
		/* DELL triple head servers */
-
 
1757
		if ((dev->pdev->subsystem_vendor == 0x1028 /* DELL */) &&
-
 
1758
		    ((dev->pdev->subsystem_device == 0x016c) ||
-
 
1759
		     (dev->pdev->subsystem_device == 0x016d) ||
-
 
1760
		     (dev->pdev->subsystem_device == 0x016e) ||
-
 
1761
		     (dev->pdev->subsystem_device == 0x016f) ||
-
 
1762
		     (dev->pdev->subsystem_device == 0x0170) ||
-
 
1763
		     (dev->pdev->subsystem_device == 0x017d) ||
-
 
1764
		     (dev->pdev->subsystem_device == 0x017e) ||
-
 
1765
		     (dev->pdev->subsystem_device == 0x0183) ||
-
 
1766
		     (dev->pdev->subsystem_device == 0x018a) ||
-
 
1767
		     (dev->pdev->subsystem_device == 0x019a)))
-
 
1768
			force_dac2 = true;
-
 
1769
		break;
-
 
1770
	}
-
 
1771
 
-
 
1772
	if (force_dac2) {
-
 
1773
		u32 disp_hw_debug = RREG32(RADEON_DISP_HW_DEBUG);
-
 
1774
		u32 tv_dac_cntl = RREG32(RADEON_TV_DAC_CNTL);
-
 
1775
		u32 dac2_cntl = RREG32(RADEON_DAC_CNTL2);
-
 
1776
 
-
 
1777
		/* For CRT on DAC2, don't turn it on if BIOS didn't
-
 
1778
		   enable it, even it's detected.
-
 
1779
		*/
-
 
1780
 
-
 
1781
		/* force it to crtc0 */
-
 
1782
		dac2_cntl &= ~RADEON_DAC2_DAC_CLK_SEL;
-
 
1783
		dac2_cntl |= RADEON_DAC2_DAC2_CLK_SEL;
-
 
1784
		disp_hw_debug |= RADEON_CRT2_DISP1_SEL;
-
 
1785
 
-
 
1786
		/* set up the TV DAC */
-
 
1787
		tv_dac_cntl &= ~(RADEON_TV_DAC_PEDESTAL |
-
 
1788
				 RADEON_TV_DAC_STD_MASK |
-
 
1789
				 RADEON_TV_DAC_RDACPD |
-
 
1790
				 RADEON_TV_DAC_GDACPD |
-
 
1791
				 RADEON_TV_DAC_BDACPD |
-
 
1792
				 RADEON_TV_DAC_BGADJ_MASK |
-
 
1793
				 RADEON_TV_DAC_DACADJ_MASK);
-
 
1794
		tv_dac_cntl |= (RADEON_TV_DAC_NBLANK |
-
 
1795
				RADEON_TV_DAC_NHOLD |
-
 
1796
				RADEON_TV_DAC_STD_PS2 |
-
 
1797
				(0x58 << 16));
-
 
1798
 
-
 
1799
		WREG32(RADEON_TV_DAC_CNTL, tv_dac_cntl);
-
 
1800
		WREG32(RADEON_DISP_HW_DEBUG, disp_hw_debug);
-
 
1801
		WREG32(RADEON_DAC_CNTL2, dac2_cntl);
1743
	WREG32(RADEON_CAP1_TRIG_CNTL, 0);
1802
	}
Line 1744... Line 1803...
1744
}
1803
}
1745
 
1804
 
1746
/*
1805
/*
Line 1820... Line 1879...
1820
}
1879
}
Line 1821... Line 1880...
1821
 
1880
 
1822
void r100_vram_init_sizes(struct radeon_device *rdev)
1881
void r100_vram_init_sizes(struct radeon_device *rdev)
1823
{
1882
{
1824
	u64 config_aper_size;
-
 
Line -... Line 1883...
-
 
1883
	u64 config_aper_size;
-
 
1884
 
-
 
1885
	/* work out accessible VRAM */
-
 
1886
	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
-
 
1887
	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
-
 
1888
	rdev->mc.visible_vram_size = r100_get_accessible_vram(rdev);
-
 
1889
	/* FIXME we don't use the second aperture yet when we could use it */
1825
	u32 accessible;
1890
	if (rdev->mc.visible_vram_size > rdev->mc.aper_size)
1826
 
-
 
1827
	config_aper_size = RREG32(RADEON_CONFIG_APER_SIZE);
1891
		rdev->mc.visible_vram_size = rdev->mc.aper_size;
1828
 
1892
	config_aper_size = RREG32(RADEON_CONFIG_APER_SIZE);
1829
	if (rdev->flags & RADEON_IS_IGP) {
1893
	if (rdev->flags & RADEON_IS_IGP) {
1830
		uint32_t tom;
1894
		uint32_t tom;
1831
		/* read NB_TOM to get the amount of ram stolen for the GPU */
1895
		/* read NB_TOM to get the amount of ram stolen for the GPU */
1832
		tom = RREG32(RADEON_NB_TOM);
-
 
1833
		rdev->mc.real_vram_size = (((tom >> 16) - (tom & 0xffff) + 1) << 16);
-
 
1834
		/* for IGPs we need to keep VRAM where it was put by the BIOS */
1896
		tom = RREG32(RADEON_NB_TOM);
1835
		rdev->mc.vram_location = (tom & 0xffff) << 16;
1897
		rdev->mc.real_vram_size = (((tom >> 16) - (tom & 0xffff) + 1) << 16);
1836
		WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.real_vram_size);
1898
		WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.real_vram_size);
1837
		rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
1899
		rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
1838
	} else {
1900
	} else {
Line 1842... Line 1904...
1842
		 */
1904
		 */
1843
		if (rdev->mc.real_vram_size == 0) {
1905
		if (rdev->mc.real_vram_size == 0) {
1844
			rdev->mc.real_vram_size = 8192 * 1024;
1906
			rdev->mc.real_vram_size = 8192 * 1024;
1845
			WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.real_vram_size);
1907
			WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.real_vram_size);
1846
		}
1908
		}
1847
		/* let driver place VRAM */
-
 
1848
		rdev->mc.vram_location = 0xFFFFFFFFUL;
-
 
1849
		 /* Fix for RN50, M6, M7 with 8/16/32(??) MBs of VRAM -
1909
		 /* Fix for RN50, M6, M7 with 8/16/32(??) MBs of VRAM -
1850
		  * Novell bug 204882 + along with lots of ubuntu ones */
1910
		 * Novell bug 204882 + along with lots of ubuntu ones
-
 
1911
		 */
1851
		if (config_aper_size > rdev->mc.real_vram_size)
1912
		if (config_aper_size > rdev->mc.real_vram_size)
1852
			rdev->mc.mc_vram_size = config_aper_size;
1913
			rdev->mc.mc_vram_size = config_aper_size;
1853
		else
1914
		else
1854
			rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
1915
			rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
1855
	}
1916
	}
1856
 
-
 
1857
	/* work out accessible VRAM */
1917
	/* FIXME remove this once we support unmappable VRAM */
1858
	accessible = r100_get_accessible_vram(rdev);
-
 
1859
 
-
 
1860
	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
-
 
1861
	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
-
 
1862
 
-
 
1863
	if (accessible > rdev->mc.aper_size)
-
 
1864
		accessible = rdev->mc.aper_size;
-
 
1865
 
-
 
1866
	if (rdev->mc.mc_vram_size > rdev->mc.aper_size)
1918
	if (rdev->mc.mc_vram_size > rdev->mc.aper_size) {
1867
		rdev->mc.mc_vram_size = rdev->mc.aper_size;
1919
		rdev->mc.mc_vram_size = rdev->mc.aper_size;
1868
 
-
 
1869
	if (rdev->mc.real_vram_size > rdev->mc.aper_size)
-
 
1870
		rdev->mc.real_vram_size = rdev->mc.aper_size;
1920
		rdev->mc.real_vram_size = rdev->mc.aper_size;
1871
}
1921
	}
-
 
1922
}
Line 1872... Line 1923...
1872
 
1923
 
1873
void r100_vga_set_state(struct radeon_device *rdev, bool state)
1924
void r100_vga_set_state(struct radeon_device *rdev, bool state)
1874
{
1925
{
Line 1882... Line 1933...
1882
		temp &= ~(1<<9);
1933
		temp &= ~(1<<9);
1883
	}
1934
	}
1884
	WREG32(RADEON_CONFIG_CNTL, temp);
1935
	WREG32(RADEON_CONFIG_CNTL, temp);
1885
}
1936
}
Line 1886... Line 1937...
1886
 
1937
 
1887
void r100_vram_info(struct radeon_device *rdev)
1938
void r100_mc_init(struct radeon_device *rdev)
1888
{
1939
{
Line -... Line 1940...
-
 
1940
	u64 base;
1889
	r100_vram_get_type(rdev);
1941
 
-
 
1942
	r100_vram_get_type(rdev);
-
 
1943
	r100_vram_init_sizes(rdev);
-
 
1944
	base = rdev->mc.aper_base;
-
 
1945
	if (rdev->flags & RADEON_IS_IGP)
-
 
1946
		base = (RREG32(RADEON_NB_TOM) & 0xffff) << 16;
-
 
1947
	radeon_vram_location(rdev, &rdev->mc, base);
1890
 
1948
	if (!(rdev->flags & RADEON_IS_AGP))
Line 1891... Line 1949...
1891
	r100_vram_init_sizes(rdev);
1949
		radeon_gtt_location(rdev, &rdev->mc);
1892
}
1950
}
Line 2751... Line 2809...
2751
}
2809
}
Line 2752... Line 2810...
2752
 
2810
 
2753
void r100_mc_resume(struct radeon_device *rdev, struct r100_mc_save *save)
2811
void r100_mc_resume(struct radeon_device *rdev, struct r100_mc_save *save)
2754
{
2812
{
2755
	/* Update base address for crtc */
2813
	/* Update base address for crtc */
2756
	WREG32(R_00023C_DISPLAY_BASE_ADDR, rdev->mc.vram_location);
2814
	WREG32(R_00023C_DISPLAY_BASE_ADDR, rdev->mc.vram_start);
2757
	if (!(rdev->flags & RADEON_SINGLE_CRTC)) {
2815
	if (!(rdev->flags & RADEON_SINGLE_CRTC)) {
2758
		WREG32(R_00033C_CRTC2_DISPLAY_BASE_ADDR,
-
 
2759
				rdev->mc.vram_location);
2816
		WREG32(R_00033C_CRTC2_DISPLAY_BASE_ADDR, rdev->mc.vram_start);
2760
	}
2817
	}
2761
	/* Restore CRTC registers */
2818
	/* Restore CRTC registers */
2762
	WREG8(R_0003C2_GENMO_WT, save->GENMO_WT);
2819
	WREG8(R_0003C2_GENMO_WT, save->GENMO_WT);
2763
	WREG32(R_000054_CRTC_EXT_CNTL, save->CRTC_EXT_CNTL);
2820
	WREG32(R_000054_CRTC_EXT_CNTL, save->CRTC_EXT_CNTL);
Line 2881... Line 2938...
2881
//   }
2938
//   }
2882
	return 0;
2939
	return 0;
2883
}
2940
}
Line 2884... Line -...
2884
 
-
 
2885
 
-
 
2886
int r100_mc_init(struct radeon_device *rdev)
-
 
2887
{
-
 
2888
	int r;
-
 
2889
	u32 tmp;
-
 
2890
 
-
 
2891
	/* Setup GPU memory space */
-
 
2892
	rdev->mc.vram_location = 0xFFFFFFFFUL;
-
 
2893
	rdev->mc.gtt_location = 0xFFFFFFFFUL;
-
 
2894
	if (rdev->flags & RADEON_IS_IGP) {
-
 
2895
		tmp = G_00015C_MC_FB_START(RREG32(R_00015C_NB_TOM));
-
 
2896
		rdev->mc.vram_location = tmp << 16;
-
 
2897
	}
-
 
2898
	if (rdev->flags & RADEON_IS_AGP) {
-
 
2899
		r = radeon_agp_init(rdev);
-
 
2900
		if (r) {
-
 
2901
			radeon_agp_disable(rdev);
-
 
2902
		} else {
-
 
2903
			rdev->mc.gtt_location = rdev->mc.agp_base;
-
 
2904
		}
-
 
2905
	}
-
 
2906
	r = radeon_mc_setup(rdev);
-
 
2907
	if (r)
-
 
2908
		return r;
-
 
Line 2909... Line 2941...
2909
	return 0;
2941
 
2910
}
2942
 
2911
 
2943
 
Line 2949... Line 2981...
2949
	r100_errata(rdev);
2981
	r100_errata(rdev);
2950
	/* Initialize clocks */
2982
	/* Initialize clocks */
2951
	radeon_get_clock_info(rdev->ddev);
2983
	radeon_get_clock_info(rdev->ddev);
2952
	/* Initialize power management */
2984
	/* Initialize power management */
2953
	radeon_pm_init(rdev);
2985
	radeon_pm_init(rdev);
2954
	/* Get vram informations */
2986
	/* initialize AGP */
2955
	r100_vram_info(rdev);
-
 
2956
	/* Initialize memory controller (also test AGP) */
2987
	if (rdev->flags & RADEON_IS_AGP) {
2957
	r = r100_mc_init(rdev);
2988
		r = radeon_agp_init(rdev);
2958
    dbgprintf("mc vram location %x\n", rdev->mc.vram_location);
-
 
2959
	if (r)
2989
		if (r) {
-
 
2990
			radeon_agp_disable(rdev);
-
 
2991
		}
-
 
2992
	}
-
 
2993
	/* initialize VRAM */
2960
		return r;
2994
	r100_mc_init(rdev);
2961
	/* Fence driver */
2995
	/* Fence driver */
2962
//	r = radeon_fence_driver_init(rdev);
2996
//	r = radeon_fence_driver_init(rdev);
2963
//	if (r)
2997
//	if (r)
2964
//		return r;
2998
//		return r;
2965
//	r = radeon_irq_kms_init(rdev);
2999
//	r = radeon_irq_kms_init(rdev);