Mercurial > mplayer.hg
comparison vidix/drivers/nvidia_vid.c @ 16371:f3e6984c415c
initial endianess fixes
author | faust3 |
---|---|
date | Sat, 03 Sep 2005 10:27:22 +0000 |
parents | b2e4d3f3c0af |
children | 71180d64e6cc |
comparison
equal
deleted
inserted
replaced
16370:b2e4d3f3c0af | 16371:f3e6984c415c |
---|---|
191 | 191 |
192 | 192 |
193 /* | 193 /* |
194 * PCI-Memory IO access macros. | 194 * PCI-Memory IO access macros. |
195 */ | 195 */ |
196 #define VID_WR08(p,i,val) (((uint8_t *)(p))[(i)]=(val)) | |
197 #define VID_RD08(p,i) (((uint8_t *)(p))[(i)]) | |
198 | |
199 #define VID_WR32(p,i,val) (((uint32_t *)(p))[(i)/4]=(val)) | |
200 #define VID_RD32(p,i) (((uint32_t *)(p))[(i)/4]) | |
201 | |
202 #ifndef USE_RMW_CYCLES | |
203 /* | |
204 * Can be used to inhibit READ-MODIFY-WRITE cycles. On by default. | |
205 */ | |
206 | 196 |
207 #define MEM_BARRIER() __asm__ __volatile__ ("" : : : "memory") | 197 #define MEM_BARRIER() __asm__ __volatile__ ("" : : : "memory") |
208 | 198 |
209 #undef VID_WR08 | 199 #undef VID_WR08 |
210 #define VID_WR08(p,i,val) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]=(val); }) | 200 #define VID_WR08(p,i,val) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]=(val); }) |
211 #undef VID_RD08 | 201 #undef VID_RD08 |
212 #define VID_RD08(p,i) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]; }) | 202 #define VID_RD08(p,i) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]; }) |
213 | 203 |
214 #undef VID_WR32 | 204 #undef VID_WR32 |
215 #define VID_WR32(p,i,val) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]=(val); }) | 205 #define VID_WR32(p,i,val) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]=le2me_32(val); }) |
216 #undef VID_RD32 | 206 #undef VID_RD32 |
217 #define VID_RD32(p,i) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]; }) | 207 #define VID_RD32(p,i) ({ MEM_BARRIER(); le2me_32(((uint32_t *)(p))[(i)/4]); }) |
218 #endif /* USE_RMW_CYCLES */ | |
219 | 208 |
220 #define VID_AND32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)&(val)) | 209 #define VID_AND32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)&(val)) |
221 #define VID_OR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)|(val)) | 210 #define VID_OR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)|(val)) |
222 #define VID_XOR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)^(val)) | 211 #define VID_XOR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)^(val)) |
223 | 212 |
286 return 1024 * 1024 * 8; | 275 return 1024 * 1024 * 8; |
287 } | 276 } |
288 } | 277 } |
289 else { | 278 else { |
290 /* SGRAM 128. */ | 279 /* SGRAM 128. */ |
291 switch (chip->PFB[0x00000000] & 0x00000003) { | 280 switch (VID_RD32(chip->PFB, 0) & 0x00000003) { |
292 case 0: | 281 case 0: |
293 return 1024 * 1024 * 8; | 282 return 1024 * 1024 * 8; |
294 break; | 283 break; |
295 case 2: | 284 case 2: |
296 return 1024 * 1024 * 4; | 285 return 1024 * 1024 * 4; |
480 info->chip.lock(&info->chip, 0); | 469 info->chip.lock(&info->chip, 0); |
481 /*get screen depth*/ | 470 /*get screen depth*/ |
482 VID_WR08(info->chip.PCIO, 0x03D4,0x28); | 471 VID_WR08(info->chip.PCIO, 0x03D4,0x28); |
483 bpp = VID_RD08(info->chip.PCIO,0x03D5)&0x3; | 472 bpp = VID_RD08(info->chip.PCIO,0x03D5)&0x3; |
484 if(bpp==3)bpp=4; | 473 if(bpp==3)bpp=4; |
485 if((bpp == 2) && (info->chip.PVIDEO[0x00000600/4] & 0x00001000) == 0x0)info->depth=15; | 474 if((bpp == 2) && (VID_RD32(info->chip.PVIDEO,0x600) & 0x00001000) == 0x0)info->depth=15; |
486 else info->depth = bpp*8; | 475 else info->depth = bpp*8; |
487 info->bps=bpp; | 476 info->bps=bpp; |
488 /*get screen width*/ | 477 /*get screen width*/ |
489 VID_WR08(info->chip.PCIO, 0x03D4, 0x1); | 478 VID_WR08(info->chip.PCIO, 0x03D4, 0x1); |
490 info->screen_x = (1 + VID_RD08(info->chip.PCIO, 0x3D5)) * 8; | 479 info->screen_x = (1 + VID_RD08(info->chip.PCIO, 0x3D5)) * 8; |
507 void rivatv_overlay_start (struct rivatv_info *info,int bufno){ | 496 void rivatv_overlay_start (struct rivatv_info *info,int bufno){ |
508 uint32_t base, size, offset, xscale, yscale, pan; | 497 uint32_t base, size, offset, xscale, yscale, pan; |
509 uint32_t value; | 498 uint32_t value; |
510 int x=info->wx, y=info->wy; | 499 int x=info->wx, y=info->wy; |
511 int lwidth=info->d_width, lheight=info->d_height; | 500 int lwidth=info->d_width, lheight=info->d_height; |
512 int i; | |
513 | 501 |
514 size = info->buffer_size; | 502 size = info->buffer_size; |
515 base = info->picture_offset; | 503 base = info->picture_offset; |
516 offset = bufno*size; | 504 offset = bufno*size; |
517 /*update depth & dimensions here because it may change with vo vesa or vo fbdev*/ | 505 /*update depth & dimensions here because it may change with vo vesa or vo fbdev*/ |