open-src/driver/xf86-video-intel/Render-register-clock-gating-disable-fix-on-4-series.patch
changeset 606 068c11b419c9
equal deleted inserted replaced
605:e5259db5befc 606:068c11b419c9
       
     1 From 1cc15ba454fdf54a7dea9da066e0a023a4742fab Mon Sep 17 00:00:00 2001
       
     2 From: Zhenyu Wang <[email protected]>
       
     3 Date: Fri, 26 Sep 2008 10:01:52 +0800
       
     4 Subject: [PATCH] Render register clock gating disable fix on 4 series chipset
       
     5 
       
     6 ---
       
     7  src/i810_reg.h    |    3 +++
       
     8  src/i830_driver.c |   14 ++++++++++----
       
     9  2 files changed, 13 insertions(+), 4 deletions(-)
       
    10 
       
    11 diff --git a/src/i810_reg.h b/src/i810_reg.h
       
    12 index 5b90e12..6458008 100644
       
    13 --- a/src/i810_reg.h
       
    14 +++ b/src/i810_reg.h
       
    15 @@ -1167,6 +1167,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
    16  # define I965_DM_CLOCK_GATE_DISABLE		(1 << 0)
       
    17  
       
    18  #define RENCLK_GATE_D2		0x6208
       
    19 +#define VF_UNIT_CLOCK_GATE_DISABLE		(1 << 9)
       
    20 +#define GS_UNIT_CLOCK_GATE_DISABLE		(1 << 7)
       
    21 +#define CL_UNIT_CLOCK_GATE_DISABLE		(1 << 6)
       
    22  #define RAMCLK_GATE_D		0x6210		/* CRL only */
       
    23  #define DEUC			0x6214          /* CRL only */
       
    24  
       
    25 diff --git a/src/i830_driver.c b/src/i830_driver.c
       
    26 index 1317c1d..389775f 100644
       
    27 --- a/src/i830_driver.c
       
    28 +++ b/src/i830_driver.c
       
    29 @@ -965,12 +965,18 @@ i830_init_clock_gating(ScrnInfoPtr pScrn)
       
    30      /* Disable clock gating reported to work incorrectly according to the specs.
       
    31       */
       
    32      if (IS_GM45(pI830) || IS_G4X(pI830)) {
       
    33 +	uint32_t dspclk_gate;
       
    34  	OUTREG(RENCLK_GATE_D1, 0);
       
    35 -	OUTREG(RENCLK_GATE_D2, 0);
       
    36 +	OUTREG(RENCLK_GATE_D2, VF_UNIT_CLOCK_GATE_DISABLE |
       
    37 +		GS_UNIT_CLOCK_GATE_DISABLE |
       
    38 +		CL_UNIT_CLOCK_GATE_DISABLE);
       
    39  	OUTREG(RAMCLK_GATE_D, 0);
       
    40 -	OUTREG(DSPCLK_GATE_D, VRHUNIT_CLOCK_GATE_DISABLE |
       
    41 -	       OVRUNIT_CLOCK_GATE_DISABLE |
       
    42 -	       OVCUNIT_CLOCK_GATE_DISABLE);
       
    43 +	dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE |
       
    44 +	    OVRUNIT_CLOCK_GATE_DISABLE |
       
    45 +	    OVCUNIT_CLOCK_GATE_DISABLE;
       
    46 +	if (IS_GM45(pI830))
       
    47 +	    dspclk_gate |= DSSUNIT_CLOCK_GATE_DISABLE;
       
    48 +	OUTREG(DSPCLK_GATE_D, dspclk_gate);
       
    49      } else if (IS_I965GM(pI830)) {
       
    50  	OUTREG(RENCLK_GATE_D1, I965_RCC_CLOCK_GATE_DISABLE);
       
    51  	OUTREG(RENCLK_GATE_D2, 0);
       
    52 -- 
       
    53 1.5.6.5
       
    54