comparison vidix/drivers/mach64_vid.c @ 5731:56983ecb89aa

antoher try, ecp reading like in gatos ...
author michael
date Sat, 20 Apr 2002 13:42:31 +0000
parents 85df37cde3d3
children d2aec12937f8
comparison
equal deleted inserted replaced
5730:466c7adbb3ce 5731:56983ecb89aa
143 } 143 }
144 144
145 static __inline__ uint32_t INPLL(uint32_t addr) 145 static __inline__ uint32_t INPLL(uint32_t addr)
146 { 146 {
147 uint32_t res; 147 uint32_t res;
148 148 uint32_t in;
149
150 /* preserve unknown bits */
151 in= INREG8(CLOCK_CNTL + 1);
152 if(__verbose>0)printf("[mach64] pll: %X\n", in);
153 in &= ~((PLL_WR_EN | PLL_ADDR)>>8); //clean some stuff
154
149 /* write addr byte */ 155 /* write addr byte */
150 OUTREG8(CLOCK_CNTL + 1, (addr << 2)); 156 OUTREG8(CLOCK_CNTL + 1, in | (addr << 2));
151 /* read the register value */ 157 /* read the register value */
152 res = INREG(CLOCK_CNTL + 2); 158 res = INREG8(CLOCK_CNTL + 2);
153 return res; 159 return res;
154 } 160 }
155 161
156 static __inline__ void OUTPLL(uint32_t addr,uint32_t val) 162 static __inline__ void OUTPLL(uint32_t addr,uint32_t val)
157 { 163 {
255 261
256 // returns the verical stretch factor in 16.16 262 // returns the verical stretch factor in 16.16
257 static int mach64_get_vert_stretch(void) 263 static int mach64_get_vert_stretch(void)
258 { 264 {
259 int lcd_index; 265 int lcd_index;
260 int lcd_gen_ctrl;
261 int vert_stretching; 266 int vert_stretching;
262 int ext_vert_stretch; 267 int ext_vert_stretch;
263 int ret; 268 int ret;
264 int yres= mach64_get_yres(); 269 int yres= mach64_get_yres();
265 270
738 if(mach64_is_interlace()) v_inc<<=1; 743 if(mach64_is_interlace()) v_inc<<=1;
739 if(mach64_is_dbl_scan() ) v_inc>>=1; 744 if(mach64_is_dbl_scan() ) v_inc>>=1;
740 v_inc>>=4; // convert 16.16 -> 20.12 745 v_inc>>=4; // convert 16.16 -> 20.12
741 v_inc/= dest_h; 746 v_inc/= dest_h;
742 747
743 h_inc = (src_w << 12) / dest_w; 748 h_inc = (src_w << (12+ecp)) / dest_w;
744 /* keep everything in 16.16 */ 749 /* keep everything in 16.16 */
745 config->offsets[0] = 0; 750 config->offsets[0] = 0;
746 for(i=1; i<config->num_frames; i++) 751 for(i=1; i<config->num_frames; i++)
747 config->offsets[i] = config->offsets[i-1] + config->frame_size; 752 config->offsets[i] = config->offsets[i-1] + config->frame_size;
748 753