diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2013-03-11 12:24:37 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2013-04-05 08:01:55 -0400 |
commit | b08a25ade20542d43881c94c6fd4e03f90c1f096 (patch) | |
tree | 30346e977ea1a16821a850155a76e07cd01237ef /drivers/mtd | |
parent | bece641c967a8fa76cae718daa46c36a0c298cc7 (diff) |
mtd: remove the ixp2000 map driver
This driver depends on CONFIG_IXP2000 which is not defined anywhere, which
means this driver is dead.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/maps/Kconfig | 9 | ||||
-rw-r--r-- | drivers/mtd/maps/Makefile | 1 | ||||
-rw-r--r-- | drivers/mtd/maps/ixp2000.c | 253 |
3 files changed, 0 insertions, 263 deletions
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig index b6a369a07dbc..4b70976b2cc5 100644 --- a/drivers/mtd/maps/Kconfig +++ b/drivers/mtd/maps/Kconfig | |||
@@ -297,15 +297,6 @@ config MTD_IXP4XX | |||
297 | IXDP425 and Coyote. If you have an IXP4xx based board and | 297 | IXDP425 and Coyote. If you have an IXP4xx based board and |
298 | would like to use the flash chips on it, say 'Y'. | 298 | would like to use the flash chips on it, say 'Y'. |
299 | 299 | ||
300 | config MTD_IXP2000 | ||
301 | tristate "CFI Flash device mapped on Intel IXP2000 based systems" | ||
302 | depends on MTD_CFI && MTD_COMPLEX_MAPPINGS && ARCH_IXP2000 | ||
303 | help | ||
304 | This enables MTD access to flash devices on platforms based | ||
305 | on Intel's IXP2000 family of network processors. If you have an | ||
306 | IXP2000 based board and would like to use the flash chips on it, | ||
307 | say 'Y'. | ||
308 | |||
309 | config MTD_AUTCPU12 | 300 | config MTD_AUTCPU12 |
310 | bool "NV-RAM mapping AUTCPU12 board" | 301 | bool "NV-RAM mapping AUTCPU12 board" |
311 | depends on ARCH_AUTCPU12 | 302 | depends on ARCH_AUTCPU12 |
diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile index 7315ed8c9643..781e4b8cb977 100644 --- a/drivers/mtd/maps/Makefile +++ b/drivers/mtd/maps/Makefile | |||
@@ -39,7 +39,6 @@ obj-$(CONFIG_MTD_NETtel) += nettel.o | |||
39 | obj-$(CONFIG_MTD_SCB2_FLASH) += scb2_flash.o | 39 | obj-$(CONFIG_MTD_SCB2_FLASH) += scb2_flash.o |
40 | obj-$(CONFIG_MTD_H720X) += h720x-flash.o | 40 | obj-$(CONFIG_MTD_H720X) += h720x-flash.o |
41 | obj-$(CONFIG_MTD_IXP4XX) += ixp4xx.o | 41 | obj-$(CONFIG_MTD_IXP4XX) += ixp4xx.o |
42 | obj-$(CONFIG_MTD_IXP2000) += ixp2000.o | ||
43 | obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o | 42 | obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o |
44 | obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o | 43 | obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o |
45 | obj-$(CONFIG_MTD_BFIN_ASYNC) += bfin-async-flash.o | 44 | obj-$(CONFIG_MTD_BFIN_ASYNC) += bfin-async-flash.o |
diff --git a/drivers/mtd/maps/ixp2000.c b/drivers/mtd/maps/ixp2000.c deleted file mode 100644 index 4a41ced0f710..000000000000 --- a/drivers/mtd/maps/ixp2000.c +++ /dev/null | |||
@@ -1,253 +0,0 @@ | |||
1 | /* | ||
2 | * drivers/mtd/maps/ixp2000.c | ||
3 | * | ||
4 | * Mapping for the Intel XScale IXP2000 based systems | ||
5 | * | ||
6 | * Copyright (C) 2002 Intel Corp. | ||
7 | * Copyright (C) 2003-2004 MontaVista Software, Inc. | ||
8 | * | ||
9 | * Original Author: Naeem M Afzal <naeem.m.afzal@intel.com> | ||
10 | * Maintainer: Deepak Saxena <dsaxena@plexity.net> | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include <linux/module.h> | ||
19 | #include <linux/types.h> | ||
20 | #include <linux/init.h> | ||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/string.h> | ||
23 | #include <linux/slab.h> | ||
24 | #include <linux/ioport.h> | ||
25 | #include <linux/device.h> | ||
26 | #include <linux/platform_device.h> | ||
27 | |||
28 | #include <linux/mtd/mtd.h> | ||
29 | #include <linux/mtd/map.h> | ||
30 | #include <linux/mtd/partitions.h> | ||
31 | |||
32 | #include <asm/io.h> | ||
33 | #include <mach/hardware.h> | ||
34 | #include <asm/mach/flash.h> | ||
35 | |||
36 | #include <linux/reboot.h> | ||
37 | |||
38 | struct ixp2000_flash_info { | ||
39 | struct mtd_info *mtd; | ||
40 | struct map_info map; | ||
41 | struct resource *res; | ||
42 | }; | ||
43 | |||
44 | static inline unsigned long flash_bank_setup(struct map_info *map, unsigned long ofs) | ||
45 | { | ||
46 | unsigned long (*set_bank)(unsigned long) = | ||
47 | (unsigned long(*)(unsigned long))map->map_priv_2; | ||
48 | |||
49 | return (set_bank ? set_bank(ofs) : ofs); | ||
50 | } | ||
51 | |||
52 | #ifdef __ARMEB__ | ||
53 | /* | ||
54 | * Rev A0 and A1 of IXP2400 silicon have a broken addressing unit which | ||
55 | * causes the lower address bits to be XORed with 0x11 on 8 bit accesses | ||
56 | * and XORed with 0x10 on 16 bit accesses. See the spec update, erratum 44. | ||
57 | */ | ||
58 | static int erratum44_workaround = 0; | ||
59 | |||
60 | static inline unsigned long address_fix8_write(unsigned long addr) | ||
61 | { | ||
62 | if (erratum44_workaround) { | ||
63 | return (addr ^ 3); | ||
64 | } | ||
65 | return addr; | ||
66 | } | ||
67 | #else | ||
68 | |||
69 | #define address_fix8_write(x) (x) | ||
70 | #endif | ||
71 | |||
72 | static map_word ixp2000_flash_read8(struct map_info *map, unsigned long ofs) | ||
73 | { | ||
74 | map_word val; | ||
75 | |||
76 | val.x[0] = *((u8 *)(map->map_priv_1 + flash_bank_setup(map, ofs))); | ||
77 | return val; | ||
78 | } | ||
79 | |||
80 | /* | ||
81 | * We can't use the standard memcpy due to the broken SlowPort | ||
82 | * address translation on rev A0 and A1 silicon and the fact that | ||
83 | * we have banked flash. | ||
84 | */ | ||
85 | static void ixp2000_flash_copy_from(struct map_info *map, void *to, | ||
86 | unsigned long from, ssize_t len) | ||
87 | { | ||
88 | from = flash_bank_setup(map, from); | ||
89 | while(len--) | ||
90 | *(__u8 *) to++ = *(__u8 *)(map->map_priv_1 + from++); | ||
91 | } | ||
92 | |||
93 | static void ixp2000_flash_write8(struct map_info *map, map_word d, unsigned long ofs) | ||
94 | { | ||
95 | *(__u8 *) (address_fix8_write(map->map_priv_1 + | ||
96 | flash_bank_setup(map, ofs))) = d.x[0]; | ||
97 | } | ||
98 | |||
99 | static void ixp2000_flash_copy_to(struct map_info *map, unsigned long to, | ||
100 | const void *from, ssize_t len) | ||
101 | { | ||
102 | to = flash_bank_setup(map, to); | ||
103 | while(len--) { | ||
104 | unsigned long tmp = address_fix8_write(map->map_priv_1 + to++); | ||
105 | *(__u8 *)(tmp) = *(__u8 *)(from++); | ||
106 | } | ||
107 | } | ||
108 | |||
109 | |||
110 | static int ixp2000_flash_remove(struct platform_device *dev) | ||
111 | { | ||
112 | struct flash_platform_data *plat = dev->dev.platform_data; | ||
113 | struct ixp2000_flash_info *info = platform_get_drvdata(dev); | ||
114 | |||
115 | platform_set_drvdata(dev, NULL); | ||
116 | |||
117 | if(!info) | ||
118 | return 0; | ||
119 | |||
120 | if (info->mtd) { | ||
121 | mtd_device_unregister(info->mtd); | ||
122 | map_destroy(info->mtd); | ||
123 | } | ||
124 | if (info->map.map_priv_1) | ||
125 | iounmap((void *) info->map.map_priv_1); | ||
126 | |||
127 | if (info->res) { | ||
128 | release_resource(info->res); | ||
129 | kfree(info->res); | ||
130 | } | ||
131 | |||
132 | if (plat->exit) | ||
133 | plat->exit(); | ||
134 | |||
135 | return 0; | ||
136 | } | ||
137 | |||
138 | |||
139 | static int ixp2000_flash_probe(struct platform_device *dev) | ||
140 | { | ||
141 | static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; | ||
142 | struct ixp2000_flash_data *ixp_data = dev->dev.platform_data; | ||
143 | struct flash_platform_data *plat; | ||
144 | struct ixp2000_flash_info *info; | ||
145 | unsigned long window_size; | ||
146 | int err = -1; | ||
147 | |||
148 | if (!ixp_data) | ||
149 | return -ENODEV; | ||
150 | |||
151 | plat = ixp_data->platform_data; | ||
152 | if (!plat) | ||
153 | return -ENODEV; | ||
154 | |||
155 | window_size = resource_size(dev->resource); | ||
156 | dev_info(&dev->dev, "Probe of IXP2000 flash(%d banks x %dMiB)\n", | ||
157 | ixp_data->nr_banks, ((u32)window_size >> 20)); | ||
158 | |||
159 | if (plat->width != 1) { | ||
160 | dev_err(&dev->dev, "IXP2000 MTD map only supports 8-bit mode, asking for %d\n", | ||
161 | plat->width * 8); | ||
162 | return -EIO; | ||
163 | } | ||
164 | |||
165 | info = kzalloc(sizeof(struct ixp2000_flash_info), GFP_KERNEL); | ||
166 | if(!info) { | ||
167 | err = -ENOMEM; | ||
168 | goto Error; | ||
169 | } | ||
170 | |||
171 | platform_set_drvdata(dev, info); | ||
172 | |||
173 | /* | ||
174 | * Tell the MTD layer we're not 1:1 mapped so that it does | ||
175 | * not attempt to do a direct access on us. | ||
176 | */ | ||
177 | info->map.phys = NO_XIP; | ||
178 | |||
179 | info->map.size = ixp_data->nr_banks * window_size; | ||
180 | info->map.bankwidth = 1; | ||
181 | |||
182 | /* | ||
183 | * map_priv_2 is used to store a ptr to the bank_setup routine | ||
184 | */ | ||
185 | info->map.map_priv_2 = (unsigned long) ixp_data->bank_setup; | ||
186 | |||
187 | info->map.name = dev_name(&dev->dev); | ||
188 | info->map.read = ixp2000_flash_read8; | ||
189 | info->map.write = ixp2000_flash_write8; | ||
190 | info->map.copy_from = ixp2000_flash_copy_from; | ||
191 | info->map.copy_to = ixp2000_flash_copy_to; | ||
192 | |||
193 | info->res = request_mem_region(dev->resource->start, | ||
194 | resource_size(dev->resource), | ||
195 | dev_name(&dev->dev)); | ||
196 | if (!info->res) { | ||
197 | dev_err(&dev->dev, "Could not reserve memory region\n"); | ||
198 | err = -ENOMEM; | ||
199 | goto Error; | ||
200 | } | ||
201 | |||
202 | info->map.map_priv_1 = | ||
203 | (unsigned long)ioremap(dev->resource->start, | ||
204 | resource_size(dev->resource)); | ||
205 | if (!info->map.map_priv_1) { | ||
206 | dev_err(&dev->dev, "Failed to ioremap flash region\n"); | ||
207 | err = -EIO; | ||
208 | goto Error; | ||
209 | } | ||
210 | |||
211 | #if defined(__ARMEB__) | ||
212 | /* | ||
213 | * Enable erratum 44 workaround for NPUs with broken slowport | ||
214 | */ | ||
215 | |||
216 | erratum44_workaround = ixp2000_has_broken_slowport(); | ||
217 | dev_info(&dev->dev, "Erratum 44 workaround %s\n", | ||
218 | erratum44_workaround ? "enabled" : "disabled"); | ||
219 | #endif | ||
220 | |||
221 | info->mtd = do_map_probe(plat->map_name, &info->map); | ||
222 | if (!info->mtd) { | ||
223 | dev_err(&dev->dev, "map_probe failed\n"); | ||
224 | err = -ENXIO; | ||
225 | goto Error; | ||
226 | } | ||
227 | info->mtd->owner = THIS_MODULE; | ||
228 | |||
229 | err = mtd_device_parse_register(info->mtd, probes, NULL, NULL, 0); | ||
230 | if (err) | ||
231 | goto Error; | ||
232 | |||
233 | return 0; | ||
234 | |||
235 | Error: | ||
236 | ixp2000_flash_remove(dev); | ||
237 | return err; | ||
238 | } | ||
239 | |||
240 | static struct platform_driver ixp2000_flash_driver = { | ||
241 | .probe = ixp2000_flash_probe, | ||
242 | .remove = ixp2000_flash_remove, | ||
243 | .driver = { | ||
244 | .name = "IXP2000-Flash", | ||
245 | .owner = THIS_MODULE, | ||
246 | }, | ||
247 | }; | ||
248 | |||
249 | module_platform_driver(ixp2000_flash_driver); | ||
250 | |||
251 | MODULE_LICENSE("GPL"); | ||
252 | MODULE_AUTHOR("Deepak Saxena <dsaxena@plexity.net>"); | ||
253 | MODULE_ALIAS("platform:IXP2000-Flash"); | ||