comparison drivers/mga_vid.c @ 61:2a89b5b3ab39

printk() loglevel fix
author szabii
date Fri, 09 Mar 2001 00:31:22 +0000
parents baa0a12438eb
children 6bdaa0626a9b
comparison
equal deleted inserted replaced
60:434a367c673d 61:2a89b5b3ab39
339 339
340 //update the registers somewhere between 1 and 2 frames from now. 340 //update the registers somewhere between 1 and 2 frames from now.
341 writel( regs.besglobctl + ((readl(mga_mmio_base + VCOUNT)+2)<<16), 341 writel( regs.besglobctl + ((readl(mga_mmio_base + VCOUNT)+2)<<16),
342 mga_mmio_base + BESGLOBCTL); 342 mga_mmio_base + BESGLOBCTL);
343 343
344 printk("mga_vid: wrote BES registers\n"); 344 printk(KERN_DEBUG "mga_vid: wrote BES registers\n");
345 printk("mga_vid: BESCTL = 0x%08x\n", 345 printk(KERN_DEBUG "mga_vid: BESCTL = 0x%08x\n",
346 readl(mga_mmio_base + BESCTL)); 346 readl(mga_mmio_base + BESCTL));
347 printk("mga_vid: BESGLOBCTL = 0x%08x\n", 347 printk(KERN_DEBUG "mga_vid: BESGLOBCTL = 0x%08x\n",
348 readl(mga_mmio_base + BESGLOBCTL)); 348 readl(mga_mmio_base + BESGLOBCTL));
349 printk("mga_vid: BESSTATUS= 0x%08x\n", 349 printk(KERN_DEBUG "mga_vid: BESSTATUS= 0x%08x\n",
350 readl(mga_mmio_base + BESSTATUS)); 350 readl(mga_mmio_base + BESSTATUS));
351 } 351 }
352 352
353 static int mga_vid_set_config(mga_vid_config_t *config) 353 static int mga_vid_set_config(mga_vid_config_t *config)
354 { 354 {
360 sw = config->src_width; 360 sw = config->src_width;
361 sh = config->src_height; 361 sh = config->src_height;
362 dw = config->dest_width; 362 dw = config->dest_width;
363 dh = config->dest_height; 363 dh = config->dest_height;
364 364
365 printk("mga_vid: Setting up a %dx%d+%d+%d video window (src %dx%d) format %X\n", 365 printk(KERN_DEBUG "mga_vid: Setting up a %dx%d+%d+%d video window (src %dx%d) format %X\n",
366 dw, dh, x, y, sw, sh, config->format); 366 dw, dh, x, y, sw, sh, config->format);
367 367
368 //FIXME check that window is valid and inside desktop 368 //FIXME check that window is valid and inside desktop
369 369
370 //FIXME figure out a better way to allocate memory on card 370 //FIXME figure out a better way to allocate memory on card
409 + (1<<18); // dither enabled 409 + (1<<18); // dither enabled
410 410
411 regs.besglobctl = 0; // YUY2 format selected 411 regs.besglobctl = 0; // YUY2 format selected
412 break; 412 break;
413 default: 413 default:
414 printk("mga_vid: Unsupported pixel format: 0x%X\n",config->format); 414 printk(KERN_ERR "mga_vid: Unsupported pixel format: 0x%X\n",config->format);
415 return -1; 415 return -1;
416 } 416 }
417 417
418 418
419 //Disable contrast and brightness control 419 //Disable contrast and brightness control
480 480
481 static void enable_irq(){ 481 static void enable_irq(){
482 long int cc; 482 long int cc;
483 483
484 cc = readl(mga_mmio_base + IEN); 484 cc = readl(mga_mmio_base + IEN);
485 printk("<1>*** !!! IRQREG = %d\n", (int)(cc&0xff)); 485 printk(KERN_ALERT "*** !!! IRQREG = %d\n", (int)(cc&0xff));
486 486
487 writeb( 0x11, mga_mmio_base + CRTCX); 487 writeb( 0x11, mga_mmio_base + CRTCX);
488 488
489 writeb(0x20, mga_mmio_base + CRTCD ); /* clear 0, enable off */ 489 writeb(0x20, mga_mmio_base + CRTCD ); /* clear 0, enable off */
490 writeb(0x00, mga_mmio_base + CRTCD ); /* enable on */ 490 writeb(0x00, mga_mmio_base + CRTCD ); /* enable on */
572 572
573 switch(cmd) 573 switch(cmd)
574 { 574 {
575 case MGA_VID_CONFIG: 575 case MGA_VID_CONFIG:
576 //FIXME remove 576 //FIXME remove
577 printk("vcount = %d\n",readl(mga_mmio_base + VCOUNT)); 577 printk(KERN_DEBUG "vcount = %d\n",readl(mga_mmio_base + VCOUNT));
578 printk("mga_mmio_base = %p\n",mga_mmio_base); 578 printk(KERN_DEBUG "mga_mmio_base = %p\n",mga_mmio_base);
579 printk("mga_mem_base = %08lx\n",mga_mem_base); 579 printk(KERN_DEBUG "mga_mem_base = %08lx\n",mga_mem_base);
580 //FIXME remove 580 //FIXME remove
581 581
582 printk("mga_vid: Received configuration\n"); 582 printk(KERN_DEBUG "mga_vid: Received configuration\n");
583 583
584 if(copy_from_user(&mga_config,(mga_vid_config_t*) arg,sizeof(mga_vid_config_t))) 584 if(copy_from_user(&mga_config,(mga_vid_config_t*) arg,sizeof(mga_vid_config_t)))
585 { 585 {
586 printk("mga_vid: failed copy from userspace\n"); 586 printk(KERN_ERR "mga_vid: failed copy from userspace\n");
587 return(-EFAULT); 587 return(-EFAULT);
588 } 588 }
589 if(mga_config.version != MGA_VID_VERSION){ 589 if(mga_config.version != MGA_VID_VERSION){
590 printk("mga_vid: incompatible version! driver: %X requested: %X\n",MGA_VID_VERSION,mga_config.version); 590 printk(KERN_ERR "mga_vid: incompatible version! driver: %X requested: %X\n",MGA_VID_VERSION,mga_config.version);
591 return(-EFAULT); 591 return(-EFAULT);
592 } 592 }
593 593
594 if(mga_config.frame_size==0 || mga_config.frame_size>1024*768*2){ 594 if(mga_config.frame_size==0 || mga_config.frame_size>1024*768*2){
595 printk("mga_vid: illegal frame_size: %d\n",mga_config.frame_size); 595 printk(KERN_ERR "mga_vid: illegal frame_size: %d\n",mga_config.frame_size);
596 return(-EFAULT); 596 return(-EFAULT);
597 } 597 }
598 598
599 if(mga_config.num_frames<1 || mga_config.num_frames>4){ 599 if(mga_config.num_frames<1 || mga_config.num_frames>4){
600 printk("mga_vid: illegal num_frames: %d\n",mga_config.num_frames); 600 printk(KERN_ERR "mga_vid: illegal num_frames: %d\n",mga_config.num_frames);
601 return(-EFAULT); 601 return(-EFAULT);
602 } 602 }
603 603
604 mga_src_base = (mga_ram_size*0x100000-mga_config.num_frames*mga_config.frame_size); 604 mga_src_base = (mga_ram_size*0x100000-mga_config.num_frames*mga_config.frame_size);
605 if(mga_src_base<0){ 605 if(mga_src_base<0){
606 printk("mga_vid: not enough memory for frames!\n"); 606 printk(KERN_ERR "mga_vid: not enough memory for frames!\n");
607 return(-EFAULT); 607 return(-EFAULT);
608 } 608 }
609 mga_src_base &= (~0xFFFF); // 64k boundary 609 mga_src_base &= (~0xFFFF); // 64k boundary
610 printk("mga YUV buffer base: 0x%X\n", mga_src_base); 610 printk(KERN_DEBUG "mga YUV buffer base: 0x%X\n", mga_src_base);
611 611
612 if (is_g400) 612 if (is_g400)
613 mga_config.card_type = MGA_G400; 613 mga_config.card_type = MGA_G400;
614 else 614 else
615 mga_config.card_type = MGA_G200; 615 mga_config.card_type = MGA_G200;
616 616
617 mga_config.ram_size = mga_ram_size; 617 mga_config.ram_size = mga_ram_size;
618 618
619 if (copy_to_user((mga_vid_config_t *) arg, &mga_config, sizeof(mga_vid_config_t))) 619 if (copy_to_user((mga_vid_config_t *) arg, &mga_config, sizeof(mga_vid_config_t)))
620 { 620 {
621 printk("mga_vid: failed copy to userspace\n"); 621 printk(KERN_ERR "mga_vid: failed copy to userspace\n");
622 return(-EFAULT); 622 return(-EFAULT);
623 } 623 }
624 return mga_vid_set_config(&mga_config); 624 return mga_vid_set_config(&mga_config);
625 break; 625 break;
626 626
627 case MGA_VID_ON: 627 case MGA_VID_ON:
628 printk("mga_vid: Video ON\n"); 628 printk(KERN_DEBUG "mga_vid: Video ON\n");
629 vid_src_ready = 1; 629 vid_src_ready = 1;
630 if(vid_overlay_on) 630 if(vid_overlay_on)
631 { 631 {
632 regs.besctl |= 1; 632 regs.besctl |= 1;
633 mga_vid_write_regs(); 633 mga_vid_write_regs();
635 if ( mga_irq != -1 ) enable_irq(); 635 if ( mga_irq != -1 ) enable_irq();
636 mga_next_frame=0; 636 mga_next_frame=0;
637 break; 637 break;
638 638
639 case MGA_VID_OFF: 639 case MGA_VID_OFF:
640 printk("mga_vid: Video OFF\n"); 640 printk(KERN_DEBUG "mga_vid: Video OFF\n");
641 vid_src_ready = 0; 641 vid_src_ready = 0;
642 if ( mga_irq != -1 ) disable_irq(); 642 if ( mga_irq != -1 ) disable_irq();
643 regs.besctl &= ~1; 643 regs.besctl &= ~1;
644 mga_vid_write_regs(); 644 mga_vid_write_regs();
645 break; 645 break;
646 646
647 case MGA_VID_FSEL: 647 case MGA_VID_FSEL:
648 if(copy_from_user(&frame,(int *) arg,sizeof(int))) 648 if(copy_from_user(&frame,(int *) arg,sizeof(int)))
649 { 649 {
650 printk("mga_vid: FSEL failed copy from userspace\n"); 650 printk(KERN_ERR "mga_vid: FSEL failed copy from userspace\n");
651 return(-EFAULT); 651 return(-EFAULT);
652 } 652 }
653 653
654 mga_vid_frame_sel(frame); 654 mga_vid_frame_sel(frame);
655 break; 655 break;
656 656
657 default: 657 default:
658 printk("mga_vid: Invalid ioctl\n"); 658 printk(KERN_ERR "mga_vid: Invalid ioctl\n");
659 return (-EINVAL); 659 return (-EINVAL);
660 } 660 }
661 661
662 return 0; 662 return 0;
663 } 663 }
669 unsigned int card_option, temp; 669 unsigned int card_option, temp;
670 670
671 if((dev = pci_find_device(PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G400, NULL))) 671 if((dev = pci_find_device(PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G400, NULL)))
672 { 672 {
673 is_g400 = 1; 673 is_g400 = 1;
674 printk("mga_vid: Found MGA G400\n"); 674 printk(KERN_DEBUG "mga_vid: Found MGA G400\n");
675 } 675 }
676 else if((dev = pci_find_device(PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, NULL))) 676 else if((dev = pci_find_device(PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, NULL)))
677 { 677 {
678 is_g400 = 0; 678 is_g400 = 0;
679 printk("mga_vid: Found MGA G200 AGP\n"); 679 printk(KERN_DEBUG "mga_vid: Found MGA G200 AGP\n");
680 } 680 }
681 else if((dev = pci_find_device(PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_PCI, NULL))) 681 else if((dev = pci_find_device(PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_PCI, NULL)))
682 { 682 {
683 is_g400 = 0; 683 is_g400 = 0;
684 printk("mga_vid: Found MGA G200 PCI\n"); 684 printk(KERN_DEBUG "mga_vid: Found MGA G200 PCI\n");
685 } 685 }
686 else 686 else
687 { 687 {
688 printk("mga_vid: No supported cards found\n"); 688 printk(KERN_ERR "mga_vid: No supported cards found\n");
689 return FALSE; 689 return FALSE;
690 } 690 }
691 691
692 pci_dev = dev; 692 pci_dev = dev;
693 693
699 #else 699 #else
700 mga_mmio_base = ioremap_nocache(dev->base_address[1] & PCI_BASE_ADDRESS_MEM_MASK,0x4000); 700 mga_mmio_base = ioremap_nocache(dev->base_address[1] & PCI_BASE_ADDRESS_MEM_MASK,0x4000);
701 mga_mem_base = dev->base_address[0] & PCI_BASE_ADDRESS_MEM_MASK; 701 mga_mem_base = dev->base_address[0] & PCI_BASE_ADDRESS_MEM_MASK;
702 #endif 702 #endif
703 // printk("mga_vid: MMIO at 0x%p\n", mga_mmio_base); 703 // printk("mga_vid: MMIO at 0x%p\n", mga_mmio_base);
704 printk("syncfb (mga): MMIO at 0x%p IRQ: %d\n", mga_mmio_base, mga_irq); 704 printk(KERN_DEBUG "syncfb (mga): MMIO at 0x%p IRQ: %d\n", mga_mmio_base, mga_irq);
705 printk("mga_vid: Frame Buffer at 0x%08lX\n", mga_mem_base); 705 printk(KERN_DEBUG "mga_vid: Frame Buffer at 0x%08lX\n", mga_mem_base);
706 706
707 pci_read_config_dword(dev, 0x40, &card_option); 707 pci_read_config_dword(dev, 0x40, &card_option);
708 printk("OPTION word: 0x%08x\n", card_option); 708 printk(KERN_DEBUG "OPTION word: 0x%08x\n", card_option);
709 709
710 // temp = (card_option >> 10) & 0x17; 710 // temp = (card_option >> 10) & 0x17;
711 711
712 #ifdef MGA_MEMORY_SIZE 712 #ifdef MGA_MEMORY_SIZE
713 mga_ram_size = MGA_MEMORY_SIZE; 713 mga_ram_size = MGA_MEMORY_SIZE;
714 printk("mga_vid: hard-coded RAMSIZE is %d MB\n", (unsigned int) mga_ram_size); 714 printk(KERN_DEBUG "mga_vid: hard-coded RAMSIZE is %d MB\n", (unsigned int) mga_ram_size);
715 715
716 #else 716 #else
717 if (is_g400){ 717 if (is_g400){
718 mga_ram_size = 16; 718 mga_ram_size = 16;
719 }else{ 719 }else{
723 // printk("List resources -----------\n"); 723 // printk("List resources -----------\n");
724 for(temp=0;temp<DEVICE_COUNT_RESOURCE;temp++){ 724 for(temp=0;temp<DEVICE_COUNT_RESOURCE;temp++){
725 struct resource *res=&pci_dev->resource[temp]; 725 struct resource *res=&pci_dev->resource[temp];
726 if(res->flags){ 726 if(res->flags){
727 int size=(1+res->end-res->start)>>20; 727 int size=(1+res->end-res->start)>>20;
728 printk("res %d: start: 0x%X end: 0x%X (%d MB) flags=0x%X\n",temp,res->start,res->end,size,res->flags); 728 printk(KERN_DEBUG "res %d: start: 0x%X end: 0x%X (%d MB) flags=0x%X\n",temp,res->start,res->end,size,res->flags);
729 if(res->flags&(IORESOURCE_MEM|IORESOURCE_PREFETCH)){ 729 if(res->flags&(IORESOURCE_MEM|IORESOURCE_PREFETCH)){
730 if(size>mga_ram_size && size<=64) mga_ram_size=size; 730 if(size>mga_ram_size && size<=64) mga_ram_size=size;
731 } 731 }
732 } 732 }
733 } 733 }
734 734
735 printk("mga_vid: detected RAMSIZE is %d MB\n", (unsigned int) mga_ram_size); 735 printk(KERN_DEBUG "mga_vid: detected RAMSIZE is %d MB\n", (unsigned int) mga_ram_size);
736 #endif 736 #endif
737 737
738 if ( mga_irq != -1 ) { 738 if ( mga_irq != -1 ) {
739 int tmp = request_irq(mga_irq, mga_handle_irq, SA_INTERRUPT | SA_SHIRQ, "Syncfb Time Base", &mga_irq); 739 int tmp = request_irq(mga_irq, mga_handle_irq, SA_INTERRUPT | SA_SHIRQ, "Syncfb Time Base", &mga_irq);
740 if ( tmp ) { 740 if ( tmp ) {
741 printk("syncfb (mga): cannot register irq %d (Err: %d)\n", mga_irq, tmp); 741 printk(KERN_INFO "syncfb (mga): cannot register irq %d (Err: %d)\n", mga_irq, tmp);
742 mga_irq=-1; 742 mga_irq=-1;
743 } else { 743 } else {
744 printk("syncfb (mga): registered irq %d\n", mga_irq); 744 printk(KERN_DEBUG "syncfb (mga): registered irq %d\n", mga_irq);
745 } 745 }
746 } else { 746 } else {
747 printk("syncfb (mga): No valid irq was found\n"); 747 printk(KERN_INFO "syncfb (mga): No valid irq was found\n");
748 mga_irq=-1; 748 mga_irq=-1;
749 } 749 }
750 750
751 751
752 return TRUE; 752 return TRUE;
764 } 764 }
765 765
766 static int mga_vid_mmap(struct file *file, struct vm_area_struct *vma) 766 static int mga_vid_mmap(struct file *file, struct vm_area_struct *vma)
767 { 767 {
768 768
769 printk("mga_vid: mapping video memory into userspace\n"); 769 printk(KERN_DEBUG "mga_vid: mapping video memory into userspace\n");
770 if(remap_page_range(vma->vm_start, mga_mem_base + mga_src_base, 770 if(remap_page_range(vma->vm_start, mga_mem_base + mga_src_base,
771 vma->vm_end - vma->vm_start, vma->vm_page_prot)) 771 vma->vm_end - vma->vm_start, vma->vm_page_prot))
772 { 772 {
773 printk("mga_vid: error mapping video memory\n"); 773 printk(KERN_INFO "mga_vid: error mapping video memory\n");
774 return(-EAGAIN); 774 return(-EAGAIN);
775 } 775 }
776 776
777 return(0); 777 return(0);
778 } 778 }
846 846
847 static int mga_vid_initialize(void) 847 static int mga_vid_initialize(void)
848 { 848 {
849 mga_vid_in_use = 0; 849 mga_vid_in_use = 0;
850 850
851 printk( "Matrox MGA G200/G400 YUV Video interface v0.01 (c) Aaron Holtzman \n"); 851 printk(KERN_DEBUG "Matrox MGA G200/G400 YUV Video interface v0.01 (c) Aaron Holtzman \n");
852 if(register_chrdev(MGA_VID_MAJOR, "mga_vid", &mga_vid_fops)) 852 if(register_chrdev(MGA_VID_MAJOR, "mga_vid", &mga_vid_fops))
853 { 853 {
854 printk("mga_vid: unable to get major: %d\n", MGA_VID_MAJOR); 854 printk(KERN_ERR "mga_vid: unable to get major: %d\n", MGA_VID_MAJOR);
855 return -EIO; 855 return -EIO;
856 } 856 }
857 857
858 if (!mga_vid_find_card()) 858 if (!mga_vid_find_card())
859 { 859 {
860 printk("mga_vid: no supported devices found\n"); 860 printk(KERN_ERR "mga_vid: no supported devices found\n");
861 unregister_chrdev(MGA_VID_MAJOR, "mga_vid"); 861 unregister_chrdev(MGA_VID_MAJOR, "mga_vid");
862 return -EINVAL; 862 return -EINVAL;
863 } 863 }
864 864
865 return(0); 865 return(0);
878 878
879 if(mga_mmio_base) 879 if(mga_mmio_base)
880 iounmap(mga_mmio_base); 880 iounmap(mga_mmio_base);
881 881
882 //FIXME turn off BES 882 //FIXME turn off BES
883 printk("mga_vid: Cleaning up module\n"); 883 printk(KERN_DEBUG "mga_vid: Cleaning up module\n");
884 unregister_chrdev(MGA_VID_MAJOR, "mga_vid"); 884 unregister_chrdev(MGA_VID_MAJOR, "mga_vid");
885 } 885 }
886 886