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; //!!!