Re: [PATCH v1 2/2] mtd: rawnand: Add NAND controller support on Intel LGM SoC

From: Ramuthevar, Vadivel MuruganX
Date: Thu Apr 16 2020 - 07:37:52 EST


On 16/4/2020 6:26 pm, Boris Brezillon wrote:
On Thu, 16 Apr 2020 17:45:49 +0800
"Ramuthevar, Vadivel MuruganX"
<vadivel.muruganx.ramuthevar@xxxxxxxxxxxxxxx> wrote:

From: Ramuthevar Vadivel Murugan <vadivel.muruganx.ramuthevar@xxxxxxxxxxxxxxx>

This patch adds the new IP of Nand Flash Controller(NFC) support
on Intel's Lightning Mountain(LGM) SoC.

DMA is used for burst data transfer operation, also DMA HW supports
aligned 32bit memory address and aligned data access by default.
DMA burst of 8 supported. Data register used to support the read/write
operation from/to device.
I am wondering how this new hardware is different from the Lantiq NAND
controller IP - for which there is already a driver in mainline (it's
in drivers/mtd/nand/raw/xway_nand.c).
The CON and WAIT registers look suspiciously similar.

As far as I understand the "old" SoCs (VRX200 and earlier) don't have
a built-in ECC engine. This seems to have changed with ARX300 though
(again, AFAIK).

A bit of lineage on these SoCs (initially these were developed by
Infineon. Lantiq then started as an Infineon spin-off in 2009 and
was then acquired by Intel in 2015):
- Danube
- ARX100 from 2008/2009
- VRX200 from 2009/2010
- ARX300 from 2014
- GRX350 from 2015/2016
- GRX550 from 2017
- and now finally: LGM from 2020 (est.)

The existing xway_nand driver supports the Danube, ARX100 and VRX200
SoCs.
Lantiq upstreamed a driver for an older version of this IP core 8 years
ago, see here:
https://elixir.bootlin.com/linux/v5.5.6/source/drivers/mtd/nand/raw/xway_nand.c
It does not support DMA and ECC.
Then let's just extend this driver to support the new features. Plus,
We do not have the platform to test also it's very old legacy driver .
Well, if it's similar enough, we want to have one driver.

Thank you very much for the time and suggestions...

This in-review driver is written for a new nand flash controller IP which is used in LGM.

we'll be happy to have one more of the existing driver converted to
->exec_op() ;-).
I have completely adapted to ->exec_op() hook up to replace the legacy
call-back.
I suspect porting what you've done to the xway driver shouldn't be too
complicated.
Not ported from xway_nand.c driver , we have developed from the scratch to make it work on
Intel LGM SoC , it's new x86 ATOM based SoC, IP itself completely different and most of the registers won't match.
if we port then it would be ugly and also what are the problem may occur we do not know.

Regards
Vadivel