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]) |