On 28.07.21 14:47, Renaud Barbier wrote: > Add the NXP IFC nand driver support. This driver > can be used with the NXP QorIQ cores. > > Signed-off-by: Renaud Barbier <renaud.barbier@xxxxxxxxx> > --- > .../mach-layerscape/include/mach/fsl_ifc.h | 16 + > .../mach-layerscape/include/mach/layerscape.h | 3 + > drivers/mtd/nand/Kconfig | 6 + > drivers/mtd/nand/Makefile | 1 + > drivers/mtd/nand/fsl_ifc.h | 116 ++ > drivers/mtd/nand/nand_fsl_ifc.c | 1037 +++++++++++++++++ > include/linux/fsl_ifc.h | 306 +++++ > 7 files changed, 1485 insertions(+) > create mode 100644 arch/arm/mach-layerscape/include/mach/fsl_ifc.h > create mode 100644 drivers/mtd/nand/fsl_ifc.h > create mode 100644 drivers/mtd/nand/nand_fsl_ifc.c > create mode 100644 include/linux/fsl_ifc.h > > diff --git a/arch/arm/mach-layerscape/include/mach/fsl_ifc.h b/arch/arm/mach-layerscape/include/mach/fsl_ifc.h > new file mode 100644 > index 0000000000..385d07cb1f > --- /dev/null > +++ b/arch/arm/mach-layerscape/include/mach/fsl_ifc.h > @@ -0,0 +1,16 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > +/* > + * Copyright 2021 Abaco Systems, Inc > + */ > + > +#ifndef __MACH_MTD_FSL_IFC > +#define __MACH_MTD_FSL_IFC > + > +#include <mach/layerscape.h> > +#include <linux/fsl_ifc.h> > + > + > +struct fsl_ifc_data { > + uint32_t cs; > +}; > +#endif Header can be dropped as the Layerscape support is DT-only. > diff --git a/arch/arm/mach-layerscape/include/mach/layerscape.h b/arch/arm/mach-layerscape/include/mach/layerscape.h > index 1f1da0f66e..cb7bbc56b0 100644 > --- a/arch/arm/mach-layerscape/include/mach/layerscape.h > +++ b/arch/arm/mach-layerscape/include/mach/layerscape.h > @@ -3,6 +3,9 @@ > > #define LS1046A_DDR_SDRAM_BASE 0x80000000 > #define LS1046A_DDR_FREQ 2100000000 > +#define LS10146A_IFC_ADDR 0x01530000 > + > +#define IFC_ADDR LS10146A_IFC_ADDR That's a too generic macro name. You should retrieve the base address from device tree in the driver. Otherwise, if a new Layerscape SoC is added, you won't be able to have a multi-image barebox build that supports both. > +static int fsl_ifc_nand_probe(struct device_d *dev) > +{ > + struct device_node *np = dev->device_node; > + struct fsl_ifc_data *pdata = dev->platform_data; > + struct fsl_ifc_mtd *priv; > + struct resource *iores; > + struct mtd_info *mtd; > + int ret = 0; > + > + priv = kzalloc(sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + priv->dev = dev; > + if (!np) { I'd remove the PPC non-DT support. It doesn't compile now anyway. Cheers, Ahmad -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox