summaryrefslogtreecommitdiff
path: root/drivers/mtd/nand/nand_base.c
AgeCommit message (Collapse)AuthorFilesLines
2006-05-27[MTD] NAND Consolidate references and add back default name settingThomas Gleixner1-7/+10
We have a type pointer. Make use of it instead of the error prone nand_ids[i] reference. The NAND driver used to set default name settings from the chip ID string for the device. The feature got lost during the rework. Add it back. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-27[MTD] NAND simplify nand_chip_selectThomas Gleixner1-2/+0
nCE setting can be done when the first command is issued to the device. We keep the deselect functionality as it makes sense to deassert nCE when the device becomes idle. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-27[MTD] Fix thinko in nand_write_page_hwecc()David Woodhouse1-1/+1
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-05-26[MTD] NAND modularize write functionThomas Gleixner1-514/+261
Modularize the write function and reorganaize the internal buffer management. Remove obsolete chip options and fixup all affected users. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-25[MTD] Fix NAND_VERIFY_WRITE case to build with tglx's recent changesDavid Woodhouse1-4/+4
Bad tglx. No biscuit. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-05-25[MTD] NAND Modularize read functionThomas Gleixner1-221/+227
Split the core of the read function out and implement seperate handling functions for software and hardware ECC. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-25[MTD] NAND Cleanup oob functionsThomas Gleixner1-75/+81
Cleanup the code in the oob related functions and make use of the new NO_READRDY flag. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-25[MTD] NAND Initialize controller lock and wq only onceThomas Gleixner1-3/+4
The lock simplifying patch did not move the lock and waitqueue initialization into the controller allocation patch. This reinitializes waitqueue and spinlocks also for driver supplied controller stuctures. Move it into the allocation path. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-25[MTD] NAND fix cmd_ctrl breakageThomas Gleixner1-5/+10
The cmd_ctrl rework lacks some state transition flags. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-25[MTD] NAND coding style and namespace cleanupThomas Gleixner1-534/+520
Cleanup the functions which are not going to change in the next steps. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-24[MTD] NAND LED support cleanupThomas Gleixner1-2/+6
Move the define out of the middle of the code and add an appropriate comment. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-24[MTD] NAND remove write_byte/word function from nand_chipThomas Gleixner1-45/+0
The previous change of the command / hardware control allows to remove the write_byte/word functions completely, as their only user were nand_command and nand_command_lp. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-24[MTD] Refactor NAND hwcontrol to cmd_ctrlThomas Gleixner1-61/+54
The hwcontrol function enforced a step by step state machine for any kind of hardware chip access. Let the hardware driver know which control bits are set and inform it about a change of the control lines. Let the hardware driver write out the command and address bytes directly. This gives a peformance advantage for address bus controlled chips and simplifies the quirks in the hardware drivers. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-24[MTD] Export nand_write_rawThomas Gleixner1-0/+1
The previous _ecc removal / cleanup broke (i)nftl module usage. Export the missing symbol. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] Remove read/write _ecc variantsThomas Gleixner1-62/+60
MTD clients are agnostic of FLASH which needs ECC suppport. Remove the functions and fixup the callers. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] Remove readv/readv_eccThomas Gleixner1-1/+0
These functions were never implemented and added only bloat to partition and concat code. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] Remove nand writev supportThomas Gleixner1-188/+0
NAND writev(_ecc) support is not longer necessary. Remove it. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23Merge branch 'master' of /home/tglx/work/kernel/git/mtd-2.6/Thomas Gleixner1-32/+32
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] NAND modularize ECCThomas Gleixner1-98/+48
First step of modularizing ECC support. - Move ECC related functionality into a seperate embedded data structure - Get rid of the hardware dependend constants to simplify new ECC models Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] NAND cleanup nand_scanThomas Gleixner1-174/+233
Seperate functionality out of nand_scan so the code is more readable. No functional change. First step of simplifying the nand driver. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] NAND consolidate data typesThomas Gleixner1-53/+53
The NAND driver used a mix of unsigned char, u_char amd uint8_t data types. Consolidate to uint8_t usage Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] NAND whitespace and formatting cleanupThomas Gleixner1-42/+62
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] Simplify NAND lockingThomas Gleixner1-38/+43
Replace the chip lock by a the controller lock. For simple drivers a dummy controller structure is created by the scan code. This simplifies the locking algorithm in nand_get/release_chip(). Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2006-05-23[MTD] Introduce MTD_BIT_WRITEABLEJoern Engel1-1/+1
o Add a flag MTD_BIT_WRITEABLE for devices that allow single bits to be cleared. o Replace MTD_PROGRAM_REGIONS with a cleared MTD_BIT_WRITEABLE flag for STMicro and Intel Sibley flashes with internal ECC. Those flashes disallow clearing of single bits, unlike regular NOR flashes, so the new flag models their behaviour better. o Remove MTD_ECC. After the STMicro/Sibley merge, this flag is only set and never checked. Signed-off-by: Joern Engel <joern@wh.fh-wedel.de>
2006-05-23[MTD] Introduce writesizeJoern Engel1-32/+32
At least two flashes exists that have the concept of a minimum write unit, similar to NAND pages, but no other NAND characteristics. Therefore, rename the minimum write unit to "writesize" for all flashes, including NAND. Signed-off-by: Joern Engel <joern@wh.fh-wedel.de>
2006-05-14[MTD NAND] Modify check for modules registering NAND devices without ->ownerDavid Woodhouse1-6/+11
Make it work even with compilers which lack the wit to notice that THIS_MODULE is always non-NULL. Use #ifdef MODULE instead. It's only a temporary debugging check anyway. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-05-14[MTD] Fix module refcounting in NAND board drivers.David Woodhouse1-3/+13
The _board_ driver needs to be mtd->owner, and it in turn pins the nand.ko module. Fix them all to actually do that, and fix nand.ko not to overwrite it -- and also to check that the caller sets it, if the caller is a module. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-05-13[MTD NAND] Indent all of drivers/mtd/nand/*.c.David Woodhouse1-357/+337
It was just too painful to deal with. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-04-01[PATCH] LED: add NAND MTD activity LED triggerRichard Purdie1-1/+25
Cc: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-07Merge master.kernel.org:/pub/scm/linux/kernel/git/tglx/mtd-2.6Linus Torvalds1-247/+282
Some manual fixups for clashing kfree() cleanups etc.
2005-11-07[PATCH] kfree cleanup: drivers/mtdJesper Juhl1-3/+2
This is the drivers/mtd part of the big kfree cleanup patch. Remove pointless checks for NULL prior to calling kfree() in drivers/mtd/. Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com> Cc: David Woodhouse <dwmw2@infradead.org> Acked-by: Joern Engel <joern@wohnheim.fh-wedel.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-07[MTD] NAND: Clean up trailing white spacesThomas Gleixner1-239/+239
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-11-07[MTD] NAND: nand_write_ecc memory and OOB corruptionTodd Poynor1-0/+1
Nathan Roberts noticed the nand_write_ecc index into oobbuf goes out of bounds when crossing an erase block boundary, causing incorrect OOB data to be written and corrupting memory. Reset the index to zero after re-preparing oobbuf for a new erase block. Signed-off-by: Todd Poynor <tpoynor@mvista.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-11-07[MTD] NAND nand_base: Fix shift for bad block check (16bit devices only)Vitaly Wool1-1/+1
In case of an odd offset, the result was shifted by 1 instead of 8 Signed-off-by: Vitaly Wool <vwool@ru.mvista.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-11-06[MTD] NAND: Add suspend/resume functionalityVitaly Wool1-6/+40
The changes introduced allow to suspend/resume NAND flash. A new state (FL_PM_SUSPENDED) is introduced, as well as routines for mtd->suspend and mtd->resume to put the flash in suspended state from software pov. Signed-off-by: Vitaly Wool <vwool@ru.mvista.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-11-06[MTD] NAND: Use correct mask for OOB size calculationThomas Gleixner1-2/+2
The bit mask used for oob size calculation was using 2 bits instead of one. Fortunately the next bit has been 0 all the time. Thanks to Nathan H. for pointing this out Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-09-08[PATCH] detect soft lockupsIngo Molnar1-0/+1
This patch adds a new kernel debug feature: CONFIG_DETECT_SOFTLOCKUP. When enabled then per-CPU watchdog threads are started, which try to run once per second. If they get delayed for more than 10 seconds then a callback from the timer interrupt detects this condition and prints out a warning message and a stack dump (once per lockup incident). The feature is otherwise non-intrusive, it doesnt try to unlock the box in any way, it only gets the debug info out, automatically, and on all CPUs affected by the lockup. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de> Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-16[MTD] NAND: Fix broken bad block scan for 16 bit devicesThomas Gleixner1-11/+11
The previous change to read a single byte from oob breaks the bad block scan on 16 bit devices, when the byte is on an odd address. Read the complete oob for now. Remove the unused arguments from check_short_pattern() Move the wait for ready function so it is only executed when consecutive reads happen. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-06-29[MTD] NAND: Change exports to _GPLThomas Gleixner1-3/+3
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-06-29[MTD] NAND: Reorganize chip lockingThomas Gleixner1-28/+29
The code was wrong in several aspects. The locking order was inconsistent, the device aquire code did not reset a variable after a wakeup and the wakeup handling was not working for applications where multiple chips are sharing a single hardware controller. When a hardware controller is available the locking is now reduced to the hardware controller lock and the waitqueue is moved to the hardware controller structure in order to avoid a wake_up_all(). The problem was pointed out by Ben Dooks, who also found the missing variable reset as main cause for his deadlock problem. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Honour autoplacement schemes supplied by the callerThomas Gleixner1-2/+8
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Fix the broken dynamic array allocationsJarkko Lavinen1-5/+5
Reverting the change from 1.136 to 1.137 (back to static allocation of ecc arrays) due to stack corruption and ecc errors. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Fix reading of autoplaced OOB when there are multiple free sections.Dan Brown1-4/+3
Signed-off-by: Dan Brown <dan_brown@ieee.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Move the NULL check into the calling functionThomas Gleixner1-8/+8
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Fix missing NULL pointer checkDan Brown1-7/+7
Version 1.137 broke nand_read_ecc clients who pass NULL oobsel. Fixed. Signed-off-by: Dan Brown <dan_brown@ieee.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Fix oob available calculationThomas Gleixner1-7/+4
Use oobfree to calculate the number of oob bytes available for fs usage Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Use arrays of needed size instead of constant-sized.Artem B. Bityuckiy1-5/+5
Signed-off-by: Artem B. Bityuckiy <dedekind@infradead.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Fixed unused loop variableBen Dooks1-2/+2
Signed-off-by: Ben Dooks <ben@simtec.co.uk> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Use cond_resched instead of msleepThomas Gleixner1-2/+2
Replace msleep by cond_resched. On machines with HZ=100 (e.g. ARM) msleep slows down the operation by factor 10 Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2005-05-23[MTD] NAND: Check command timeoutThomas Gleixner1-11/+26
Check timeout while we wait for the command to finish. No worry about a false result. This prevents deadlocking when detecting an unknown number of chips and is useful for removable media too. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>