linux/drivers
Amul Kumar Saha 3cf602532c 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>
2009-11-30 09:31:13 +00:00
..
accessibility
acpi Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2009-09-23 09:32:11 -07:00
amba Merge branches 'arm', 'at91', 'bcmring', 'ep93xx', 'mach-types', 'misc' and 'w90x900' into devel 2009-09-12 12:01:34 +01:00
ata trivial: fix comment typo in drivers/ata/pata_hpt37x.c 2009-09-21 15:15:53 +02:00
atm
auxdisplay
base mm: oom analysis: add shmem vmstat 2009-09-22 07:17:27 -07:00
block Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2009-09-23 09:23:45 -07:00
bluetooth pcmcia: dtl1_cs: fix pcmcia_loop_config logic 2009-09-15 10:17:16 -07:00
cdrom const: make block_device_operations const 2009-09-22 07:17:25 -07:00
char Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2009-09-23 09:32:11 -07:00
clocksource
connector proc connector: add event for process becoming session leader 2009-09-23 07:39:29 -07:00
cpufreq Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 2009-09-18 09:16:57 -07:00
cpuidle cpuidle: menu governor: reduce latency on exit 2009-09-22 07:17:45 -07:00
crypto
dca
dio
dma at_hdmac: Rework suspend_late()/resume_early() 2009-09-14 20:27:00 +02:00
edac trivial: fix typo "for for" in multiple files 2009-09-21 15:14:54 +02:00
eisa
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-09-23 09:43:22 -07:00
firmware mm: don't use alloc_bootmem_low() where not strictly needed 2009-09-22 07:17:38 -07:00
gpio Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2009-09-23 09:30:48 -07:00
gpu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-09-22 07:51:45 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2009-09-22 07:51:28 -07:00
hwmon spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
i2c Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2009-09-23 09:30:48 -07:00
ide Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2009-09-23 09:32:11 -07:00
idle
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-09-23 09:43:22 -07:00
ieee802154
infiniband walk system ram range 2009-09-23 07:39:41 -07:00
input spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
isdn seq_file: constify seq_operations 2009-09-23 07:39:29 -07:00
leds spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
lguest Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2009-09-23 09:23:45 -07:00
macintosh trivial: remove unnecessary semicolons 2009-09-21 15:14:58 +02:00
mca
md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-09-22 07:51:45 -07:00
media Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-09-22 07:51:45 -07:00
memstick const: make block_device_operations const 2009-09-22 07:17:25 -07:00
message Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-09-22 07:51:45 -07:00
mfd mfd/gpio: add a GPIO interface to the UCB1400 MFD chip driver via gpiolib 2009-09-23 07:39:48 -07:00
misc spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
mmc spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
mtd mtd: OneNAND OTP support rework 2009-11-30 09:31:13 +00:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2009-09-23 09:25:16 -07:00
nubus
of of: remove "stm,m25p40" alias 2009-09-23 07:39:43 -07:00
oprofile const: mark remaining super_operations const 2009-09-22 07:17:24 -07:00
parisc mm: replace various uses of num_physpages by totalram_pages 2009-09-22 07:17:38 -07:00
parport
pci Merge git://git.infradead.org/iommu-2.6 2009-09-23 10:06:10 -07:00
pcmcia pcmcia: cleanup/fixup patch for sa1100_jornada_pcmcia driver 2009-09-22 07:17:42 -07:00
platform Merge branch 'misc-2.6.32' into release 2009-09-19 02:14:45 -04:00
pnp Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2009-09-23 09:32:11 -07:00
power
pps
ps3 powerpc/ps3: Workaround for flash memory I/O error 2009-09-11 11:28:00 +10:00
rapidio
regulator regulator: fix voltage range in da9034 ldo12 2009-09-22 13:58:23 +01:00
rtc rtc: add boot_timesource sysfs attribute 2009-09-23 07:39:46 -07:00
s390 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 2009-09-23 10:02:14 -07:00
sbus const: make block_device_operations const 2009-09-22 07:17:25 -07:00
scsi seq_file: constify seq_operations 2009-09-23 07:39:29 -07:00
serial spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
sfi SFI: remove unneeded includes 2009-09-15 15:08:40 -04:00
sh
sn
spi spi: handle TX-only/RX-only 2009-09-23 07:39:44 -07:00
ssb ssb/sdio: fix printk format warnings 2009-09-16 16:21:00 -04:00
staging spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
tc
telephony
thermal thermal: add missing Kconfig dependency 2009-09-19 01:41:49 -04:00
uio Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-09-18 09:43:09 -07:00
usb USB: skeleton: fix coding style issues. 2009-09-23 06:46:40 -07:00
uwb trivial: remove unnecessary semicolons 2009-09-21 15:14:58 +02:00
video sisfb: change SiS_DDC_Port type to SISIOADDRESS 2009-09-23 07:39:57 -07:00
virtio virtio: add virtio IDs file 2009-09-23 22:26:32 +09:30
vlynq vlynq: includecheck fix: drivers/vlynq/vlynq.c 2009-09-23 07:39:30 -07:00
w1
watchdog [WATCHDOG] sizeof cleanup 2009-09-18 08:39:37 +00:00
xen Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-09-22 07:51:45 -07:00
zorro
Kconfig
Makefile Merge git://git.infradead.org/mtd-2.6 2009-09-23 10:07:49 -07:00