<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/mtd/nand/Makefile, branch linux-4.6.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.6.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.6.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-03-10T19:02:17Z</updated>
<entry>
<title>mtd: nand: Qualcomm NAND controller driver</title>
<updated>2016-03-10T19:02:17Z</updated>
<author>
<name>Archit Taneja</name>
</author>
<published>2016-02-03T08:59:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c76b78d8ec05a247975542061df3f1321783f98d'/>
<id>urn:sha1:c76b78d8ec05a247975542061df3f1321783f98d</id>
<content type='text'>
The Qualcomm NAND controller is found in SoCs like IPQ806x, MSM7xx,
MDM9x15 series.

It exists as a sub block inside the IPs EBI2 (External Bus Interface 2)
and QPIC (Qualcomm Parallel Interface Controller). These IPs provide a
broader interface for external slow peripheral devices such as LCD and
NAND/NOR flash memory or SRAM like interfaces.

We add support for the NAND controller found within EBI2. For the SoCs
of our interest, we only use the NAND controller within EBI2. Therefore,
it's safe for us to assume that the NAND controller is a standalone block
within the SoC.

The controller supports 512B, 2kB, 4kB and 8kB page 8-bit and 16-bit NAND
flash devices. It contains a HW ECC block that supports BCH ECC (4, 8 and
16 bit correction/step) and RS ECC(4 bit correction/step) that covers main
and spare data. The controller contains an internal 512 byte page buffer
to which we read/write via DMA. The EBI2 type NAND controller uses ADM DMA
for register read/write and data transfers. The controller performs page
reads and writes at a codeword/step level of 512 bytes. It can support up
to 2 external chips of different configurations.

The driver prepares register read and write configuration descriptors for
each codeword, followed by data descriptors to read or write data from the
controller's internal buffer. It uses a single ADM DMA channel that we get
via dmaengine API. The controller requires 2 ADM CRCIs for command and
data flow control. These are passed via DT.

The ecc layout used by the controller is syndrome like, but we can't use
the standard syndrome ecc ops because of several reasons. First, the amount
of data bytes covered by ecc isn't same in each step. Second, writing to
free oob space requires us writing to the entire step in which the oob
lies. This forces us to create our own ecc ops.

One more difference is how the controller accesses the bad block marker.
The controller ignores reading the marker when ECC is enabled. ECC needs
to be explicity disabled to read or write to the bad block marker. The
nand_bbt helpers library hence can't access BBMs for the controller.
For now, we skip the creation of BBT and populate chip-&gt;block_bad and
chip-&gt;block_markbad helpers instead.

Reviewed-by: Andy Gross &lt;agross@codeaurora.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Archit Taneja &lt;architt@codeaurora.org&gt;
Reviewed-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs</title>
<updated>2016-01-07T17:35:11Z</updated>
<author>
<name>Alex Smith</name>
</author>
<published>2016-01-04T12:34:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ae02ab00aa3c282a362af8c4496496970747ddf4'/>
<id>urn:sha1:ae02ab00aa3c282a362af8c4496496970747ddf4</id>
<content type='text'>
Add a driver for NAND devices connected to the NEMC on JZ4780 SoCs, as
well as the hardware BCH controller. DMA is not currently implemented.

While older 47xx SoCs also have a BCH controller, they are incompatible
with the one in the 4780 due to differing register/bit positions, which
would make implementing a common driver for them quite messy.

Signed-off-by: Alex Smith &lt;alex.smith@imgtec.com&gt;
Cc: Zubair Lutfullah Kakakhel &lt;Zubair.Kakakhel@imgtec.com&gt;
Cc: David Woodhouse &lt;dwmw2@infradead.org&gt;
Cc: linux-mtd@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Harvey Hunt &lt;harvey.hunt@imgtec.com&gt;
Reviewed-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
[Brian: fixed a few small mistakes]
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: vf610_nfc: Freescale NFC for VF610, MPC5125 and others</title>
<updated>2015-09-29T20:47:58Z</updated>
<author>
<name>Stefan Agner</name>
</author>
<published>2015-09-03T01:06:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=456930d80a2da129974640dc0238d5380597e172'/>
<id>urn:sha1:456930d80a2da129974640dc0238d5380597e172</id>
<content type='text'>
This driver supports Freescale NFC (NAND flash controller) found on
Vybrid (VF610), MPC5125, MCF54418 and Kinetis K70. The driver has
been tested using 8-bit and 16-bit NAND interface on the ARM based
Vybrid SoC VF500 and VF610 platform.
parameter page reading.

