xf86-video-ati: Branch 'master' - 4 commits

Alex Deucher agd5f at kemper.freedesktop.org
Tue Mar 31 12:54:18 PDT 2009


 src/radeon.h        |    2 ++
 src/radeon_bios.c   |    7 +++++--
 src/radeon_driver.c |   50 ++++++++++++++++++++++++++++++++++++++------------
 src/radeon_macros.h |    4 +++-
 src/radeon_reg.h    |    3 +++
 5 files changed, 51 insertions(+), 15 deletions(-)

New commits:
commit 0c6f20a9404c6a4210c5180bdca61c13fc186754
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Tue Mar 31 15:51:11 2009 -0400

    Add PCIE register accessors

diff --git a/src/radeon.h b/src/radeon.h
index 2b354ae..d488429 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -1056,8 +1056,10 @@ extern RADEONEntPtr RADEONEntPriv(ScrnInfoPtr pScrn);
 extern int RADEONMinBits(int val);
 extern unsigned RADEONINMC(ScrnInfoPtr pScrn, int addr);
 extern unsigned RADEONINPLL(ScrnInfoPtr pScrn, int addr);
+extern unsigned RADEONINPCIE(ScrnInfoPtr pScrn, int addr);
 extern void RADEONOUTMC(ScrnInfoPtr pScrn, int addr, uint32_t data);
 extern void RADEONOUTPLL(ScrnInfoPtr pScrn, int addr, uint32_t data);
+extern void RADEONOUTPCIE(ScrnInfoPtr pScrn, int addr, uint32_t data);
 extern void RADEONPllErrataAfterData(RADEONInfoPtr info);
 extern void RADEONPllErrataAfterIndex(RADEONInfoPtr info);
 extern void RADEONWaitForVerticalSync(ScrnInfoPtr pScrn);
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index b0b2e77..8673f5e 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -668,6 +668,29 @@ void RADEONOUTMC(ScrnInfoPtr pScrn, int addr, uint32_t data)
     }
 }
 
+/* Read PCIE register */
+unsigned RADEONINPCIE(ScrnInfoPtr pScrn, int addr)
+{
+    RADEONInfoPtr  info       = RADEONPTR(pScrn);
+    unsigned char *RADEONMMIO = info->MMIO;
+    CARD32         data;
+
+    OUTREG(RADEON_PCIE_INDEX, addr & 0xff);
+    data = INREG(RADEON_PCIE_DATA);
+
+    return data;
+}
+
+/* Write PCIE register */
+void RADEONOUTPCIE(ScrnInfoPtr pScrn, int addr, uint32_t data)
+{
+    RADEONInfoPtr  info       = RADEONPTR(pScrn);
+    unsigned char *RADEONMMIO = info->MMIO;
+
+    OUTREG(RADEON_PCIE_INDEX, ((addr) & 0xff));
+    OUTREG(RADEON_PCIE_DATA, data);
+}
+
 static Bool radeon_get_mc_idle(ScrnInfoPtr pScrn)
 {
     RADEONInfoPtr  info       = RADEONPTR(pScrn);
diff --git a/src/radeon_macros.h b/src/radeon_macros.h
index 387e5f5..b7056b0 100644
--- a/src/radeon_macros.h
+++ b/src/radeon_macros.h
@@ -152,7 +152,9 @@ do {									\
 } while (0)
 
 #define INMC(pScrn, addr) RADEONINMC(pScrn, addr)
-
 #define OUTMC(pScrn, addr, val) RADEONOUTMC(pScrn, addr, val)
 
+#define INPCIE(pScrn, addr) RADEONINPCIE(pScrn, addr)
+#define OUTPCIE(pScrn, addr, val) RADEONOUTPCIE(pScrn, addr, val
+
 #endif
diff --git a/src/radeon_reg.h b/src/radeon_reg.h
index e0d89af..a130794 100644
--- a/src/radeon_reg.h
+++ b/src/radeon_reg.h
@@ -274,6 +274,9 @@
 #define RADEON_BUS_CNTL1                    0x0034
 #       define RADEON_BUS_WAIT_ON_LOCK_EN    (1 << 4)
 
+#define RADEON_PCIE_INDEX                   0x0030
+#define RADEON_PCIE_DATA                    0x0034
+
 #define RADEON_CACHE_CNTL                   0x1724
 #define RADEON_CACHE_LINE                   0x0f0c /* PCI */
 #define RADEON_CAPABILITIES_ID              0x0f50 /* PCI */
commit 229d4e20e5adcdf9207944c19ca721477936ff02
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Tue Mar 31 15:39:42 2009 -0400

    Unify mc_idle()

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index fffb924..b0b2e77 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -668,7 +668,7 @@ void RADEONOUTMC(ScrnInfoPtr pScrn, int addr, uint32_t data)
     }
 }
 
