summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [JFFS2] Return values of jffs2_block_check_erase error pathsAnders Grafström2008-04-231-1/+6
| | | | | | | It looks the error paths in jffs2_block_check_erase() have wrong return values. A block that failed to be erased never gets marked as bad. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* Merge git://git.infradead.org/~dedekind/ubi-2.6David Woodhouse2008-04-2311-64/+260
|\
| * UBI: print media information earlierArtem Bityutskiy2008-04-201-9/+10
| | | | | | | | | | | | | | | | | | | | Print information about logicale eraseblock size, sub-page size and so on at early stage, befor an attempt to attach the MTD device was made. This is more convenient to do so because the attempt to attach may fail, and the information is never printed then. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| * UBI: fix mean EC calculationArtem Bityutskiy2008-04-192-34/+9
| | | | | | | | | | | | | | | | | | | | | | (a + b) / (c + d) != a / c + b / d. The old code errornously assumed this incorrect formuld. Instead, just sum all erase counters in a 64-bit variable and divide to the number of EBs at the end. Thanks to Adrian Hunter for pointing this out. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| * UBI: initialize static volumes with vol->used_bytesJan Altenberg2008-04-171-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | I came across a problem which seems to be present since: commit 941dfb07ed91451b1c58626a0d258dfdf468b593 UBI: set correct gluebi device size ubi_create_gluebi() leaves mtd->size = 0 for static volumes. So even existing static volumes are initialized with a size of 0. Signed-off-by: Jan Altenberg <jan.altenberg@linutronix.de> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| * UBI: improve Kconfig documentationArtem Bityutskiy2008-04-171-2/+7
| | | | | | | | Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| * UBI: fix error printingArtem Bityutskiy2008-04-171-10/+8
| | | | | | | | | | | | Use existing ubi_err() as the rest of the code does. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| * UBI: make ubi-header.h localArtem Bityutskiy2008-04-173-7/+5
| | | | | | | | | | | | | | | | | | | | | | The new trend in linux is not to store headers which define on-media format in the include/ directory, but instead, store them locally. This is because these headers "do not define any kernel<->userspace interface". Do so for UBI as well. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| * UBI: be verbose when debuggin is enabledArtem Bityutskiy2008-04-172-0/+6
| | | | | | | | | | | | | | Make I/O function to be always verbose when about CRC errors and magic number errors when I/O debugging is enabled. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| * Documentation: add UBI sysfs ABI docsArtem Bityutskiy2008-04-171-0/+212
| | | | | | | | | | Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Acked-by: Greg KH <greg@kroah.com>
* | [MTD] Clean up AR7 partition map supportDavid Woodhouse2008-04-231-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | drivers/mtd/ar7part.c: In function ‘create_mtd_partitions’: drivers/mtd/ar7part.c:69: warning: passing argument 4 of ‘master->read’ from incompatible pointer type drivers/mtd/ar7part.c:91: warning: passing argument 4 of ‘master->read’ from incompatible pointer type drivers/mtd/ar7part.c:99: warning: passing argument 4 of ‘master->read’ from incompatible pointer type drivers/mtd/ar7part.c:110: warning: passing argument 4 of ‘master->read’ from incompatible pointer type drivers/mtd/ar7part.c:111: error: ‘SQUASHFS_MAGIC’ undeclared (first use in this function) drivers/mtd/ar7part.c:111: error: (Each undeclared identifier is reported only once drivers/mtd/ar7part.c:111: error: for each function it appears in.) Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NOR] Fix Intel CFI driver for collie flashThomas Kunze2008-04-231-0/+3
| | | | | | | | | | | | | | | | | | | | | | collie seems to contain LH28F640BF flash chips. According to http://sharp-world.com/products/device/flash/pdf/*FUM00701*@E.pdf (page 83) if they have 0x51 of Extended Query Table (number of hardware partitions) set to zero, they have a single fixed partition. This patch makes those chips work. Signed-off-by: Thomas Kunze <thommycheck@gmx.de> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [JFFS2] Finally remove redundant ref->__totlen field.David Woodhouse2008-04-231-1/+1
| | | | | | | | | | | | | | | | | | | | Haven't had any complaints about it recently, despite having the test code enabled to verify that the calculated length is correct. Kill it off, just by #undef TEST_TOTLEN for now; removing it for real can come a little later. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [JFFS2] Honour TEST_TOTLEN macro in debugging code. ref->__totlen is going!David Woodhouse2008-04-231-1/+4
| | | | | | | | Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [JFFS2] Add paranoia debugging for superblock countsDavid Woodhouse2008-04-232-3/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | The problem fixed in commit 014b164e1392a166fe96e003d2f0e7ad2e2a0bb7 (space leak with in-band cleanmarkers) would have been caught a lot quicker if our paranoid debugging mode had included adding up the size counts from all the eraseblocks and comparing the totals with the counts in the superblock. Add that. Make jffs2_mark_erased_block() file the newly-erased block on the free_list before calling the debug function, to make it happy. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [JFFS2] Fix free space leak with in-band cleanmarkersDavid Woodhouse2008-04-221-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were accounting for the cleanmarker by calling jffs2_link_node_ref() (without locking!), which adjusted both superblock and per-eraseblock accounting, subtracting the size of the cleanmarker from {jeb,c}->free_size and adding it to {jeb,c}->used_size. But only _then_ were we adding the size of the newly-erased block back to the superblock counts, and we were adding each of jeb->{free,used}_size to the corresponding superblock counts. Thus, the size of the cleanmarker was effectively subtracted from the superblock's free_size _twice_. Fix this, by always adding a full eraseblock size to c->free_size when we've erased a block. And call jffs2_link_node_ref() under the proper lock, while we're at it. Thanks to Alexander Yurchenko and/or Damir Shayhutdinov for (almost) pinpointing the problem. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [JFFS2] Self-sufficient #includes in jffs2_fs_i.h: include <linux/mutex.h>David Woodhouse2008-04-221-1/+1
| | | | | | | | | | | | ... instead of <linux/semaphore.h> which we don't need any more anyway. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] Verify probe by retrying to checking the results matchBen Dooks2008-04-221-0/+21
| | | | | | | | | | | | | | | | | | | | | | With modern systems using bus-hold instead of bus pull-up, it can often lead to erroneous reporting of NAND devices where there are none. Do a double probe to ensure that the result we got the first time is repeatable, and if it is not then return that there is no chip there. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] S3C2410 Allow ECC disable to be specified by the boardBen Dooks2008-04-222-0/+5
| | | | | | | | | | | | | | | | Add support to disable ECC checking for a given chip when passed by the board via the platform data. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] S3C2410 Allow ECC layout to be passed through platform dataBen Dooks2008-04-222-0/+4
| | | | | | | | | | | | | | | | Add support for the ECC layout to be passed via the platform data specified by the board. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] S3C2410 Allow unset ecc to be ignored for ecc correctionBen Dooks2008-04-222-0/+10
| | | | | | | | | | | | | | | | | | | | If a block's ecc field is all 0xff, then ignore the ECC correction. This is for systems where some of the blocks, such as the initial cramfs are written without ECC and need to be loaded on start. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] S3C2410 Large page NAND supportBen Dooks2008-04-223-5/+65
| | | | | | | | | | | | | | | | | | | | This adds support for using large page NAND devices with the S3C24XX NAND controller. This also adds the file Documentation/arm/Samsung-S3C24XX/NAND.txt to describe the differences. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] S3C2410 Fix previous nFCE suspend save patchBen Dooks2008-04-221-10/+8
| | | | | | | | | | | | | | | | | | Commit 03680b1e00d146df718c8a4eac34438566b70c85 incorrectly was assuming S3C2410_NFCONF was being used to select the NAND chip. Fix this error by ising the sel_reg. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [OneNAND] Allow for controller errors when readingAdrian Hunter2008-04-221-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | A power loss while writing can result in a page becoming unreadable. When the device is mounted again, reading that page gives controller errors. Upper level software like JFFS2 treat -EIO as fatal, refusing to mount at all. That means it is necessary to treat the error as an ECC error to allow recovery. Note that typically in this case, the eraseblock can still be erased and rewritten i.e. it has not become a bad block. Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [MAPS] omap_nor section fixesDavid Brownell2008-04-221-5/+4
| | | | | | | | | | | | | | | | Minor tweaks to omap_nor ... as with most platform drivers, its probe and remove logic can (and should!) safely vanish in most configs. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NOR] Fixup for incorrect CFI data in Spansion S29GL064/32N flash chipsTrent Piepho2008-04-221-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a known erratum confirmed by Spansion. I have an errata document, but I can't find a link to it anywhere on their site to include here. Some of the S29GL064N chips report 64 sectors when they should report 128, and some of S29GL032N chips report 127 sectors when they should report 63. Note that when the chip dies are fixed by Spansion, they will still have the same id. The fix is done in such a way that it won't affect corrected chips. The fixups use the extended id made available by a previous patch. Without that, virtually all newer AMD/Spansion chips will have the same ID (0x227e) and it's not possible to apply the fixup to the correct chips. Signed-off-by: Trent Piepho <tpiepho@freescale.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NOR] Read extended device ID from AMD/Spansion CFI flash chipsTrent Piepho2008-04-221-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AMD/Spansion use a device id of 0x7e to indicate an extended device is present at offset 0xe and 0xf in the query data. I've verified with Spansion that all their chips (mfr == 0x01) with an id of 0x7e use it to indicate an extended id is present. What's more, there are no chips with a NON-extended id that is the same as a different chip's extended id. In other words, when the extended ID is present, one can replace the normal id with the extended id without losing any information. Which is what I've done. Signed-off-by: Trent Piepho <tpiepho@freescale.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] fsl_elbc_nand: workaround for hangs during nand writeAnton Vorontsov2008-04-221-1/+10
| | | | | | | | | | | | | | | | | | Using current driver elbc sometimes hangs during nand write. Reading back last byte helps though (thanks to Scott Wood for the idea). Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Acked-by: Scott Wood <scottwood@freescale.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] plat_nand: set mtd->nameHamish Moffatt2008-04-221-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This patch sets mtd->name to the platform bus ID in the plat_nand driver, so that you can specify partitions readily with mtdparts=. Currently it relies on nand_base filling in the name from the device, which results in names like "NAND 256MiB 3,3V 8-bit", that you can't use with cmdlineparts. Signed-off-by: Hamish Moffatt <hamish@cloud.net.au> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] corrected MPC8313 NAND fixesMike Hench2008-04-221-7/+2
| | | | | | | | | | | | | | | | | | | | Fix a race condition in fsl_elbc_run_command Fix incorrect usage of clearbits32 that bashed option register Remove work around for bashed register Signed-off-by: Mike Hench <mhench@elutions.com> Acked-by: Scott Wood <scottwood@freescale.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] fsl_elbc_nand: fix mtd nameAnton Vorontsov2008-04-221-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently fsl_elbc_nand doesn't initialize mtd->name, and this causes nand_get_flash_type() to assign name that is equal to chip type, like this: root@b1:~# cat /proc/mtd dev: size erasesize name mtd0: 00800000 00010000 "fe000000.flash" mtd1: 02000000 00004000 "NAND 32MiB 3,3V 8-bit" mtd0 is physmap_of flash (normal name), and mtd1 is fsl_elbc_nand. Despite inconsistency, with mtd name like this specifying paritions from the kernel command line becomes a torture (though, I didn't tried and not sure if mtdparts= can handle spaces at all). Plus, this causes real bugs when multiple fsl_elbc_nand chips registered. With this patch applied fsl_elbc_nand chip will have proper name: root@b1:~# cat /proc/mtd dev: size erasesize name mtd0: 00800000 00010000 "fe000000.flash" mtd1: 02000000 00004000 "e0600000.flash" p.s. We can't use priv->dev->bus_id as in physmap_of, because fsl_elbc_nand pretends to be a localbus controller, so its bus_id is "address.localbus", which is incorrect and thus will also not work for multiple chips. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] AR7 mtd partition mapMatteo Croce2008-04-223-0/+153
| | | | | | | | | | | | | | Signed-off-by: Matteo Croce <technoboy85@gmail.com> Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Eugene Konev <ejka@imfi.kspu.ru> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] FSL UPM NAND driverAnton Vorontsov2008-04-223-0/+300
| | | | | | | | | | | | | | | | | | | | | | This is very simple driver, NAND is connected through localbus, and User-Programmable Machine is doing various adjustments to speak NAND. No special efforts needed to do read and write cycles, though to control ALE and CLE phases, we ask UPM to generate exact pre-programmed signals on the localbus lines. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] Fix checkpatch errors in pxa3xx_nandDavid Woodhouse2008-04-221-9/+9
| | | | | | | | Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NOR] Add JEDEC support for the SST 36VF3203 flash chipAndrei Dolnikov2008-04-221-0/+13
| | | | | | | | | | | | | | | | Add support for the SST 36VF3203 flash chip. It is used on Emerson KSI8560 board. Signed-off-by: Andrei Dolnikov <adolnikov@ru.mvista.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [MAPS] Extend plat-ram to support a supplied probe typeFlorian Fainelli2008-04-222-17/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This enhances plat-ram to take a map_probes argument in the platform_data structure which allow plat-ram to support any direct-mapped device that MTD supports (jedec, cfi, amd ..) A few items are also fixed: - Don't panic if probes is 0 - Actually use the partition list that is passed in Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu> Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] XIP: Use generic xip_iprefetch() instead of asm volatile (...)Paulius Zaleckas2008-04-224-6/+6
| | | | | | | | | | | | | | | | | | Untested, but shouldn't break anything... Makes MTD_XIP arch independent. I guess this is why xip_iprefetch() was made for. Signed-off-by: Paulius Zaleckas <paulius.zaleckas@teltonika.lt> Acked-by: Nicolas Pitre <nico@cam.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NAND] support for pxa3xxeric miao2008-04-224-0/+1275
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is preliminary since: 1. It supports only _one_ chip select at the moment. As there is no existing platforms available using two chip selects of the NAND controller, it shall really not include code for supporting the 2nd chip select for now, as such code cannot be verified. 2. It resorts to the default and simpliest memory based badblock table 3. Only limited types of nand flash are currently supported. Most PXA3xx processors come with on-chip NAND flash dies, so there isn't much flexibility for other types of NAND. 4. The NAND controller should be configured to detect the device's ID, thus making it difficult to use nand_scan_ident() to assist the detection process (though it's not impossible) TODO: fix all the above limitations of cuz :-) Signed-off-by: eric miao <eric.miao@marvell.com> Cc: Sergey Podstavin <spodstavin@ru.mvista.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [OneNAND] unlikely(x) || unlikely(y) => unlikely(x || y)Roel Kluin2008-04-221-2/+2
| | | | | | | | | | Acked-By: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] fix minor typo in the MTD map driver for SHARP SL seriesThomas Petazzoni2008-04-221-1/+1
| | | | | | | | Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] cmdlinepart: Missing partition info is not an errorPeter Korsgaard2008-04-221-4/+1
| | | | | | | | | | | | | | | | | | Return 0 partitions instead of -EINVAL on no mtdpart= argument in kernel cmdline or missing partition info for device. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> Acked-by: Stefan Roese <sr@denx.de> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [MAPS] add support for Nvidia MCP55 to ck804xromCarl-Daniel Hailfinger2008-04-221-27/+62
| | | | | | | | | | | | | | | | | | This patch extends the existing MAPS driver for the Nvidia CK804 chipset (ck804xrom.c) to also work on the Nvidia MCP55 chipset. As both chipsets are rather similar, suporting them both with the same driver is easy. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] make struct rfd_ftl_tr staticAdrian Bunk2008-04-221-1/+1
| | | | | | | | | | | | | | This patch makes the needlessly global struct rfd_ftl_tr static. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [OneNAND] proper onenand_bbt_read_oob() prototypeAdrian Bunk2008-04-222-3/+3
| | | | | | | | | | | | | | | | This patch adds a proper prototype for onenand_bbt_read_oob() in include/linux/mtd/onenand.h Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] [NOR] cfi_cmdset_0020.c: make a function staticAdrian Bunk2008-04-221-1/+2
| | | | | | | | | | | | | | This patch makes the needlessly global cfi_staa_erase_varsize() static. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] ftl.c: make code staticAdrian Bunk2008-04-221-4/+2
| | | | | | | | | | | | | | | | | | This patch makes the following needlessly global code static: - ftl_freepart() - struct ftl_tr Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] cmdlinepart.c: don't compare pointers with 0Adrian Bunk2008-04-221-4/+6
| | | | | | | | | | | | | | | | | | Sparse spotted that 0 was compared to pointers. While I was at it, I also moved the assignments out of the if's. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] mtdram.c should #include <linux/mtd/mtdram.h>Adrian Bunk2008-04-221-0/+1
| | | | | | | | | | | | | | | | Every file should include the headers containing the externs for its global functions (in this case for mtdram_init_device()). Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] proper prototypes for nftl_{read,write}_oob()Adrian Bunk2008-04-222-5/+5
| | | | | | | | | | | | | | | | This patch adds proper prototypes for nftl_{read,write}_oob() in include/linux/mtd/nftl.h Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
* | [MTD] proper prototypes for inftl_{read,write}_oob()Adrian Bunk2008-04-222-5/+5
| | | | | | | | | | | | | | | | This patch adds proper prototypes for inftl_{read,write}_oob() in include/linux/mtd/inftl.h Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>