diff options
Diffstat (limited to 'drivers/mtd/maps/vmax301.c')
| -rw-r--r-- | drivers/mtd/maps/vmax301.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/mtd/maps/vmax301.c b/drivers/mtd/maps/vmax301.c index c8c74110ed1b..e0063941c0df 100644 --- a/drivers/mtd/maps/vmax301.c +++ b/drivers/mtd/maps/vmax301.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | // $Id: vmax301.c,v 1.30 2004/07/12 22:38:29 dwmw2 Exp $ | 1 | // $Id: vmax301.c,v 1.32 2005/11/07 11:14:29 gleixner Exp $ |
| 2 | /* ###################################################################### | 2 | /* ###################################################################### |
| 3 | 3 | ||
| 4 | Tempustech VMAX SBC301 MTD Driver. | 4 | Tempustech VMAX SBC301 MTD Driver. |
| 5 | 5 | ||
| 6 | The VMAx 301 is a SBC based on . It | 6 | The VMAx 301 is a SBC based on . It |
| 7 | comes with three builtin AMD 29F016B flash chips and a socket for SRAM or | 7 | comes with three builtin AMD 29F016B flash chips and a socket for SRAM or |
| 8 | more flash. Each unit has it's own 8k mapping into a settable region | 8 | more flash. Each unit has it's own 8k mapping into a settable region |
| 9 | (0xD8000). There are two 8k mappings for each MTD, the first is always set | 9 | (0xD8000). There are two 8k mappings for each MTD, the first is always set |
| 10 | to the lower 8k of the device the second is paged. Writing a 16 bit page | 10 | to the lower 8k of the device the second is paged. Writing a 16 bit page |
| 11 | value to anywhere in the first 8k will cause the second 8k to page around. | 11 | value to anywhere in the first 8k will cause the second 8k to page around. |
| 12 | 12 | ||
| 13 | To boot the device a bios extension must be installed into the first 8k | 13 | To boot the device a bios extension must be installed into the first 8k |
| 14 | of flash that is smart enough to copy itself down, page in the rest of | 14 | of flash that is smart enough to copy itself down, page in the rest of |
| 15 | itself and begin executing. | 15 | itself and begin executing. |
| 16 | 16 | ||
| 17 | ##################################################################### */ | 17 | ##################################################################### */ |
| 18 | 18 | ||
| 19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| @@ -35,7 +35,7 @@ | |||
| 35 | /* Actually we could use two spinlocks, but we'd have to have | 35 | /* Actually we could use two spinlocks, but we'd have to have |
| 36 | more private space in the struct map_info. We lose a little | 36 | more private space in the struct map_info. We lose a little |
| 37 | performance like this, but we'd probably lose more by having | 37 | performance like this, but we'd probably lose more by having |
| 38 | the extra indirection from having one of the map->map_priv | 38 | the extra indirection from having one of the map->map_priv |
| 39 | fields pointing to yet another private struct. | 39 | fields pointing to yet another private struct. |
| 40 | */ | 40 | */ |
| 41 | static DEFINE_SPINLOCK(vmax301_spin); | 41 | static DEFINE_SPINLOCK(vmax301_spin); |
| @@ -98,7 +98,7 @@ static void vmax301_copy_to(struct map_info *map, unsigned long to, const void * | |||
| 98 | spin_lock(&vmax301_spin); | 98 | spin_lock(&vmax301_spin); |
| 99 | vmax301_page(map, to); | 99 | vmax301_page(map, to); |
| 100 | memcpy_toio(map->map_priv_2 + to, from, thislen); | 100 | memcpy_toio(map->map_priv_2 + to, from, thislen); |
| 101 | spin_unlock(&vmax301_spin); | 101 | spin_unlock(&vmax301_spin); |
| 102 | to += thislen; | 102 | to += thislen; |
| 103 | from += thislen; | 103 | from += thislen; |
| 104 | len -= thislen; | 104 | len -= thislen; |
| @@ -137,7 +137,7 @@ static struct mtd_info *vmax_mtd[2] = {NULL, NULL}; | |||
| 137 | static void __exit cleanup_vmax301(void) | 137 | static void __exit cleanup_vmax301(void) |
| 138 | { | 138 | { |
| 139 | int i; | 139 | int i; |
| 140 | 140 | ||
| 141 | for (i=0; i<2; i++) { | 141 | for (i=0; i<2; i++) { |
| 142 | if (vmax_mtd[i]) { | 142 | if (vmax_mtd[i]) { |
| 143 | del_mtd_device(vmax_mtd[i]); | 143 | del_mtd_device(vmax_mtd[i]); |
| @@ -161,13 +161,13 @@ int __init init_vmax301(void) | |||
| 161 | return -EIO; | 161 | return -EIO; |
| 162 | } | 162 | } |
| 163 | /* Put the address in the map's private data area. | 163 | /* Put the address in the map's private data area. |
| 164 | We store the actual MTD IO address rather than the | 164 | We store the actual MTD IO address rather than the |
| 165 | address of the first half, because it's used more | 165 | address of the first half, because it's used more |
| 166 | often. | 166 | often. |
| 167 | */ | 167 | */ |
| 168 | vmax_map[0].map_priv_2 = iomapadr + WINDOW_START; | 168 | vmax_map[0].map_priv_2 = iomapadr + WINDOW_START; |
| 169 | vmax_map[1].map_priv_2 = iomapadr + (3*WINDOW_START); | 169 | vmax_map[1].map_priv_2 = iomapadr + (3*WINDOW_START); |
| 170 | 170 | ||
| 171 | for (i=0; i<2; i++) { | 171 | for (i=0; i<2; i++) { |
| 172 | vmax_mtd[i] = do_map_probe("cfi_probe", &vmax_map[i]); | 172 | vmax_mtd[i] = do_map_probe("cfi_probe", &vmax_map[i]); |
| 173 | if (!vmax_mtd[i]) | 173 | if (!vmax_mtd[i]) |
