# HG changeset patch # User michael # Date 1019310151 0 # Node ID 56983ecb89aa55e5309c04568696cdc2de1f209d # Parent 466c7adbb3cef1fad685e0b1b7de483f05798486 antoher try, ecp reading like in gatos ... diff -r 466c7adbb3ce -r 56983ecb89aa vidix/drivers/mach64_vid.c --- a/vidix/drivers/mach64_vid.c Sat Apr 20 13:34:54 2002 +0000 +++ b/vidix/drivers/mach64_vid.c Sat Apr 20 13:42:31 2002 +0000 @@ -145,11 +145,17 @@ static __inline__ uint32_t INPLL(uint32_t addr) { uint32_t res; - + uint32_t in; + + /* preserve unknown bits */ + in= INREG8(CLOCK_CNTL + 1); + if(__verbose>0)printf("[mach64] pll: %X\n", in); + in &= ~((PLL_WR_EN | PLL_ADDR)>>8); //clean some stuff + /* write addr byte */ - OUTREG8(CLOCK_CNTL + 1, (addr << 2)); + OUTREG8(CLOCK_CNTL + 1, in | (addr << 2)); /* read the register value */ - res = INREG(CLOCK_CNTL + 2); + res = INREG8(CLOCK_CNTL + 2); return res; } @@ -257,7 +263,6 @@ static int mach64_get_vert_stretch(void) { int lcd_index; - int lcd_gen_ctrl; int vert_stretching; int ext_vert_stretch; int ret; @@ -740,7 +745,7 @@ v_inc>>=4; // convert 16.16 -> 20.12 v_inc/= dest_h; - h_inc = (src_w << 12) / dest_w; + h_inc = (src_w << (12+ecp)) / dest_w; /* keep everything in 16.16 */ config->offsets[0] = 0; for(i=1; inum_frames; i++)