diff options
Diffstat (limited to 'drivers/video/via/viafbdev.c')
-rw-r--r-- | drivers/video/via/viafbdev.c | 52 |
1 files changed, 44 insertions, 8 deletions
diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c index 3815a9b07195..c661ab62c057 100644 --- a/drivers/video/via/viafbdev.c +++ b/drivers/video/via/viafbdev.c | |||
@@ -1842,7 +1842,8 @@ out_default: | |||
1842 | *yres = 480; | 1842 | *yres = 480; |
1843 | } | 1843 | } |
1844 | 1844 | ||
1845 | static int __devinit via_pci_probe(void) | 1845 | static int __devinit via_pci_probe(struct pci_dev *pdev, |
1846 | const struct pci_device_id *ent) | ||
1846 | { | 1847 | { |
1847 | u32 default_xres, default_yres; | 1848 | u32 default_xres, default_yres; |
1848 | int vmode_index; | 1849 | int vmode_index; |
@@ -1885,8 +1886,9 @@ static int __devinit via_pci_probe(void) | |||
1885 | /* Set up I2C bus stuff */ | 1886 | /* Set up I2C bus stuff */ |
1886 | viafb_create_i2c_bus(viaparinfo); | 1887 | viafb_create_i2c_bus(viaparinfo); |
1887 | 1888 | ||
1888 | viafb_init_chip_info(); | 1889 | viafb_init_chip_info(pdev, ent); |
1889 | viafb_get_fb_info(&viaparinfo->fbmem, &viaparinfo->memsize); | 1890 | viaparinfo->fbmem = pci_resource_start(pdev, 0); |
1891 | viaparinfo->memsize = viafb_get_fb_size_from_pci(); | ||
1890 | viaparinfo->fbmem_free = viaparinfo->memsize; | 1892 | viaparinfo->fbmem_free = viaparinfo->memsize; |
1891 | viaparinfo->fbmem_used = 0; | 1893 | viaparinfo->fbmem_used = 0; |
1892 | viafbinfo->screen_base = ioremap_nocache(viaparinfo->fbmem, | 1894 | viafbinfo->screen_base = ioremap_nocache(viaparinfo->fbmem, |
@@ -1896,8 +1898,8 @@ static int __devinit via_pci_probe(void) | |||
1896 | return -ENOMEM; | 1898 | return -ENOMEM; |
1897 | } | 1899 | } |
1898 | 1900 | ||
1899 | viafb_get_mmio_info(&viafbinfo->fix.mmio_start, | 1901 | viafbinfo->fix.mmio_start = pci_resource_start(pdev, 1); |
1900 | &viafbinfo->fix.mmio_len); | 1902 | viafbinfo->fix.mmio_len = pci_resource_len(pdev, 1); |
1901 | viafbinfo->node = 0; | 1903 | viafbinfo->node = 0; |
1902 | viafbinfo->fbops = &viafb_ops; | 1904 | viafbinfo->fbops = &viafb_ops; |
1903 | viafbinfo->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; | 1905 | viafbinfo->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; |
@@ -2065,7 +2067,7 @@ static int __devinit via_pci_probe(void) | |||
2065 | return 0; | 2067 | return 0; |
2066 | } | 2068 | } |
2067 | 2069 | ||
2068 | static void __devexit via_pci_remove(void) | 2070 | static void __devexit via_pci_remove(struct pci_dev *pdev) |
2069 | { | 2071 | { |
2070 | DEBUG_MSG(KERN_INFO "via_pci_remove!\n"); | 2072 | DEBUG_MSG(KERN_INFO "via_pci_remove!\n"); |
2071 | fb_dealloc_cmap(&viafbinfo->cmap); | 2073 | fb_dealloc_cmap(&viafbinfo->cmap); |
@@ -2157,6 +2159,40 @@ static int __init viafb_setup(char *options) | |||
2157 | } | 2159 | } |
2158 | #endif | 2160 | #endif |
2159 | 2161 | ||
2162 | static struct pci_device_id viafb_pci_table[] __devinitdata = { | ||
2163 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_CLE266_DID), | ||
2164 | .driver_data = UNICHROME_CLE266 }, | ||
2165 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_PM800_DID), | ||
2166 | .driver_data = UNICHROME_PM800 }, | ||
2167 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_K400_DID), | ||
2168 | .driver_data = UNICHROME_K400 }, | ||
2169 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_K800_DID), | ||
2170 | .driver_data = UNICHROME_K800 }, | ||
2171 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_P4M890_DID), | ||
2172 | .driver_data = UNICHROME_CN700 }, | ||
2173 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_K8M890_DID), | ||
2174 | .driver_data = UNICHROME_K8M890 }, | ||
2175 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_CX700_DID), | ||
2176 | .driver_data = UNICHROME_CX700 }, | ||
2177 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_P4M900_DID), | ||
2178 | .driver_data = UNICHROME_P4M900 }, | ||
2179 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_CN750_DID), | ||
2180 | .driver_data = UNICHROME_CN750 }, | ||
2181 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_VX800_DID), | ||
2182 | .driver_data = UNICHROME_VX800 }, | ||
2183 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_VX855_DID), | ||
2184 | .driver_data = UNICHROME_VX855 }, | ||
2185 | { } | ||
2186 | }; | ||
2187 | MODULE_DEVICE_TABLE(pci, viafb_pci_table); | ||
2188 | |||
2189 | static struct pci_driver viafb_driver = { | ||
2190 | .name = "viafb", | ||
2191 | .id_table = viafb_pci_table, | ||
2192 | .probe = via_pci_probe, | ||
2193 | .remove = __devexit_p(via_pci_remove), | ||
2194 | }; | ||
2195 | |||
2160 | static int __init viafb_init(void) | 2196 | static int __init viafb_init(void) |
2161 | { | 2197 | { |
2162 | #ifndef MODULE | 2198 | #ifndef MODULE |
@@ -2168,13 +2204,13 @@ static int __init viafb_init(void) | |||
2168 | printk(KERN_INFO | 2204 | printk(KERN_INFO |
2169 | "VIA Graphics Intergration Chipset framebuffer %d.%d initializing\n", | 2205 | "VIA Graphics Intergration Chipset framebuffer %d.%d initializing\n", |
2170 | VERSION_MAJOR, VERSION_MINOR); | 2206 | VERSION_MAJOR, VERSION_MINOR); |
2171 | return via_pci_probe(); | 2207 | return pci_register_driver(&viafb_driver); |
2172 | } | 2208 | } |
2173 | 2209 | ||
2174 | static void __exit viafb_exit(void) | 2210 | static void __exit viafb_exit(void) |
2175 | { | 2211 | { |
2176 | DEBUG_MSG(KERN_INFO "viafb_exit!\n"); | 2212 | DEBUG_MSG(KERN_INFO "viafb_exit!\n"); |
2177 | via_pci_remove(); | 2213 | pci_unregister_driver(&viafb_driver); |
2178 | } | 2214 | } |
2179 | 2215 | ||
2180 | static struct fb_ops viafb_ops = { | 2216 | static struct fb_ops viafb_ops = { |