Limitations:
- Untested on MPC5125 and M54418.
- DMA and pipelining not used.
- 2K pages or less.
- No chip select, one NAND chip per controller.
- No hardware ECC.

Some paths have been hand-optimized and evaluated by measurements
made using mtd_speedtest.ko on a 100MB MTD partition.

Colibri VF50
        eb write     %   eb read     %   page write      %   page read     %
rel/opt     5175           11537                4560             11039
opt         5164 -0.21     11420 -1.01          4737 +3.88       10918 -1.10
none        5113 -1.20     11352 -1.60          4490 -1.54       10865 -1.58

Colibri VF61
        eb write     %   eb read     %   page write      %   page read     %
rel/opt     5766           13096                5459             12846
opt         5883 +2.03     13064 -0.24          5561 +1.87       12802 -0.34
none        5701 -1.13     12980 -0.89          5488 +0.53       12735 -0.86

rel = using readl_relaxed/writel_relaxed in optimized paths
opt = hand-optimized by combining multiple accesses into one read/write

The measurements have not been statistically verfied, hence use them
with care. The author came to the conclusion that using the relaxed
variants of readl/writel are not worth the additional code.

Signed-off-by: Bill Pringlemeir &lt;bpringlemeir@nbsps.com&gt;
Tested-by: Albert ARIBAUD &lt;albert.aribaud@3adev.fr&gt;
Signed-off-by: Stefan Agner &lt;stefan@agner.ch&gt;
Reviewed-by: Alexey Klimov &lt;klimov.linux@gmail.com&gt;
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: omap2: Rename shippable module to omap2_nand</title>
<updated>2015-09-02T21:04:49Z</updated>
<author>
<name>Roger Quadros</name>
</author>
<published>2015-08-21T10:45:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=092f05c3eccbd616a0cfa21945412a3e82a9fb6c'/>
<id>urn:sha1:092f05c3eccbd616a0cfa21945412a3e82a9fb6c</id>
<content type='text'>
As both omap2 onenand and omap2 nand driver modules are
named the same i.e. "omap2.ko", only one of them gets shipped
during MODPOST if both are configured as loadable modules.

To avoid this ambiguity let's ship the omap2 nand
driver as "omap2_nand.ko"

Reported by Pierre Neyron via github
https://github.com/beagleboard/linux/issues/40

Cc: Robert Nelson &lt;robertcnelson@gmail.com&gt;
Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: add NAND driver "library" for Broadcom STB NAND controller</title>
<updated>2015-05-15T20:15:58Z</updated>
<author>
<name>Brian Norris</name>
</author>
<published>2015-03-06T19:38:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=27c5b17cd1b10564fa36f8f51e4b4b41436ecc32'/>
<id>urn:sha1:27c5b17cd1b10564fa36f8f51e4b4b41436ecc32</id>
<content type='text'>
This core originated in Set-Top Box chips (BCM7xxx) but is used in a
variety of other Broadcom chips, including some BCM63xxx, BCM33xx, and
iProc/Cygnus. It's been used only on ARM and MIPS SoCs, so restrict it
to those architectures.

There are multiple revisions of this core throughout the years, and
almost every version broke register compatibility in some small way, but
with some effort, this driver is able to support v4.0, v5.0, v6.x, v7.0,
and v7.1. It's been tested on v5.0, v6.0, v6.1, v7.0, and v7.1 recently,
so there hopefully are no more lurking inconsistencies.

