The FreeBSD NAND framework consists of a set of interfaces that aim to
provide an extensible, object oriented environment for NAND controllers
and NAND Flash memory chips from various hardware vendors, and to allow
for uniform and flexible management of the NAND devices. It comprises of
the following major components:
 - NAND Flash controller (NFC) interface.
         Defines methods which allow to send commands as well as send/receive
         data between the controller and a NAND chip. Back-end drivers for
         specific NAND controllers plug into this interface and implement low-
         level routines for a given NAND controller.
 - NAND chip interface.
         Provides basic operations like read page, program page, erase block.
         Currently three generic classes of drivers are available, which pro-
         vide support for the following chips: large page, small page,
         ONFI-compliant.
 - NANDbus.
         This layer is responsible for enumerating NAND chips in the system
         and establishing the hierarchy between chips and their supervising
         controllers.
 - NAND character / GEOM device.
         For each NAND chip found in a system a character and GEOM devices are
         created which allows to read / write directly to a device, as well as
         perform other specific operations (like via ioctl).

Obtained from:	Semihalf
Supported by:   The FreeBSD Foundation, Juniper Networks
Add nandtool utility.

The nandtool utility can be used to perform various operations on
gnand(4) devices (read, write, erase, read and write OOB area and to get
info about NAND flash chip).

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add NAND simulator.

The NAND simulator is very simple utility which allows to create ONFI
compliant device based on given configuration file (simple configuration
file is provided). NAND Framework creates gnand(4) device for this
virtual chip which allow to access it (read, write, erase, etc..).

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add NAND simulator as a module.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Initial cut of the WITH_NAND / WITHOUT_NAND build knob.
By default the WITH_NAND is currently selected.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add geom devices for NAND chips

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Changes to add nand into build process.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Fix Makefile for NANDSim module.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add NANDFS

This patch add core functionality of NANDFS. NANDFS is FS targeted mainly for
NAND chips. It is based on NilFS, LogFS and UFS.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add tools required by NANDFS to mount/umount, create/remove/list
snapshots.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add NANDFS support for boot loader.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add NANDFS library.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add VFS changes necessary for NANDFS to work.

Ignore B_MANAGED buffer by syncer and ignore signal when msleep as it
can cause file system inconsistency.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add changes required for proper working of NAND chip geom devices.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add manual pages for NANDFS.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Install header files required by NANDFS

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add creation of directories under include/ for header files related to nand and NANDFS.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Disable debugs for newfs_nandfs.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Add ioctl and structures for accessing nand disk devices.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
Define NO_TLS for arm.

Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks