Mercurial > mplayer.hg
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 |