Mercurial > mplayer.hg
comparison drivers/mga_vid.c @ 5623:cdf5b88bdaa8
Most of informational printk's ifdef'd.
Now without debug only initial and error messages go to syslog.
eyck added to list of people who messed with this file(?).
author | eyck |
---|---|
date | Sun, 14 Apr 2002 23:14:26 +0000 |
parents | 3cc26c4e662b |
children | 39115273d236 |
comparison
equal
deleted
inserted
replaced
5622:d354889a3944 | 5623:cdf5b88bdaa8 |
---|---|
1 //#define CRTC2 | 1 //#define CRTC2 |
2 | 2 |
3 // YUY2 support (see config.format) added by A'rpi/ESP-team | 3 // YUY2 support (see config.format) added by A'rpi/ESP-team |
4 // double buffering added by A'rpi/ESP-team | 4 // double buffering added by A'rpi/ESP-team |
5 // brightness/contrast introduced by eyck | |
5 | 6 |
6 // Set this value, if autodetection fails! (video ram size in megabytes) | 7 // Set this value, if autodetection fails! (video ram size in megabytes) |
7 // #define MGA_MEMORY_SIZE 16 | 8 // #define MGA_MEMORY_SIZE 16 |
8 | 9 |
9 //#define MGA_ALLOW_IRQ | 10 //#define MGA_ALLOW_IRQ |
424 | 425 |
425 if(restore && colkey_saved){ | 426 if(restore && colkey_saved){ |
426 // restore it | 427 // restore it |
427 colkey_saved=0; | 428 colkey_saved=0; |
428 | 429 |
430 #ifdef MP_DEBUG | |
429 printk("mga_vid: Restoring colorkey (ON: %d %02X:%02X:%02X)\n", | 431 printk("mga_vid: Restoring colorkey (ON: %d %02X:%02X:%02X)\n", |
430 colkey_on,colkey_color[0],colkey_color[1],colkey_color[2]); | 432 colkey_on,colkey_color[0],colkey_color[1],colkey_color[2]); |
433 #endif | |
431 | 434 |
432 // Set color key registers: | 435 // Set color key registers: |
433 writeb( XKEYOPMODE, mga_mmio_base + PALWTADD); | 436 writeb( XKEYOPMODE, mga_mmio_base + PALWTADD); |
434 writeb( colkey_on, mga_mmio_base + X_DATAREG); | 437 writeb( colkey_on, mga_mmio_base + X_DATAREG); |
435 | 438 |
474 writeb( XCOLMSK0BLUE, mga_mmio_base + PALWTADD); | 477 writeb( XCOLMSK0BLUE, mga_mmio_base + PALWTADD); |
475 colkey_mask[2]=(unsigned char)readb(mga_mmio_base + X_DATAREG); | 478 colkey_mask[2]=(unsigned char)readb(mga_mmio_base + X_DATAREG); |
476 writeb( XCOLMSK, mga_mmio_base + PALWTADD); | 479 writeb( XCOLMSK, mga_mmio_base + PALWTADD); |
477 colkey_mask[3]=(unsigned char)readb(mga_mmio_base + X_DATAREG); | 480 colkey_mask[3]=(unsigned char)readb(mga_mmio_base + X_DATAREG); |
478 | 481 |
482 #ifdef MP_DEBUG | |
479 printk("mga_vid: Saved colorkey (ON: %d %02X:%02X:%02X)\n", | 483 printk("mga_vid: Saved colorkey (ON: %d %02X:%02X:%02X)\n", |
480 colkey_on,colkey_color[0],colkey_color[1],colkey_color[2]); | 484 colkey_on,colkey_color[0],colkey_color[1],colkey_color[2]); |
485 #endif | |
481 | 486 |
482 } | 487 } |
483 | 488 |
484 if(!restore){ | 489 if(!restore){ |
485 writeb( XKEYOPMODE, mga_mmio_base + PALWTADD); | 490 writeb( XKEYOPMODE, mga_mmio_base + PALWTADD); |
613 // writel(cregs.c2hsync, mga_mmio_base + C2HSYNC); | 618 // writel(cregs.c2hsync, mga_mmio_base + C2HSYNC); |
614 // writel(cregs.c2vparam, mga_mmio_base + C2VPARAM); | 619 // writel(cregs.c2vparam, mga_mmio_base + C2VPARAM); |
615 // writel(cregs.c2vsync, mga_mmio_base + C2VSYNC); | 620 // writel(cregs.c2vsync, mga_mmio_base + C2VSYNC); |
616 writel(cregs.c2misc, mga_mmio_base + C2MISC); | 621 writel(cregs.c2misc, mga_mmio_base + C2MISC); |
617 | 622 |
623 #ifdef MP_DEBUG | |
618 printk("c2offset = %d\n",cregs.c2offset); | 624 printk("c2offset = %d\n",cregs.c2offset); |
625 #endif | |
619 | 626 |
620 writel(cregs.c2offset, mga_mmio_base + C2OFFSET); | 627 writel(cregs.c2offset, mga_mmio_base + C2OFFSET); |
621 writel(cregs.c2startadd0, mga_mmio_base + C2STARTADD0); | 628 writel(cregs.c2startadd0, mga_mmio_base + C2STARTADD0); |
622 // writel(cregs.c2startadd1, mga_mmio_base + C2STARTADD1); | 629 // writel(cregs.c2startadd1, mga_mmio_base + C2STARTADD1); |
623 writel(cregs.c2pl2startadd0, mga_mmio_base + C2PL2STARTADD0); | 630 writel(cregs.c2pl2startadd0, mga_mmio_base + C2PL2STARTADD0); |
662 sw = config->src_width; | 669 sw = config->src_width; |
663 sh = config->src_height; | 670 sh = config->src_height; |
664 dw = config->dest_width; | 671 dw = config->dest_width; |
665 dh = config->dest_height; | 672 dh = config->dest_height; |
666 | 673 |
674 #ifdef MP_DEBUG | |
667 printk(KERN_DEBUG "mga_vid: Setting up a %dx%d+%d+%d video window (src %dx%d) format %X\n", | 675 printk(KERN_DEBUG "mga_vid: Setting up a %dx%d+%d+%d video window (src %dx%d) format %X\n", |
668 dw, dh, x, y, sw, sh, config->format); | 676 dw, dh, x, y, sw, sh, config->format); |
677 #endif | |
669 | 678 |
670 if(sw<4 || sh<4 || dw<4 || dh<4){ | 679 if(sw<4 || sh<4 || dw<4 || dh<4){ |
671 printk(KERN_ERR "mga_vid: Invalid src/dest dimenstions\n"); | 680 printk(KERN_ERR "mga_vid: Invalid src/dest dimenstions\n"); |
672 return -1; | 681 return -1; |
673 } | 682 } |
1147 switch(cmd) | 1156 switch(cmd) |
1148 { | 1157 { |
1149 case MGA_VID_CONFIG: | 1158 case MGA_VID_CONFIG: |
1150 //FIXME remove | 1159 //FIXME remove |
1151 // printk(KERN_DEBUG "vcount = %d\n",readl(mga_mmio_base + VCOUNT)); | 1160 // printk(KERN_DEBUG "vcount = %d\n",readl(mga_mmio_base + VCOUNT)); |
1161 #ifdef MP_DEBUG | |
1152 printk(KERN_DEBUG "mga_mmio_base = %p\n",mga_mmio_base); | 1162 printk(KERN_DEBUG "mga_mmio_base = %p\n",mga_mmio_base); |
1153 printk(KERN_DEBUG "mga_mem_base = %08x\n",mga_mem_base); | 1163 printk(KERN_DEBUG "mga_mem_base = %08x\n",mga_mem_base); |
1154 //FIXME remove | 1164 //FIXME remove |
1155 | 1165 |
1156 printk(KERN_DEBUG "mga_vid: Received configuration\n"); | 1166 printk(KERN_DEBUG "mga_vid: Received configuration\n"); |
1167 #endif | |
1157 | 1168 |
1158 if(copy_from_user(&mga_config,(mga_vid_config_t*) arg,sizeof(mga_vid_config_t))) | 1169 if(copy_from_user(&mga_config,(mga_vid_config_t*) arg,sizeof(mga_vid_config_t))) |
1159 { | 1170 { |
1160 printk(KERN_ERR "mga_vid: failed copy from userspace\n"); | 1171 printk(KERN_ERR "mga_vid: failed copy from userspace\n"); |
1161 return(-EFAULT); | 1172 return(-EFAULT); |
1179 if(mga_src_base<0){ | 1190 if(mga_src_base<0){ |
1180 printk(KERN_ERR "mga_vid: not enough memory for frames!\n"); | 1191 printk(KERN_ERR "mga_vid: not enough memory for frames!\n"); |
1181 return(-EFAULT); | 1192 return(-EFAULT); |
1182 } | 1193 } |
1183 mga_src_base &= (~0xFFFF); // 64k boundary | 1194 mga_src_base &= (~0xFFFF); // 64k boundary |
1195 #ifdef MP_DEBUG | |
1184 printk(KERN_DEBUG "mga YUV buffer base: 0x%X\n", mga_src_base); | 1196 printk(KERN_DEBUG "mga YUV buffer base: 0x%X\n", mga_src_base); |
1197 #endif | |
1185 | 1198 |
1186 if (is_g400) | 1199 if (is_g400) |
1187 mga_config.card_type = MGA_G400; | 1200 mga_config.card_type = MGA_G400; |
1188 else | 1201 else |
1189 mga_config.card_type = MGA_G200; | 1202 mga_config.card_type = MGA_G200; |
1197 } | 1210 } |
1198 return mga_vid_set_config(&mga_config); | 1211 return mga_vid_set_config(&mga_config); |
1199 break; | 1212 break; |
1200 | 1213 |
1201 case MGA_VID_ON: | 1214 case MGA_VID_ON: |
1215 #ifdef MP_DEBUG | |
1202 printk(KERN_DEBUG "mga_vid: Video ON\n"); | 1216 printk(KERN_DEBUG "mga_vid: Video ON\n"); |
1217 #endif | |
1203 vid_src_ready = 1; | 1218 vid_src_ready = 1; |
1204 if(vid_overlay_on) | 1219 if(vid_overlay_on) |
1205 { | 1220 { |
1206 regs.besctl |= 1; | 1221 regs.besctl |= 1; |
1207 mga_vid_write_regs(0); | 1222 mga_vid_write_regs(0); |
1211 #endif | 1226 #endif |
1212 mga_next_frame=0; | 1227 mga_next_frame=0; |
1213 break; | 1228 break; |
1214 | 1229 |
1215 case MGA_VID_OFF: | 1230 case MGA_VID_OFF: |
1231 #ifdef MP_DEBUG | |
1216 printk(KERN_DEBUG "mga_vid: Video OFF (ioctl)\n"); | 1232 printk(KERN_DEBUG "mga_vid: Video OFF (ioctl)\n"); |
1233 #endif | |
1217 vid_src_ready = 0; | 1234 vid_src_ready = 0; |
1218 #ifdef MGA_ALLOW_IRQ | 1235 #ifdef MGA_ALLOW_IRQ |
1219 if ( mga_irq != -1 ) disable_irq(); | 1236 if ( mga_irq != -1 ) disable_irq(); |
1220 #endif | 1237 #endif |
1221 regs.besctl &= ~1; | 1238 regs.besctl &= ~1; |
1440 } | 1457 } |
1441 | 1458 |
1442 static int mga_vid_mmap(struct file *file, struct vm_area_struct *vma) | 1459 static int mga_vid_mmap(struct file *file, struct vm_area_struct *vma) |
1443 { | 1460 { |
1444 | 1461 |
1462 #ifdef MP_DEBUG | |
1445 printk(KERN_DEBUG "mga_vid: mapping video memory into userspace\n"); | 1463 printk(KERN_DEBUG "mga_vid: mapping video memory into userspace\n"); |
1464 #endif | |
1446 if(remap_page_range(vma->vm_start, mga_mem_base + mga_src_base, | 1465 if(remap_page_range(vma->vm_start, mga_mem_base + mga_src_base, |
1447 vma->vm_end - vma->vm_start, vma->vm_page_prot)) | 1466 vma->vm_end - vma->vm_start, vma->vm_page_prot)) |
1448 { | 1467 { |
1449 printk(KERN_ERR "mga_vid: error mapping video memory\n"); | 1468 printk(KERN_ERR "mga_vid: error mapping video memory\n"); |
1450 return(-EAGAIN); | 1469 return(-EAGAIN); |
1454 } | 1473 } |
1455 | 1474 |
1456 static int mga_vid_release(struct inode *inode, struct file *file) | 1475 static int mga_vid_release(struct inode *inode, struct file *file) |
1457 { | 1476 { |
1458 //Close the window just in case | 1477 //Close the window just in case |
1478 #ifdef MP_DEBUG | |
1459 printk(KERN_DEBUG "mga_vid: Video OFF (release)\n"); | 1479 printk(KERN_DEBUG "mga_vid: Video OFF (release)\n"); |
1480 #endif | |
1460 | 1481 |
1461 vid_src_ready = 0; | 1482 vid_src_ready = 0; |
1462 regs.besctl &= ~1; | 1483 regs.besctl &= ~1; |
1463 regs.besglobctl &= ~(1<<6); // UYVY format selected | 1484 regs.besglobctl &= ~(1<<6); // UYVY format selected |
1464 // mga_config.colkey_on=0; //!!! | 1485 // mga_config.colkey_on=0; //!!! |