This patch adds just some library support, on which platform drivers can
be built.

Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Tested-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: hisilicon: add a new NAND controller driver for hisilicon hip04 Soc</title>
<updated>2015-02-08T08:20:19Z</updated>
<author>
<name>Zhou Wang</name>
</author>
<published>2015-01-25T10:53:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=54f531f6e332875bd8a604871532f7f1174adc0e'/>
<id>urn:sha1:54f531f6e332875bd8a604871532f7f1174adc0e</id>
<content type='text'>
This patch adds the support for hisilicon 504 NAND controller which is now used
by Hisilicon Soc Hip04.

Signed-off-by: Zhou Wang &lt;wangzhou1@hisilicon.com&gt;
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: add sunxi NAND flash controller support</title>
<updated>2014-10-29T17:08:00Z</updated>
<author>
<name>Boris BREZILLON</name>
</author>
<published>2014-10-21T13:08:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1fef62c1423b694da517b18dc80d59a7eaf7dd74'/>
<id>urn:sha1:1fef62c1423b694da517b18dc80d59a7eaf7dd74</id>
<content type='text'>
Add support for the sunxi NAND Flash Controller (NFC).

Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
[Brian: tweaked to fix ecc-&gt;steps issue]
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: Force omap_elm to be built as a module if omap2_nand is a module</title>
<updated>2014-10-07T06:40:07Z</updated>
<author>
<name>Ezequiel Garcia</name>
</author>
<published>2014-10-01T11:33:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e7cd6824fd4105ff164aabc3767f195d1f6e4025'/>
<id>urn:sha1:e7cd6824fd4105ff164aabc3767f195d1f6e4025</id>
<content type='text'>
This commit adds a hidden option to build the omap_elm as a module, if
omap2_nand is a module (and similarly in the built-in case).

This fixes the following build error when omap2_nand is chosen built-in,
and omap_elm is chosen as a module:

drivers/built-in.o: In function `omap_nand_probe':
drivers/mtd/nand/omap2.c:2010: undefined reference to `elm_config'
drivers/mtd/nand/omap2.c:1980: undefined reference to `elm_config'
drivers/mtd/nand/omap2.c:1927: undefined reference to `elm_config'
drivers/built-in.o: In function `omap_elm_correct_data':
drivers/mtd/nand/omap2.c:1444: undefined reference to `elm_decode_bch_error_page'

Reported-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Ezequiel Garcia &lt;ezequiel@vanguardiasur.com.ar&gt;
Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: Move ELM driver and rename as omap_elm</title>
<updated>2014-09-22T18:39:26Z</updated>
<author>
<name>Ezequiel García</name>
</author>
<published>2014-09-20T16:53:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6d178ef2fd5e4a7f601874a6e641090e706da3c8'/>
<id>urn:sha1:6d178ef2fd5e4a7f601874a6e641090e706da3c8</id>
<content type='text'>
The ELM driver is only used by the OMAP NAND driver, so let's move it
to the nand/ directory. Additionally, let's rename it to a less confusing
name, so the module is built with a meaningful name, instead of the previous
'elm.ko'.

Acked-by: Roger Quadros &lt;rogerq@ti.com&gt;
Signed-off-by: Ezequiel Garcia &lt;ezequiel@vanguardiasur.com.ar&gt;
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: add ONFI timing mode to nand_timings converter</title>
<updated>2014-07-22T02:39:55Z</updated>
<author>
<name>Boris BREZILLON</name>
</author>
<published>2014-07-11T07:49:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=974647ea8a13021a91d558df61d598bcabf73439'/>
<id>urn:sha1:974647ea8a13021a91d558df61d598bcabf73439</id>
<content type='text'>
Add a converter to retrieve NAND timings from an ONFI NAND timing mode.
At the moment, only SDR NAND timings are supported.

Signed-off-by: Boris BREZILLON &lt;boris.brezillon@free-electrons.com&gt;
Signed-off-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
</content>
</entry>
</feed>
