diff options
Diffstat (limited to 'drivers/mtd')
47 files changed, 89 insertions, 96 deletions
diff --git a/drivers/mtd/chips/Kconfig b/drivers/mtd/chips/Kconfig index 35c6a23b183b..b1e3c26edd6d 100644 --- a/drivers/mtd/chips/Kconfig +++ b/drivers/mtd/chips/Kconfig | |||
@@ -19,7 +19,7 @@ config MTD_JEDECPROBE | |||
19 | help | 19 | help |
20 | This option enables JEDEC-style probing of flash chips which are not | 20 | This option enables JEDEC-style probing of flash chips which are not |
21 | compatible with the Common Flash Interface, but will use the common | 21 | compatible with the Common Flash Interface, but will use the common |
22 | CFI-targetted flash drivers for any chips which are identified which | 22 | CFI-targeted flash drivers for any chips which are identified which |
23 | are in fact compatible in all but the probe method. This actually | 23 | are in fact compatible in all but the probe method. This actually |
24 | covers most AMD/Fujitsu-compatible chips and also non-CFI | 24 | covers most AMD/Fujitsu-compatible chips and also non-CFI |
25 | Intel chips. | 25 | Intel chips. |
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c index 092aef11120c..09cb7c8d93b4 100644 --- a/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/drivers/mtd/chips/cfi_cmdset_0001.c | |||
@@ -1247,12 +1247,12 @@ static int inval_cache_and_wait_for_operation( | |||
1247 | break; | 1247 | break; |
1248 | 1248 | ||
1249 | if (chip->erase_suspended && chip_state == FL_ERASING) { | 1249 | if (chip->erase_suspended && chip_state == FL_ERASING) { |
1250 | /* Erase suspend occured while sleep: reset timeout */ | 1250 | /* Erase suspend occurred while sleep: reset timeout */ |
1251 | timeo = reset_timeo; | 1251 | timeo = reset_timeo; |
1252 | chip->erase_suspended = 0; | 1252 | chip->erase_suspended = 0; |
1253 | } | 1253 | } |
1254 | if (chip->write_suspended && chip_state == FL_WRITING) { | 1254 | if (chip->write_suspended && chip_state == FL_WRITING) { |
1255 | /* Write suspend occured while sleep: reset timeout */ | 1255 | /* Write suspend occurred while sleep: reset timeout */ |
1256 | timeo = reset_timeo; | 1256 | timeo = reset_timeo; |
1257 | chip->write_suspended = 0; | 1257 | chip->write_suspended = 0; |
1258 | } | 1258 | } |
diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c index f9a5331e9445..0b49266840b9 100644 --- a/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c | |||
@@ -263,7 +263,7 @@ static void fixup_old_sst_eraseregion(struct mtd_info *mtd) | |||
263 | struct cfi_private *cfi = map->fldrv_priv; | 263 | struct cfi_private *cfi = map->fldrv_priv; |
264 | 264 | ||
265 | /* | 265 | /* |
266 | * These flashes report two seperate eraseblock regions based on the | 266 | * These flashes report two separate eraseblock regions based on the |
267 | * sector_erase-size and block_erase-size, although they both operate on the | 267 | * sector_erase-size and block_erase-size, although they both operate on the |
268 | * same memory. This is not allowed according to CFI, so we just pick the | 268 | * same memory. This is not allowed according to CFI, so we just pick the |
269 | * sector_erase-size. | 269 | * sector_erase-size. |
@@ -611,8 +611,8 @@ static struct mtd_info *cfi_amdstd_setup(struct mtd_info *mtd) | |||
611 | * | 611 | * |
612 | * Note that anything more complicated than checking if no bits are toggling | 612 | * Note that anything more complicated than checking if no bits are toggling |
613 | * (including checking DQ5 for an error status) is tricky to get working | 613 | * (including checking DQ5 for an error status) is tricky to get working |
614 | * correctly and is therefore not done (particulary with interleaved chips | 614 | * correctly and is therefore not done (particularly with interleaved chips |
615 | * as each chip must be checked independantly of the others). | 615 | * as each chip must be checked independently of the others). |
616 | */ | 616 | */ |
617 | static int __xipram chip_ready(struct map_info *map, unsigned long addr) | 617 | static int __xipram chip_ready(struct map_info *map, unsigned long addr) |
618 | { | 618 | { |
@@ -635,8 +635,8 @@ static int __xipram chip_ready(struct map_info *map, unsigned long addr) | |||
635 | * | 635 | * |
636 | * Note that anything more complicated than checking if no bits are toggling | 636 | * Note that anything more complicated than checking if no bits are toggling |
637 | * (including checking DQ5 for an error status) is tricky to get working | 637 | * (including checking DQ5 for an error status) is tricky to get working |
638 | * correctly and is therefore not done (particulary with interleaved chips | 638 | * correctly and is therefore not done (particularly with interleaved chips |
639 | * as each chip must be checked independantly of the others). | 639 | * as each chip must be checked independently of the others). |
640 | * | 640 | * |
641 | */ | 641 | */ |
642 | static int __xipram chip_good(struct map_info *map, unsigned long addr, map_word expected) | 642 | static int __xipram chip_good(struct map_info *map, unsigned long addr, map_word expected) |
diff --git a/drivers/mtd/chips/cfi_util.c b/drivers/mtd/chips/cfi_util.c index 6ae3d111e1e7..8e464054a631 100644 --- a/drivers/mtd/chips/cfi_util.c +++ b/drivers/mtd/chips/cfi_util.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Common Flash Interface support: | 2 | * Common Flash Interface support: |
3 | * Generic utility functions not dependant on command set | 3 | * Generic utility functions not dependent on command set |
4 | * | 4 | * |
5 | * Copyright (C) 2002 Red Hat | 5 | * Copyright (C) 2002 Red Hat |
6 | * Copyright (C) 2003 STMicroelectronics Limited | 6 | * Copyright (C) 2003 STMicroelectronics Limited |
diff --git a/drivers/mtd/chips/jedec_probe.c b/drivers/mtd/chips/jedec_probe.c index 4e1be51cc122..ea832ea0e4aa 100644 --- a/drivers/mtd/chips/jedec_probe.c +++ b/drivers/mtd/chips/jedec_probe.c | |||
@@ -2075,7 +2075,7 @@ static inline int jedec_match( uint32_t base, | |||
2075 | } | 2075 | } |
2076 | 2076 | ||
2077 | /* | 2077 | /* |
2078 | * Make sure the ID's dissappear when the device is taken out of | 2078 | * Make sure the ID's disappear when the device is taken out of |
2079 | * ID mode. The only time this should fail when it should succeed | 2079 | * ID mode. The only time this should fail when it should succeed |
2080 | * is when the ID's are written as data to the same | 2080 | * is when the ID's are written as data to the same |
2081 | * addresses. For this rare and unfortunate case the chip | 2081 | * addresses. For this rare and unfortunate case the chip |
diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c index f29a6f9df6e7..97183c8c9e33 100644 --- a/drivers/mtd/devices/block2mtd.c +++ b/drivers/mtd/devices/block2mtd.c | |||
@@ -295,7 +295,7 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size) | |||
295 | dev->mtd.owner = THIS_MODULE; | 295 | dev->mtd.owner = THIS_MODULE; |
296 | 296 | ||
297 | if (add_mtd_device(&dev->mtd)) { | 297 | if (add_mtd_device(&dev->mtd)) { |
298 | /* Device didnt get added, so free the entry */ | 298 | /* Device didn't get added, so free the entry */ |
299 | goto devinit_err; | 299 | goto devinit_err; |
300 | } | 300 | } |
301 | list_add(&dev->list, &blkmtd_device_list); | 301 | list_add(&dev->list, &blkmtd_device_list); |
diff --git a/drivers/mtd/devices/doc2001plus.c b/drivers/mtd/devices/doc2001plus.c index 719b2915dc3a..8b36fa77a195 100644 --- a/drivers/mtd/devices/doc2001plus.c +++ b/drivers/mtd/devices/doc2001plus.c | |||
@@ -90,7 +90,7 @@ static inline int DoC_WaitReady(void __iomem * docptr) | |||
90 | return ret; | 90 | return ret; |
91 | } | 91 | } |
92 | 92 | ||
93 | /* For some reason the Millennium Plus seems to occassionally put itself | 93 | /* For some reason the Millennium Plus seems to occasionally put itself |
94 | * into reset mode. For me this happens randomly, with no pattern that I | 94 | * into reset mode. For me this happens randomly, with no pattern that I |
95 | * can detect. M-systems suggest always check this on any block level | 95 | * can detect. M-systems suggest always check this on any block level |
96 | * operation and setting to normal mode if in reset mode. | 96 | * operation and setting to normal mode if in reset mode. |
diff --git a/drivers/mtd/devices/docecc.c b/drivers/mtd/devices/docecc.c index a99838bb2dc0..37ef29a73ee4 100644 --- a/drivers/mtd/devices/docecc.c +++ b/drivers/mtd/devices/docecc.c | |||
@@ -109,7 +109,7 @@ for(ci=(n)-1;ci >=0;ci--)\ | |||
109 | of the integer "alpha_to[i]" with a(0) being the LSB and a(m-1) the MSB. Thus for | 109 | of the integer "alpha_to[i]" with a(0) being the LSB and a(m-1) the MSB. Thus for |
110 | example the polynomial representation of @^5 would be given by the binary | 110 | example the polynomial representation of @^5 would be given by the binary |
111 | representation of the integer "alpha_to[5]". | 111 | representation of the integer "alpha_to[5]". |
112 | Similarily, index_of[] can be used as follows: | 112 | Similarly, index_of[] can be used as follows: |
113 | As above, let @ represent the primitive element of GF(2^m) that is | 113 | As above, let @ represent the primitive element of GF(2^m) that is |
114 | the root of the primitive polynomial p(x). In order to find the power | 114 | the root of the primitive polynomial p(x). In order to find the power |
115 | of @ (alpha) that has the polynomial representation | 115 | of @ (alpha) that has the polynomial representation |
@@ -121,7 +121,7 @@ for(ci=(n)-1;ci >=0;ci--)\ | |||
121 | NOTE: | 121 | NOTE: |
122 | The element alpha_to[2^m-1] = 0 always signifying that the | 122 | The element alpha_to[2^m-1] = 0 always signifying that the |
123 | representation of "@^infinity" = 0 is (0,0,0,...,0). | 123 | representation of "@^infinity" = 0 is (0,0,0,...,0). |
124 | Similarily, the element index_of[0] = A0 always signifying | 124 | Similarly, the element index_of[0] = A0 always signifying |
125 | that the power of alpha which has the polynomial representation | 125 | that the power of alpha which has the polynomial representation |
126 | (0,0,...,0) is "infinity". | 126 | (0,0,...,0) is "infinity". |
127 | 127 | ||
diff --git a/drivers/mtd/devices/lart.c b/drivers/mtd/devices/lart.c index caf604167f03..4b829f97d56c 100644 --- a/drivers/mtd/devices/lart.c +++ b/drivers/mtd/devices/lart.c | |||
@@ -353,7 +353,7 @@ static inline int erase_block (__u32 offset) | |||
353 | /* put the flash back into command mode */ | 353 | /* put the flash back into command mode */ |
354 | write32 (DATA_TO_FLASH (READ_ARRAY),offset); | 354 | write32 (DATA_TO_FLASH (READ_ARRAY),offset); |
355 | 355 | ||
356 | /* was the erase successfull? */ | 356 | /* was the erase successful? */ |
357 | if ((status & STATUS_ERASE_ERR)) | 357 | if ((status & STATUS_ERASE_ERR)) |
358 | { | 358 | { |
359 | printk (KERN_WARNING "%s: erase error at address 0x%.8x.\n",module_name,offset); | 359 | printk (KERN_WARNING "%s: erase error at address 0x%.8x.\n",module_name,offset); |
@@ -508,7 +508,7 @@ static inline int write_dword (__u32 offset,__u32 x) | |||
508 | /* put the flash back into command mode */ | 508 | /* put the flash back into command mode */ |
509 | write32 (DATA_TO_FLASH (READ_ARRAY),offset); | 509 | write32 (DATA_TO_FLASH (READ_ARRAY),offset); |
510 | 510 | ||
511 | /* was the write successfull? */ | 511 | /* was the write successful? */ |
512 | if ((status & STATUS_PGM_ERR) || read32 (offset) != x) | 512 | if ((status & STATUS_PGM_ERR) || read32 (offset) != x) |
513 | { | 513 | { |
514 | printk (KERN_WARNING "%s: write error at address 0x%.8x.\n",module_name,offset); | 514 | printk (KERN_WARNING "%s: write error at address 0x%.8x.\n",module_name,offset); |
diff --git a/drivers/mtd/devices/pmc551.c b/drivers/mtd/devices/pmc551.c index ef0aba0ce58f..41b8cdcc64cb 100644 --- a/drivers/mtd/devices/pmc551.c +++ b/drivers/mtd/devices/pmc551.c | |||
@@ -351,7 +351,7 @@ static int pmc551_write(struct mtd_info *mtd, loff_t to, size_t len, | |||
351 | * Fixup routines for the V370PDC | 351 | * Fixup routines for the V370PDC |
352 | * PCI device ID 0x020011b0 | 352 | * PCI device ID 0x020011b0 |
353 | * | 353 | * |
354 | * This function basicly kick starts the DRAM oboard the card and gets it | 354 | * This function basically kick starts the DRAM oboard the card and gets it |
355 | * ready to be used. Before this is done the device reads VERY erratic, so | 355 | * ready to be used. Before this is done the device reads VERY erratic, so |
356 | * much that it can crash the Linux 2.2.x series kernels when a user cat's | 356 | * much that it can crash the Linux 2.2.x series kernels when a user cat's |
357 | * /proc/pci .. though that is mainly a kernel bug in handling the PCI DEVSEL | 357 | * /proc/pci .. though that is mainly a kernel bug in handling the PCI DEVSEL |
@@ -540,7 +540,7 @@ static u32 fixup_pmc551(struct pci_dev *dev) | |||
540 | 540 | ||
541 | /* | 541 | /* |
542 | * Check to make certain the DEVSEL is set correctly, this device | 542 | * Check to make certain the DEVSEL is set correctly, this device |
543 | * has a tendancy to assert DEVSEL and TRDY when a write is performed | 543 | * has a tendency to assert DEVSEL and TRDY when a write is performed |
544 | * to the memory when memory is read-only | 544 | * to the memory when memory is read-only |
545 | */ | 545 | */ |
546 | if ((cmd & PCI_STATUS_DEVSEL_MASK) != 0x0) { | 546 | if ((cmd & PCI_STATUS_DEVSEL_MASK) != 0x0) { |
diff --git a/drivers/mtd/lpddr/lpddr_cmds.c b/drivers/mtd/lpddr/lpddr_cmds.c index 04fdfcca93f7..12679925b420 100644 --- a/drivers/mtd/lpddr/lpddr_cmds.c +++ b/drivers/mtd/lpddr/lpddr_cmds.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * erase, lock/unlock support for LPDDR flash memories | 3 | * erase, lock/unlock support for LPDDR flash memories |
4 | * (C) 2008 Korolev Alexey <akorolev@infradead.org> | 4 | * (C) 2008 Korolev Alexey <akorolev@infradead.org> |
5 | * (C) 2008 Vasiliy Leonenko <vasiliy.leonenko@gmail.com> | 5 | * (C) 2008 Vasiliy Leonenko <vasiliy.leonenko@gmail.com> |
6 | * Many thanks to Roman Borisov for intial enabling | 6 | * Many thanks to Roman Borisov for initial enabling |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |
9 | * modify it under the terms of the GNU General Public License | 9 | * modify it under the terms of the GNU General Public License |
@@ -171,7 +171,7 @@ static int wait_for_ready(struct map_info *map, struct flchip *chip, | |||
171 | mutex_lock(&chip->mutex); | 171 | mutex_lock(&chip->mutex); |
172 | } | 172 | } |
173 | if (chip->erase_suspended || chip->write_suspended) { | 173 | if (chip->erase_suspended || chip->write_suspended) { |
174 | /* Suspend has occured while sleep: reset timeout */ | 174 | /* Suspend has occurred while sleep: reset timeout */ |
175 | timeo = reset_timeo; | 175 | timeo = reset_timeo; |
176 | chip->erase_suspended = chip->write_suspended = 0; | 176 | chip->erase_suspended = chip->write_suspended = 0; |
177 | } | 177 | } |
diff --git a/drivers/mtd/maps/ceiva.c b/drivers/mtd/maps/ceiva.c index e5f645b775ad..23f551dc8ca8 100644 --- a/drivers/mtd/maps/ceiva.c +++ b/drivers/mtd/maps/ceiva.c | |||
@@ -42,7 +42,7 @@ | |||
42 | * | 42 | * |
43 | * Please note: | 43 | * Please note: |
44 | * 1. The flash size given should be the largest flash size that can | 44 | * 1. The flash size given should be the largest flash size that can |
45 | * be accomodated. | 45 | * be accommodated. |
46 | * | 46 | * |
47 | * 2. The bus width must defined in clps_setup_flash. | 47 | * 2. The bus width must defined in clps_setup_flash. |
48 | * | 48 | * |
@@ -58,7 +58,7 @@ | |||
58 | #define BOOT_PARTITION_SIZE_KiB (16) | 58 | #define BOOT_PARTITION_SIZE_KiB (16) |
59 | #define PARAMS_PARTITION_SIZE_KiB (8) | 59 | #define PARAMS_PARTITION_SIZE_KiB (8) |
60 | #define KERNEL_PARTITION_SIZE_KiB (4*128) | 60 | #define KERNEL_PARTITION_SIZE_KiB (4*128) |
61 | /* Use both remaing portion of first flash, and all of second flash */ | 61 | /* Use both remaining portion of first flash, and all of second flash */ |
62 | #define ROOT_PARTITION_SIZE_KiB (3*128) + (8*128) | 62 | #define ROOT_PARTITION_SIZE_KiB (3*128) + (8*128) |
63 | 63 | ||
64 | static struct mtd_partition ceiva_partitions[] = { | 64 | static struct mtd_partition ceiva_partitions[] = { |
diff --git a/drivers/mtd/maps/cfi_flagadm.c b/drivers/mtd/maps/cfi_flagadm.c index b4ed81611918..f71343cd77cc 100644 --- a/drivers/mtd/maps/cfi_flagadm.c +++ b/drivers/mtd/maps/cfi_flagadm.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | 34 | ||
35 | /* We split the flash chip up into four parts. | 35 | /* We split the flash chip up into four parts. |
36 | * 1: bootloader firts 128k (0x00000000 - 0x0001FFFF) size 0x020000 | 36 | * 1: bootloader first 128k (0x00000000 - 0x0001FFFF) size 0x020000 |
37 | * 2: kernel 640k (0x00020000 - 0x000BFFFF) size 0x0A0000 | 37 | * 2: kernel 640k (0x00020000 - 0x000BFFFF) size 0x0A0000 |
38 | * 3: compressed 1536k root ramdisk (0x000C0000 - 0x0023FFFF) size 0x180000 | 38 | * 3: compressed 1536k root ramdisk (0x000C0000 - 0x0023FFFF) size 0x180000 |
39 | * 4: writeable diskpartition (jffs)(0x00240000 - 0x003FFFFF) size 0x1C0000 | 39 | * 4: writeable diskpartition (jffs)(0x00240000 - 0x003FFFFF) size 0x1C0000 |
diff --git a/drivers/mtd/maps/pcmciamtd.c b/drivers/mtd/maps/pcmciamtd.c index 917022948399..6799e75d74e0 100644 --- a/drivers/mtd/maps/pcmciamtd.c +++ b/drivers/mtd/maps/pcmciamtd.c | |||
@@ -497,7 +497,7 @@ static int pcmciamtd_config(struct pcmcia_device *link) | |||
497 | dev->pcmcia_map.set_vpp = pcmciamtd_set_vpp; | 497 | dev->pcmcia_map.set_vpp = pcmciamtd_set_vpp; |
498 | 498 | ||
499 | /* Request a memory window for PCMCIA. Some architeures can map windows | 499 | /* Request a memory window for PCMCIA. Some architeures can map windows |
500 | * upto the maximum that PCMCIA can support (64MiB) - this is ideal and | 500 | * up to the maximum that PCMCIA can support (64MiB) - this is ideal and |
501 | * we aim for a window the size of the whole card - otherwise we try | 501 | * we aim for a window the size of the whole card - otherwise we try |
502 | * smaller windows until we succeed | 502 | * smaller windows until we succeed |
503 | */ | 503 | */ |
diff --git a/drivers/mtd/maps/pmcmsp-flash.c b/drivers/mtd/maps/pmcmsp-flash.c index acb13fa5001c..64aea6acd48e 100644 --- a/drivers/mtd/maps/pmcmsp-flash.c +++ b/drivers/mtd/maps/pmcmsp-flash.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * Config with both CFI and JEDEC device support. | 3 | * Config with both CFI and JEDEC device support. |
4 | * | 4 | * |
5 | * Basically physmap.c with the addition of partitions and | 5 | * Basically physmap.c with the addition of partitions and |
6 | * an array of mapping info to accomodate more than one flash type per board. | 6 | * an array of mapping info to accommodate more than one flash type per board. |
7 | * | 7 | * |
8 | * Copyright 2005-2007 PMC-Sierra, Inc. | 8 | * Copyright 2005-2007 PMC-Sierra, Inc. |
9 | * | 9 | * |
diff --git a/drivers/mtd/maps/sc520cdp.c b/drivers/mtd/maps/sc520cdp.c index 85c1e56309ec..4d8aaaf4bb76 100644 --- a/drivers/mtd/maps/sc520cdp.c +++ b/drivers/mtd/maps/sc520cdp.c | |||
@@ -197,7 +197,7 @@ static void sc520cdp_setup_par(void) | |||
197 | } | 197 | } |
198 | 198 | ||
199 | /* | 199 | /* |
200 | ** Find the PARxx registers that are reponsible for activating | 200 | ** Find the PARxx registers that are responsible for activating |
201 | ** ROMCS0, ROMCS1 and BOOTCS. Reprogram each of these with a | 201 | ** ROMCS0, ROMCS1 and BOOTCS. Reprogram each of these with a |
202 | ** new value from the table. | 202 | ** new value from the table. |
203 | */ | 203 | */ |
diff --git a/drivers/mtd/maps/tqm8xxl.c b/drivers/mtd/maps/tqm8xxl.c index c08e140d40ed..0718dfb3ee64 100644 --- a/drivers/mtd/maps/tqm8xxl.c +++ b/drivers/mtd/maps/tqm8xxl.c | |||
@@ -63,7 +63,7 @@ static void __iomem *start_scan_addr; | |||
63 | */ | 63 | */ |
64 | 64 | ||
65 | #ifdef CONFIG_MTD_PARTITIONS | 65 | #ifdef CONFIG_MTD_PARTITIONS |
66 | /* Currently, TQM8xxL has upto 8MiB flash */ | 66 | /* Currently, TQM8xxL has up to 8MiB flash */ |
67 | static unsigned long tqm8xxl_max_flash_size = 0x00800000; | 67 | static unsigned long tqm8xxl_max_flash_size = 0x00800000; |
68 | 68 | ||
69 | /* partition definition for first flash bank | 69 | /* partition definition for first flash bank |
diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c index 1e74ad961040..3326615ad66b 100644 --- a/drivers/mtd/mtdblock.c +++ b/drivers/mtd/mtdblock.c | |||
@@ -129,7 +129,7 @@ static int write_cached_data (struct mtdblk_dev *mtdblk) | |||
129 | return ret; | 129 | return ret; |
130 | 130 | ||
131 | /* | 131 | /* |
132 | * Here we could argubly set the cache state to STATE_CLEAN. | 132 | * Here we could arguably set the cache state to STATE_CLEAN. |
133 | * However this could lead to inconsistency since we will not | 133 | * However this could lead to inconsistency since we will not |
134 | * be notified if this content is altered on the flash by other | 134 | * be notified if this content is altered on the flash by other |
135 | * means. Let's declare it empty and leave buffering tasks to | 135 | * means. Let's declare it empty and leave buffering tasks to |
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index 145b3d0dc0db..4c36ef66a46b 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c | |||
@@ -234,7 +234,7 @@ static ssize_t mtd_read(struct file *file, char __user *buf, size_t count,loff_t | |||
234 | * the data. For our userspace tools it is important | 234 | * the data. For our userspace tools it is important |
235 | * to dump areas with ecc errors ! | 235 | * to dump areas with ecc errors ! |
236 | * For kernel internal usage it also might return -EUCLEAN | 236 | * For kernel internal usage it also might return -EUCLEAN |
237 | * to signal the caller that a bitflip has occured and has | 237 | * to signal the caller that a bitflip has occurred and has |
238 | * been corrected by the ECC algorithm. | 238 | * been corrected by the ECC algorithm. |
239 | * Userspace software which accesses NAND this way | 239 | * Userspace software which accesses NAND this way |
240 | * must be aware of the fact that it deals with NAND | 240 | * must be aware of the fact that it deals with NAND |
diff --git a/drivers/mtd/mtdswap.c b/drivers/mtd/mtdswap.c index 237913c5c92c..fed215c4cfa1 100644 --- a/drivers/mtd/mtdswap.c +++ b/drivers/mtd/mtdswap.c | |||
@@ -1452,7 +1452,7 @@ static void mtdswap_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd) | |||
1452 | oinfo = mtd->ecclayout; | 1452 | oinfo = mtd->ecclayout; |
1453 | if (!mtd->oobsize || !oinfo || oinfo->oobavail < MTDSWAP_OOBSIZE) { | 1453 | if (!mtd->oobsize || !oinfo || oinfo->oobavail < MTDSWAP_OOBSIZE) { |
1454 | printk(KERN_ERR "%s: Not enough free bytes in OOB, " | 1454 | printk(KERN_ERR "%s: Not enough free bytes in OOB, " |
1455 | "%d available, %lu needed.\n", | 1455 | "%d available, %zu needed.\n", |
1456 | MTDSWAP_PREFIX, oinfo->oobavail, MTDSWAP_OOBSIZE); | 1456 | MTDSWAP_PREFIX, oinfo->oobavail, MTDSWAP_OOBSIZE); |
1457 | return; | 1457 | return; |
1458 | } | 1458 | } |
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig index a92054e945e1..edec457d361d 100644 --- a/drivers/mtd/nand/Kconfig +++ b/drivers/mtd/nand/Kconfig | |||
@@ -239,7 +239,7 @@ config MTD_NAND_BCM_UMI | |||
239 | help | 239 | help |
240 | This enables the NAND flash controller on the BCM UMI block. | 240 | This enables the NAND flash controller on the BCM UMI block. |
241 | 241 | ||
242 | No board specfic support is done by this driver, each board | 242 | No board specific support is done by this driver, each board |
243 | must advertise a platform_device for the driver to attach. | 243 | must advertise a platform_device for the driver to attach. |
244 | 244 | ||
245 | config MTD_NAND_BCM_UMI_HWCS | 245 | config MTD_NAND_BCM_UMI_HWCS |
diff --git a/drivers/mtd/nand/ams-delta.c b/drivers/mtd/nand/ams-delta.c index a067d090cb31..bc65bf71e1a2 100644 --- a/drivers/mtd/nand/ams-delta.c +++ b/drivers/mtd/nand/ams-delta.c | |||
@@ -228,7 +228,7 @@ static int __devinit ams_delta_init(struct platform_device *pdev) | |||
228 | AMS_DELTA_LATCH2_NAND_NCE | | 228 | AMS_DELTA_LATCH2_NAND_NCE | |
229 | AMS_DELTA_LATCH2_NAND_NWP); | 229 | AMS_DELTA_LATCH2_NAND_NWP); |
230 | 230 | ||
231 | /* Scan to find existance of the device */ | 231 | /* Scan to find existence of the device */ |
232 | if (nand_scan(ams_delta_mtd, 1)) { | 232 | if (nand_scan(ams_delta_mtd, 1)) { |
233 | err = -ENXIO; | 233 | err = -ENXIO; |
234 | goto out_mtd; | 234 | goto out_mtd; |
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c index 6fae04b3fc6d..950646aa4c4b 100644 --- a/drivers/mtd/nand/atmel_nand.c +++ b/drivers/mtd/nand/atmel_nand.c | |||
@@ -209,22 +209,8 @@ static int atmel_nand_dma_op(struct mtd_info *mtd, void *buf, int len, | |||
209 | int err = -EIO; | 209 | int err = -EIO; |
210 | enum dma_data_direction dir = is_read ? DMA_FROM_DEVICE : DMA_TO_DEVICE; | 210 | enum dma_data_direction dir = is_read ? DMA_FROM_DEVICE : DMA_TO_DEVICE; |
211 | 211 | ||
212 | if (buf >= high_memory) { | 212 | if (buf >= high_memory) |
213 | struct page *pg; | 213 | goto err_buf; |
214 | |||
215 | if (((size_t)buf & PAGE_MASK) != | ||
216 | ((size_t)(buf + len - 1) & PAGE_MASK)) { | ||
217 | dev_warn(host->dev, "Buffer not fit in one page\n"); | ||
218 | goto err_buf; | ||
219 | } | ||
220 | |||
221 | pg = vmalloc_to_page(buf); | ||
222 | if (pg == 0) { | ||
223 | dev_err(host->dev, "Failed to vmalloc_to_page\n"); | ||
224 | goto err_buf; | ||
225 | } | ||
226 | p = page_address(pg) + ((size_t)buf & ~PAGE_MASK); | ||
227 | } | ||
228 | 214 | ||
229 | dma_dev = host->dma_chan->device; | 215 | dma_dev = host->dma_chan->device; |
230 | 216 | ||
@@ -280,7 +266,8 @@ static void atmel_read_buf(struct mtd_info *mtd, u8 *buf, int len) | |||
280 | struct nand_chip *chip = mtd->priv; | 266 | struct nand_chip *chip = mtd->priv; |
281 | struct atmel_nand_host *host = chip->priv; | 267 | struct atmel_nand_host *host = chip->priv; |
282 | 268 | ||
283 | if (use_dma && len >= mtd->oobsize) | 269 | if (use_dma && len > mtd->oobsize) |
270 | /* only use DMA for bigger than oob size: better performances */ | ||
284 | if (atmel_nand_dma_op(mtd, buf, len, 1) == 0) | 271 | if (atmel_nand_dma_op(mtd, buf, len, 1) == 0) |
285 | return; | 272 | return; |
286 | 273 | ||
@@ -295,7 +282,8 @@ static void atmel_write_buf(struct mtd_info *mtd, const u8 *buf, int len) | |||
295 | struct nand_chip *chip = mtd->priv; | 282 | struct nand_chip *chip = mtd->priv; |
296 | struct atmel_nand_host *host = chip->priv; | 283 | struct atmel_nand_host *host = chip->priv; |
297 | 284 | ||
298 | if (use_dma && len >= mtd->oobsize) | 285 | if (use_dma && len > mtd->oobsize) |
286 | /* only use DMA for bigger than oob size: better performances */ | ||
299 | if (atmel_nand_dma_op(mtd, (void *)buf, len, 0) == 0) | 287 | if (atmel_nand_dma_op(mtd, (void *)buf, len, 0) == 0) |
300 | return; | 288 | return; |
301 | 289 | ||
@@ -599,7 +587,10 @@ static int __init atmel_nand_probe(struct platform_device *pdev) | |||
599 | nand_chip->options |= NAND_USE_FLASH_BBT; | 587 | nand_chip->options |= NAND_USE_FLASH_BBT; |
600 | } | 588 | } |
601 | 589 | ||
602 | if (cpu_has_dma() && use_dma) { | 590 | if (!cpu_has_dma()) |
591 | use_dma = 0; | ||
592 | |||
593 | if (use_dma) { | ||
603 | dma_cap_mask_t mask; | 594 | dma_cap_mask_t mask; |
604 | 595 | ||
605 | dma_cap_zero(mask); | 596 | dma_cap_zero(mask); |
@@ -611,7 +602,8 @@ static int __init atmel_nand_probe(struct platform_device *pdev) | |||
611 | } | 602 | } |
612 | } | 603 | } |
613 | if (use_dma) | 604 | if (use_dma) |
614 | dev_info(host->dev, "Using DMA for NAND access.\n"); | 605 | dev_info(host->dev, "Using %s for DMA transfers.\n", |
606 | dma_chan_name(host->dma_chan)); | ||
615 | else | 607 | else |
616 | dev_info(host->dev, "No DMA support for NAND access.\n"); | 608 | dev_info(host->dev, "No DMA support for NAND access.\n"); |
617 | 609 | ||
diff --git a/drivers/mtd/nand/autcpu12.c b/drivers/mtd/nand/autcpu12.c index 7c95da1f612c..0911cf03db80 100644 --- a/drivers/mtd/nand/autcpu12.c +++ b/drivers/mtd/nand/autcpu12.c | |||
@@ -176,7 +176,7 @@ static int __init autcpu12_init(void) | |||
176 | */ | 176 | */ |
177 | this->options = NAND_USE_FLASH_BBT; | 177 | this->options = NAND_USE_FLASH_BBT; |
178 | 178 | ||
179 | /* Scan to find existance of the device */ | 179 | /* Scan to find existence of the device */ |
180 | if (nand_scan(autcpu12_mtd, 1)) { | 180 | if (nand_scan(autcpu12_mtd, 1)) { |
181 | err = -ENXIO; | 181 | err = -ENXIO; |
182 | goto out_ior; | 182 | goto out_ior; |
diff --git a/drivers/mtd/nand/cs553x_nand.c b/drivers/mtd/nand/cs553x_nand.c index 9f1b451005ca..71c35a0b9826 100644 --- a/drivers/mtd/nand/cs553x_nand.c +++ b/drivers/mtd/nand/cs553x_nand.c | |||
@@ -241,7 +241,7 @@ static int __init cs553x_init_one(int cs, int mmio, unsigned long adr) | |||
241 | /* Enable the following for a flash based bad block table */ | 241 | /* Enable the following for a flash based bad block table */ |
242 | this->options = NAND_USE_FLASH_BBT | NAND_NO_AUTOINCR; | 242 | this->options = NAND_USE_FLASH_BBT | NAND_NO_AUTOINCR; |
243 | 243 | ||
244 | /* Scan to find existance of the device */ | 244 | /* Scan to find existence of the device */ |
245 | if (nand_scan(new_mtd, 1)) { | 245 | if (nand_scan(new_mtd, 1)) { |
246 | err = -ENXIO; | 246 | err = -ENXIO; |
247 | goto out_ior; | 247 | goto out_ior; |
diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c index 8c8d3c86c0e8..4633f094c510 100644 --- a/drivers/mtd/nand/denali.c +++ b/drivers/mtd/nand/denali.c | |||
@@ -724,7 +724,7 @@ static uint32_t wait_for_irq(struct denali_nand_info *denali, uint32_t irq_mask) | |||
724 | } | 724 | } |
725 | 725 | ||
726 | /* This helper function setups the registers for ECC and whether or not | 726 | /* This helper function setups the registers for ECC and whether or not |
727 | * the spare area will be transfered. */ | 727 | * the spare area will be transferred. */ |
728 | static void setup_ecc_for_xfer(struct denali_nand_info *denali, bool ecc_en, | 728 | static void setup_ecc_for_xfer(struct denali_nand_info *denali, bool ecc_en, |
729 | bool transfer_spare) | 729 | bool transfer_spare) |
730 | { | 730 | { |
@@ -965,7 +965,7 @@ static bool handle_ecc(struct denali_nand_info *denali, uint8_t *buf, | |||
965 | 965 | ||
966 | if (ECC_ERROR_CORRECTABLE(err_correction_info)) { | 966 | if (ECC_ERROR_CORRECTABLE(err_correction_info)) { |
967 | /* If err_byte is larger than ECC_SECTOR_SIZE, | 967 | /* If err_byte is larger than ECC_SECTOR_SIZE, |
968 | * means error happend in OOB, so we ignore | 968 | * means error happened in OOB, so we ignore |
969 | * it. It's no need for us to correct it | 969 | * it. It's no need for us to correct it |
970 | * err_device is represented the NAND error | 970 | * err_device is represented the NAND error |
971 | * bits are happened in if there are more | 971 | * bits are happened in if there are more |
@@ -1109,7 +1109,7 @@ static void denali_write_page(struct mtd_info *mtd, struct nand_chip *chip, | |||
1109 | } | 1109 | } |
1110 | 1110 | ||
1111 | /* This is the callback that the NAND core calls to write a page without ECC. | 1111 | /* This is the callback that the NAND core calls to write a page without ECC. |
1112 | * raw access is similiar to ECC page writes, so all the work is done in the | 1112 | * raw access is similar to ECC page writes, so all the work is done in the |
1113 | * write_page() function above. | 1113 | * write_page() function above. |
1114 | */ | 1114 | */ |
1115 | static void denali_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip, | 1115 | static void denali_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip, |
diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c index b7f8de7b2780..96c0b34ba8db 100644 --- a/drivers/mtd/nand/diskonchip.c +++ b/drivers/mtd/nand/diskonchip.c | |||
@@ -137,7 +137,7 @@ static struct rs_control *rs_decoder; | |||
137 | * | 137 | * |
138 | * Fabrice Bellard figured this out in the old docecc code. I added | 138 | * Fabrice Bellard figured this out in the old docecc code. I added |
139 | * some comments, improved a minor bit and converted it to make use | 139 | * some comments, improved a minor bit and converted it to make use |
140 | * of the generic Reed-Solomon libary. tglx | 140 | * of the generic Reed-Solomon library. tglx |
141 | */ | 141 | */ |
142 | static int doc_ecc_decode(struct rs_control *rs, uint8_t *data, uint8_t *ecc) | 142 | static int doc_ecc_decode(struct rs_control *rs, uint8_t *data, uint8_t *ecc) |
143 | { | 143 | { |
@@ -400,7 +400,7 @@ static uint16_t __init doc200x_ident_chip(struct mtd_info *mtd, int nr) | |||
400 | doc200x_hwcontrol(mtd, 0, NAND_CTRL_ALE | NAND_CTRL_CHANGE); | 400 | doc200x_hwcontrol(mtd, 0, NAND_CTRL_ALE | NAND_CTRL_CHANGE); |
401 | doc200x_hwcontrol(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE); | 401 | doc200x_hwcontrol(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE); |
402 | 402 | ||
403 | /* We cant' use dev_ready here, but at least we wait for the | 403 | /* We can't' use dev_ready here, but at least we wait for the |
404 | * command to complete | 404 | * command to complete |
405 | */ | 405 | */ |
406 | udelay(50); | 406 | udelay(50); |
@@ -986,7 +986,7 @@ static int doc200x_correct_data(struct mtd_info *mtd, u_char *dat, | |||
986 | dummy = ReadDOC(docptr, ECCConf); | 986 | dummy = ReadDOC(docptr, ECCConf); |
987 | } | 987 | } |
988 | 988 | ||
989 | /* Error occured ? */ | 989 | /* Error occurred ? */ |
990 | if (dummy & 0x80) { | 990 | if (dummy & 0x80) { |
991 | for (i = 0; i < 6; i++) { | 991 | for (i = 0; i < 6; i++) { |
992 | if (DoC_is_MillenniumPlus(doc)) | 992 | if (DoC_is_MillenniumPlus(doc)) |
@@ -1160,7 +1160,7 @@ static inline int __init nftl_partscan(struct mtd_info *mtd, struct mtd_partitio | |||
1160 | /* NOTE: The lines below modify internal variables of the NAND and MTD | 1160 | /* NOTE: The lines below modify internal variables of the NAND and MTD |
1161 | layers; variables with have already been configured by nand_scan. | 1161 | layers; variables with have already been configured by nand_scan. |
1162 | Unfortunately, we didn't know before this point what these values | 1162 | Unfortunately, we didn't know before this point what these values |
1163 | should be. Thus, this code is somewhat dependant on the exact | 1163 | should be. Thus, this code is somewhat dependent on the exact |
1164 | implementation of the NAND layer. */ | 1164 | implementation of the NAND layer. */ |
1165 | if (mh->UnitSizeFactor != 0xff) { | 1165 | if (mh->UnitSizeFactor != 0xff) { |
1166 | this->bbt_erase_shift += (0xff - mh->UnitSizeFactor); | 1166 | this->bbt_erase_shift += (0xff - mh->UnitSizeFactor); |
diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c index 7a13d42cbabd..537e380b8dcb 100644 --- a/drivers/mtd/nand/fsl_elbc_nand.c +++ b/drivers/mtd/nand/fsl_elbc_nand.c | |||
@@ -59,7 +59,7 @@ struct fsl_elbc_mtd { | |||
59 | unsigned int fmr; /* FCM Flash Mode Register value */ | 59 | unsigned int fmr; /* FCM Flash Mode Register value */ |
60 | }; | 60 | }; |
61 | 61 | ||
62 | /* Freescale eLBC FCM controller infomation */ | 62 | /* Freescale eLBC FCM controller information */ |
63 | 63 | ||
64 | struct fsl_elbc_fcm_ctrl { | 64 | struct fsl_elbc_fcm_ctrl { |
65 | struct nand_hw_control controller; | 65 | struct nand_hw_control controller; |
diff --git a/drivers/mtd/nand/fsmc_nand.c b/drivers/mtd/nand/fsmc_nand.c index 205b10b9f9b9..0d45ef3883e8 100644 --- a/drivers/mtd/nand/fsmc_nand.c +++ b/drivers/mtd/nand/fsmc_nand.c | |||
@@ -335,7 +335,7 @@ static void fsmc_enable_hwecc(struct mtd_info *mtd, int mode) | |||
335 | 335 | ||
336 | /* | 336 | /* |
337 | * fsmc_read_hwecc_ecc4 - Hardware ECC calculator for ecc4 option supported by | 337 | * fsmc_read_hwecc_ecc4 - Hardware ECC calculator for ecc4 option supported by |
338 | * FSMC. ECC is 13 bytes for 512 bytes of data (supports error correction upto | 338 | * FSMC. ECC is 13 bytes for 512 bytes of data (supports error correction up to |
339 | * max of 8-bits) | 339 | * max of 8-bits) |
340 | */ | 340 | */ |
341 | static int fsmc_read_hwecc_ecc4(struct mtd_info *mtd, const uint8_t *data, | 341 | static int fsmc_read_hwecc_ecc4(struct mtd_info *mtd, const uint8_t *data, |
@@ -381,7 +381,7 @@ static int fsmc_read_hwecc_ecc4(struct mtd_info *mtd, const uint8_t *data, | |||
381 | 381 | ||
382 | /* | 382 | /* |
383 | * fsmc_read_hwecc_ecc1 - Hardware ECC calculator for ecc1 option supported by | 383 | * fsmc_read_hwecc_ecc1 - Hardware ECC calculator for ecc1 option supported by |
384 | * FSMC. ECC is 3 bytes for 512 bytes of data (supports error correction upto | 384 | * FSMC. ECC is 3 bytes for 512 bytes of data (supports error correction up to |
385 | * max of 1-bit) | 385 | * max of 1-bit) |
386 | */ | 386 | */ |
387 | static int fsmc_read_hwecc_ecc1(struct mtd_info *mtd, const uint8_t *data, | 387 | static int fsmc_read_hwecc_ecc1(struct mtd_info *mtd, const uint8_t *data, |
@@ -408,10 +408,10 @@ static int fsmc_read_hwecc_ecc1(struct mtd_info *mtd, const uint8_t *data, | |||
408 | * @buf: buffer to store read data | 408 | * @buf: buffer to store read data |
409 | * @page: page number to read | 409 | * @page: page number to read |
410 | * | 410 | * |
411 | * This routine is needed for fsmc verison 8 as reading from NAND chip has to be | 411 | * This routine is needed for fsmc version 8 as reading from NAND chip has to be |
412 | * performed in a strict sequence as follows: | 412 | * performed in a strict sequence as follows: |
413 | * data(512 byte) -> ecc(13 byte) | 413 | * data(512 byte) -> ecc(13 byte) |
414 | * After this read, fsmc hardware generates and reports error data bits(upto a | 414 | * After this read, fsmc hardware generates and reports error data bits(up to a |
415 | * max of 8 bits) | 415 | * max of 8 bits) |
416 | */ | 416 | */ |
417 | static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, | 417 | static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, |
@@ -686,7 +686,7 @@ static int __init fsmc_nand_probe(struct platform_device *pdev) | |||
686 | } | 686 | } |
687 | 687 | ||
688 | /* | 688 | /* |
689 | * Scan to find existance of the device | 689 | * Scan to find existence of the device |
690 | */ | 690 | */ |
691 | if (nand_scan_ident(&host->mtd, 1, NULL)) { | 691 | if (nand_scan_ident(&host->mtd, 1, NULL)) { |
692 | ret = -ENXIO; | 692 | ret = -ENXIO; |
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 85cfc061d41c..c54a4cbac6bc 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c | |||
@@ -1582,7 +1582,7 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from, | |||
1582 | } | 1582 | } |
1583 | 1583 | ||
1584 | /** | 1584 | /** |
1585 | * nand_read - [MTD Interface] MTD compability function for nand_do_read_ecc | 1585 | * nand_read - [MTD Interface] MTD compatibility function for nand_do_read_ecc |
1586 | * @mtd: MTD device structure | 1586 | * @mtd: MTD device structure |
1587 | * @from: offset to read from | 1587 | * @from: offset to read from |
1588 | * @len: number of bytes to read | 1588 | * @len: number of bytes to read |
diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c index a1e8b30078d9..af46428286fe 100644 --- a/drivers/mtd/nand/nand_bbt.c +++ b/drivers/mtd/nand/nand_bbt.c | |||
@@ -945,7 +945,7 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc | |||
945 | rd2 = NULL; | 945 | rd2 = NULL; |
946 | /* Per chip or per device ? */ | 946 | /* Per chip or per device ? */ |
947 | chipsel = (td->options & NAND_BBT_PERCHIP) ? i : -1; | 947 | chipsel = (td->options & NAND_BBT_PERCHIP) ? i : -1; |
948 | /* Mirrored table avilable ? */ | 948 | /* Mirrored table available ? */ |
949 | if (md) { | 949 | if (md) { |
950 | if (td->pages[i] == -1 && md->pages[i] == -1) { | 950 | if (td->pages[i] == -1 && md->pages[i] == -1) { |
951 | writeops = 0x03; | 951 | writeops = 0x03; |
diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c index 213181be0d9a..893d95bfea48 100644 --- a/drivers/mtd/nand/nandsim.c +++ b/drivers/mtd/nand/nandsim.c | |||
@@ -162,7 +162,7 @@ MODULE_PARM_DESC(bitflips, "Maximum number of random bit flips per page (z | |||
162 | MODULE_PARM_DESC(gravepages, "Pages that lose data [: maximum reads (defaults to 3)]" | 162 | MODULE_PARM_DESC(gravepages, "Pages that lose data [: maximum reads (defaults to 3)]" |
163 | " separated by commas e.g. 1401:2 means page 1401" | 163 | " separated by commas e.g. 1401:2 means page 1401" |
164 | " can be read only twice before failing"); | 164 | " can be read only twice before failing"); |
165 | MODULE_PARM_DESC(rptwear, "Number of erases inbetween reporting wear, if not zero"); | 165 | MODULE_PARM_DESC(rptwear, "Number of erases between reporting wear, if not zero"); |
166 | MODULE_PARM_DESC(overridesize, "Specifies the NAND Flash size overriding the ID bytes. " | 166 | MODULE_PARM_DESC(overridesize, "Specifies the NAND Flash size overriding the ID bytes. " |
167 | "The size is specified in erase blocks and as the exponent of a power of two" | 167 | "The size is specified in erase blocks and as the exponent of a power of two" |
168 | " e.g. 5 means a size of 32 erase blocks"); | 168 | " e.g. 5 means a size of 32 erase blocks"); |
diff --git a/drivers/mtd/nand/nomadik_nand.c b/drivers/mtd/nand/nomadik_nand.c index 8c0b69375224..a045a4a581b6 100644 --- a/drivers/mtd/nand/nomadik_nand.c +++ b/drivers/mtd/nand/nomadik_nand.c | |||
@@ -151,7 +151,7 @@ static int nomadik_nand_probe(struct platform_device *pdev) | |||
151 | nand->options = pdata->options; | 151 | nand->options = pdata->options; |
152 | 152 | ||
153 | /* | 153 | /* |
154 | * Scan to find existance of the device | 154 | * Scan to find existence of the device |
155 | */ | 155 | */ |
156 | if (nand_scan(&host->mtd, 1)) { | 156 | if (nand_scan(&host->mtd, 1)) { |
157 | ret = -ENXIO; | 157 | ret = -ENXIO; |
diff --git a/drivers/mtd/nand/pasemi_nand.c b/drivers/mtd/nand/pasemi_nand.c index 59efa829ef24..20bfe5f15afd 100644 --- a/drivers/mtd/nand/pasemi_nand.c +++ b/drivers/mtd/nand/pasemi_nand.c | |||
@@ -157,7 +157,7 @@ static int __devinit pasemi_nand_probe(struct platform_device *ofdev) | |||
157 | /* Enable the following for a flash based bad block table */ | 157 | /* Enable the following for a flash based bad block table */ |
158 | chip->options = NAND_USE_FLASH_BBT | NAND_NO_AUTOINCR; | 158 | chip->options = NAND_USE_FLASH_BBT | NAND_NO_AUTOINCR; |
159 | 159 | ||
160 | /* Scan to find existance of the device */ | 160 | /* Scan to find existence of the device */ |
161 | if (nand_scan(pasemi_nand_mtd, 1)) { | 161 | if (nand_scan(pasemi_nand_mtd, 1)) { |
162 | err = -ENXIO; | 162 | err = -ENXIO; |
163 | goto out_lpc; | 163 | goto out_lpc; |
diff --git a/drivers/mtd/nand/plat_nand.c b/drivers/mtd/nand/plat_nand.c index 317aff428e42..caf5a736340a 100644 --- a/drivers/mtd/nand/plat_nand.c +++ b/drivers/mtd/nand/plat_nand.c | |||
@@ -95,7 +95,7 @@ static int __devinit plat_nand_probe(struct platform_device *pdev) | |||
95 | goto out; | 95 | goto out; |
96 | } | 96 | } |
97 | 97 | ||
98 | /* Scan to find existance of the device */ | 98 | /* Scan to find existence of the device */ |
99 | if (nand_scan(&data->mtd, pdata->chip.nr_chips)) { | 99 | if (nand_scan(&data->mtd, pdata->chip.nr_chips)) { |
100 | err = -ENXIO; | 100 | err = -ENXIO; |
101 | goto out; | 101 | goto out; |
diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c index ab7f4c33ced6..ff0701276d65 100644 --- a/drivers/mtd/nand/pxa3xx_nand.c +++ b/drivers/mtd/nand/pxa3xx_nand.c | |||
@@ -184,7 +184,7 @@ struct pxa3xx_nand_info { | |||
184 | 184 | ||
185 | static int use_dma = 1; | 185 | static int use_dma = 1; |
186 | module_param(use_dma, bool, 0444); | 186 | module_param(use_dma, bool, 0444); |
187 | MODULE_PARM_DESC(use_dma, "enable DMA for data transfering to/from NAND HW"); | 187 | MODULE_PARM_DESC(use_dma, "enable DMA for data transferring to/from NAND HW"); |
188 | 188 | ||
189 | /* | 189 | /* |
190 | * Default NAND flash controller configuration setup by the | 190 | * Default NAND flash controller configuration setup by the |
diff --git a/drivers/mtd/nand/r852.c b/drivers/mtd/nand/r852.c index 6322d1fb5d62..cae2e013c986 100644 --- a/drivers/mtd/nand/r852.c +++ b/drivers/mtd/nand/r852.c | |||
@@ -185,7 +185,7 @@ static void r852_do_dma(struct r852_device *dev, uint8_t *buf, int do_read) | |||
185 | 185 | ||
186 | dbg_verbose("doing dma %s ", do_read ? "read" : "write"); | 186 | dbg_verbose("doing dma %s ", do_read ? "read" : "write"); |
187 | 187 | ||
188 | /* Set intial dma state: for reading first fill on board buffer, | 188 | /* Set initial dma state: for reading first fill on board buffer, |
189 | from device, for writes first fill the buffer from memory*/ | 189 | from device, for writes first fill the buffer from memory*/ |
190 | dev->dma_state = do_read ? DMA_INTERNAL : DMA_MEMORY; | 190 | dev->dma_state = do_read ? DMA_INTERNAL : DMA_MEMORY; |
191 | 191 | ||
@@ -766,7 +766,7 @@ static irqreturn_t r852_irq(int irq, void *data) | |||
766 | ret = IRQ_HANDLED; | 766 | ret = IRQ_HANDLED; |
767 | dev->card_detected = !!(card_status & R852_CARD_IRQ_INSERT); | 767 | dev->card_detected = !!(card_status & R852_CARD_IRQ_INSERT); |
768 | 768 | ||
769 | /* we shouldn't recieve any interrupts if we wait for card | 769 | /* we shouldn't receive any interrupts if we wait for card |
770 | to settle */ | 770 | to settle */ |
771 | WARN_ON(dev->card_unstable); | 771 | WARN_ON(dev->card_unstable); |
772 | 772 | ||
@@ -794,13 +794,13 @@ static irqreturn_t r852_irq(int irq, void *data) | |||
794 | ret = IRQ_HANDLED; | 794 | ret = IRQ_HANDLED; |
795 | 795 | ||
796 | if (dma_status & R852_DMA_IRQ_ERROR) { | 796 | if (dma_status & R852_DMA_IRQ_ERROR) { |
797 | dbg("recieved dma error IRQ"); | 797 | dbg("received dma error IRQ"); |
798 | r852_dma_done(dev, -EIO); | 798 | r852_dma_done(dev, -EIO); |
799 | complete(&dev->dma_done); | 799 | complete(&dev->dma_done); |
800 | goto out; | 800 | goto out; |
801 | } | 801 | } |
802 | 802 | ||
803 | /* recieved DMA interrupt out of nowhere? */ | 803 | /* received DMA interrupt out of nowhere? */ |
804 | WARN_ON_ONCE(dev->dma_stage == 0); | 804 | WARN_ON_ONCE(dev->dma_stage == 0); |
805 | 805 | ||
806 | if (dev->dma_stage == 0) | 806 | if (dev->dma_stage == 0) |
@@ -960,7 +960,7 @@ int r852_probe(struct pci_dev *pci_dev, const struct pci_device_id *id) | |||
960 | &dev->card_detect_work, 0); | 960 | &dev->card_detect_work, 0); |
961 | 961 | ||
962 | 962 | ||
963 | printk(KERN_NOTICE DRV_NAME ": driver loaded succesfully\n"); | 963 | printk(KERN_NOTICE DRV_NAME ": driver loaded successfully\n"); |
964 | return 0; | 964 | return 0; |
965 | 965 | ||
966 | error10: | 966 | error10: |
diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c index 546c2f0eb2e8..81bbb5ee148d 100644 --- a/drivers/mtd/nand/sh_flctl.c +++ b/drivers/mtd/nand/sh_flctl.c | |||
@@ -78,7 +78,7 @@ static void start_translation(struct sh_flctl *flctl) | |||
78 | 78 | ||
79 | static void timeout_error(struct sh_flctl *flctl, const char *str) | 79 | static void timeout_error(struct sh_flctl *flctl, const char *str) |
80 | { | 80 | { |
81 | dev_err(&flctl->pdev->dev, "Timeout occured in %s\n", str); | 81 | dev_err(&flctl->pdev->dev, "Timeout occurred in %s\n", str); |
82 | } | 82 | } |
83 | 83 | ||
84 | static void wait_completion(struct sh_flctl *flctl) | 84 | static void wait_completion(struct sh_flctl *flctl) |
diff --git a/drivers/mtd/nand/sm_common.c b/drivers/mtd/nand/sm_common.c index 4a8f367c295c..57cc80cd01a3 100644 --- a/drivers/mtd/nand/sm_common.c +++ b/drivers/mtd/nand/sm_common.c | |||
@@ -121,7 +121,7 @@ int sm_register_device(struct mtd_info *mtd, int smartmedia) | |||
121 | if (ret) | 121 | if (ret) |
122 | return ret; | 122 | return ret; |
123 | 123 | ||
124 | /* Bad block marker postion */ | 124 | /* Bad block marker position */ |
125 | chip->badblockpos = 0x05; | 125 | chip->badblockpos = 0x05; |
126 | chip->badblockbits = 7; | 126 | chip->badblockbits = 7; |
127 | chip->block_markbad = sm_block_markbad; | 127 | chip->block_markbad = sm_block_markbad; |
diff --git a/drivers/mtd/nand/tmio_nand.c b/drivers/mtd/nand/tmio_nand.c index 38fb16771f85..14c578707824 100644 --- a/drivers/mtd/nand/tmio_nand.c +++ b/drivers/mtd/nand/tmio_nand.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Slightly murky pre-git history of the driver: | 4 | * Slightly murky pre-git history of the driver: |
5 | * | 5 | * |
6 | * Copyright (c) Ian Molton 2004, 2005, 2008 | 6 | * Copyright (c) Ian Molton 2004, 2005, 2008 |
7 | * Original work, independant of sharps code. Included hardware ECC support. | 7 | * Original work, independent of sharps code. Included hardware ECC support. |
8 | * Hard ECC did not work for writes in the early revisions. | 8 | * Hard ECC did not work for writes in the early revisions. |
9 | * Copyright (c) Dirk Opfer 2005. | 9 | * Copyright (c) Dirk Opfer 2005. |
10 | * Modifications developed from sharps code but | 10 | * Modifications developed from sharps code but |
diff --git a/drivers/mtd/onenand/omap2.c b/drivers/mtd/onenand/omap2.c index f591f615d3f6..1fcb41adab07 100644 --- a/drivers/mtd/onenand/omap2.c +++ b/drivers/mtd/onenand/omap2.c | |||
@@ -608,7 +608,7 @@ static int omap2_onenand_enable(struct mtd_info *mtd) | |||
608 | 608 | ||
609 | ret = regulator_enable(c->regulator); | 609 | ret = regulator_enable(c->regulator); |
610 | if (ret != 0) | 610 | if (ret != 0) |
611 | dev_err(&c->pdev->dev, "cant enable regulator\n"); | 611 | dev_err(&c->pdev->dev, "can't enable regulator\n"); |
612 | 612 | ||
613 | return ret; | 613 | return ret; |
614 | } | 614 | } |
@@ -620,7 +620,7 @@ static int omap2_onenand_disable(struct mtd_info *mtd) | |||
620 | 620 | ||
621 | ret = regulator_disable(c->regulator); | 621 | ret = regulator_disable(c->regulator); |
622 | if (ret != 0) | 622 | if (ret != 0) |
623 | dev_err(&c->pdev->dev, "cant disable regulator\n"); | 623 | dev_err(&c->pdev->dev, "can't disable regulator\n"); |
624 | 624 | ||
625 | return ret; | 625 | return ret; |
626 | } | 626 | } |
diff --git a/drivers/mtd/onenand/onenand_sim.c b/drivers/mtd/onenand/onenand_sim.c index 8b246061d511..5ef3bd547772 100644 --- a/drivers/mtd/onenand/onenand_sim.c +++ b/drivers/mtd/onenand/onenand_sim.c | |||
@@ -321,7 +321,7 @@ static void onenand_data_handle(struct onenand_chip *this, int cmd, | |||
321 | continue; | 321 | continue; |
322 | if (memcmp(dest + off, ffchars, this->subpagesize) && | 322 | if (memcmp(dest + off, ffchars, this->subpagesize) && |
323 | onenand_check_overwrite(dest + off, src + off, this->subpagesize)) | 323 | onenand_check_overwrite(dest + off, src + off, this->subpagesize)) |
324 | printk(KERN_ERR "over-write happend at 0x%08x\n", offset); | 324 | printk(KERN_ERR "over-write happened at 0x%08x\n", offset); |
325 | memcpy(dest + off, src + off, this->subpagesize); | 325 | memcpy(dest + off, src + off, this->subpagesize); |
326 | } | 326 | } |
327 | /* Fall through */ | 327 | /* Fall through */ |
@@ -335,7 +335,7 @@ static void onenand_data_handle(struct onenand_chip *this, int cmd, | |||
335 | dest = ONENAND_CORE_SPARE(flash, this, offset); | 335 | dest = ONENAND_CORE_SPARE(flash, this, offset); |
336 | if (memcmp(dest, ffchars, mtd->oobsize) && | 336 | if (memcmp(dest, ffchars, mtd->oobsize) && |
337 | onenand_check_overwrite(dest, src, mtd->oobsize)) | 337 | onenand_check_overwrite(dest, src, mtd->oobsize)) |
338 | printk(KERN_ERR "OOB: over-write happend at 0x%08x\n", | 338 | printk(KERN_ERR "OOB: over-write happened at 0x%08x\n", |
339 | offset); | 339 | offset); |
340 | memcpy(dest, src, mtd->oobsize); | 340 | memcpy(dest, src, mtd->oobsize); |
341 | break; | 341 | break; |
diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c index 2b0daae4018d..ed3d6cd2c6dc 100644 --- a/drivers/mtd/sm_ftl.c +++ b/drivers/mtd/sm_ftl.c | |||
@@ -540,7 +540,7 @@ static int sm_check_block(struct sm_ftl *ftl, int zone, int block) | |||
540 | return -EIO; | 540 | return -EIO; |
541 | } | 541 | } |
542 | 542 | ||
543 | /* If the block is sliced (partialy erased usually) erase it */ | 543 | /* If the block is sliced (partially erased usually) erase it */ |
544 | if (i == 2) { | 544 | if (i == 2) { |
545 | sm_erase_block(ftl, zone, block, 1); | 545 | sm_erase_block(ftl, zone, block, 1); |
546 | return 1; | 546 | return 1; |
@@ -878,7 +878,7 @@ static int sm_init_zone(struct sm_ftl *ftl, int zone_num) | |||
878 | return 0; | 878 | return 0; |
879 | } | 879 | } |
880 | 880 | ||
881 | /* Get and automaticly initialize an FTL mapping for one zone */ | 881 | /* Get and automatically initialize an FTL mapping for one zone */ |
882 | struct ftl_zone *sm_get_zone(struct sm_ftl *ftl, int zone_num) | 882 | struct ftl_zone *sm_get_zone(struct sm_ftl *ftl, int zone_num) |
883 | { | 883 | { |
884 | struct ftl_zone *zone; | 884 | struct ftl_zone *zone; |
diff --git a/drivers/mtd/ubi/Kconfig b/drivers/mtd/ubi/Kconfig index 6abeb4f13403..4dcc752a0c0b 100644 --- a/drivers/mtd/ubi/Kconfig +++ b/drivers/mtd/ubi/Kconfig | |||
@@ -56,7 +56,7 @@ config MTD_UBI_DEBUG | |||
56 | bool "UBI debugging" | 56 | bool "UBI debugging" |
57 | depends on SYSFS | 57 | depends on SYSFS |
58 | select DEBUG_FS | 58 | select DEBUG_FS |
59 | select KALLSYMS_ALL if KALLSYMS && DEBUG_KERNEL | 59 | select KALLSYMS |
60 | help | 60 | help |
61 | This option enables UBI debugging. | 61 | This option enables UBI debugging. |
62 | 62 | ||
diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c index eededf94f5a6..e347cc4388ed 100644 --- a/drivers/mtd/ubi/io.c +++ b/drivers/mtd/ubi/io.c | |||
@@ -344,6 +344,12 @@ static int do_sync_erase(struct ubi_device *ubi, int pnum) | |||
344 | wait_queue_head_t wq; | 344 | wait_queue_head_t wq; |
345 | 345 | ||
346 | dbg_io("erase PEB %d", pnum); | 346 | dbg_io("erase PEB %d", pnum); |
347 | ubi_assert(pnum >= 0 && pnum < ubi->peb_count); | ||
348 | |||
349 | if (ubi->ro_mode) { | ||
350 | ubi_err("read-only mode"); | ||
351 | return -EROFS; | ||
352 | } | ||
347 | 353 | ||
348 | retry: | 354 | retry: |
349 | init_waitqueue_head(&wq); | 355 | init_waitqueue_head(&wq); |
@@ -390,7 +396,7 @@ retry: | |||
390 | if (err) | 396 | if (err) |
391 | return err; | 397 | return err; |
392 | 398 | ||
393 | if (ubi_dbg_is_erase_failure() && !err) { | 399 | if (ubi_dbg_is_erase_failure()) { |
394 | dbg_err("cannot erase PEB %d (emulated)", pnum); | 400 | dbg_err("cannot erase PEB %d (emulated)", pnum); |
395 | return -EIO; | 401 | return -EIO; |
396 | } | 402 | } |
diff --git a/drivers/mtd/ubi/scan.c b/drivers/mtd/ubi/scan.c index 11eb8ef12485..d2d12ab7def4 100644 --- a/drivers/mtd/ubi/scan.c +++ b/drivers/mtd/ubi/scan.c | |||
@@ -968,7 +968,7 @@ static int process_eb(struct ubi_device *ubi, struct ubi_scan_info *si, | |||
968 | * contains garbage because of a power cut during erase | 968 | * contains garbage because of a power cut during erase |
969 | * operation. So we just schedule this PEB for erasure. | 969 | * operation. So we just schedule this PEB for erasure. |
970 | * | 970 | * |
971 | * Besides, in case of NOR flash, we deliberatly | 971 | * Besides, in case of NOR flash, we deliberately |
972 | * corrupt both headers because NOR flash erasure is | 972 | * corrupt both headers because NOR flash erasure is |
973 | * slow and can start from the end. | 973 | * slow and can start from the end. |
974 | */ | 974 | */ |
diff --git a/drivers/mtd/ubi/vmt.c b/drivers/mtd/ubi/vmt.c index b79e0dea3632..366eb70219a6 100644 --- a/drivers/mtd/ubi/vmt.c +++ b/drivers/mtd/ubi/vmt.c | |||
@@ -790,11 +790,6 @@ static int paranoid_check_volume(struct ubi_device *ubi, int vol_id) | |||
790 | goto fail; | 790 | goto fail; |
791 | } | 791 | } |
792 | 792 | ||
793 | if (!vol->name) { | ||
794 | ubi_err("NULL volume name"); | ||
795 | goto fail; | ||
796 | } | ||
797 | |||
798 | n = strnlen(vol->name, vol->name_len + 1); | 793 | n = strnlen(vol->name, vol->name_len + 1); |
799 | if (n != vol->name_len) { | 794 | if (n != vol->name_len) { |
800 | ubi_err("bad name_len %lld", n); | 795 | ubi_err("bad name_len %lld", n); |