- 08 3月, 2007 1 次提交
-
-
由 Vitaly Wool 提交于
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: NVitaly Wool <vwool@ru.mvista.com> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 09 2月, 2007 2 次提交
-
-
由 Artem Bityutskiy 提交于
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: NArtem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
由 Adrian Hunter 提交于
Add checks to ensure that out-of-band reads and writes are not attempted with an invalid offset or length. Specifically, the offset must be less than the size of oob for a page and the length must not go beyond the size of the device. Additionally the checks must adjust for auto-placement (MTD_OOB_AUTO) of oob data. Signed-off-by: NAdrian Hunter <ext-adrian.hunter@nokia.com> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 29 11月, 2006 2 次提交
-
-
由 Thomas Gleixner 提交于
Many SLC NANDs support up to 4 writes at one NAND page. Add support of this feature. Signed-off-by: NArtem Bityutskiy <dedekind@infradead.org> -
由 Vitaly Wool 提交于
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: NVitaly Wool <vwool@ru.mvista.com> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 28 10月, 2006 1 次提交
-
-
由 Jesper Juhl 提交于
Add description of 'raw' in comments for drivers/mtd/nand/nand_base.c::nand_write_page_syndrome() so 'make xmldocs' will not spew a warning at us. Signed-off-by: NJesper Juhl <jesper.juhl@gmail.com> Acked-by: NThomas Gleixner <tglx@linutronix.de> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 26 10月, 2006 1 次提交
-
-
由 Ricard Wanderlöf 提交于
When a flash-based BBT is not used, nand_default_mark_blockbad() is supposed to mark the block bad in the oob. However, it sets the wrong length variable so that no bad block marker is in fact written. This patch attempts to rectify that. (As note, it seems to be that logically, it shouldn't be necessary to set both length variables, as one appears to be for the main buffer, and one for the oob buffer, but this is how it is done in several places, including the code for the mtd character device MEMWRITEOOB and MEMREADOOB ioctls. I'm not sure if this is a temporary solution during some rework of the mtd infrastructure, or whether there is a deeper thought here.) Signed-off-by: NRicard Wanderlöf <ricardw@axis.com> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 22 10月, 2006 2 次提交
-
-
由 David Woodhouse 提交于
Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org> -
由 David Woodhouse 提交于
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: NDavid Woodhouse <dwmw2@infradead.org>
-
- 21 10月, 2006 1 次提交
-
-
由 Artem Bityutskiy 提交于
Signed-off-by: NArtem Bityutskiy <dedekind@infradead.org> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 26 9月, 2006 4 次提交
-
-
由 David Woodhouse 提交于
- 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: NDavid Woodhouse <dwmw2@infradead.org> -
由 David Woodhouse 提交于
In particular, the board driver might need it to be DMAable. Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org> -
由 David Woodhouse 提交于
Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org> -
由 David Woodhouse 提交于
Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 17 9月, 2006 1 次提交
-
-
由 Vitaly Wool 提交于
In the case of data-pad-ecc-pad-data... layout the oob start position has to be sizeof(data) in nand_write_oob_syndrom(). In nand_fill_oob() we need to copy to buf + buffer offset instead of buf + write offset. Signed-off-by: NVitaly Wool <vwool@ru.mvista.com> Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org> Signed-off-by: NAndrew Morton <akpm@osdl.org> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 28 8月, 2006 1 次提交
-
-
由 Richard Purdie 提交于
Read the return value before we release the nand device otherwise the value can become corrupted by another user of chip->ops, ultimately resulting in filesystem corruption. Signed-off-by: NRichard Purdie <rpurdie@rpsys.net> Cc: David Woodhouse <dwmw2@infradead.org> Acked-by: NJosh Boyer <jwboyer@gmail.com> Signed-off-by: NAndrew Morton <akpm@osdl.org> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 15 7月, 2006 1 次提交
-
-
由 David Woodhouse 提交于
Spotted by liyu <liyu@ccoss.com.cn> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 11 7月, 2006 1 次提交
-
-
由 Vitaly Wool 提交于
In the case of data-pad-ecc-pad-data... layout the oob start position has to be sizeof(data) in nand_write_oob_syndrom(). In nand_fill_oob() we need to copy to buf + buffer offset instead of buf + write offset. From: Vitaly Wool <vwool@ru.mvista.com> Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
- 29 6月, 2006 1 次提交
-
-
由 Randy Dunlap 提交于
Fix all kernel-doc warnings in MTD headers and source files: - add some missing struct fields; - correct some function parameter names; - use kernel-doc format for function doc. headers; - nand_ecc.c contains only exported interfaces, no internal ones; Signed-off-by: NRandy Dunlap <rdunlap@xenotime.net> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 28 6月, 2006 1 次提交
-
-
由 Thomas Gleixner 提交于
The other way round works not really well with boards which have a static NAND chipselect. Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
- 21 6月, 2006 3 次提交
-
-
由 Savin Zlobec 提交于
The oob fixups broke a return value and missed one patch from the Mailing List. Signed-off-by: NSavin Zlobec <savin@epico.si> Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
由 Thomas Gleixner 提交于
Following problems are addressed: - wrong status caused early break out of nand_wait() - removed the bogus status check in nand_wait() which is a relict of the abandoned support for interrupted erase. - status check moved to the correct place in read_oob - oob support for syndrom based ecc with strange layouts - use given offset in the AUTOOOB based oob operations Partially based on a patch from Vitaly Vool <vwool@ru.mvista.com> Thanks to Savin Zlobec <savin@epico.si> for tracking down the status problem. Signed-off-by: NThomas Gleixner <tglx@linutronix.de> -
由 Vitaly Wool 提交于
In nand_read_page_syndrome/nand_write_page_syndrome the calculation of the remaining oob length which is not used by the prepad/ecc/postpad areas is wrong. Signed-off-by: NVitaly Wool <vwool@ru.mvista.com> Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
- 30 5月, 2006 2 次提交
-
-
由 Andrew Morton 提交于
drivers/mtd/nand/nand_base.c: In function 'nand_transfer_oob': drivers/mtd/nand/nand_base.c:909: warning: comparison of distinct pointer types lacks a cast drivers/mtd/nand/nand_base.c: In function 'nand_do_read_oob': drivers/mtd/nand/nand_base.c:1097: error: 'len' undeclared (first use in this function) drivers/mtd/nand/nand_base.c:1097: error: (Each undeclared identifier is reported only once drivers/mtd/nand/nand_base.c:1097: error: for each function it appears in.) drivers/mtd/nand/nand_base.c: In function 'nand_fill_oob': drivers/mtd/nand/nand_base.c:1411: warning: comparison of distinct pointer types lacks a cast Signed-off-by: NAndrew Morton <akpm@osdl.org> Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
由 Thomas Gleixner 提交于
The raw read/write access to NAND (without ECC) has been changed in the NAND rework. Expose the new way - setting the file mode via ioctl - to userspace. Also allow to read out the ecc statistics information so userspace tools can see that bitflips happened and whether errors where correctable or not. Also expose the number of bad blocks for the partition, so nandwrite can check if the data fits into the parition before writing to it. Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
- 29 5月, 2006 4 次提交
-
-
由 Thomas Gleixner 提交于
Return -EUCLEAN on read when a bitflip was detected and corrected, so the clients can react and eventually copy the affected block to a spare one. Make all in kernel users aware of the change. Signed-off-by: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
Hopefully the last iteration on this! The handling of out of band data on NAND was accompanied by tons of fruitless discussions and halfarsed patches to make it work for a particular problem. Sufficiently annoyed by I all those "I know it better" mails and the resonable amount of discarded "it solves my problem" patches, I finally decided to go for the big rework. After removing the _ecc variants of mtd read/write functions the solution to satisfy the various requirements was to refactor the read/write _oob functions in mtd. The major change is that read/write_oob now takes a pointer to an operation descriptor structure "struct mtd_oob_ops".instead of having a function with at least seven arguments. read/write_oob which should probably renamed to a more descriptive name, can do the following tasks: - read/write out of band data - read/write data content and out of band data - read/write raw data content and out of band data (ecc disabled) struct mtd_oob_ops has a mode field, which determines the oob handling mode. Aside of the MTD_OOB_RAW mode, which is intended to be especially for diagnostic purposes and some internal functions e.g. bad block table creation, the other two modes are for mtd clients: MTD_OOB_PLACE puts/gets the given oob data exactly to/from the place which is described by the ooboffs and ooblen fields of the mtd_oob_ops strcuture. It's up to the caller to make sure that the byte positions are not used by the ECC placement algorithms. MTD_OOB_AUTO puts/gets the given oob data automaticaly to/from the places in the out of band area which are described by the oobfree tuples in the ecclayout data structre which is associated to the devicee. The decision whether data plus oob or oob only handling is done depends on the setting of the datbuf member of the data structure. When datbuf == NULL then the internal read/write_oob functions are selected, otherwise the read/write data routines are invoked. Tested on a few platforms with all variants. Please be aware of possible regressions for your particular device / application scenario Disclaimer: Any whining will be ignored from those who just contributed "hot air blurb" and never sat down to tackle the underlying problem of the mess in the NAND driver grown over time and the big chunk of work to fix up the existing users. The problem was not the holiness of the existing MTD interfaces. The problems was the lack of time to go for the big overhaul. It's easy to add more mess to the existing one, but it takes alot of effort to go for a real solution. Improvements and bugfixes are welcome! Signed-off-by: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
The nand_oobinfo structure is not fitting the newer error correction demands anymore. Replace it by struct nand_ecclayout and fixup the users all over the place. Keep the nand_oobinfo based ioctl for user space compability reasons. Signed-off-by: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
The info structure for out of band data was copied into the mtd structure. Make it a pointer and remove the ability to set it from userspace. The position of ecc bytes is defined by the hardware and should not be changed by software. Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
- 27 5月, 2006 4 次提交
-
-
由 Thomas Gleixner 提交于
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: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
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: NThomas Gleixner <tglx@linutronix.de> -
由 David Woodhouse 提交于
Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
-
由 Thomas Gleixner 提交于
Modularize the write function and reorganaize the internal buffer management. Remove obsolete chip options and fixup all affected users. Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
- 25 5月, 2006 6 次提交
-
-
由 David Woodhouse 提交于
Bad tglx. No biscuit. Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org> -
由 Thomas Gleixner 提交于
Split the core of the read function out and implement seperate handling functions for software and hardware ECC. Signed-off-by: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
Cleanup the code in the oob related functions and make use of the new NO_READRDY flag. Signed-off-by: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
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: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
The cmd_ctrl rework lacks some state transition flags. Signed-off-by: NThomas Gleixner <tglx@linutronix.de> -
由 Thomas Gleixner 提交于
Cleanup the functions which are not going to change in the next steps. Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-
- 24 5月, 2006 1 次提交
-
-
由 Thomas Gleixner 提交于
Move the define out of the middle of the code and add an appropriate comment. Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
-