-static Bool avivo_get_mc_idle(ScrnInfoPtr pScrn)
+static Bool radeon_get_mc_idle(ScrnInfoPtr pScrn)
 {
     RADEONInfoPtr  info       = RADEONPTR(pScrn);
     unsigned char *RADEONMMIO = info->MMIO;
@@ -694,11 +694,21 @@ static Bool avivo_get_mc_idle(ScrnInfoPtr pScrn)
 	    return TRUE;
 	else
 	    return FALSE;
-    } else {
+    } else if (info->ChipFamily >= CHIP_FAMILY_R520) {
 	if (INMC(pScrn, R520_MC_STATUS) & R520_MC_STATUS_IDLE)
 	    return TRUE;
 	else
 	    return FALSE;
+    } else if (IS_R300_VARIANT) {
+	if (INREG(RADEON_MC_STATUS) & R300_MC_IDLE)
+	    return TRUE;
+	else
+	    return FALSE;
+    } else {
+	if (INREG(RADEON_MC_STATUS) & RADEON_MC_IDLE)
+	    return TRUE;
+	else
+	    return FALSE;
     }
 }
 
@@ -3821,7 +3831,7 @@ void RADEONRestoreMemMapRegisters(ScrnInfoPtr pScrn,
 
 	    usleep(10000);
 	    timeout = 0;
-	    while (!(avivo_get_mc_idle(pScrn))) {
+	    while (!(radeon_get_mc_idle(pScrn))) {
 		if (++timeout > 1000000) {
 		    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 			       "Timeout trying to update memory controller settings !\n");
@@ -3861,7 +3871,7 @@ void RADEONRestoreMemMapRegisters(ScrnInfoPtr pScrn,
 	if (mc_fb_loc != restore->mc_fb_location ||
 	    mc_agp_loc != restore->mc_agp_location) {
 	    uint32_t crtc_ext_cntl, crtc_gen_cntl, crtc2_gen_cntl=0, ov0_scale_cntl;
-	    uint32_t old_mc_status, status_idle;
+	    uint32_t old_mc_status;
 
 	    xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
 			   "  Map Changed ! Applying ...\n");
@@ -3900,15 +3910,8 @@ void RADEONRestoreMemMapRegisters(ScrnInfoPtr pScrn,
 
 	    /* Make sure the chip settles down (paranoid !) */ 
 	    usleep(100000);
-
-	    /* Wait for MC idle */
-	    if (IS_R300_VARIANT)
-		status_idle = R300_MC_IDLE;
-	    else
-		status_idle = RADEON_MC_IDLE;
-
 	    timeout = 0;
-	    while (!(INREG(RADEON_MC_STATUS) & status_idle)) {
+	    while (!(radeon_get_mc_idle(pScrn))) {
 		if (++timeout > 1000000) {
 		    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 			       "Timeout trying to update memory controller settings !\n");
commit f44b486848094b75479abef61c1aa075aede835c
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Tue Mar 31 15:33:11 2009 -0400

    COMBIS: Clarify case 0 for LCD DDC table

diff --git a/src/radeon_bios.c b/src/radeon_bios.c
index 432e323..9b5cb88 100644
--- a/src/radeon_bios.c
+++ b/src/radeon_bios.c
@@ -740,6 +740,9 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
 		    if (tmp1) {
 			DDCType	= tmp1;
 			switch (DDCType) {
+			case DDC_NONE_DETECTED:
+			    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "No DDC for LCD\n");
+			    break;
 			case DDC_MONID:
 			    info->BiosConnector[4].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_MONID);
 			    break;
commit e6f3c48899a92174a55f6fe7327412bc88039d87
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Tue Mar 31 15:30:40 2009 -0400

    COMBIOS: fix default sclk/mclk from bios

diff --git a/src/radeon_bios.c b/src/radeon_bios.c
index 6fc0cf4..432e323 100644
--- a/src/radeon_bios.c
+++ b/src/radeon_bios.c
@@ -973,8 +973,8 @@ Bool RADEONGetClockInfoFromBIOS (ScrnInfoPtr pScrn)
 
 	    pll->xclk = RADEON_BIOS16(pll_info_block + 0x08);
 
-	    info->sclk = RADEON_BIOS16(pll_info_block + 8) / 100.0;
-	    info->mclk = RADEON_BIOS16(pll_info_block + 10) / 100.0;
+	    info->sclk = RADEON_BIOS16(pll_info_block + 10) / 100.0;
+	    info->mclk = RADEON_BIOS16(pll_info_block + 8) / 100.0;
 	}
 
 	if (info->sclk == 0) info->sclk = 200;


More information about the xorg-commit mailing list