KVM: Use ARRAY_SIZE macro instead of manual calculation.
[powerpc.git] / drivers / video / igafb.c
index 8a0c2d3..90592fb 100644 (file)
@@ -33,7 +33,6 @@
 #include <linux/errno.h>
 #include <linux/string.h>
 #include <linux/mm.h>
-#include <linux/tty.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/delay.h>
@@ -371,7 +370,6 @@ static int __init iga_init(struct fb_info *info, struct iga_par *par)
 
 int __init igafb_init(void)
 {
-        extern int con_is_present(void);
         struct fb_info *info;
         struct pci_dev *pdev;
         struct iga_par *par;
@@ -385,28 +383,29 @@ int __init igafb_init(void)
         if (!con_is_present())
                 return -ENXIO;
 
-        pdev = pci_find_device(PCI_VENDOR_ID_INTERG, 
+        pdev = pci_get_device(PCI_VENDOR_ID_INTERG,
                                PCI_DEVICE_ID_INTERG_1682, 0);
        if (pdev == NULL) {
                /*
                 * XXX We tried to use cyber2000fb.c for IGS 2000.
                 * But it does not initialize the chip in JavaStation-E, alas.
                 */
-               pdev = pci_find_device(PCI_VENDOR_ID_INTERG, 0x2000, 0);
+               pdev = pci_get_device(PCI_VENDOR_ID_INTERG, 0x2000, 0);
                if(pdev == NULL) {
                        return -ENXIO;
                }
                iga2000 = 1;
        }
+       /* We leak a reference here but as it cannot be unloaded this is
+          fine. If you write unload code remember to free it in unload */
        
        size = sizeof(struct fb_info) + sizeof(struct iga_par) + sizeof(u32)*16;
 
-        info = kmalloc(size, GFP_ATOMIC);
+        info = kzalloc(size, GFP_ATOMIC);
         if (!info) {
                 printk("igafb_init: can't alloc fb_info\n");
                 return -ENOMEM;
         }
-        memset(info, 0, size);
 
        par = (struct iga_par *) (info + 1);
        
@@ -465,7 +464,7 @@ int __init igafb_init(void)
         * one additional region with size == 0. 
         */
 
-       par->mmap_map = kmalloc(4 * sizeof(*par->mmap_map), GFP_ATOMIC);
+       par->mmap_map = kzalloc(4 * sizeof(*par->mmap_map), GFP_ATOMIC);
        if (!par->mmap_map) {
                printk("igafb_init: can't alloc mmap_map\n");
                iounmap((void *)par->io_base);
@@ -474,8 +473,6 @@ int __init igafb_init(void)
                return -ENOMEM;
        }
 
-       memset(par->mmap_map, 0, 4 * sizeof(*par->mmap_map));
-
        /*
         * Set default vmode and cmode from PROM properties.
         */
@@ -574,3 +571,10 @@ int __init igafb_setup(char *options)
 
 module_init(igafb_init);
 MODULE_LICENSE("GPL");
+static struct pci_device_id igafb_pci_tbl[] __devinitdata = {
+       { PCI_VENDOR_ID_INTERG, PCI_DEVICE_ID_INTERG_1682,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+       { }
+};
+
+MODULE_DEVICE_TABLE(pci, igafb_pci_tbl);