Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2cd457f3 authored by Christophe Kerello's avatar Christophe Kerello Committed by Miquel Raynal
Browse files

mtd: rawnand: stm32_fmc2: add STM32 FMC2 NAND flash controller driver



The driver adds the support for the STMicroelectronics FMC2 NAND
Controller found on STM32MP SOCs.

This patch is based on FMC2 command sequencer.
The purpose of the command sequencer is to facilitate the programming
and the reading of NAND flash pages with the ECC and to free the CPU
of sequencing tasks.
It requires one DMA channel for write and two DMA channels for read
operations.

Only NAND_ECC_HW mode is actually supported.
The driver supports a maximum 8k page size.
The following ECC strength and step size are currently supported:
 - nand-ecc-strength = <8>, nand-ecc-step-size = <512> (BCH8)
 - nand-ecc-strength = <4>, nand-ecc-step-size = <512> (BCH4)
 - nand-ecc-strength = <1>, nand-ecc-step-size = <512> (Extended ECC
   based on Hamming)

This patch has been tested on Micron MT29F8G08ABACAH4 and
MT29F8G16ABACAH4

Signed-off-by: default avatarChristophe Kerello <christophe.kerello@st.com>
Reviewed-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
parent 8c6e7fd9
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -541,4 +541,13 @@ config MTD_NAND_TEGRA
	  is supported. Extra OOB bytes when using HW ECC are currently
	  not supported.

config MTD_NAND_STM32_FMC2
	tristate "Support for NAND controller on STM32MP SoCs"
	depends on MACH_STM32MP157 || COMPILE_TEST
	help
	  Enables support for NAND Flash chips on SoCs containing the FMC2
	  NAND controller. This controller is found on STM32MP SoCs.
	  The controller supports a maximum 8k page size and supports
	  a maximum 8-bit correction error per sector of 512 bytes.

endif # MTD_NAND
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ obj-$(CONFIG_MTD_NAND_BRCMNAND) += brcmnand/
obj-$(CONFIG_MTD_NAND_QCOM)		+= qcom_nandc.o
obj-$(CONFIG_MTD_NAND_MTK)		+= mtk_ecc.o mtk_nand.o
obj-$(CONFIG_MTD_NAND_TEGRA)		+= tegra_nand.o
obj-$(CONFIG_MTD_NAND_STM32_FMC2)	+= stm32_fmc2_nand.o

nand-objs := nand_base.o nand_legacy.o nand_bbt.o nand_timings.o nand_ids.o
nand-objs += nand_onfi.o
+1808 −0

File added.

Preview size limit exceeded, changes collapsed.