History log of /drivers/mtd/onenand/onenand_base.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
3b27dac03972c10980ec5480ad8425fc95aae9ad 09-Feb-2012 Shmulik Ladkani <shmulik.ladkani@gmail.com> mtd: unify initialization of erase_info->fail_addr

Initialization of 'erase_info->fail_addr' to MTD_FAIL_ADDR_UNKNOWN prior
erase operation is duplicated accross several MTD drivers, and also taken
care of by some MTD users as well.

Harmonize it: initialize 'fail_addr' within 'mtd_erase()' interface.

Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
6a918bade9dab40aaef80559bd1169c69e8d69cb 11-Mar-2012 Mike Dunn <mikedunn@newsguy.com> mtd: flash drivers set ecc strength

Flash device drivers initialize 'ecc_strength' in struct mtd_info, which is the
maximum number of bit errors that can be corrected in one writesize region.

Drivers using the nand interface intitialize 'strength' in struct nand_ecc_ctrl,
which is the maximum number of bit errors that can be corrected in one ecc step.
Nand infrastructure code translates this to 'ecc_strength'.

Also for nand drivers, the nand infrastructure code sets ecc.strength for ecc
modes NAND_ECC_SOFT, NAND_ECC_SOFT_BCH, and NAND_ECC_NONE. It is set in the
driver for all other modes.

Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
834247ec7e281dee839fe4a04bc1bbf0c7395172 05-Feb-2012 Artem Bityutskiy <artem.bityutskiy@linux.intel.com> mtd: remove retlen zeroing duplication

The MTD API function now zero the 'retlen' parameter before calling
the driver's method — do not do this again in drivers. This removes
duplicated '*retlen = 0' assignent from the following methods:

'mtd_point()'
'mtd_read()'
'mtd_write()'
'mtd_writev()'
'mtd_panic_write()'

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
5def48982b778aaebe201f85af7170b7d0a6619f 03-Feb-2012 Artem Bityutskiy <artem.bityutskiy@linux.intel.com> mtd: do not duplicate length and offset checks in drivers

We already verify that offset and length are within the MTD device size
in the MTD API functions. Let's remove the duplicated checks in drivers.
This patch only affects the following API's:

'mtd_erase()'
'mtd_point()'
'mtd_unpoint()'
'mtd_get_unmapped_area()'
'mtd_read()'
'mtd_write()'
'mtd_panic_write()'
'mtd_lock()'
'mtd_unlock()'
'mtd_is_locked()'
'mtd_block_isbad()'
'mtd_block_markbad()'

This patch adds a bit of noise by removing too sparse empty lines, but this is
not too bad.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
3c3c10bba1e4ccb75b41442e45c1a072f6cded19 30-Jan-2012 Artem Bityutskiy <artem.bityutskiy@linux.intel.com> mtd: add leading underscore to all mtd functions

This patch renames all MTD functions by adding a "_" prefix:

mtd->erase -> mtd->_erase
mtd->read_oob -> mtd->_read_oob
...

The reason is that we are re-working the MTD API and from now on it is
an error to use MTD function pointers directly - we have a corresponding
API call for every pointer. By adding a leading "_" we achieve the following:

1. Make sure we convert every direct pointer users
2. A leading "_" suggests that this interface is internal and it becomes
less likely that people will use them directly
3. Make sure all the out-of-tree modules stop compiling and the owners
spot the big API change and amend them.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
ee16f2af2d464ee4c040e571c225dcbb1ce4a7d3 29-Dec-2011 Artem Bityutskiy <artem.bityutskiy@linux.intel.com> mtd: onenand: kill unused variable

Fix this gcc warning:

