aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/via/viafbdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/via/viafbdev.c')
-rw-r--r--drivers/video/via/viafbdev.c52
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
1845static int __devinit via_pci_probe(void) 1845static 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
2068static void __devexit via_pci_remove(void) 2070static 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
2162static 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};
2187MODULE_DEVICE_TABLE(pci, viafb_pci_table);
2188
2189static 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
2160static int __init viafb_init(void) 2196static 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
2174static void __exit viafb_exit(void) 2210static 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
2180static struct fb_ops viafb_ops = { 2216static struct fb_ops viafb_ops = {