[PATCH] Merge PLL1Calibrate and PLL2Calibrate.
--- src/rhd_pll.c | 56 +++++++++++++++++++------------------------------------- 1 files changed, 19 insertions(+), 37 deletions(-) diff --git a/src/rhd_pll.c b/src/rhd_pll.c index e6651a3..d82d94f 100644 --- a/src/rhd_pll.c +++ b/src/rhd_pll.c @@ -62,54 +62,36 @@ PLLValid(struct rhdPLL *PLL, CARD32 Clock) * */ static void -PLL1Calibrate(struct rhdPLL *PLL) +PLLCalibrate(struct rhdPLL *PLL) { + CARD16 offset; int i; RHDFUNC(PLL); - RHDRegMask(PLL, P1PLL_CNTL, 1, 0x01); /* Reset */ - usleep(2); - RHDRegMask(PLL, P1PLL_CNTL, 0, 0x01); /* Set */ - - for (i = 0; i < PLL_CALIBRATE_WAIT; i++) - if (((RHDRegRead(PLL, P1PLL_CNTL) >> 20) & 0x03) == 0x03) - break; - - if (i == PLL_CALIBRATE_WAIT) { - if (RHDRegRead(PLL, P1PLL_CNTL) & 0x00100000) /* Calibration done? */ - xf86DrvMsg(PLL->scrnIndex, X_ERROR, - "%s: Calibration failed.\n", __func__); - if (RHDRegRead(PLL, P1PLL_CNTL) & 0x00200000) /* PLL locked? */ - xf86DrvMsg(PLL->scrnIndex, X_ERROR, - "%s: Locking failed.\n", __func__); - } else - RHDDebug(PLL->scrnIndex, "%s: lock in %d loops\n", __func__, i); -} + switch (PLL->Id) { + case PLL_ID_PLL1: + offset = P1PLL_CNTL; + break; -/* - * - */ -static void -PLL2Calibrate(struct rhdPLL *PLL) -{ - int i; - - RHDFUNC(PLL); + case PLL_ID_PLL2: + offset = P2PLL_CNTL; + break; + } - RHDRegMask(PLL, P2PLL_CNTL, 1, 0x01); /* Reset */ + RHDRegMask(PLL, offset, 1, 0x01); /* Reset */ usleep(2); - RHDRegMask(PLL, P2PLL_CNTL, 0, 0x01); /* Set */ + RHDRegMask(PLL, offset, 0, 0x01); /* Set */ for (i = 0; i < PLL_CALIBRATE_WAIT; i++) - if (((RHDRegRead(PLL, P2PLL_CNTL) >> 20) & 0x03) == 0x03) + if (((RHDRegRead(PLL, offset) >> 20) & 0x03) == 0x03) break; if (i == PLL_CALIBRATE_WAIT) { - if (RHDRegRead(PLL, P2PLL_CNTL) & 0x00100000) /* Calibration done? */ + if (RHDRegRead(PLL, offset) & 0x00100000) /* Calibration done? */ xf86DrvMsg(PLL->scrnIndex, X_ERROR, "%s: Calibration failed.\n", __func__); - if (RHDRegRead(PLL, P2PLL_CNTL) & 0x00200000) /* PLL locked? */ + if (RHDRegRead(PLL, offset) & 0x00200000) /* PLL locked? */ xf86DrvMsg(PLL->scrnIndex, X_ERROR, "%s: Locking failed.\n", __func__); } else @@ -129,7 +111,7 @@ PLL1Power(struct rhdPLL *PLL, int Power) RHDRegMask(PLL, P1PLL_CNTL, 0, 0x02); /* Powah */ usleep(2); - PLL1Calibrate(PLL); + PLLCalibrate(PLL); return; case RHD_POWER_RESET: @@ -165,7 +147,7 @@ PLL2Power(struct rhdPLL *PLL, int Power) RHDRegMask(PLL, P2PLL_CNTL, 0, 0x02); /* Powah */ usleep(2); - PLL2Calibrate(PLL); + PLLCalibrate(PLL); return; case RHD_POWER_RESET: @@ -225,7 +207,7 @@ PLL1SetLow(struct rhdPLL *PLL, CARD32 RefDiv, CARD32 FBDiv, CARD32 PostDiv, RHDRegMask(PLL, P1PLL_CNTL, 0, 0x02); /* Powah */ usleep(2); - PLL1Calibrate(PLL); + PLLCalibrate(PLL); RHDRegWrite(PLL, EXT1_PPLL_POST_DIV_SRC, 0x01); /* source is PLL itself */ } @@ -267,7 +249,7 @@ PLL2SetLow(struct rhdPLL *PLL, CARD32 RefDiv, CARD32 FBDiv, CARD32 PostDiv, RHDRegMask(PLL, P2PLL_CNTL, 0, 0x02); /* Powah */ usleep(2); - PLL2Calibrate(PLL); + PLLCalibrate(PLL); RHDRegWrite(PLL, EXT2_PPLL_POST_DIV_SRC, 0x01); /* source is PLL itself */ } -- 1.5.3.4 -- To unsubscribe, e-mail: radeonhd+unsubscribe@opensuse.org For additional commands, e-mail: radeonhd+help@opensuse.org
participants (1)
-
Matt Kraai