NAND changes

Thomas Gleixner tglx at linutronix.de
Sun Mar 28 13:55:35 EST 2004


Charles, David and I had a discussion on IRC today and we 
worked out a scheme to move things forward.

1. The current interface is kept alive due to following reasons:

- Compability with existing filesystems which rely on a fixed oob scheme to 
guarantee the interoperability of existing devices
- Keeping the interface capable to implement filesystems, which have a given 
fixed OOB layout, like NFTL, SmartMedia FAT and the new SmartMedia XD
- Keeping the interface capable to implement filesystems, which must know 
about the OOB placement scheme

2. The existing interface is extended for filesystems, which want to be 
placement agnostic
	
- The nand layer provides a default placement scheme, which is either a 
builtin default for the small and large block chip types or a scheme, which 
is provided by the hardware driver (DOC, boardXYZ)
- The default placement scheme can be overridden by the filesystem driver or 
by the userspace interface

This is not a big rewrite of the code and the API. It's just adding 
functionality around the existing versatile interface to support 
placement-agnostic oob usage. The existing filesystems will be modfied to 
support the current interface for existing implementations. This should be 
done runtime selectable.
For example:
mount -t fs-v1 could support the legacy interface for small page devices only
mount -t fs-v2 could support the new interface for small and large page 
devices.
The modifications which are neccecary to the file system drivers have to be 
discussed seperately.

Functionality added to the interface:
- Function for bad block queries
- Function for bad block marking
- Default placement schemes for small and large page devices 
- Placement scheme support for hardware drivers (e.g. DOC)
- Function to read the placement scheme from the fs driver

Functional changes
- ECC result reporting fixup
- OOB interface support for autoplacement of OOB data

Changes related to the new 1k/2k pages size devices:
- Support for 16 bit buswidth
- Support for the changed command set
- Support for the extended features in Samsung chips (cache program)

We will not support non page aligned writes, as this would cause PITA for ECC 
handling. Filesystems must be aware of this and provide their own mechanisms 
to handle this if neccecary.

I will work active on the implementation.  I'm happy if somebody provides 
help, most important will be testing on real hardware with large page 
devices, as I don't have one.

-- 
Thomas
________________________________________________________________________
linutronix - competence in embedded & realtime linux
http://www.linutronix.de
mail: tglx at linutronix.de




More information about the linux-mtd mailing list