amd76xrom.c (c1b054d03f5b31c33eaa0b267c629b118eaf3790) | amd76xrom.c (69f34c98c1416eb74c55e38a21dbf3e294966514) |
---|---|
1/* 2 * amd76xrom.c 3 * 4 * Normal mappings of chips in physical memory | 1/* 2 * amd76xrom.c 3 * 4 * Normal mappings of chips in physical memory |
5 * $Id: amd76xrom.c,v 1.20 2005/03/18 14:04:35 gleixner Exp $ | 5 * $Id: amd76xrom.c,v 1.21 2005/11/07 11:14:26 gleixner Exp $ |
6 */ 7 8#include <linux/module.h> 9#include <linux/types.h> 10#include <linux/kernel.h> 11#include <linux/init.h> 12#include <asm/io.h> 13#include <linux/mtd/mtd.h> --- 51 unchanged lines hidden (view full) --- 65 if (map->rsrc.parent) { 66 release_resource(&map->rsrc); 67 } 68 del_mtd_device(map->mtd); 69 map_destroy(map->mtd); 70 list_del(&map->list); 71 kfree(map); 72 } | 6 */ 7 8#include <linux/module.h> 9#include <linux/types.h> 10#include <linux/kernel.h> 11#include <linux/init.h> 12#include <asm/io.h> 13#include <linux/mtd/mtd.h> --- 51 unchanged lines hidden (view full) --- 65 if (map->rsrc.parent) { 66 release_resource(&map->rsrc); 67 } 68 del_mtd_device(map->mtd); 69 map_destroy(map->mtd); 70 list_del(&map->list); 71 kfree(map); 72 } |
73 if (window->rsrc.parent) | 73 if (window->rsrc.parent) |
74 release_resource(&window->rsrc); 75 76 if (window->virt) { 77 iounmap(window->virt); 78 window->virt = NULL; 79 window->phys = 0; 80 window->size = 0; 81 window->pdev = NULL; --- 20 unchanged lines hidden (view full) --- 102 } 103 else if ((byte & (1<<7)) == (1<<7)) { 104 window->phys = 0xffc00000; /* 4MiB */ 105 } 106 else { 107 window->phys = 0xffff0000; /* 64KiB */ 108 } 109 window->size = 0xffffffffUL - window->phys + 1UL; | 74 release_resource(&window->rsrc); 75 76 if (window->virt) { 77 iounmap(window->virt); 78 window->virt = NULL; 79 window->phys = 0; 80 window->size = 0; 81 window->pdev = NULL; --- 20 unchanged lines hidden (view full) --- 102 } 103 else if ((byte & (1<<7)) == (1<<7)) { 104 window->phys = 0xffc00000; /* 4MiB */ 105 } 106 else { 107 window->phys = 0xffff0000; /* 64KiB */ 108 } 109 window->size = 0xffffffffUL - window->phys + 1UL; |
110 | 110 |
111 /* 112 * Try to reserve the window mem region. If this fails then 113 * it is likely due to a fragment of the window being 114 * "reseved" by the BIOS. In the case that the 115 * request_mem_region() fails then once the rom size is 116 * discovered we will try to reserve the unreserved fragment. 117 */ 118 window->rsrc.name = MOD_NAME; --- 14 unchanged lines hidden (view full) --- 133 /* Enable the selected rom window */ 134 pci_read_config_byte(pdev, 0x43, &byte); 135 pci_write_config_byte(pdev, 0x43, byte | rwindow->segen_bits); 136#endif 137 138 /* Enable writes through the rom window */ 139 pci_read_config_byte(pdev, 0x40, &byte); 140 pci_write_config_byte(pdev, 0x40, byte | 1); | 111 /* 112 * Try to reserve the window mem region. If this fails then 113 * it is likely due to a fragment of the window being 114 * "reseved" by the BIOS. In the case that the 115 * request_mem_region() fails then once the rom size is 116 * discovered we will try to reserve the unreserved fragment. 117 */ 118 window->rsrc.name = MOD_NAME; --- 14 unchanged lines hidden (view full) --- 133 /* Enable the selected rom window */ 134 pci_read_config_byte(pdev, 0x43, &byte); 135 pci_write_config_byte(pdev, 0x43, byte | rwindow->segen_bits); 136#endif 137 138 /* Enable writes through the rom window */ 139 pci_read_config_byte(pdev, 0x40, &byte); 140 pci_write_config_byte(pdev, 0x40, byte | 1); |
141 | 141 |
142 /* FIXME handle registers 0x80 - 0x8C the bios region locks */ 143 144 /* For write accesses caches are useless */ 145 window->virt = ioremap_nocache(window->phys, window->size); 146 if (!window->virt) { 147 printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) failed\n", 148 window->phys, window->size); 149 goto out; --- 31 unchanged lines hidden (view full) --- 181 map->map.virt = (void __iomem *) 182 (((unsigned long)(window->virt)) + offset); 183 map->map.size = 0xffffffffUL - map_top + 1UL; 184 /* Set the name of the map to the address I am trying */ 185 sprintf(map->map_name, "%s @%08lx", 186 MOD_NAME, map->map.phys); 187 188 /* There is no generic VPP support */ | 142 /* FIXME handle registers 0x80 - 0x8C the bios region locks */ 143 144 /* For write accesses caches are useless */ 145 window->virt = ioremap_nocache(window->phys, window->size); 146 if (!window->virt) { 147 printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) failed\n", 148 window->phys, window->size); 149 goto out; --- 31 unchanged lines hidden (view full) --- 181 map->map.virt = (void __iomem *) 182 (((unsigned long)(window->virt)) + offset); 183 map->map.size = 0xffffffffUL - map_top + 1UL; 184 /* Set the name of the map to the address I am trying */ 185 sprintf(map->map_name, "%s @%08lx", 186 MOD_NAME, map->map.phys); 187 188 /* There is no generic VPP support */ |
189 for(map->map.bankwidth = 32; map->map.bankwidth; | 189 for(map->map.bankwidth = 32; map->map.bankwidth; |
190 map->map.bankwidth >>= 1) 191 { 192 char **probe_type; 193 /* Skip bankwidths that are not supported */ 194 if (!map_bankwidth_supported(map->map.bankwidth)) 195 continue; 196 197 /* Setup the map methods */ --- 36 unchanged lines hidden (view full) --- 234 235 /* Make the whole region visible in the map */ 236 map->map.virt = window->virt; 237 map->map.phys = window->phys; 238 cfi = map->map.fldrv_priv; 239 for(i = 0; i < cfi->numchips; i++) { 240 cfi->chips[i].start += offset; 241 } | 190 map->map.bankwidth >>= 1) 191 { 192 char **probe_type; 193 /* Skip bankwidths that are not supported */ 194 if (!map_bankwidth_supported(map->map.bankwidth)) 195 continue; 196 197 /* Setup the map methods */ --- 36 unchanged lines hidden (view full) --- 234 235 /* Make the whole region visible in the map */ 236 map->map.virt = window->virt; 237 map->map.phys = window->phys; 238 cfi = map->map.fldrv_priv; 239 for(i = 0; i < cfi->numchips; i++) { 240 cfi->chips[i].start += offset; 241 } |
242 | 242 |
243 /* Now that the mtd devices is complete claim and export it */ 244 map->mtd->owner = THIS_MODULE; 245 if (add_mtd_device(map->mtd)) { 246 map_destroy(map->mtd); 247 map->mtd = NULL; 248 goto out; 249 } 250 --- 23 unchanged lines hidden (view full) --- 274static void __devexit amd76xrom_remove_one (struct pci_dev *pdev) 275{ 276 struct amd76xrom_window *window = &amd76xrom_window; 277 278 amd76xrom_cleanup(window); 279} 280 281static struct pci_device_id amd76xrom_pci_tbl[] = { | 243 /* Now that the mtd devices is complete claim and export it */ 244 map->mtd->owner = THIS_MODULE; 245 if (add_mtd_device(map->mtd)) { 246 map_destroy(map->mtd); 247 map->mtd = NULL; 248 goto out; 249 } 250 --- 23 unchanged lines hidden (view full) --- 274static void __devexit amd76xrom_remove_one (struct pci_dev *pdev) 275{ 276 struct amd76xrom_window *window = &amd76xrom_window; 277 278 amd76xrom_cleanup(window); 279} 280 281static struct pci_device_id amd76xrom_pci_tbl[] = { |
282 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7410, | 282 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7410, |
283 PCI_ANY_ID, PCI_ANY_ID, }, | 283 PCI_ANY_ID, PCI_ANY_ID, }, |
284 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7440, | 284 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7440, |
285 PCI_ANY_ID, PCI_ANY_ID, }, 286 { PCI_VENDOR_ID_AMD, 0x7468 }, /* amd8111 support */ 287 { 0, } 288}; 289 290MODULE_DEVICE_TABLE(pci, amd76xrom_pci_tbl); 291 292#if 0 --- 40 unchanged lines hidden --- | 285 PCI_ANY_ID, PCI_ANY_ID, }, 286 { PCI_VENDOR_ID_AMD, 0x7468 }, /* amd8111 support */ 287 { 0, } 288}; 289 290MODULE_DEVICE_TABLE(pci, amd76xrom_pci_tbl); 291 292#if 0 --- 40 unchanged lines hidden --- |