diff options
-rw-r--r-- | drivers/mtd/maps/gpio-addr-flash.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/mtd/maps/gpio-addr-flash.c b/drivers/mtd/maps/gpio-addr-flash.c index 32e89d773b4e..af5707a80205 100644 --- a/drivers/mtd/maps/gpio-addr-flash.c +++ b/drivers/mtd/maps/gpio-addr-flash.c | |||
@@ -208,10 +208,14 @@ static int __devinit gpio_flash_probe(struct platform_device *pdev) | |||
208 | if (!state) | 208 | if (!state) |
209 | return -ENOMEM; | 209 | return -ENOMEM; |
210 | 210 | ||
211 | /* | ||
212 | * We cast start/end to known types in the boards file, so cast | ||
213 | * away their pointer types here to the known types (gpios->xxx). | ||
214 | */ | ||
211 | state->gpio_count = gpios->end; | 215 | state->gpio_count = gpios->end; |
212 | state->gpio_addrs = (void *)gpios->start; | 216 | state->gpio_addrs = (void *)(unsigned long)gpios->start; |
213 | state->gpio_values = (void *)(state + 1); | 217 | state->gpio_values = (void *)(state + 1); |
214 | state->win_size = memory->end - memory->start + 1; | 218 | state->win_size = resource_size(memory); |
215 | memset(state->gpio_values, 0xff, arr_size); | 219 | memset(state->gpio_values, 0xff, arr_size); |
216 | 220 | ||
217 | state->map.name = DRIVER_NAME; | 221 | state->map.name = DRIVER_NAME; |
@@ -221,7 +225,7 @@ static int __devinit gpio_flash_probe(struct platform_device *pdev) | |||
221 | state->map.copy_to = gf_copy_to; | 225 | state->map.copy_to = gf_copy_to; |
222 | state->map.bankwidth = pdata->width; | 226 | state->map.bankwidth = pdata->width; |
223 | state->map.size = state->win_size * (1 << state->gpio_count); | 227 | state->map.size = state->win_size * (1 << state->gpio_count); |
224 | state->map.virt = (void __iomem *)memory->start; | 228 | state->map.virt = ioremap_nocache(memory->start, state->map.size); |
225 | state->map.phys = NO_XIP; | 229 | state->map.phys = NO_XIP; |
226 | state->map.map_priv_1 = (unsigned long)state; | 230 | state->map.map_priv_1 = (unsigned long)state; |
227 | 231 | ||