]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/char/agp/ati-agp.c
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
[mirror_ubuntu-artful-kernel.git] / drivers / char / agp / ati-agp.c
index 9987dc2e0c3f02474ba75994b9bc7d675e9904db..2d46b713c8f2a9f7ee5e54a5180ede15f270c29c 100644 (file)
@@ -24,7 +24,7 @@
 #define ATI_GART_CACHE_ENTRY_CNTRL     0x10
 
 
-static struct aper_size_info_lvl2 ati_generic_sizes[7] =
+static const struct aper_size_info_lvl2 ati_generic_sizes[7] =
 {
        {2048, 524288, 0x0000000c},
        {1024, 262144, 0x0000000a},
@@ -123,21 +123,16 @@ static int ati_create_gatt_pages(int nr_tables)
 
        for (i = 0; i < nr_tables; i++) {
                entry = kzalloc(sizeof(struct ati_page_map), GFP_KERNEL);
+               tables[i] = entry;
                if (entry == NULL) {
-                       while (i > 0) {
-                               kfree(tables[i-1]);
-                               i--;
-                       }
-                       kfree(tables);
                        retval = -ENOMEM;
                        break;
                }
-               tables[i] = entry;
                retval = ati_create_page_map(entry);
                if (retval != 0)
                        break;
        }
-       ati_generic_private.num_tables = nr_tables;
+       ati_generic_private.num_tables = i;
        ati_generic_private.gatt_pages = tables;
 
        if (retval != 0)
@@ -218,6 +213,9 @@ static int ati_configure(void)
        temp = (temp & 0xfffff000);
        ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096);
 
+       if (!ati_generic_private.registers)
+               return -ENOMEM;
+
        if (is_r200())
                pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000);
        else
@@ -410,7 +408,7 @@ static int ati_free_gatt_table(struct agp_bridge_data *bridge)
        return 0;
 }
 
-static struct agp_bridge_driver ati_generic_bridge = {
+static const struct agp_bridge_driver ati_generic_bridge = {
        .owner                  = THIS_MODULE,
        .aperture_sizes         = ati_generic_sizes,
        .size_type              = LVL2_APER_SIZE,
@@ -431,6 +429,7 @@ static struct agp_bridge_driver ati_generic_bridge = {
        .free_by_type           = agp_generic_free_by_type,
        .agp_alloc_page         = agp_generic_alloc_page,
        .agp_destroy_page       = agp_generic_destroy_page,
+       .agp_type_to_mask_type  = agp_generic_type_to_mask_type,
 };