<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/drivers/mtd/nand/denali.c, branch master</title>
<subtitle>Linux kernel stable tree</subtitle>
<id>https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=master</id>
<link rel='self' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/'/>
<updated>2018-02-16T09:09:34+00:00</updated>
<entry>
<title>mtd: nand: move raw NAND related code to the raw/ subdir</title>
<updated>2018-02-16T09:09:34+00:00</updated>
<author>
<name>Boris Brezillon</name>
<email>boris.brezillon@bootlin.com</email>
</author>
<published>2018-02-05T22:02:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=93db446a424cee9387b532995e6b516667079555'/>
<id>urn:sha1:93db446a424cee9387b532995e6b516667079555</id>
<content type='text'>
As part of the process of sharing more code between different NAND
based devices, we need to move all raw NAND related code to the raw/
subdirectory.

Signed-off-by: Boris Brezillon &lt;boris.brezillon@bootlin.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: denali: Avoid using ecc-&gt;code_buf as a temporary buffer</title>
<updated>2017-12-14T12:34:22+00:00</updated>
<author>
<name>Boris Brezillon</name>
<email>boris.brezillon@free-electrons.com</email>
</author>
<published>2017-12-05T11:09:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8c677541bb24871ce44b5a1e327a3e7f5792eae4'/>
<id>urn:sha1:8c677541bb24871ce44b5a1e327a3e7f5792eae4</id>
<content type='text'>
ECC bytes are contiguous in the -&gt;oob_poi buffer, which means we don't
have to copy them into -&gt;code_buf (here used as a temporary buffer)
before passing them to the nand_check_erased_ecc_chunk() function.

This change will allow us to allocate ecc-&gt;{code,calc}_buf only when
ecc-&gt;calculate() or ecc-&gt;correct() is specified.

Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
Acked-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: squash struct nand_buffers into struct nand_chip</title>
<updated>2017-12-14T12:34:19+00:00</updated>
<author>
<name>Masahiro Yamada</name>
<email>yamada.masahiro@socionext.com</email>
</author>
<published>2017-12-05T08:47:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c0313b966a0942fba934d34c7a76f444641d0b6e'/>
<id>urn:sha1:c0313b966a0942fba934d34c7a76f444641d0b6e</id>
<content type='text'>
struct nand_buffers is malloc'ed in nand_scan_tail() just for
containing three pointers.  Squash this struct into nand_chip.

Move and rename as follows:

  chip-&gt;buffers-&gt;ecccalc   -&gt;  chip-&gt;ecc.calc_buf
  chip-&gt;buffers-&gt;ecccode   -&gt;  chip-&gt;ecc.code_buf
  chip-&gt;buffers-&gt;databuf   -&gt;  chip-&gt;data_buf

Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: force drivers to explicitly send READ/PROG commands</title>
<updated>2017-12-14T12:34:17+00:00</updated>
<author>
<name>Boris Brezillon</name>
<email>boris.brezillon@free-electrons.com</email>
</author>
<published>2017-11-30T17:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=25f815f66a141436df8a4c45e5d2765272aea2ac'/>
<id>urn:sha1:25f815f66a141436df8a4c45e5d2765272aea2ac</id>
<content type='text'>
The core currently send the READ0 and SEQIN+PAGEPROG commands in
nand_do_read/write_ops(). This is inconsistent with
-&gt;read/write_oob[_raw]() hooks behavior which are expected to send
these commands.

There's already a flag (NAND_ECC_CUSTOM_PAGE_ACCESS) to inform the core
that a specific controller wants to send the READ/SEQIN+PAGEPROG
commands on its own, but it's an opt-in flag, and existing drivers are
unlikely to be updated to pass it.

Moreover, some controllers cannot dissociate the READ/PAGEPROG commands
from the associated data transfer and ECC engine activation, and
developers have to hack things in their -&gt;cmdfunc() implementation to
handle such complex cases, or have to accept the perf penalty of sending
twice the same command.
To address this problem we are planning on adding a new interface which
is passed all information about a NAND operation (including the amount
of data to transfer) and replacing all calls to -&gt;cmdfunc() to calls to
this new -&gt;exec_op() hook. But, in order to do that, we need to have all
-&gt;cmdfunc() calls placed near their associated -&gt;read/write_buf/byte()
calls.

Modify the core and relevant drivers to make NAND_ECC_CUSTOM_PAGE_ACCESS
the default case, and remove this flag.

Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
[miquel.raynal@free-electrons.com: tested, fixed and rebased on nand/next]
Signed-off-by: Miquel Raynal &lt;miquel.raynal@free-electrons.com&gt;
Acked-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: provide several helpers to do common NAND operations</title>
<updated>2017-12-14T12:34:12+00:00</updated>
<author>
<name>Boris Brezillon</name>
<email>boris.brezillon@free-electrons.com</email>
</author>
<published>2017-11-30T17:01:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=97d90da8a886949f09bb4754843fb0b504956ad2'/>
<id>urn:sha1:97d90da8a886949f09bb4754843fb0b504956ad2</id>
<content type='text'>
This is part of the process of removing direct calls to -&gt;cmdfunc()
outside of the core in order to introduce a better interface to execute
NAND operations.

