aboutsummaryrefslogtreecommitdiff
path: root/include/linux/mtd
AgeCommit message (Collapse)AuthorFilesLines
2007-10-13[MTD] [NOR] fix ctrl-alt-del can't reboot for intel flash bugKevin Hao1-0/+1
When we press ctrl-alt-del,kernel_restart_prepare will invoke cfi_intelext_reboot which will set flash to read array mode, but later when device_shutdown is invoked which may put current work queue to sleep and other process may be scheduled to running and programming flash in not FL_READY mode again. So we can't boot up if this flash is used for bootloader. Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-09-21[MTD] Document erase interface.Jörn Engel1-0/+7
Document mtd erase interface. Signed-off-by: Jörn Engel <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-09-06[MTD] Fix CFI build error when no map width or interleave supportedDavid Woodhouse2-1/+18
When building NOR flash support, you have compile-time options for the bus width and the number of individual chips which are interleaved together onto that bus. The code to deal with arbitrary geometry is a bit convoluted, and people want to just configure it for the specific hardware they have, to avoid the runtime overhead. Selecting _none_ of the available options doesn't make any sense. You should have at least one. This makes it build though, since people persist in trying. Signed-off-by: David Woodhouse <[email protected]>
2007-07-23[MTD] [NAND] Add NAND manufacturer AMD.Steven J. Hill1-0/+1
This patch adds the manufacturer ID for AMD flash. Signed-off-by: Steven J. Hill <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-06-30[MTD] [OneNAND] 2X program supportKyungmin Park2-0/+16
The 2X Program is an extension of Program Operation. Since the device is equipped with two DataRAMs, and two-plane NAND Flash memory array, these two component enables simultaneous program of 4KiB. Plane1 has only even blocks such as block0, block2, block4 while Plane2 has only odd blocks such as block1, block3, block5. So MTD regards it as 4KiB page size and 256KiB block size Now the following chips support it. (KFXXX16Q2M) Demux: KFG2G16Q2M, KFH4G16Q2M, KFW8G16Q2M, Mux: KFM2G16Q2M, KFN4G16Q2M, And more recent chips Signed-off-by: Kyungmin Park <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-05-11[MTD] generalise the handling of MTD-specific superblocksDavid Howells1-0/+30
Generalise the handling of MTD-specific superblocks so that JFFS2 and ROMFS can both share it. Signed-off-by: David Howells <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-05-09[MTD] Delete allegedly obsolete "bank_size" field of mtd_info.Robert P. J. Day1-3/+0
Delete the allegedly obsolete "bank_size" member of struct mtd_info. Signed-off-by: Robert P. J. Day <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-05-09[MTD] Remove unnecessary user space check from mtd.h.Robert P. J. Day1-4/+0
Since the header file include/linux/mtd/mtd.h is not exported to user space, remove the user space check and error. Signed-off-by: Robert P. J. Day <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-05-08[MTD] [NAND] platform NAND driver: update headerVitaly Wool1-0/+16
This patch extends nand.h in order to enable platform NAND driver. Signed-off-by: Vitaly Wool <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-04-27Merge branch 'master' of ↵David Woodhouse1-0/+202
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: drivers/mtd/Kconfig Signed-off-by: David Woodhouse <[email protected]>
2007-04-27UBI: Unsorted Block ImagesArtem B. Bityutskiy1-0/+202
UBI (Latin: "where?") manages multiple logical volumes on a single flash device, specifically supporting NAND flash devices. UBI provides a flexible partitioning concept which still allows for wear-levelling across the whole flash device. In a sense, UBI may be compared to the Logical Volume Manager (LVM). Whereas LVM maps logical sector numbers to physical HDD sector numbers, UBI maps logical eraseblocks to physical eraseblocks. More information may be found at http://www.linux-mtd.infradead.org/doc/ubi.html Partitioning/Re-partitioning An UBI volume occupies a certain number of erase blocks. This is limited by a configured maximum volume size, which could also be viewed as the partition size. Each individual UBI volume's size can be changed independently of the other UBI volumes, provided that the sum of all volume sizes doesn't exceed a certain limit. UBI supports dynamic volumes and static volumes. Static volumes are read-only and their contents are protected by CRC check sums. Bad eraseblocks handling UBI transparently handles bad eraseblocks. When a physical eraseblock becomes bad, it is substituted by a good physical eraseblock, and the user does not even notice this. Scrubbing On a NAND flash bit flips can occur on any write operation, sometimes also on read. If bit flips persist on the device, at first they can still be corrected by ECC, but once they accumulate, correction will become impossible. Thus it is best to actively scrub the affected eraseblock, by first copying it to a free eraseblock and then erasing the original. The UBI layer performs this type of scrubbing under the covers, transparently to the UBI volume users. Erase Counts UBI maintains an erase count header per eraseblock. This frees higher-level layers (like file systems) from doing this and allows for centralized erase count management instead. The erase counts are used by the wear-levelling algorithm in the UBI layer. The algorithm itself is exchangeable. Booting from NAND For booting directly from NAND flash the hardware must at least be capable of fetching and executing a small portion of the NAND flash. Some NAND flash controllers have this kind of support. They usually limit the window to a few kilobytes in erase block 0. This "initial program loader" (IPL) must then contain sufficient logic to load and execute the next boot phase. Due to bad eraseblocks, which may be randomly scattered over the flash device, it is problematic to store the "secondary program loader" (SPL) statically. Also, due to bit-flips it may become corrupted over time. UBI allows to solve this problem gracefully by storing the SPL in a small static UBI volume. UBI volumes vs. static partitions UBI volumes are still very similar to static MTD partitions: * both consist of eraseblocks (logical eraseblocks in case of UBI volumes, and physical eraseblocks in case of static partitions; * both support three basic operations - read, write, erase. But UBI volumes have the following advantages over traditional static MTD partitions: * there are no eraseblock wear-leveling constraints in case of UBI volumes, so the user should not care about this; * there are no bit-flips and bad eraseblocks in case of UBI volumes. So, UBI volumes may be considered as flash devices with relaxed restrictions. Where can it be found? Documentation, kernel code and applications can be found in the MTD gits. What are the applications for? The applications help to create binary flash images for two purposes: pfi files (partial flash images) for in-system update of UBI volumes, and plain binary images, with or without OOB data in case of NAND, for a manufacturing step. Furthermore some tools are/and will be created that allow flash content analysis after a system has crashed.. Who did UBI? The original ideas, where UBI is based on, were developed by Andreas Arnez, Frank Haverkamp and Thomas Gleixner. Josh W. Boyer and some others were involved too. The implementation of the kernel layer was done by Artem B. Bityutskiy. The user-space applications and tools were written by Oliver Lohmann with contributions from Frank Haverkamp, Andreas Arnez, and Artem. Joern Engel contributed a patch which modifies JFFS2 so that it can be run on a UBI volume. Thomas Gleixner did modifications to the NAND layer. Alexander Schmidt made some testing work as well as core functionality improvements. Signed-off-by: Artem B. Bityutskiy <[email protected]> Signed-off-by: Frank Haverkamp <[email protected]>
2007-04-17[MTD][NAND] Add Micron Manufacturer ID[email protected]1-0/+1
Add Micron Manufacturer ID. Signed-off-by: Shahrom Sharif <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-04-02[MTD] [NOR] Support for auto locking flash on power upRodolfo Giometti1-0/+1
Auto unlock sectors on resume for auto locking flash on power up. Signed-off-by: Rodolfo Giometti <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-03-23[MTD] Delete unused header file linux/mtd/iflash.h.Robert P. J. Day1-98/+0
Delete the unreferenced header file include/linux/mtd/iflash.h. Signed-off-by: Robert P. J. Day <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-03-09[MTD] [OneNAND] Classify the page data and oob bufferKyungmin Park1-1/+4
Classify the page data and oob buffer and it prevents the memory fragementation (writesize + oobsize) Signed-off-by: Kyungmin Park <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-03-08[MTD] [NAND] make oobavail publicVitaly Wool1-0/+1
During the MTD rework the oobavail parameter of mtd_info structure has become private. This is not quite correct in terms of integrity and logic. If we have means to write to OOB area, then we'd like to know upfront how many bytes out of OOB are spare per page to be able to adapt to specific cases. The patch inlined adds the public oobavail parameter. Signed-off-by: Vitaly Wool <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-02-09[MTD] Clarify OOB-operation interface commentsArtem Bityutskiy1-0/+4
Add more comment to OOB I/O interface. Read/write are not symmetric which is confusing and should be documented. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-02-09[MTD] remove unused ecctype,eccsize fields from struct mtd_infoArtem Bityutskiy1-2/+0
Remove unused and broken mtd->ecctype and mtd->eccsize fields from struct mtd_info. Do not remove them from userspace API data structures (don't want to breake userspace) but mark them as obsolete by a comment. Any userspace program which uses them should be half-broken anyway, so this is more about saving data structure size. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-02-09[MTD] [NOR] Intel: remove ugly PROGREGION macrosArtem Bityutskiy1-10/+0
Remove ugly and weird MTD_PROGREGION_CTRLMODE_VALID() and MTD_PROGREGION_CTRLMODE_INVALID() macros. There is only one user of them and they are used locally just for printing. Anyway, this patch is a preparation for removing mtd->ecctype and mtd->eccsize, but these macros use them. Fix this. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-02-09[MTD] physmap: Add support for 64 bit resourcesStefan Roese1-1/+1
This patch adds support for 64 bit resources enabled via the CONFIG_RESOURCES_64BIT option. Now a 64 bit can be passed to the physmap driver. Signed-off-by: Stefan Roese <[email protected]> Signed-off-by: Lennert Buytenhek <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-02-09[MTD] Don't include linux/mtd/map.h from linux/mtd/physmap.hHaavard Skinnemoen1-1/+2
Replace the inclusion of linux/mtd/map.h with a forward-declaration of struct map_info. This allows linux/mtd/physmap.h to be included by e.g. board code even if the MTD subsystem is disabled. Signed-off-by: Haavard Skinnemoen <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-02-09Merge branch 'master' of git://git.infradead.org/~kmpark/onenand-mtd-2.6David Woodhouse3-11/+18
2007-02-09[MTD] [NAND] Add kernel-doc for cellinfo field of struct nand_chipRandy Dunlap1-0/+1
Fixes kernel-doc warning in mtd/nand.h. Signed-off-by: Randy Dunlap <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2007-02-07[MTD] OneNAND: Error message printing and bad block scan errosKyungmin Park1-0/+7
Provide the bad block scan with its own read function so that important error messages that are not from the the bad block scan, can always be printed. Signed-off-by: Adrian Hunter <[email protected]> Signed-off-by: Kyungmin Park <[email protected]>
2007-02-02[MTD] OneNAND: Reduce internal BufferRAM operationsKyungmin Park1-6/+2
It use blockpage instead of a pair (block, page). It can also cover a small chunk access. 0x00, 0x20, 0x40 and so on. And in JFFS2 behavior, sometimes it reads two pages alternatively. e.g., It first reads A page, B page and A page. So we check another bufferram to find requested page. Signed-off-by: Kyungmin Park <[email protected]>
2007-01-31[MTD] OneNAND: Remove unused fieldsKyungmin Park1-2/+0
- Remove unused fields - Fix typo Signed-off-by: Kyungmin Park <[email protected]>
2007-01-18[MTD] OneNAND: Update copyrights and code cleanupKyungmin Park2-2/+3
Update copyrights and code cleanup Signed-off-by: Kyungmin Park <[email protected]>
2007-01-18[MTD] OneNAND: Reduce Double Density Package (DDP) operationsKyungmin Park2-1/+6
- DDP code clean-up - Reduce block & bufferram operations in DDP Signed-off-by: Kyungmin Park <[email protected]>
2007-01-10[MTD] OneNAND: Implement read-while-loadAdrian Hunter1-0/+1
Read-while-load enables higher performance read operations. Signed-off-by: Adrian Hunter <[email protected]> Signed-off-by: Kyungmin Park <[email protected]>
2007-01-10[MTD] OneNAND: add subpage write supportKyungmin Park1-0/+2
OneNAND supports up to 4 writes at one NAND page. Add support of this feature. Signed-off-by: Kyungmin Park <[email protected]>
2006-12-01Merge branch 'master' of ↵David Woodhouse1-1/+1
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
2006-11-29[MTD] add get and put methodsArtem Bityutskiy1-0/+7
This patch adds get_device() and put_device() methods to the MTD description structure (struct mtd_info). These methods are called by MTD whenever the MTD device is get or put. They are needed when the underlying driver is something smarter then just flash chip driver, for example UBI. Signed-off-by: Artem Bityutskiy <[email protected]>
2006-11-29[MTD] add get_mtd_device_nm() functionArtem Bityutskiy1-0/+1
This patch adds one more function to the MTD interface to make it possible to open MTD devices by their names, not only numbers. This is very handy in many situations. Also, MTD device number depend on load order and may vary, while names are fixed. Signed-off-by: Artem Bityutskiy <[email protected]>
2006-11-29[MTD] NAND: add subpage write supportThomas Gleixner2-0/+11
Many SLC NANDs support up to 4 writes at one NAND page. Add support of this feature. Signed-off-by: Artem Bityutskiy <[email protected]>
2006-11-29[MTD] increase MAX_MTD_DEVICESArtem Bityutskiy1-1/+1
Signed-off-by: Artem Bityutskiy <[email protected]>
2006-11-29Merge git://git.infradead.org/~kmpark/onenand-mtd-2.6David Woodhouse2-1/+5
2006-11-28[MTD] [NAND] remove len/ooblen confusion.Vitaly Wool1-7/+5
As was discussed between Ricard Wanderlöf, David Woodhouse, Artem Bityutskiy and me, the current API for reading/writing OOB is confusing. The thing that introduces confusion is the need to specify ops.len together with ops.ooblen for reads/writes that concern only OOB not data area. So, ops.len is overloaded: when ops.datbuf != NULL it serves to specify the length of the data read, and when ops.datbuf == NULL, it serves to specify the full OOB read length. The patch inlined below is the slightly updated version of the previous patch serving the same purpose, but with the new Artem's comments taken into account. Artem, BTW, thanks a lot for your valuable input! Signed-off-by: Vitaly Wool <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2006-11-28[MTD] Allow variable block sizes in mtd_blkdevsRichard Purdie1-1/+2
Currently, mtd_blkdevs enforces a block size of 512, even if the drivers can seemingly request a different size. This patch fixes mtd_blkdevs so block sizes other than 512 work correctly. Signed-off-by: Richard Purdie <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2006-11-16[MTD] OneNAND: Single bit error detectionKyungmin Park1-0/+1
Idea from Jarkko Lavinen Signed-off-by: Jarkko Lavinen <[email protected]> Signed-off-by: Kyungmin Park <[email protected]>
2006-11-16[MTD] OneNAND: lock supportKyungmin Park1-1/+0
Now you can use mtd lock inferface on OneNAND The idea is from Nemakal, Vijaya, thanks Signed-off-by: Kyungmin Park <[email protected]>
2006-11-16MTD: OneNAND: interrupt based wait supportKyungmin Park1-0/+4
We can use the two methods to wait. 1. polling: read interrupt status register 2. interrupt: use kernel ineterrupt mechanism To use interrupt method, you first connect onenand interrupt pin to your platform and configure interrupt properly Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
2006-10-30[PATCH] MTD: fix last kernel-doc warningRandy Dunlap1-1/+1
Fix the last current kernel-doc warning: Warning(/var/linsrc/linux-2619-rc3g5//include/linux/mtd/nand.h:416): No description found for parameter 'write_page' Signed-off-by: Randy Dunlap <[email protected]> Cc: David Woodhouse <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-10-21[MTD] NAND: Combined oob buffer so it's contiguous with dataDavid Woodhouse1-5/+1
Ditch the separate oobrbuf and oobwbuf fields from the chip buffers, and use only a single buffer immediately after the data. This accommodates NAND controllers such as the OLPC CAFÉ chip, which can't do scatter/gather DMA so needs the OOB buffer to be contiguous with the data, for both read and write. Signed-off-by: David Woodhouse <[email protected]>
2006-10-03fix file specification in commentsUwe Zeisberger1-1/+1
Many files include the filename at the beginning, serveral used a wrong one. Signed-off-by: Uwe Zeisberger <[email protected]> Signed-off-by: Adrian Bunk <[email protected]>
2006-09-26[MTD ONENAND] Check OneNAND lock scheme & all block unlock command supportKyungmin Park2-3/+7
OneNAND lock scheme depends on density and process of chip. Some OneNAND chips support all block unlock Signed-off-by: Kyungmin Park <[email protected]> Signed-off-by: David Woodhouse <[email protected]>
2006-09-25[MTD NAND] Provide prototype for newly-exported nand_wait_ready()David Woodhouse1-0/+3
Signed-off-by: David Woodhouse <[email protected]>
2006-09-25[MTD NAND] Allow override of page read and write functions.David Woodhouse1-0/+11
- allow high-level nand_write_page() function to be overridden - likewise low-level write_page_raw() and read_page_raw() functions - Clean up the abuse of chip->ecc.{write,read}_page() with MTD_OOB_RAW Signed-off-by: David Woodhouse <[email protected]>
2006-09-25[MTD NAND] Allocate chip->buffers separately to allow it to be overriddenDavid Woodhouse1-2/+4
In particular, the board driver might need it to be DMAable. Signed-off-by: David Woodhouse <[email protected]>
2006-09-25[MTD NAND] Split nand_scan() into two parts; allow board driver to interveneDavid Woodhouse1-0/+5
Signed-off-by: David Woodhouse <[email protected]>
2006-08-16MTD: Convert Atmel PRI information to AMD formatHaavard Skinnemoen1-0/+13
Atmel flash chips don't have PRI information in the same format as AMD flash chips. This patch installs a fixup for all Atmel chips that converts the relevant PRI fields into AMD format. Only the fields that are actually used by the command set is actually converted. The rest are initialized to zero (which should be safe) Signed-off-by: Haavard Skinnemoen <[email protected]> Signed-off-by: Josh Boyer <[email protected]>