From 25b194b98ff4b462c6f6a38969396a7c307e35e8 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Thu, 21 Oct 2004 10:45:56 +0000 Subject: [PATCH] removed PLL programming error: fixes at least NV28 core and RAM PLL programming, probably solves (coldstarting) trouble on more cards. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9444 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/nvidia/engine/nv_info.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/add-ons/accelerants/nvidia/engine/nv_info.c b/src/add-ons/accelerants/nvidia/engine/nv_info.c index c545052e6b..755e444ab4 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_info.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_info.c @@ -1037,6 +1037,10 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size, float calced_clk; uint8 m, n, p; nv_dac_sys_pll_find((data2 / 100.0), &calced_clk, &m, &n, &p, 0); + /* programming the PLL needs to be done in steps! (confirmed NV28) */ + data2 = NV_REG32(reg2); + NV_REG32(reg2) = ((data2 & 0xffff0000) | (n << 8) | m); + data2 = NV_REG32(reg2); NV_REG32(reg2) = ((p << 16) | (n << 8) | m); //fixme? /* program 2nd set N and M scalers if they exist (b31=1 enables them) */ @@ -1553,6 +1557,10 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size, float calced_clk; uint8 m, n, p; nv_dac_sys_pll_find((data / 100.0), &calced_clk, &m, &n, &p, 0); + /* programming the PLL needs to be done in steps! (confirmed NV28) */ + data = NV_REG32(reg); + NV_REG32(reg) = ((data & 0xffff0000) | (n << 8) | m); + data = NV_REG32(reg); NV_REG32(reg) = ((p << 16) | (n << 8) | m); //fixme? /* program 2nd set N and M scalers if they exist (b31=1 enables them) */