Here we provide several helpers and make use of them to remove all
direct calls to -&gt;cmdfunc(). This way, we can easily modify those
helpers to make use of the new -&gt;exec_op() interface when available.

Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
[miquel.raynal@free-electrons.com: rebased and fixed some conflicts]
Signed-off-by: Miquel Raynal &lt;miquel.raynal@free-electrons.com&gt;
Acked-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: use usual return values for the -&gt;erase() hook</title>
<updated>2017-12-01T08:45:30+00:00</updated>
<author>
<name>Miquel Raynal</name>
<email>miquel.raynal@free-electrons.com</email>
</author>
<published>2017-11-30T17:01:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=eb94555e9e97c9983461214046b4d72c4ab4ba70'/>
<id>urn:sha1:eb94555e9e97c9983461214046b4d72c4ab4ba70</id>
<content type='text'>
Avoid using specific defined values for checking returned status of the
-&gt;erase() hook. Instead, use usual negative error values on failure,
zero otherwise.

Signed-off-by: Miquel Raynal &lt;miquel.raynal@free-electrons.com&gt;
Acked-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: denali: rename misleading dma_buf to tmp_buf</title>
<updated>2017-11-30T21:32:50+00:00</updated>
<author>
<name>Masahiro Yamada</name>
<email>yamada.masahiro@socionext.com</email>
</author>
<published>2017-11-23T13:32:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8a8c8ba1c8a65522f07fd3ccbae94712c471e683'/>
<id>urn:sha1:8a8c8ba1c8a65522f07fd3ccbae94712c471e683</id>
<content type='text'>
The "dma_buf" is not used for a DMA bounce buffer, but for arranging
the transferred data for the syndrome page layout.  In fact, it is
used in the PIO mode as well, so "dma_buf" is a misleading name.
Rename it to "tmp_buf".

Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: denali: fix setup_data_interface to meet tCCS delay</title>
<updated>2017-10-07T09:28:06+00:00</updated>
<author>
<name>Masahiro Yamada</name>
<email>yamada.masahiro@socionext.com</email>
</author>
<published>2017-09-29T14:12:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7963f58cbf3a722c93f946c80a12f185b86dc45c'/>
<id>urn:sha1:7963f58cbf3a722c93f946c80a12f185b86dc45c</id>
<content type='text'>
The WE_2_RE register specifies the number of clock cycles inserted
between the rising edge of #WE and the falling edge of #RE.

The current setup_data_interface implementation takes care of tWHR,
but tCCS is missing.  Wait for max(tCSS, tWHR) to meet the spec.

With setup_data_interface() properly programmed, the Denali NAND
controller can observe the timing, so NAND_WAIT_TCCS flag is unneeded.
Clarify this in the comment block.

Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: denali: change the setup_dma choice into hook</title>
<updated>2017-09-22T07:04:40+00:00</updated>
<author>
<name>Masahiro Yamada</name>
<email>yamada.masahiro@socionext.com</email>
</author>
<published>2017-09-22T03:46:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=89dcb27b09fdcc8b585791815be07413d0487102'/>
<id>urn:sha1:89dcb27b09fdcc8b585791815be07413d0487102</id>
<content type='text'>
The previous commit added some hooks into struct denali_nand_info,
so here is one more for clean-up.

Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>mtd: nand: denali: support direct addressing mode</title>
<updated>2017-09-22T07:04:38+00:00</updated>
<author>
<name>Masahiro Yamada</name>
<email>yamada.masahiro@socionext.com</email>
</author>
<published>2017-09-22T03:46:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=29c4dd928735d5668b3108d350c30be7d0dc68fb'/>
<id>urn:sha1:29c4dd928735d5668b3108d350c30be7d0dc68fb</id>
<content type='text'>
The Denali NAND IP core decodes the lower 28 bits of the slave address
to get the control information; bit[27:26]=mode, bit[25:24]=bank, etc.
This means 256MB address range must be allocated for this IP.  (Direct
Addressing)

For systems with address space limitation, the Denali IP provides an
optional module that translates the addressing - address and data are
latched by the registers in the translation module. (Indexed Addressing)

The addressing mode can be selected when the delivered RTL is configured,
and it can be read out from the FEATURES register.

Most of SoC vendors would choose Indexed Addressing to save the address
space, but Direct Addressing is possible as well, and it can be easily
supported by adding -&gt;host_{read,write} hooks.

Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
</content>
</entry>
</feed>