drivers/mtd/onenand/onenand_base.c: In function ‘onenand_block_markbad’:
drivers/mtd/onenand/onenand_base.c:2636:23: warning: unused variable ‘this’ [-Wunused-variable]

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
5942ddbc500d1c9b75e571b656be97f65b26adfe 23-Dec-2011 Artem Bityutskiy <artem.bityutskiy@linux.intel.com> mtd: introduce mtd_block_markbad interface

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
d57f40544a41fdfe90fd863b6865138c5a82f1cc 21-Sep-2011 Brian Norris <computersforpeace@gmail.com> mtd: utilize `mtd_is_*()' functions

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
/drivers/mtd/onenand/onenand_base.c
0612b9ddc2eeda014dd805c87c752b342d8f80f0 31-Aug-2011 Brian Norris <computersforpeace@gmail.com> mtd: rename MTD_OOB_* to MTD_OPS_*

These modes are not necessarily for OOB only. Particularly, MTD_OOB_RAW
affected operations on in-band page data as well. To clarify these
options and to emphasize that their effect is applied per-operation, we
change the primary prefix to MTD_OPS_.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
/drivers/mtd/onenand/onenand_base.c
905c6bcdb42616da717a9bd6c0c5870dbd90b09e 31-Aug-2011 Brian Norris <computersforpeace@gmail.com> mtd: move mtd_oob_mode_t to shared kernel/user space

We will want to use the MTD_OOB_{PLACE,AUTO,RAW} modes in user-space
applications through the introduction of new ioctls, so we should make
this enum a shared type.

This enum is now anonymous.

Artem: tweaked the patch.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
/drivers/mtd/onenand/onenand_base.c
0a32a10264d151bc2d1616d69edaf915aa728698 19-Jul-2011 Brian Norris <computersforpeace@gmail.com> mtd: cleanup style on pr_debug messages

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
/drivers/mtd/onenand/onenand_base.c
289c05222172b51401dbbb017115655f241d94ab 19-Jul-2011 Brian Norris <computersforpeace@gmail.com> mtd: replace DEBUG() with pr_debug()

Start moving away from the MTD_DEBUG_LEVEL messages. The dynamic
debugging feature is a generic kernel feature that provides more
flexibility.

(See Documentation/dynamic-debug-howto.txt)

Also fix some punctuation, indentation, and capitalization that went
along with the affected lines.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
/drivers/mtd/onenand/onenand_base.c
7854d3f7495b11be1570cd3e2318674d8f9ed797 23-Jun-2011 Brian Norris <computersforpeace@gmail.com> mtd: spelling, capitalization, uniformity

Therefor -> Therefore
[Intern], [Internal] -> [INTERN]
[REPLACABLE] -> [REPLACEABLE]
syndrom, syndom -> syndrome
ecc -> ECC
buswith -> buswidth
endianess -> endianness
dont -> don't
occures -> occurs
independend -> independent
wihin -> within
erease -> erase
blockes -> blocks
...

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
/drivers/mtd/onenand/onenand_base.c
e1c10243df92822954b9b5e04d12dd2f23a39652 22-Jun-2011 Kyungmin Park <kyungmin.park@samsung.com> mtd: OneNAND: Detect the correct NOP when 4KiB pagesize

There are two different 4KiB pagesize chips
KFM4G16Q4M series have NOP 4 with version ID 0x0131
But KFM4G16Q5M has NOP 1 with versoin ID 0x013e

Note that Q5M means that it has NOP 1.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
/drivers/mtd/onenand/onenand_base.c
711a632d1f0d3ffc576f7a298f66888f66014d61 23-May-2011 Jamie Iles <jamie@jamieiles.com> mtd: onenand: convert to mtd_device_register()

Convert to mtd_device_register() and remove the CONFIG_MTD_PARTITIONS
preprocessor conditionals as partitioning is always available.

Cc: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
eff3bba61fc19a64a1ca56343e38b6506bef9dea 06-May-2011 john.maxin@nokia.com <john.maxin@nokia.com> mtd: onenand: add missing check

Coverity has reported that inside the function "onenand_block_by_block_erase()"
in onenand_base.c, we should add a check to prevent the incrementing of
possible NULL value for "region"

Signed-off-by: Maxin B. John <john.maxin@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
99b17c08bca2810f5910b3027f1b9d82edf7a576 10-Apr-2011 Roman Tereshonkov <roman.tereshonkov@nokia.com> mtd: onenand: add ecclayout and subpage_sft for non-flex 4KiB page onenand

So as the ecclayout and suppage size for 4KiB page
Flex- and none-Flex OneNAND are different
the new values for none-Flex 4KiB page OneNAND memory are added.

The introduced ecclayout and suppage size are based on specification
4Gib M-die OneNAND Flash (KFM4G16Q4M, KFN8G16Q4M). Rev. 1.3, Apr. 2010
For eccpos we expose only 64 bytes out of 72, for oobfree the spare area
fields marked as "Managed by internal ECC logic for Logical Sector Number area"
are used.

Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
b3dcfd35244e1cb8dc8dfa5c05013b133dbb437a 17-Feb-2011 Roman Tereshonkov <roman.tereshonkov@nokia.com> mtd: onenand: add new option to control initial onenand unlocking

A new option ONENAND_SKIP_INITIAL_UNLOCKING is added. This allows
to disable initial onenand unlocking when the driver is initialized.

Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
e6da85685b2dec1e69e58366c22d1f883d6da575 07-Feb-2011 Roman Tereshonkov <roman.tereshonkov@nokia.com> mtd: onenand_base: onenand_verify bugfix for writepage non-aligned address

In onenand_verify function the address can be writepage non-aligned.
When a page is read for comparing the right offset should be used
for "this->verify_buf" to get the right matching with compared
"buf" buffer.

Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com>
Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
b085058fe556328443f982d892c9657b3aff9d4a 07-Feb-2011 Adrian Hunter <adrian.hunter@nokia.com> mtd: OneNAND: return read error for 4KiB page read

When reading using the 4KiB page read function, I/O
errors could be ignored if more than 1 page was read
at a time.

Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
25dcd29786d3fbd5751dc3c5b8109d930ea2d312 16-Dec-2010 Anatolij Gustschin <agust@denx.de> mtd: onenand: add mtd->writebufsize initialization

Initialize mtd->writebufsize to be equal to mtd->writesize.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
cf24dc85ff29a41abd8e73730e5feb22b2666bd3 19-Feb-2010 Adrian Hunter <adrian.hunter@nokia.com> mtd: OneNAND: add enable / disable methods to onenand_chip

Add enable / disable methods called from get_device() / release_device().
These can be used, for example, to allow the driver to prevent the voltage
regulator from being put to sleep while OneNAND is in use.

Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
e0c1a921f62d22d1aa62c72ddb793f898945ff5a 09-Dec-2010 Adrian Hunter <adrian.hunter@nokia.com> mtd: OneNAND: lighten scary initial bad block messages

Initial bad blocks are normal but the messages look like
errors. Make the messages less scary, make the main
message an informational message not a warning, make the
message displaying registers a debug message and include
the address there instead of in the informational message.

Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
d983c54ebd875f5f6fd37c154195c1c456a7af70 06-Dec-2010 Kyungmin Park <kyungmin.park@samsung.com> mtd: OneNAND: Fix multi block erase support at 4KiB pagesize

Original 4KiB pagesize chip (SLC) doesn't support Multi block erase at Spec.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
8a8f632d8534d0c403831341450bd8db9e842f05 02-Dec-2010 Kyungmin Park <kyungmin.park@samsung.com> mtd: OneNAND: Fix 4KiB pagesize OOB handling

Original 4KiB pagesize chip (SLC) doesn't support OOB operations at Spec.
And it's also same at Flex-OneNAND.

Remove the MLC macro if possible and use 4KiB pagesize macro since MLC has 4KiB pagesize.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
ac80dac00f8630803dc0c7f8fbe6983a8e2a8b5f 02-Nov-2010 Roman Tereshonkov <roman.tereshonkov@nokia.com> mtd: onenand: implement cache program feature for 4KiB page onenand

Implement cache program feature for 4KiB page onenand.
This feature improves the write data performance.
The observed 128KiB data program speed change is
from 8827KiB/s to 14156 KiB/s when the feature is enabled.

Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
edb44b9b9cbff71f6aa9bebc384ee1896c8bfc2c 11-Oct-2010 Roman Tereshonkov <roman.tereshonkov@nokia.com> mtd: onenand: fix 4KiB page onenand chip recognition

For 4Gib non-DDP chip it does not follow that it is always 4KiB page chip.
The number of data buffers is checked and if it is equal to 1
we suppose that it is 4KiB page onenand chip.

Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
c76268021e04e4313cd3a32242826f6a93388e2d 27-Sep-2010 Rohit Hassan Sathyanarayan <rohit.hs@samsung.com> mtd: MLC device check in OneNAND driver

The MLC NAND Flash differs from the SLC NAND flash in functioning
and the cell structure. Therefore we are considering it as a
different Flash type.

Signed-off-by: Rohit H.S <rohit.hs@samsung.com>
Signed-off-by: Raghav Gupta <gupta.raghav@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
ad0d363b8fb7559a410483635349e22de6727988 28-May-2010 Kyungmin Park <kmpark@infradead.org> mtd: OneNAND: Introduce chip_probe function

Samsung SoCs use the own OneNAND controler and detect OneNAND chip at power on.
To use this feature, introduce the chip_probe function.

Also remove workaround for Samsung SoCs.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
42b0aab1cc30b2fa7e0a99b832bd1b5c9b59757d 22-Jul-2010 Rohit Hassan Sathyanarayan <rohit.hs@samsung.com> mtd: onenand:fix for page addr calculation based on device type

Sending the patch for page address calculation based on device type. This resolves the
OneNAND DDP device read problem as pointed by Enric.
http://lists.infradead.org/pipermail/linux-mtd/2010-July/030920.html

Signed-off-by: Rohit HS <rohit.hs@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
c37cb56fb15d0f8e4180b19eed20f52fe8641b54 28-Apr-2010 Kyungmin Park <kyungmin.park@samsung.com> mtd: onenand: add workaround for SYNC_WRITE mode

Some chips fails to identify properly when SYNC_WRITE mode is enabled
(the example is OneNAND on S5PC110 SoC). This patch adds a workaround
for such chips.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
3328dc315914aa6db486da2ceb021b6f0b36b877 28-Apr-2010 Kyungmin Park <kyungmin.park@samsung.com> mtd: onenand: add new callback for bufferram read

This patch adds a new callback for the underlying drivers, which is
called instead of accessing the buffer ram directly. This callback will
be used by Samsung OneNAND driver to implement DMA transfers on S5PC110
SoC.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
4a8ce0b030716b95004a4ace969953bc3ad7d2fe 28-Apr-2010 Kyungmin Park <kyungmin.park@samsung.com> mtd: onenand: allocate verify buffer in the core

This patch extends OneNAND core code with support for OneNAND verify
write check. This is done by allocating the buffer for verify read
directly from the core code.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
6a88c47bd528cb0f82692986a3ca57b3695d9c60 28-Apr-2010 Kyungmin Park <kyungmin.park@samsung.com> mtd: onenand: add support for chips with 4KiB page size

This patch adds support for OneNAND chips that have 4KiB page size.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
5a0e3ad6af8660be21ca98a971cd00f331318c05 24-Mar-2010 Tejun Heo <tj@kernel.org> include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h

percpu.h is included by sched.h and module.h and thus ends up being
included when building most .c files. percpu.h includes slab.h which
in turn includes gfp.h making everything defined by the two files
universally available and complicating inclusion dependencies.

percpu.h -> slab.h dependency is about to be removed. Prepare for
this change by updating users of gfp and slab facilities include those
headers directly instead of assuming availability. As this conversion
needs to touch large number of source files, the following script is
used as the basis of conversion.

http://userweb.kernel.org/~tj/misc/slabh-sweep.py

The script does the followings.

* Scan files for gfp and slab usages and update includes such that
only the necessary includes are there. ie. if only gfp is used,
gfp.h, if slab is used, slab.h.

* When the script inserts a new include, it looks at the include
blocks and try to put the new include such that its order conforms
to its surrounding. It's put in the include block which contains
core kernel includes, in the same order that the rest are ordered -
alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
doesn't seem to be any matching order.

* If the script can't find a place to put a new include (mostly
because the file doesn't have fitting include block), it prints out
an error message indicating which .h file needs to be added to the
file.

The conversion was done in the following steps.

1. The initial automatic conversion of all .c files updated slightly
over 4000 files, deleting around 700 includes and adding ~480 gfp.h
and ~3000 slab.h inclusions. The script emitted errors for ~400
files.

2. Each error was manually checked. Some didn't need the inclusion,
some needed manual addition while adding it to implementation .h or
embedding .c file was more appropriate for others. This step added
inclusions to around 150 files.

3. The script was run again and the output was compared to the edits
from #2 to make sure no file was left behind.

4. Several build tests were done and a couple of problems were fixed.
e.g. lib/decompress_*.c used malloc/free() wrappers around slab
APIs requiring slab.h to be added manually.

5. The script was run on all .h files but without automatically
editing them as sprinkling gfp.h and slab.h inclusions around .h
files could easily lead to inclusion dependency hell. Most gfp.h
inclusion directives were ignored as stuff from gfp.h was usually
wildly available and often used in preprocessor macros. Each
slab.h inclusion directive was examined and added manually as
necessary.

6. percpu.h was updated not to include slab.h.

7. Build test were done on the following configurations and failures
were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
distributed build env didn't work with gcov compiles) and a few
more options had to be turned off depending on archs to make things
build (like ipr on powerpc/64 which failed due to missing writeq).

* x86 and x86_64 UP and SMP allmodconfig and a custom test config.
* powerpc and powerpc64 SMP allmodconfig
* sparc and sparc64 SMP allmodconfig
* ia64 SMP allmodconfig
* s390 SMP allmodconfig
* alpha SMP allmodconfig
* um on x86_64 SMP allmodconfig

8. percpu.h modifications were reverted so that it could be applied as
a separate patch and serve as bisection point.

Given the fact that I had only a couple of failures from tests on step
6, I'm fairly confident about the coverage of this conversion patch.
If there is a breakage, it's likely to be something in one of the arch
headers which should be easily discoverable easily on most builds of
the specific arch.

Signed-off-by: Tejun Heo <tj@kernel.org>
Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
/drivers/mtd/onenand/onenand_base.c
0a032a4df6dc4a82bcd1c401e57ee71825d30c14 16-Dec-2009 Roel Kluin <roel.kluin@gmail.com> mtd: OneNAND: Fix test of unsigned in onenand_otp_walk()

mtd->writesize and len are unsigned so the test does not work.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
f369c7ec94da63fc68cf7fa43516414888865c14 23-Oct-2009 Mika Korhonen <ext-mika.2.korhonen@nokia.com> mtd: OneNAND: fix double printing of function name

Signed-off-by: Mika Korhonen <ext-mika.2.korhonen@nokia.com>
Reviewed-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
72073027ee95d059eb5a064da4a978efab36d4ab 23-Oct-2009 Mika Korhonen <ext-mika.2.korhonen@nokia.com> mtd: OneNAND: multiblock erase support

Add support for multiblock erase command. OneNANDs (excluding Flex-OneNAND)
are capable of simultaneous erase of up to 64 eraseblocks which is much faster.

This changes the erase requests for regions covering multiple eraseblocks
to be performed using multiblock erase.

Signed-off-by: Mika Korhonen <ext-mika.2.korhonen@nokia.com>
Reviewed-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
73885aeaca046a21183db598c2da46529e46fdab 23-Oct-2009 Mika Korhonen <ext-mika.2.korhonen@nokia.com> mtd: OneNAND: move erase method to a separate function

Separate the actual execution of erase to a new function:
onenand_block_by_block_erase(). This is done in preparation for
the multiblock erase support.

Signed-off-by: Mika Korhonen <ext-mika.2.korhonen@nokia.com>
Reviewed-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
3cf602532c535ec655725e9833378e04c9fd7783 21-Oct-2009 Amul Kumar Saha <amul.saha@samsung.com> mtd: OneNAND OTP support rework

What is OTP in OneNAND?
The device includes,
1. one block-sized OTP (One Time Programmable) area and
2. user-controlled 1st block OTP(Block 0)
that can be used to increase system security or to provide
identification capabilities.

What is done?
In OneNAND, one block of the NAND Array is set aside as an OTP
memory area, and 1st Block (Block 0) can be used as OTP area.
This area, available to the user, can be configured and locked
with secured user information. The OTP block can be read,
programmed and locked using the same operations as any other NAND
Flash Array memory block. After issuing an OTP-Lock, OTP block
cannot be erased. OTP block is fully-guaranteed to be a good
block.

Why it is done?
Locking the 1st Block OTP has the effect of a 'Write-protect' to
guard against accidental re-programming of data stored in the 1st
block and OTP Block.

Which problem it solves?
OTP support is provided in the existing implementation of
OneNAND/Flex-OneNAND driver, but it is not working with OneNAND
devices. Have observed the following in current OTP OneNAND Implmentation,
1. DataSheet specific sequence to lock the OTP Area is not followed.
2. Certain functions are quiet generic to cope with OTP specific activity.
This patch re-implements OTP support for OneNAND device.

How it is done?
For all blocks, 8th word is available to the user.
However, in case of OTP Block, 8th word of sector 0, page 0 is reserved as
OTP Locking Bit area. Therefore, in case of OTP Block, user usage on this
area is prohibited. Condition specific values are entered in the 8th word,
sector0, page 0 of the OTP block during the process of issuing an OTP-Lock.
The possible conditions are:
1. Only 1st Block Lock
2. Only OTP Block Lock
3. Lock both the 1st Block and the OTP Block

What Other feature additions have been done in this patch?
This patch adds feature for:
1. Only 1st Block Lock
2. Lock both the 1st Block and the OTP Blocks

Re-implemented OTP support for OneNAND
Added following features to OneNAND
1. Lock only 1st Block in OneNAND
2. Lock BOTH 1st Block and OTP Block in OneNAND

[comments were slightly tweaked by Artem]

Signed-off-by: Amul Kumar Saha <amul.saha@samsung.com>
Reviewed-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
8032747e7680a31cdde293421af62d2e1904c528 05-Oct-2009 David Woodhouse <David.Woodhouse@intel.com> mtd: make onenand_base.c compile again

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
297758f8fc4e92b1915d2f5f2f84cedfe8941e5a 02-Oct-2009 Amul Kumar Saha <amul.saha@samsung.com> mtd: Standardising prints in onenand_base.c

This patch resolves all the prints present in onenand_base.c
Primarily, it replaces the hard-coded function names in the prints,
and makes use of __func__.

Signed-off-by: Amul Kumar Saha <amul.saha@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
492e1501431e0d24c5b46933fdcb60639eacded7 09-Jun-2009 Mika Korhonen <mika.j.korhonen@gmail.com> mtd: OneNAND: spelling fixes

Signed-off-by: Mika Korhonen <mika.j.korhonen@gmail.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
c90173f0907486fe4010c2a8cef534e2473db43f 16-Jun-2009 Amul Saha <amul.saha@samsung.com> mtd: OneNAND: Allow setting of boundary information when built as module

This patch unifies the flex_bdry setting for module vs. built-in
configuration of OneNAND.

Signed-off-by: Amul Kumar Saha <amul.saha@samsung.com>
Signed-off-by: Vishak G <vishak.g@samsung.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
31bb999ee73748068ddc271dd99b22dcc418efe3 12-May-2009 Kyungmin Park <kmpark@infradead.org> mtd: onenand: add bbt_wait & unlock_all as replaceable for some platform

Add bbt_wait & unlock_all as replaceable for some platform such as
s3c64xx s3c64xx has its own OneNAND controller and another interface

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
5988af2319781bc8e0ce418affec4e09cfa77907 12-May-2009 Rohit Hagargundgi <h.rohit@samsung.com> mtd: Flex-OneNAND support

Add support for Samsung Flex-OneNAND devices.

Flex-OneNAND combines SLC and MLC technologies into a single device.
SLC area provides increased reliability and speed, suitable for storing
code such as bootloader, kernel and root file system. MLC area
provides high density and is suitable for storing user data.

SLC and MLC regions can be configured through kernel parameter.

[akpm@linux-foundation.org: export flexoand_region and onenand_addr]
Signed-off-by: Rohit Hagargundgi <h.rohit@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Vishak G <vishak.g@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
ee8f37688966ab1438d0cf42e0cb7c6595d9592c 05-May-2009 Adrian Hunter <adrian.hunter@nokia.com> mtd: OneNAND: add support for OneNAND manufactured by Numonyx

In addition to adding the Numonyx manufacturer code, this patch
also ensures 'sync. write' is disabled when reading identification
data - something that the Numonyx chip objects to, but the
Samsung chip seems to ignore.

Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
9ce969082e490d0a5a81862b364337c93dc3482a 17-Nov-2008 Kyungmin Park <kmpark@infradead.org> [MTD] [OneNAND] Add write-while-program support

OneNAND write-while-program method of writing improves performance,
compared with ordinary writes, by transferring data to OneNAND's
RAM buffers atthe same time as programming the NAND core.

When writing several NAND pages at a time, an improvement of
12% to 25% is seen.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
69423d99fc182a81f3c5db3eb5c140acc6fc64be 10-Dec-2008 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] update internal API to support 64-bit device size

MTD internal API presently uses 32-bit values to represent
device size. This patch updates them to 64-bits but leaves
the external API unchanged. Extending the external API
is a separate issue for several reasons. First, no one
needs it at the moment. Secondly, whether the implementation
is done with IOCTLs, sysfs or both is still debated. Thirdly
external API changes require the internal API to be accepted
first.

Note that although the MTD API will be able to support 64-bit
device sizes, existing drivers do not and are not required
to do so, although NAND base has been updated.

In general, changing from 32-bit to 64-bit values cause little
or no changes to the majority of the code with the following
exceptions:
- printk message formats
- division and modulus of 64-bit values
- NAND base support
- 32-bit local variables used by mtdpart and mtdconcat
- naughtily assuming one structure maps to another
in MEMERASE ioctl

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
bb0eb217c980d50c45f3e793b4dcc70ab9ee820d 11-Aug-2008 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] Define and use MTD_FAIL_ADDR_UNKNOWN instead of 0xffffffff

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
/drivers/mtd/onenand/onenand_base.c
83973b87938a06a2af7e2a7fd1b630c35f8baff4 29-May-2008 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Check the ECC status first instead of controller

To get the correct information in case of power off recovery,
it should read ECC status first
Also remove previous workaround method.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
67e5a28b35254bbbcd5bfce61ef646709e059bbf 14-Apr-2008 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] Allow for controller errors when reading

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>
/drivers/mtd/onenand/onenand_base.c
b73d7e4381311bea024bf7cedcba3dcf20f63aab 16-Feb-2008 Roel Kluin <12o3l@tiscali.nl> [MTD] [OneNAND] unlikely(x) || unlikely(y) => unlikely(x || y)

Acked-By: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
66a10506d632051e1153e2555f4b2c820d427f64 13-Feb-2008 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Fix unlock all in Double Density Package (DDP)

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
6c77fd649fab4bea1b44cb534381a22e37650bc3 06-Feb-2008 Richard Purdie <rpurdie@rpsys.net> [MTD] onenand: Add panic_write function to the onenand driver

Implement the panic_write function for the onenand driver. This waits
for any active command to complete/timeout, performs the write, waits
for it to complete and then returns.

Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
69d79186dc48ca22a0ce69511bef8ef6c2465ada 14-Dec-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Use pre-alloced oob buffer instead of local buffer

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
978cb38a296fceac82a8a757f6387d7ef2a21ac6 13-Dec-2007 Sheng Yongjie (Sam <samsheng@trident.com.cn> [MTD] [OneNAND] Use the u_char instead of char in oobbuf

In function onenand_verify_oob, local variable oobbuf shall be unsigned char.

In the case of a value is >= 0x80, it's unequal in comparing the value in an unsigned char and signed char.

Signed-off-by: Sheng Yongjie (Sam) <samsheng@trident.com.cn>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
b2581be291aa8595eadf3d6933d04d0f1d01b46d 13-Dec-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Check the initial bad block using ONENAND_CTRL_ERROR

Some chips don't set the ONENAND_CTRL_LOAD bit.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
e71f04fc9234b14636887ceb5862755f1690642c 11-Dec-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Get correct density from device ID

Use the higher bits for other purpose.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
b21b72cf33bb212414c1d967850e261b795befa4 11-Dec-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Consolidate OneNAND operation order

Consolidate OneNAND operation order as OneNAND Spec.
It also doesn't break previous operation order.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
9d2f0b7a3de28d06ba4011b835b9a7e772553f0d 21-Jan-2008 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] fix call to onenand_verify when writing subpages

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
d0b36d8cc8f345ec5faadd15daaecfb409b94523 23-Jan-2008 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] Do not release chip twice

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
5f4d47d5d1060a93be83e33a167a53a7f8c08b20 06-Nov-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] Do not stop reading for ECC errors

When an ECC error occurs, the read should be completed
anyway before returning -EBADMSG. Returning -EBADMSG
straight away is incorrect.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
06efcad0d43a5491602f7d7bfc1ce997cdb0d062 19-Oct-2007 Jeff Garzik <jeff@garzik.org> Eliminate pointless casts from void* in a few driver irq handlers.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
/drivers/mtd/onenand/onenand_base.c
3cd3a86b6fdcb80ad097850a0990bcf6251422fe 12-Oct-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] Avoid deadlock in erase callback; release chip lock first.

When the erase callback performs some other action on the flash, it's
highly likely to deadlock unless we actually release the chip lock
before calling it.

This patch mirrors that same change already done for NAND.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
30a7eb298af849bae3050e0a3f4c130995da22b0 12-Oct-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] Return only negative error codes

The OneNAND driver was confusing JFFS2 by returning positive error
codes.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
34627f0e768de6af95e3523c29a16cbb95ce3197 12-Oct-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] Synchronize block locking operations

Ensure OneNAND's block locking operations are synchronized
like all other operations.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
1437085c3780f064a06df662195a2695e7d75c09 10-Oct-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Fix typo related with recent commit

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
49dc08eeda707f59019814fe07a2b17979348002 21-Sep-2007 Artem Bityutskiy <Artem.Bityutskiy@nokia.com> [MTD] [OneNAND] fix numerous races

This patch make the OneNAND driver much less racy. It fixes
our "onenand_wait: read timeout!" heisenbugs. The reason of
these bugs was that the driver did not lock the chip when
accessing OTP, and it screwed up OneNAND state when the OTP
was read while JFFS2 was doing FS checking.

This patch also fixes other races I spotted:
1. BBT was not protected
2. Access to ecc_stats was not protected

Now the chip is locked when BBT is accessed.

To fix all of these I basically split all interface functions
on 'function()' and 'function_nolock()' parts.

I tested this patch on N800 hardware - it fixes our problems.
But I tested a little different version because our OneNAND
codebase is slightly out-of-date. But it should be OK.

This patch also includes the prin fixes I posted before.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
d15057b7034d9fdc4259b66a0367c9d8ffcf0620 06-Sep-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] main read/write ops support for yaffs2

Now we can use yaffs2 on OneNAND

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
12f77c9eed0d2a9f598500d9c1e3dd48883f1d0c 30-Aug-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Use mtd_oob_ops at oob functions

To enable the main read/write at oob ops

Next time we will commit the main read/write support for yaffs2

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
ee9745fcf214272b7cdd9d320d044cf433ee958e 30-Jun-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] 2X program support

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 <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
59c51591a0ac7568824f541f57de967e88adaa07 09-May-2007 Michael Opdenacker <michael@free-electrons.com> Fix occurrences of "the the "

Signed-off-by: Michael Opdenacker <michael@free-electrons.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
/drivers/mtd/onenand/onenand_base.c
c36c46d53b2f95bfcbe992cfb541a78ab92310a4 23-Mar-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] Exit loop only when column start with 0

The JFFS2 requests OOB function from column 0.
But the oobtest in nand-tests doesn't.
So we only exit loop only when column start with 0.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
ad286343665cad2135792bcf53117d8344f64b03 23-Mar-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Fix access the past of the real oobfree array

Here it's not the case: all the entries are occupied by
OOB chunks. Therefore, once we get into a loop like

for (free = this->ecclayout->oobfree; free->length; ++free) {
}

we might end up scanning past the real oobfree array.

Probably the best way out, as the same thing might happen for common NAND
as well, is to check index against MTD_MAX_OOBFREE_ENTRIES.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
470bc844361b238bcbe6a07ba47d51fca25f2742 09-Mar-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Classify the page data and oob buffer

Classify the page data and oob buffer
and it prevents the memory fragementation (writesize + oobsize)

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
5bc399e9ef430efd5725b66aa2ad7ad2d81e372b 09-Mar-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Exit the loop when transferring/filling of the oob is finished

When transferring/filling of the oob is finished in OOB_AUTO, we exit the loop

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
81280d5879761f90b3a341d52371d03998730d8e 15-Feb-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] [OneNAND] add Nokia Copyright and a credit

add Nokia Copyright and a credit

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
e3da8067b3ef16943c02b64baa84dacca1e423be 15-Feb-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Fix typo & wrong comments

Fix typo & wrong comments

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
91014e9bfaaac32ab46ab46251d774468891bafe 12-Feb-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] [OneNAND] Use oob buffer instead of main one in oob functions

In oob functions, it is used main buffer instead of oob one. So fix it.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
1f92267c51a514f35ad5b0fd46cb099c0980b679 06-Mar-2007 Vitaly Wool <vwool@ru.mvista.com> [MTD] [NAND] make oobavail public

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 <vwool@ru.mvista.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
5785bdd6fca4e117c9891c377347ff1a987abb1b 18-Feb-2007 Andrew Morton <akpm@linux-foundation.org> [MTD] [ONENAND] onenand_base warning fix

drivers/mtd/onenand/onenand_base.c: In function 'onenand_bbt_read_oob':
drivers/mtd/onenand/onenand_base.c:1033: warning: format '%i' expects type 'int', but argument 3 has type 'size_t'

Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
64f60710568db5cec1a76c1d1e261b239f9ef809 30-Jan-2007 Artem Bityutskiy <Artem.Bityutskiy@nokia.com> [MTD] remove unused ecctype,eccsize fields from struct mtd_info

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 <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
480b9dfb1fbeb783d4c0061df7868c39af91afec 07-Feb-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Invalidate bufferRAM after erase

OneNAND has internal bufferRAMs. The driver keeps track of
what is in the bufferRAM to save having to load from the
NAND core. After an erase operation, the driver must
mark bufferRAM invalid if it refers to the erased block.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
cde36b37d6fa5ebc8c95461a972c379185626b2c 08-Feb-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Select correct chip's bufferRAM for DDP

OneNAND double-density package (DDP) has two chips, each with
their own bufferRAM. The driver will skip loading data from
the NAND core if the data can be found in a bufferRAM, however
in that case, the correct chip's bufferRAM must be selected
before reading from bufferRAM.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
211ac75f5e867ab7a54811a514814149caca42c3 06-Feb-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Error message printing and bad block scan erros

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 <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
81f38e11233dae671c0673bbdcea01194b75d68f 07-Feb-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Subpage write returned incorrect length written

When a write is done, the length written is returned. When a
single subpage is written the length returned should be the
subpage size, however the page size was being returned.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
52e4200a6da2d98c537b95f7c502ddadf96a6934 06-Feb-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Do not allow oob write past end of page

OneNAND can write oob to successive pages, but NAND
does not do that. For compatibility, disallow OneNAND
from writing past the end of the page.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
5b4246f1b089746703287fdf422cf15c6d6eff05 02-Feb-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Fix typo and remove unnecessary goto statement

In previos patch, there's typo so fix it
Remove unnecessary goto statement

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
abf3c0f23df6686a984efc8fae7277fcdaffaa32 02-Feb-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Reduce internal BufferRAM operations

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 <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
4f4fad27aceb87621d40f3068b94b5b11fc0127b 02-Feb-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Remove line of code that was meant to be deleted in OOB_AUTO

- Iterations of the patch to add oob auto-placement support to OneNAND left a line of code that was meant to have been deleted.
- read mtd->oobsize in onenand_transfer_auto_oob to optimized memcpy

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
a5e7c7b447270d42c3eb4d2259f74019aca9d007 31-Jan-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Add support for auto-placement of out-of-band data

Enable the use of oob operation mode MTD_OOB_AUTO with OneNAND.
Note that MTD_OOB_RAW is still not supported.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
9bfbc9b24f663b15149874a94a69ba89b3b7e44c 31-Jan-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Remove unused fields

- Remove unused fields
- Fix typo

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
8b29c0b6eb3a4952e7eae03038bbf6c1695dfe80 25-Jan-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Amend write-verify to compare to original buffer

When write-verify is enabled (CONFIG_MTD_ONENAND_VERIFY_WRITE),
the data written is read back and compared. The comparison
was being made between dataRAM buffers, but this does not
verify that the data made it to the dataRAM correctly in
the first place. This patch amends write-verify to
compare back to the original buffer. It also now verifies
sub-page writes.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
f00b0046d2eafac3e78e8def9374c7492820a9d2 22-Jan-2007 Adrian Hunter <[ext-adrian.hunter@nokia.com]> [MTD] OneNAND: Free the bad block table when the device is released

OneNAND does 2 memory allocations for bad block information.
Only one of them was being freed.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
75384b0d9c04dc2d48f45825f84a982eaf5c2f53 18-Jan-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Update copyrights and code cleanup

Update copyrights and code cleanup

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
738d61f53781a9b677cb472cbd740aa74e7dcd6d 15-Jan-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Reduce Double Density Package (DDP) operations

- DDP code clean-up
- Reduce block & bufferram operations in DDP

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
9d03280129e84f8cdfd83f84803a4548e3bf697d 10-Jan-2007 Adrian Hunter <hunter.programmer@gmail.com> [MTD] OneNAND: Return an error if a read timeout occurs

If OneNAND is operating within specification, all operations should easily be
completed within the 20 millisecond timeout.
This patch faithlessly adds a check for the timeout and returns an error in
that case.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
10b7a2bd6bf3510cbb5977a44d8822f085738729 11-Jan-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Fix unlock all status error

We have to set ONENAND_REG_START_BLOCK_ADDRESS to avoid status error

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
0fc2ccea4c8fa779053cb6f8984f6da399a81182 09-Jan-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Handle DDP chip boundary during read-while-load

The read-while-load method of reading from OneNAND needs to allow
for the change of bufferRAM address at the boundary between the
two chips in a double density (DDP) device.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
b3c9f8bfe7ab366a5d2495ebe5d2dc6fd7368122 05-Jan-2007 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: return ecc error code only when 2-bit ecc occurs

we don't need to return ecc error when 1-bit ecc.
We only return error code when 2-bit ecc error

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
a8de85d557004d6d4e4cf79ecd6b97339b986fe9 04-Jan-2007 Adrian Hunter <ext-adrian.hunter@nokia.com> [MTD] OneNAND: Implement read-while-load

Read-while-load enables higher performance read operations.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
2fd32d4af83f4535d12d3f6dd23189352a9596fa 29-Dec-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: fix onenand_wait bug in read ecc error

Even though there is ECC error. OneNAND driver updates the buffram as valid

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
61a7e1983e773b93aac172dadc97f1eb484536b4 26-Dec-2006 Artem Bityutskiy <Artem.Bityutskiy@nokia.com> [MTD] OneNAND: release CPU in cycles

This patch teaches OneNAND to release processor in
read/write/erase cycles and let other processes proceed.
Also, remove buggi touch watchdog call which only hides
the problem instead of solving it.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
60d84f9739a47d0ed8e19805d9056e39fba31c79 22-Dec-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: add subpage write support

OneNAND supports up to 4 writes at one NAND page. Add support of this feature.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
f62724873652ddb19edf7f92843e9456fe3be3ea 22-Dec-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: fix onenand_wait bug

Fix onenand_wait error reporting

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
66a1e421b98edaa62c7d95cc53cb381efa3fb9bf 11-Dec-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: fix oob handling in recent oob patch

There are missing place in recent MTD oob patch

http://git.infradead.org/?p=mtd-2.6.git;a=commitdiff;h=7014568bad55c20b7ee4f439d78c9e875912d51f

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
c9ac5977299dd106ddb759e7e10035770dff185b 30-Nov-2006 David Woodhouse <dwmw2@infradead.org> [MTD] Remove trailing whitespace

The newly-added cafe_ecc.c had a lot of it because of the way the lookup
table was auto-generated; clean up the other files too while we're at it.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
f4f91ac3c833abbd7181ff2122c6b48a653b4e55 15-Nov-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Single bit error detection

Idea from Jarkko Lavinen

Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
08f782b60a633cbd926ef5e49de303a752390719 16-Nov-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: lock support

Now you can use mtd lock inferface on OneNAND

The idea is from Nemakal, Vijaya, thanks

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
2c22120fbd017d78ad2b6825ba573db3ef539bca 16-Nov-2006 Kyungmin Park <kyungmin.park@samsung.com> MTD: OneNAND: interrupt based wait support

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>
/drivers/mtd/onenand/onenand_base.c
28b79ff9661b22e4c41c0d00d4ab8503e810f13d 26-Sep-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD ONENAND] Check OneNAND lock scheme & all block unlock command support

OneNAND lock scheme depends on density and process of chip.
Some OneNAND chips support all block unlock

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
47e777e02e7b21eaa4686a70069c9583c126aea8 26-Sep-2006 Kyungmin Park <kyungmin.park@samsung.com> [MTD ONENAND] Fix OneNAND probe

- fix OneNAND probe whether OneNAND Sync. Burst read mode or not
- fix OneNAND reset wait problem

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
/drivers/mtd/onenand/onenand_base.c
8593fbc68b0df1168995de76d1af38eb62fd6b62 29-May-2006 Thomas Gleixner <tglx@cruncher.tec.linutronix.de> [MTD] Rework the out of band handling completely

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: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
5bd34c091a044d130601370c370f84b1c59f1627 27-May-2006 Thomas Gleixner <tglx@cruncher.tec.linutronix.de> [MTD] NAND Replace oobinfo by ecclayout

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: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
ff268fb8791cf18df536113355d7184007c269d9 27-May-2006 Thomas Gleixner <tglx@cruncher.tec.linutronix.de> [MTD] NAND Consolidate oobinfo handling

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: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
9223a456da8ed357bf7e0b128c853e2c8bd54614 23-May-2006 Thomas Gleixner <tglx@cruncher.tec.linutronix.de> [MTD] Remove read/write _ecc variants

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>
/drivers/mtd/onenand/onenand_base.c
2528e8cdf376d7da24647c442ec1e88c360d76ca 23-May-2006 Thomas Gleixner <tglx@cruncher.tec.linutronix.de> [MTD] Remove readv/readv_ecc

These functions were never implemented and added only bloat to
partition and concat code.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
9d8522df37f91621a70c5c0dbbf5bf2220b16798 23-May-2006 Thomas Gleixner <tglx@cruncher.tec.linutronix.de> [MTD] Remove nand writev support

NAND writev(_ecc) support is not longer necessary. Remove it.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
5fa433942ba4e399f7e28764c9db4ade89e91d40 22-May-2006 Joern Engel <joern@wh.fh-wedel.de> [MTD] Introduce MTD_BIT_WRITEABLE

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>
/drivers/mtd/onenand/onenand_base.c
28318776a80bc3261f9af91ef79e6e38bb9f5bec 22-May-2006 Joern Engel <joern@wh.fh-wedel.de> [MTD] Introduce writesize

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>
/drivers/mtd/onenand/onenand_base.c
752870707f2818b5f0d94ca05e46cb0ffee6cbf9 12-May-2006 Kyungmin Park <kyungmin.park@samsung.com> OneNAND: fix block command typo

We need to check block cmd only instead with comparing with cmd

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
493c646077ef0b8668ed71b8057f81cb7454af87 12-May-2006 Kyungmin Park <kyungmin.park@samsung.com> OneNAND: One-Time Programmable (OTP) support

One Block of the NAND Flash Array memory is reserved as
a One-Time Programmable Block memory area.
Also, 1st Block of NAND Flash Array can be used as OTP.

The OTP block can be read, programmed and locked using the same
operations as any other NAND Flash Array memory block.
OTP block cannot be erased.

OTP block is fully-guaranteed to be a valid block.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
3cecf69ecde22199699c4f0e609dfed2a487b674 12-May-2006 Kyungmin Park <kyungmin.park@samsung.com> OneNAND: Handle erase correctly in Double Density Package (DDP)

There's erase bug in DDP.
We need to add DDP select in erase

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
34c1060959b61a5bb2e97a88411446028cebfa7c 12-May-2006 Kyungmin Park <kyungmin.park@samsung.com> OneNAND: Write oob area with aligned size, mtd->oobsize

There's some problem with write oob in serveral platform.
So we write oob with oobsize aligned (16bytes) instead of 3 bytes (from {2,
3})

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
8e6ec69059ba0eecbb2226d3d9e45c6efe6fb82b 12-May-2006 Kyungmin Park <kyungmin.park@samsung.com> OneNAND: Add write_oob verify function

Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com>
/drivers/mtd/onenand/onenand_base.c
d9777f1c42bffff0d21cd029a2415776aa874e96 12-May-2006 Jarkko Lavinen <jarkko.lavinen@nokia.com> OneNand: Fix free byte positions.

Some free byte positions at onenand_oob_64 were wrong. This was also
reported by Christian Lehne. 3 byte slots are at 2+16*i and 2 byte
slots at 14+16*i.

Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com>
/drivers/mtd/onenand/onenand_base.c
9c01f87db183403a4f603fe5180c57b82b54b4a1 12-May-2006 Kyungmin Park <kyungmin.park@samsung.com> OneNAND: handle byte access on BufferRAM

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
628bee6593107c466e28462f58c5fd5cd4163c7c 12-May-2006 Kyungmin Park <kyungmin.park@samsung.com> OneNAND: Add touch_softlock_watchdog()

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
/drivers/mtd/onenand/onenand_base.c
532a37cf8d05dd1aa5631be836036204b0d2b4a1 16-Dec-2005 Kyungmin Park <kyungmin.park@samsung.com> [PATCH] mtd onenand driver: reduce stack usage

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
/drivers/mtd/onenand/onenand_base.c
20ba89a3614bbc5d111fd74375e14c577859b2a3 16-Dec-2005 Kyungmin Park <kyungmin.park@samsung.com> [PATCH] mtd onenand driver: fix unlock problem in DDP
/drivers/mtd/onenand/onenand_base.c
37b1cc3910f7976369fc0ed55068a686e92555e6 16-Dec-2005 Kyungmin Park <kyungmin.park@samsung.com> [PATCH] mtd onenand driver: check correct manufacturer

This (and the three subsequent patches) is working well on OMAP H4 with
2.6.15-rc4 kernel and passes the LTP fs test.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
/drivers/mtd/onenand/onenand_base.c
015953d706b1b7ad61c37fe329042828a0f3b0f6 09-Nov-2005 Andrew Morton <akpm@osdl.org> [PATCH] mtd: onenand_base needs sched.h

drivers/mtd/onenand/onenand_base.c: In function `onenand_wait':
drivers/mtd/onenand/onenand_base.c:293: error: `jiffies' undeclared (first use in this function)
drivers/mtd/onenand/onenand_base.c:293: error: (Each undeclared identifier is reported only once
drivers/mtd/onenand/onenand_base.c:293: error: for each function it appears in.)
drivers/mtd/onenand/onenand_base.c:293: error: implicit declaration of function `msecs_to_jiffies'
drivers/mtd/onenand/onenand_base.c:294: error: implicit declaration of function `time_before'
drivers/mtd/onenand/onenand_base.c:301: error: implicit declaration of function `cond_resched'
drivers/mtd/onenand/onenand_base.c: In function `onenand_get_device':
drivers/mtd/onenand/onenand_base.c:522: error: implicit declaration of function `set_current_state'
drivers/mtd/onenand/onenand_base.c:522: error: `TASK_UNINTERRUPTIBLE' undeclared (first use in this function)
drivers/mtd/onenand/onenand_base.c:525: error: implicit declaration of function `schedule'
drivers/mtd/onenand/onenand_base.c: In function `onenand_release_device':
drivers/mtd/onenand/onenand_base.c:545: error: `TASK_UNINTERRUPTIBLE' undeclared (first use in this function)
drivers/mtd/onenand/onenand_base.c:545: error: `TASK_INTERRUPTIBLE' undeclared (first use in this function)

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
/drivers/mtd/onenand/onenand_base.c
d5c5e78af5cbcaeb7cad5a3c0117de593e5f4824 07-Nov-2005 Thomas Gleixner <tglx@linutronix.de> [MTD] OneNAND: Clean up trailing white spaces

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
83a368380e172c1b2e9fd6ec2a62e457684adf0c 29-Sep-2005 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Enhanced support for DDP (Dual Densitiy Packages)

Add density mask for better support of DDP chips.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
a41371eb6d9b368e53867cd85156f07371e9f72f 29-Sep-2005 Kyungmin Park <kyungmin.park@samsung.com> [MTD] OneNAND: Power Management (PM) support

Add suspend/resume

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
d36d63d404b75ddf231da0dbd3640e6d1722b4ab 03-Sep-2005 Kyungmin Park <kyungmin.park@samsung.com> [PATCH] OneNAND: Fix bug in write verify

- Remove unused block, page parameters
- Add constant instead of runtime value

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
cdc001305da4f057353911018e28f26f8f879061 03-Sep-2005 Kyungmin Park <kyungmin.park@samsung.com> [PATCH] OneNAND: Simple Bad Block handling support

Based on NAND memory bad block table code

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
52b0eea73de05df33c51ca652e288a3ba1bba03b 03-Sep-2005 Kyungmin Park <kyungmin.park@samsung.com> [PATCH] OneNAND: Sync. Burst Read support

Add OneNAND Sync. Burst Read support
Tested with OMAP platform

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c
cd5f6346bc28a41375412b49b290d22ee4e4bbe8 11-Jul-2005 Kyungmin Park <kyungmin.park@samsung.com> [MTD] Add initial support for OneNAND flash chips

OneNAND is a new flash technology from Samsung with integrated SRAM
buffers and logic interface.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/drivers/mtd/onenand/onenand_base.c