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