mbox series

[0/4] Facilitate new atmel raw nand driver for SAMA5D2

Message ID 20231212160423.44290-1-ada@thorsis.com
Headers show
Series Facilitate new atmel raw nand driver for SAMA5D2 | expand

Message

Alexander Dahl Dec. 12, 2023, 4:04 p.m. UTC
Hei hei,

for some downstream boards with SAMA5D27 SiP SoCs with raw NAND flash I
added the necessary nodes to sama5d2.dtsi with just one little
guesswork: the clocks.  Motivation was to fix reading from raw nand
flash which failed on some of those boards, while others worked fine.
So I suppose the timings for the external interface were set to too slow
values. (IIRC I took them from the sama5d2_ptc_ek_nandflash board code
back in 2019.)

The solution was basically to switch from the old non-DM driver with
hardcoded timings for the external memory interface to the new DM based
driver introduced earlier this year, which sets the timings based on
ONFI parameters read from the flash chip.

Works for me, but I have no boards with that SoC _and_ a raw NAND flash
at hand, which are supported by upstream U-Boot.  The only matching
upstream config is sama5d2_ptc_ek_nandflash_defconfig but because we
don't have that board, I did not touch it.

(When that driver was added with 6a8dfd57220d ("nand: atmel: Add DM
based NAND driver") the author claims in the commit message it was
tested on SAMA5D3, but none of the sama5d3 configs actually uses it.)

Some more changes to the board dts are necessary, but porting from Linux
is straightforward.  The necessary changes to the defconfig should look
like this:

 # CONFIG_I2C is not set
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
+CONFIG_ATMEL_EBI=y
+CONFIG_MFD_ATMEL_SMC=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
-CONFIG_NAND_ATMEL=y
-CONFIG_ATMEL_NAND_HW_PMECC=y
-CONFIG_PMECC_CAP=8
+CONFIG_DM_MTD=y
+CONFIG_DM_NAND_ATMEL=y
 CONFIG_SYS_NAND_ONFI_DETECTION=y
 CONFIG_PHY_SMSC=y
 CONFIG_MACB=y

Hope the changes are acceptable nevertheless.  The last patch has a
trivial fix for the new atmel raw nand driver which I came up with while
working on this.

Greets
Alex

Cc: Eugen Hristev <eugen.hristev@collabora.com>
Cc: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Cc: Michael Trimarchi <michael@amarulasolutions.com>
Cc: Wenyou Yang <wenyou.yang@microchip.com>
Cc: Balamanikandan Gunasundar <balamanikandan.gunasundar@microchip.com>

Alexander Dahl (4):
  ARM: dts: at91: sama5d2: Move sfr node
  ARM: dts: at91: sama5d2: Port ebi/nand nodes from linux
  ARM: dts: at91: sama5d2: Align more node names with Linux
  mtd: nand: raw: atmel: Remove duplicate definitions

 arch/arm/dts/sama5d2.dtsi          | 74 ++++++++++++++++++++++++++----
 drivers/mtd/nand/raw/atmel/pmecc.c |  3 --
 2 files changed, 65 insertions(+), 12 deletions(-)


base-commit: 2f0282922b2c458eea7f85c500a948a587437b63

Comments

Eugen Hristev Jan. 24, 2024, 4:06 a.m. UTC | #1
On 12/12/23 18:04, Alexander Dahl wrote:
> Hei hei,
> 
> for some downstream boards with SAMA5D27 SiP SoCs with raw NAND flash I
> added the necessary nodes to sama5d2.dtsi with just one little
> guesswork: the clocks.  Motivation was to fix reading from raw nand
> flash which failed on some of those boards, while others worked fine.
> So I suppose the timings for the external interface were set to too slow
> values. (IIRC I took them from the sama5d2_ptc_ek_nandflash board code
> back in 2019.)
> 
> The solution was basically to switch from the old non-DM driver with
> hardcoded timings for the external memory interface to the new DM based
> driver introduced earlier this year, which sets the timings based on
> ONFI parameters read from the flash chip.
> 
> Works for me, but I have no boards with that SoC _and_ a raw NAND flash
> at hand, which are supported by upstream U-Boot.  The only matching
> upstream config is sama5d2_ptc_ek_nandflash_defconfig but because we
> don't have that board, I did not touch it.
> 
> (When that driver was added with 6a8dfd57220d ("nand: atmel: Add DM
> based NAND driver") the author claims in the commit message it was
> tested on SAMA5D3, but none of the sama5d3 configs actually uses it.)
> 
> Some more changes to the board dts are necessary, but porting from Linux
> is straightforward.  The necessary changes to the defconfig should look
> like this:
> 
>  # CONFIG_I2C is not set
>  CONFIG_LED=y
>  CONFIG_LED_GPIO=y
> +CONFIG_ATMEL_EBI=y
> +CONFIG_MFD_ATMEL_SMC=y
>  # CONFIG_MMC is not set
>  CONFIG_MTD=y
> -CONFIG_NAND_ATMEL=y
> -CONFIG_ATMEL_NAND_HW_PMECC=y
> -CONFIG_PMECC_CAP=8
> +CONFIG_DM_MTD=y
> +CONFIG_DM_NAND_ATMEL=y
>  CONFIG_SYS_NAND_ONFI_DETECTION=y
>  CONFIG_PHY_SMSC=y
>  CONFIG_MACB=y
> 
> Hope the changes are acceptable nevertheless.  The last patch has a
> trivial fix for the new atmel raw nand driver which I came up with while
> working on this.
> 
> Greets
> Alex
> 
> Cc: Eugen Hristev <eugen.hristev@collabora.com>
> Cc: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> Cc: Michael Trimarchi <michael@amarulasolutions.com>
> Cc: Wenyou Yang <wenyou.yang@microchip.com>
> Cc: Balamanikandan Gunasundar <balamanikandan.gunasundar@microchip.com>
> 
> Alexander Dahl (4):
>   ARM: dts: at91: sama5d2: Move sfr node
>   ARM: dts: at91: sama5d2: Port ebi/nand nodes from linux
>   ARM: dts: at91: sama5d2: Align more node names with Linux
>   mtd: nand: raw: atmel: Remove duplicate definitions
> 
>  arch/arm/dts/sama5d2.dtsi          | 74 ++++++++++++++++++++++++++----
>  drivers/mtd/nand/raw/atmel/pmecc.c |  3 --
>  2 files changed, 65 insertions(+), 12 deletions(-)
> 
> 
> base-commit: 2f0282922b2c458eea7f85c500a948a587437b63


Applied series to u-boot-at91/master, thanks !