All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/6] bmips: add brcmnand support
@ 2019-08-13 19:19 Álvaro Fernández Rojas
  2019-08-13 19:19 ` [U-Boot] [PATCH 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
                   ` (6 more replies)
  0 siblings, 7 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-13 19:19 UTC (permalink / raw)
  To: u-boot

These patches add support for brcmnand on bmips.
The current brcmnand driver only supports controller >= 4.0,
which means that only BCM63268 works right now.

Álvaro Fernández Rojas (6):
  nand: brcm: add BCM6368 support
  bmips: bcm6368: add support for brcmnand
  bmips: bcm6328: add support for brcmnand
  bmips: bcm6362: add support for brcmnand
  bmips: bcm63268: add support for brcmnand
  bmips: enable vr-3032u nand support

 arch/mips/dts/brcm,bcm63268.dtsi             |  18 +++
 arch/mips/dts/brcm,bcm6328.dtsi              |  16 +++
 arch/mips/dts/brcm,bcm6362.dtsi              |  18 +++
 arch/mips/dts/brcm,bcm6368.dtsi              |  18 +++
 arch/mips/dts/comtrend,vr-3032u.dts          |  13 ++
 configs/comtrend_vr3032u_ram_defconfig       |   5 +
 drivers/mtd/nand/raw/Kconfig                 |   6 +
 drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 122 +++++++++++++++++++
 include/configs/comtrend_vr3032u.h           |   6 +
 10 files changed, 223 insertions(+)
 create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c

-- 
2.20.1

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 1/6] nand: brcm: add BCM6368 support
  2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
@ 2019-08-13 19:19 ` Álvaro Fernández Rojas
  2019-08-14 13:18   ` Daniel Schwierzeck
  2019-08-13 19:19 ` [U-Boot] [PATCH 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-13 19:19 UTC (permalink / raw)
  To: u-boot

This adds support for BCM6368, BCM6328, BCM6362 and BCM63268 SoCs.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 drivers/mtd/nand/raw/Kconfig                 |   6 +
 drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 122 +++++++++++++++++++
 3 files changed, 129 insertions(+)
 create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c

diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index f86035bcce..d2bfad28d5 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -67,6 +67,12 @@ config NAND_BRCMNAND
 	  Enable the driver for NAND flash on platforms using a Broadcom NAND
 	  controller.
 
+config NAND_BRCMNAND_6368
+	bool "Support Broadcom NAND controller on bcm6368"
+	depends on NAND_BRCMNAND && ARCH_BMIPS
+	help
+	  Enable support for broadcom nand driver on bcm6368.
+
 config NAND_BRCMNAND_6838
        bool "Support Broadcom NAND controller on bcm6838"
        depends on NAND_BRCMNAND && ARCH_BMIPS && SOC_BMIPS_BCM6838
diff --git a/drivers/mtd/nand/raw/brcmnand/Makefile b/drivers/mtd/nand/raw/brcmnand/Makefile
index a2363cc80e..7e70b859dc 100644
--- a/drivers/mtd/nand/raw/brcmnand/Makefile
+++ b/drivers/mtd/nand/raw/brcmnand/Makefile
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0+
 
+obj-$(CONFIG_NAND_BRCMNAND_6368) += bcm6368_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_63158) += bcm63158_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_6838) += bcm6838_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_6858) += bcm6858_nand.o
diff --git a/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
new file mode 100644
index 0000000000..1768d3945f
--- /dev/null
+++ b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
@@ -0,0 +1,122 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <common.h>
+#include <asm/io.h>
+#include <memalign.h>
+#include <nand.h>
+#include <linux/errno.h>
+#include <linux/io.h>
+#include <linux/ioport.h>
+#include <dm.h>
+
+#include "brcmnand.h"
+
+struct bcm6368_nand_soc {
+	struct brcmnand_soc soc;
+	void __iomem *base;
+};
+
+#define BCM6368_NAND_INT		0x00
+#define  BCM6368_NAND_STATUS_SHIFT	0
+#define  BCM6368_NAND_STATUS_MASK	(0xfff << BCM6368_NAND_STATUS_SHIFT)
+#define  BCM6368_NAND_ENABLE_SHIFT	16
+#define  BCM6368_NAND_ENABLE_MASK	(0xffff << BCM6368_NAND_ENABLE_SHIFT)
+
+enum {
+	BCM6368_NP_READ		= BIT(0),
+	BCM6368_BLOCK_ERASE	= BIT(1),
+	BCM6368_COPY_BACK	= BIT(2),
+	BCM6368_PAGE_PGM	= BIT(3),
+	BCM6368_CTRL_READY	= BIT(4),
+	BCM6368_DEV_RBPIN	= BIT(5),
+	BCM6368_ECC_ERR_UNC	= BIT(6),
+	BCM6368_ECC_ERR_CORR	= BIT(7),
+};
+
+static bool bcm6368_nand_intc_ack(struct brcmnand_soc *soc)
+{
+	struct bcm6368_nand_soc *priv =
+			container_of(soc, struct bcm6368_nand_soc, soc);
+	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
+	u32 val = brcmnand_readl(mmio);
+
+	if (val & (BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT)) {
+		/* Ack interrupt */
+		val &= ~BCM6368_NAND_STATUS_MASK;
+		val |= BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT;
+		brcmnand_writel(val, mmio);
+		return true;
+	}
+
+	return false;
+}
+
+static void bcm6368_nand_intc_set(struct brcmnand_soc *soc, bool en)
+{
+	struct bcm6368_nand_soc *priv =
+			container_of(soc, struct bcm6368_nand_soc, soc);
+	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
+	u32 val = brcmnand_readl(mmio);
+
+	/* Don't ack any interrupts */
+	val &= ~BCM6368_NAND_STATUS_MASK;
+
+	if (en)
+		val |= BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT;
+	else
+		val &= ~(BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT);
+
+	brcmnand_writel(val, mmio);
+}
+
+static int bcm6368_nand_probe(struct udevice *dev)
+{
+	struct udevice *pdev = dev;
+	struct bcm6368_nand_soc *priv = dev_get_priv(dev);
+	struct brcmnand_soc *soc;
+	struct resource res;
+
+	soc = &priv->soc;
+
+	dev_read_resource_byname(pdev, "nand-int-base", &res);
+	priv->base = ioremap(res.start, resource_size(&res));
+	if (IS_ERR(priv->base))
+		return PTR_ERR(priv->base);
+
+	soc->ctlrdy_ack = bcm6368_nand_intc_ack;
+	soc->ctlrdy_set_enabled = bcm6368_nand_intc_set;
+
+	/* Disable and ack all interrupts  */
+	brcmnand_writel(0, priv->base + BCM6368_NAND_INT);
+	brcmnand_writel(BCM6368_NAND_STATUS_MASK,
+			priv->base + BCM6368_NAND_INT);
+
+	return brcmnand_probe(pdev, soc);
+}
+
+static const struct udevice_id bcm6368_nand_dt_ids[] = {
+	{
+		.compatible = "brcm,nand-bcm6368",
+	},
+	{ /* sentinel */ }
+};
+
+U_BOOT_DRIVER(bcm6368_nand) = {
+	.name = "bcm6368-nand",
+	.id = UCLASS_MTD,
+	.of_match = bcm6368_nand_dt_ids,
+	.probe = bcm6368_nand_probe,
+	.priv_auto_alloc_size = sizeof(struct bcm6368_nand_soc),
+};
+
+void board_nand_init(void)
+{
+	struct udevice *dev;
+	int ret;
+
+	ret = uclass_get_device_by_driver(UCLASS_MTD,
+					  DM_GET_DRIVER(bcm6368_nand), &dev);
+	if (ret && ret != -ENODEV)
+		pr_err("Failed to initialize %s. (error %d)\n", dev->name,
+		       ret);
+}
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 2/6] bmips: bcm6368: add support for brcmnand
  2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  2019-08-13 19:19 ` [U-Boot] [PATCH 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
@ 2019-08-13 19:19 ` Álvaro Fernández Rojas
  2019-08-13 19:19 ` [U-Boot] [PATCH 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-13 19:19 UTC (permalink / raw)
  To: u-boot

BCM6368 uses old 2.1 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 arch/mips/dts/brcm,bcm6368.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6368.dtsi b/arch/mips/dts/brcm,bcm6368.dtsi
index 89590d6ff9..69be65056e 100644
--- a/arch/mips/dts/brcm,bcm6368.dtsi
+++ b/arch/mips/dts/brcm,bcm6368.dtsi
@@ -146,6 +146,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.1",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM6368_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		spi: spi at 10000800 {
 			compatible = "brcm,bcm6358-spi";
 			reg = <0x10000800 0x70c>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 3/6] bmips: bcm6328: add support for brcmnand
  2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  2019-08-13 19:19 ` [U-Boot] [PATCH 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
  2019-08-13 19:19 ` [U-Boot] [PATCH 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
@ 2019-08-13 19:19 ` Álvaro Fernández Rojas
  2019-08-13 19:19 ` [U-Boot] [PATCH 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-13 19:19 UTC (permalink / raw)
  To: u-boot

BCM6328 uses old 2.2 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 arch/mips/dts/brcm,bcm6328.dtsi | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6328.dtsi b/arch/mips/dts/brcm,bcm6328.dtsi
index 50beed4171..350c0e903b 100644
--- a/arch/mips/dts/brcm,bcm6328.dtsi
+++ b/arch/mips/dts/brcm,bcm6328.dtsi
@@ -124,6 +124,22 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000400 0x200>,
+			      <0x100000b0 0x10>;
+
+			status = "disabled";
+		};
+
 		leds: led-controller at 10000800 {
 			compatible = "brcm,bcm6328-leds";
 			reg = <0x10000800 0x24>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 4/6] bmips: bcm6362: add support for brcmnand
  2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                   ` (2 preceding siblings ...)
  2019-08-13 19:19 ` [U-Boot] [PATCH 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
@ 2019-08-13 19:19 ` Álvaro Fernández Rojas
  2019-08-13 19:19 ` [U-Boot] [PATCH 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-13 19:19 UTC (permalink / raw)
  To: u-boot

BCM6362 uses old 2.2 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 arch/mips/dts/brcm,bcm6362.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6362.dtsi b/arch/mips/dts/brcm,bcm6362.dtsi
index c77b80a4cc..23c47963c3 100644
--- a/arch/mips/dts/brcm,bcm6362.dtsi
+++ b/arch/mips/dts/brcm,bcm6362.dtsi
@@ -135,6 +135,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM6362_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		lsspi: spi at 10000800 {
 			compatible = "brcm,bcm6358-spi";
 			reg = <0x10000800 0x70c>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 5/6] bmips: bcm63268: add support for brcmnand
  2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                   ` (3 preceding siblings ...)
  2019-08-13 19:19 ` [U-Boot] [PATCH 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
@ 2019-08-13 19:19 ` Álvaro Fernández Rojas
  2019-08-14 13:23   ` Daniel Schwierzeck
  2019-08-13 19:19 ` [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  6 siblings, 1 reply; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-13 19:19 UTC (permalink / raw)
  To: u-boot

BCM63268 uses 4.0 HW nand controller, which is currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 arch/mips/dts/brcm,bcm63268.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm63268.dtsi b/arch/mips/dts/brcm,bcm63268.dtsi
index f8a72ef535..5294242529 100644
--- a/arch/mips/dts/brcm,bcm63268.dtsi
+++ b/arch/mips/dts/brcm,bcm63268.dtsi
@@ -141,6 +141,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v4.0",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM63268_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		periph_pwr: power-controller at 1000184c {
 			compatible = "brcm,bcm6328-power-domain";
 			reg = <0x1000184c 0x4>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support
  2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                   ` (4 preceding siblings ...)
  2019-08-13 19:19 ` [U-Boot] [PATCH 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
@ 2019-08-13 19:19 ` Álvaro Fernández Rojas
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-13 19:19 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 arch/mips/dts/comtrend,vr-3032u.dts    | 13 +++++++++++++
 configs/comtrend_vr3032u_ram_defconfig |  5 +++++
 include/configs/comtrend_vr3032u.h     |  6 ++++++
 3 files changed, 24 insertions(+)

diff --git a/arch/mips/dts/comtrend,vr-3032u.dts b/arch/mips/dts/comtrend,vr-3032u.dts
index 512cb52de3..110119b507 100644
--- a/arch/mips/dts/comtrend,vr-3032u.dts
+++ b/arch/mips/dts/comtrend,vr-3032u.dts
@@ -99,6 +99,19 @@
 	};
 };
 
+&nand {
+	status = "okay";
+
+	nandcs at 0 {
+		compatible = "brcm,nandcs";
+		reg = <0>;
+		nand-ecc-strength = <15>;
+		nand-ecc-step-size = <512>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+	};
+};
+
 &ohci {
 	status = "okay";
 };
diff --git a/configs/comtrend_vr3032u_ram_defconfig b/configs/comtrend_vr3032u_ram_defconfig
index 013c9ee1f6..33be24c45b 100644
--- a/configs/comtrend_vr3032u_ram_defconfig
+++ b/configs/comtrend_vr3032u_ram_defconfig
@@ -25,6 +25,7 @@ CONFIG_CMD_LICENSE=y
 CONFIG_CMD_MEMINFO=y
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_LOADS is not set
+CONFIG_CMD_NAND=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
@@ -37,6 +38,10 @@ CONFIG_DM_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_BCM6328=y
 CONFIG_LED_BLINK=y
+CONFIG_MTD=y
+CONFIG_NAND=y
+CONFIG_NAND_BRCMNAND=y
+CONFIG_NAND_BRCMNAND_6368=y
 CONFIG_DM_ETH=y
 CONFIG_BCM6368_ETH=y
 CONFIG_PHY=y
diff --git a/include/configs/comtrend_vr3032u.h b/include/configs/comtrend_vr3032u.h
index e183288c5d..b004d77f52 100644
--- a/include/configs/comtrend_vr3032u.h
+++ b/include/configs/comtrend_vr3032u.h
@@ -10,3 +10,9 @@
 
 #define CONFIG_ENV_SIZE			(8 * 1024)
 
+#ifdef CONFIG_NAND
+#define CONFIG_SYS_MAX_NAND_DEVICE	1
+#define CONFIG_SYS_NAND_SELF_INIT
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+#define CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT
+#endif /* CONFIG_NAND */
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 1/6] nand: brcm: add BCM6368 support
  2019-08-13 19:19 ` [U-Boot] [PATCH 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
@ 2019-08-14 13:18   ` Daniel Schwierzeck
  0 siblings, 0 replies; 26+ messages in thread
From: Daniel Schwierzeck @ 2019-08-14 13:18 UTC (permalink / raw)
  To: u-boot



Am 13.08.19 um 21:19 schrieb Álvaro Fernández Rojas:
> This adds support for BCM6368, BCM6328, BCM6362 and BCM63268 SoCs.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>  drivers/mtd/nand/raw/Kconfig                 |   6 +
>  drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
>  drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 122 +++++++++++++++++++
>  3 files changed, 129 insertions(+)
>  create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
> 

Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

-- 
- Daniel

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 5/6] bmips: bcm63268: add support for brcmnand
  2019-08-13 19:19 ` [U-Boot] [PATCH 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
@ 2019-08-14 13:23   ` Daniel Schwierzeck
  2019-08-22  9:09     ` Álvaro Fernández Rojas
  0 siblings, 1 reply; 26+ messages in thread
From: Daniel Schwierzeck @ 2019-08-14 13:23 UTC (permalink / raw)
  To: u-boot



Am 13.08.19 um 21:19 schrieb Álvaro Fernández Rojas:
> BCM63268 uses 4.0 HW nand controller, which is currently supported by
> brcmnand driver.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>  arch/mips/dts/brcm,bcm63268.dtsi | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/arch/mips/dts/brcm,bcm63268.dtsi b/arch/mips/dts/brcm,bcm63268.dtsi
> index f8a72ef535..5294242529 100644
> --- a/arch/mips/dts/brcm,bcm63268.dtsi
> +++ b/arch/mips/dts/brcm,bcm63268.dtsi
> @@ -141,6 +141,24 @@
>  			status = "disabled";
>  		};
>  
> +		nand: nand-controller at 10000200 {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			compatible = "brcm,nand-bcm6368",

if BCM63268 is already supported by brcmnand, why should it match with
your new driver?

> +				     "brcm,brcmnand-v4.0",
> +				     "brcm,brcmnand";
> +			reg-names = "nand",
> +				    "nand-cache",
> +				    "nand-int-base";
> +			reg = <0x10000200 0x180>,
> +			      <0x10000600 0x200>,
> +			      <0x100000b0 0x10>;
> +			clocks = <&periph_clk BCM63268_CLK_NAND>;
> +			clock-names = "nand";
> +
> +			status = "disabled";
> +		};
> +
>  		periph_pwr: power-controller at 1000184c {
>  			compatible = "brcm,bcm6328-power-domain";
>  			reg = <0x1000184c 0x4>;
> 

-- 
- Daniel

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 5/6] bmips: bcm63268: add support for brcmnand
  2019-08-14 13:23   ` Daniel Schwierzeck
@ 2019-08-22  9:09     ` Álvaro Fernández Rojas
  0 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-22  9:09 UTC (permalink / raw)
  To: u-boot

Hi Daniel,

“brcm,nand-bcm6368“ is the probe and interrupt part of the driver.
The core part of the driver is the one that only supports HW rev 4.0 and newer.

Best regards,
Álvaro.

________________________________
De: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Enviado: miércoles, agosto 14, 2019 3:23 p. m.
Para: Álvaro Fernández Rojas; u-boot at lists.denx.de; philippe.reynes at softathome.com; trini at konsulko.com
Asunto: Re: [PATCH 5/6] bmips: bcm63268: add support for brcmnand



Am 13.08.19 um 21:19 schrieb Álvaro Fernández Rojas:
> BCM63268 uses 4.0 HW nand controller, which is currently supported by
> brcmnand driver.
>
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
> arch/mips/dts/brcm,bcm63268.dtsi | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/arch/mips/dts/brcm,bcm63268.dtsi b/arch/mips/dts/brcm,bcm63268.dtsi
> index f8a72ef535..5294242529 100644
> --- a/arch/mips/dts/brcm,bcm63268.dtsi
> +++ b/arch/mips/dts/brcm,bcm63268.dtsi
> @@ -141,6 +141,24 @@
> status = "disabled";
> };
>
> + nand: nand-controller at 10000200 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + compatible = "brcm,nand-bcm6368",

if BCM63268 is already supported by brcmnand, why should it match with
your new driver?

> + "brcm,brcmnand-v4.0",
> + "brcm,brcmnand";
> + reg-names = "nand",
> + "nand-cache",
> + "nand-int-base";
> + reg = <0x10000200 0x180>,
> + <0x10000600 0x200>,
> + <0x100000b0 0x10>;
> + clocks = <&periph_clk BCM63268_CLK_NAND>;
> + clock-names = "nand";
> +
> + status = "disabled";
> + };
> +
> periph_pwr: power-controller at 1000184c {
> compatible = "brcm,bcm6328-power-domain";
> reg = <0x1000184c 0x4>;
>

--
- Daniel

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support
  2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                   ` (5 preceding siblings ...)
  2019-08-13 19:19 ` [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
@ 2019-08-28 11:44 ` Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
                     ` (6 more replies)
  6 siblings, 7 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 11:44 UTC (permalink / raw)
  To: u-boot

These patches add support for brcmnand on bmips.
The current brcmnand driver only supports controller >= 4.0,
which means that only BCM63268 works right now.

v2: Drop CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT

Álvaro Fernández Rojas (6):
  nand: brcm: add BCM6368 support
  bmips: bcm6368: add support for brcmnand
  bmips: bcm6328: add support for brcmnand
  bmips: bcm6362: add support for brcmnand
  bmips: bcm63268: add support for brcmnand
  bmips: enable vr-3032u nand support

 arch/mips/dts/brcm,bcm63268.dtsi             |  18 +++
 arch/mips/dts/brcm,bcm6328.dtsi              |  16 +++
 arch/mips/dts/brcm,bcm6362.dtsi              |  18 +++
 arch/mips/dts/brcm,bcm6368.dtsi              |  18 +++
 arch/mips/dts/comtrend,vr-3032u.dts          |  13 ++
 configs/comtrend_vr3032u_ram_defconfig       |   5 +
 drivers/mtd/nand/raw/Kconfig                 |   6 +
 drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 122 +++++++++++++++++++
 include/configs/comtrend_vr3032u.h           |   5 +
 10 files changed, 222 insertions(+)
 create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c

-- 
2.20.1

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V2 1/6] nand: brcm: add BCM6368 support
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
@ 2019-08-28 11:44   ` Álvaro Fernández Rojas
  2019-08-28 13:07     ` Daniel Schwierzeck
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
                     ` (5 subsequent siblings)
  6 siblings, 1 reply; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 11:44 UTC (permalink / raw)
  To: u-boot

This adds support for BCM6368, BCM6328, BCM6362 and BCM63268 SoCs.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: no changes

 drivers/mtd/nand/raw/Kconfig                 |   6 +
 drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 122 +++++++++++++++++++
 3 files changed, 129 insertions(+)
 create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c

diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index a129f44869..2000826c79 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -72,6 +72,12 @@ config NAND_BRCMNAND
 	  Enable the driver for NAND flash on platforms using a Broadcom NAND
 	  controller.
 
+config NAND_BRCMNAND_6368
+	bool "Support Broadcom NAND controller on bcm6368"
+	depends on NAND_BRCMNAND && ARCH_BMIPS
+	help
+	  Enable support for broadcom nand driver on bcm6368.
+
 config NAND_BRCMNAND_6838
        bool "Support Broadcom NAND controller on bcm6838"
        depends on NAND_BRCMNAND && ARCH_BMIPS && SOC_BMIPS_BCM6838
diff --git a/drivers/mtd/nand/raw/brcmnand/Makefile b/drivers/mtd/nand/raw/brcmnand/Makefile
index a2363cc80e..7e70b859dc 100644
--- a/drivers/mtd/nand/raw/brcmnand/Makefile
+++ b/drivers/mtd/nand/raw/brcmnand/Makefile
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0+
 
+obj-$(CONFIG_NAND_BRCMNAND_6368) += bcm6368_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_63158) += bcm63158_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_6838) += bcm6838_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_6858) += bcm6858_nand.o
diff --git a/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
new file mode 100644
index 0000000000..1768d3945f
--- /dev/null
+++ b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
@@ -0,0 +1,122 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <common.h>
+#include <asm/io.h>
+#include <memalign.h>
+#include <nand.h>
+#include <linux/errno.h>
+#include <linux/io.h>
+#include <linux/ioport.h>
+#include <dm.h>
+
+#include "brcmnand.h"
+
+struct bcm6368_nand_soc {
+	struct brcmnand_soc soc;
+	void __iomem *base;
+};
+
+#define BCM6368_NAND_INT		0x00
+#define  BCM6368_NAND_STATUS_SHIFT	0
+#define  BCM6368_NAND_STATUS_MASK	(0xfff << BCM6368_NAND_STATUS_SHIFT)
+#define  BCM6368_NAND_ENABLE_SHIFT	16
+#define  BCM6368_NAND_ENABLE_MASK	(0xffff << BCM6368_NAND_ENABLE_SHIFT)
+
+enum {
+	BCM6368_NP_READ		= BIT(0),
+	BCM6368_BLOCK_ERASE	= BIT(1),
+	BCM6368_COPY_BACK	= BIT(2),
+	BCM6368_PAGE_PGM	= BIT(3),
+	BCM6368_CTRL_READY	= BIT(4),
+	BCM6368_DEV_RBPIN	= BIT(5),
+	BCM6368_ECC_ERR_UNC	= BIT(6),
+	BCM6368_ECC_ERR_CORR	= BIT(7),
+};
+
+static bool bcm6368_nand_intc_ack(struct brcmnand_soc *soc)
+{
+	struct bcm6368_nand_soc *priv =
+			container_of(soc, struct bcm6368_nand_soc, soc);
+	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
+	u32 val = brcmnand_readl(mmio);
+
+	if (val & (BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT)) {
+		/* Ack interrupt */
+		val &= ~BCM6368_NAND_STATUS_MASK;
+		val |= BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT;
+		brcmnand_writel(val, mmio);
+		return true;
+	}
+
+	return false;
+}
+
+static void bcm6368_nand_intc_set(struct brcmnand_soc *soc, bool en)
+{
+	struct bcm6368_nand_soc *priv =
+			container_of(soc, struct bcm6368_nand_soc, soc);
+	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
+	u32 val = brcmnand_readl(mmio);
+
+	/* Don't ack any interrupts */
+	val &= ~BCM6368_NAND_STATUS_MASK;
+
+	if (en)
+		val |= BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT;
+	else
+		val &= ~(BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT);
+
+	brcmnand_writel(val, mmio);
+}
+
+static int bcm6368_nand_probe(struct udevice *dev)
+{
+	struct udevice *pdev = dev;
+	struct bcm6368_nand_soc *priv = dev_get_priv(dev);
+	struct brcmnand_soc *soc;
+	struct resource res;
+
+	soc = &priv->soc;
+
+	dev_read_resource_byname(pdev, "nand-int-base", &res);
+	priv->base = ioremap(res.start, resource_size(&res));
+	if (IS_ERR(priv->base))
+		return PTR_ERR(priv->base);
+
+	soc->ctlrdy_ack = bcm6368_nand_intc_ack;
+	soc->ctlrdy_set_enabled = bcm6368_nand_intc_set;
+
+	/* Disable and ack all interrupts  */
+	brcmnand_writel(0, priv->base + BCM6368_NAND_INT);
+	brcmnand_writel(BCM6368_NAND_STATUS_MASK,
+			priv->base + BCM6368_NAND_INT);
+
+	return brcmnand_probe(pdev, soc);
+}
+
+static const struct udevice_id bcm6368_nand_dt_ids[] = {
+	{
+		.compatible = "brcm,nand-bcm6368",
+	},
+	{ /* sentinel */ }
+};
+
+U_BOOT_DRIVER(bcm6368_nand) = {
+	.name = "bcm6368-nand",
+	.id = UCLASS_MTD,
+	.of_match = bcm6368_nand_dt_ids,
+	.probe = bcm6368_nand_probe,
+	.priv_auto_alloc_size = sizeof(struct bcm6368_nand_soc),
+};
+
+void board_nand_init(void)
+{
+	struct udevice *dev;
+	int ret;
+
+	ret = uclass_get_device_by_driver(UCLASS_MTD,
+					  DM_GET_DRIVER(bcm6368_nand), &dev);
+	if (ret && ret != -ENODEV)
+		pr_err("Failed to initialize %s. (error %d)\n", dev->name,
+		       ret);
+}
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V2 2/6] bmips: bcm6368: add support for brcmnand
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
@ 2019-08-28 11:44   ` Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
                     ` (4 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 11:44 UTC (permalink / raw)
  To: u-boot

BCM6368 uses old 2.1 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: no changes

 arch/mips/dts/brcm,bcm6368.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6368.dtsi b/arch/mips/dts/brcm,bcm6368.dtsi
index 89590d6ff9..69be65056e 100644
--- a/arch/mips/dts/brcm,bcm6368.dtsi
+++ b/arch/mips/dts/brcm,bcm6368.dtsi
@@ -146,6 +146,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.1",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM6368_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		spi: spi at 10000800 {
 			compatible = "brcm,bcm6358-spi";
 			reg = <0x10000800 0x70c>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V2 3/6] bmips: bcm6328: add support for brcmnand
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
@ 2019-08-28 11:44   ` Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
                     ` (3 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 11:44 UTC (permalink / raw)
  To: u-boot

BCM6328 uses old 2.2 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: no changes

 arch/mips/dts/brcm,bcm6328.dtsi | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6328.dtsi b/arch/mips/dts/brcm,bcm6328.dtsi
index 50beed4171..350c0e903b 100644
--- a/arch/mips/dts/brcm,bcm6328.dtsi
+++ b/arch/mips/dts/brcm,bcm6328.dtsi
@@ -124,6 +124,22 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000400 0x200>,
+			      <0x100000b0 0x10>;
+
+			status = "disabled";
+		};
+
 		leds: led-controller at 10000800 {
 			compatible = "brcm,bcm6328-leds";
 			reg = <0x10000800 0x24>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V2 4/6] bmips: bcm6362: add support for brcmnand
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                     ` (2 preceding siblings ...)
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
@ 2019-08-28 11:44   ` Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
                     ` (2 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 11:44 UTC (permalink / raw)
  To: u-boot

BCM6362 uses old 2.2 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: no changes

 arch/mips/dts/brcm,bcm6362.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6362.dtsi b/arch/mips/dts/brcm,bcm6362.dtsi
index c77b80a4cc..23c47963c3 100644
--- a/arch/mips/dts/brcm,bcm6362.dtsi
+++ b/arch/mips/dts/brcm,bcm6362.dtsi
@@ -135,6 +135,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM6362_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		lsspi: spi at 10000800 {
 			compatible = "brcm,bcm6358-spi";
 			reg = <0x10000800 0x70c>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V2 5/6] bmips: bcm63268: add support for brcmnand
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                     ` (3 preceding siblings ...)
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
@ 2019-08-28 11:44   ` Álvaro Fernández Rojas
  2019-08-28 11:44   ` [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 11:44 UTC (permalink / raw)
  To: u-boot

BCM63268 uses 4.0 HW nand controller, which is currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: no changes

 arch/mips/dts/brcm,bcm63268.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm63268.dtsi b/arch/mips/dts/brcm,bcm63268.dtsi
index f8a72ef535..5294242529 100644
--- a/arch/mips/dts/brcm,bcm63268.dtsi
+++ b/arch/mips/dts/brcm,bcm63268.dtsi
@@ -141,6 +141,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v4.0",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM63268_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		periph_pwr: power-controller at 1000184c {
 			compatible = "brcm,bcm6328-power-domain";
 			reg = <0x1000184c 0x4>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                     ` (4 preceding siblings ...)
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
@ 2019-08-28 11:44   ` Álvaro Fernández Rojas
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 11:44 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: Drop CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT

 arch/mips/dts/comtrend,vr-3032u.dts    | 13 +++++++++++++
 configs/comtrend_vr3032u_ram_defconfig |  5 +++++
 include/configs/comtrend_vr3032u.h     |  5 +++++
 3 files changed, 23 insertions(+)

diff --git a/arch/mips/dts/comtrend,vr-3032u.dts b/arch/mips/dts/comtrend,vr-3032u.dts
index 512cb52de3..110119b507 100644
--- a/arch/mips/dts/comtrend,vr-3032u.dts
+++ b/arch/mips/dts/comtrend,vr-3032u.dts
@@ -99,6 +99,19 @@
 	};
 };
 
+&nand {
+	status = "okay";
+
+	nandcs at 0 {
+		compatible = "brcm,nandcs";
+		reg = <0>;
+		nand-ecc-strength = <15>;
+		nand-ecc-step-size = <512>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+	};
+};
+
 &ohci {
 	status = "okay";
 };
diff --git a/configs/comtrend_vr3032u_ram_defconfig b/configs/comtrend_vr3032u_ram_defconfig
index 013c9ee1f6..33be24c45b 100644
--- a/configs/comtrend_vr3032u_ram_defconfig
+++ b/configs/comtrend_vr3032u_ram_defconfig
@@ -25,6 +25,7 @@ CONFIG_CMD_LICENSE=y
 CONFIG_CMD_MEMINFO=y
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_LOADS is not set
+CONFIG_CMD_NAND=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
@@ -37,6 +38,10 @@ CONFIG_DM_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_BCM6328=y
 CONFIG_LED_BLINK=y
+CONFIG_MTD=y
+CONFIG_NAND=y
+CONFIG_NAND_BRCMNAND=y
+CONFIG_NAND_BRCMNAND_6368=y
 CONFIG_DM_ETH=y
 CONFIG_BCM6368_ETH=y
 CONFIG_PHY=y
diff --git a/include/configs/comtrend_vr3032u.h b/include/configs/comtrend_vr3032u.h
index e183288c5d..d625101ecb 100644
--- a/include/configs/comtrend_vr3032u.h
+++ b/include/configs/comtrend_vr3032u.h
@@ -10,3 +10,8 @@
 
 #define CONFIG_ENV_SIZE			(8 * 1024)
 
+#ifdef CONFIG_NAND
+#define CONFIG_SYS_MAX_NAND_DEVICE	1
+#define CONFIG_SYS_NAND_SELF_INIT
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+#endif /* CONFIG_NAND */
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V2 1/6] nand: brcm: add BCM6368 support
  2019-08-28 11:44   ` [U-Boot] [PATCH V2 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
@ 2019-08-28 13:07     ` Daniel Schwierzeck
  0 siblings, 0 replies; 26+ messages in thread
From: Daniel Schwierzeck @ 2019-08-28 13:07 UTC (permalink / raw)
  To: u-boot



Am 28.08.19 um 13:44 schrieb Álvaro Fernández Rojas:
> This adds support for BCM6368, BCM6328, BCM6362 and BCM63268 SoCs.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>  v2: no changes
> 
>  drivers/mtd/nand/raw/Kconfig                 |   6 +
>  drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
>  drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 122 +++++++++++++++++++
>  3 files changed, 129 insertions(+)
>  create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c

Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

nits below

> 
> diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> index a129f44869..2000826c79 100644
> --- a/drivers/mtd/nand/raw/Kconfig
> +++ b/drivers/mtd/nand/raw/Kconfig
> @@ -72,6 +72,12 @@ config NAND_BRCMNAND
>  	  Enable the driver for NAND flash on platforms using a Broadcom NAND
>  	  controller.
>  
> +config NAND_BRCMNAND_6368
> +	bool "Support Broadcom NAND controller on bcm6368"
> +	depends on NAND_BRCMNAND && ARCH_BMIPS
> +	help
> +	  Enable support for broadcom nand driver on bcm6368.
> +
>  config NAND_BRCMNAND_6838
>         bool "Support Broadcom NAND controller on bcm6838"
>         depends on NAND_BRCMNAND && ARCH_BMIPS && SOC_BMIPS_BCM6838
> diff --git a/drivers/mtd/nand/raw/brcmnand/Makefile b/drivers/mtd/nand/raw/brcmnand/Makefile
> index a2363cc80e..7e70b859dc 100644
> --- a/drivers/mtd/nand/raw/brcmnand/Makefile
> +++ b/drivers/mtd/nand/raw/brcmnand/Makefile
> @@ -1,5 +1,6 @@
>  # SPDX-License-Identifier: GPL-2.0+
>  
> +obj-$(CONFIG_NAND_BRCMNAND_6368) += bcm6368_nand.o
>  obj-$(CONFIG_NAND_BRCMNAND_63158) += bcm63158_nand.o
>  obj-$(CONFIG_NAND_BRCMNAND_6838) += bcm6838_nand.o
>  obj-$(CONFIG_NAND_BRCMNAND_6858) += bcm6858_nand.o
> diff --git a/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
> new file mode 100644
> index 0000000000..1768d3945f
> --- /dev/null
> +++ b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
> @@ -0,0 +1,122 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +
> +#include <common.h>
> +#include <asm/io.h>
> +#include <memalign.h>
> +#include <nand.h>
> +#include <linux/errno.h>
> +#include <linux/io.h>
> +#include <linux/ioport.h>
> +#include <dm.h>
> +
> +#include "brcmnand.h"
> +
> +struct bcm6368_nand_soc {
> +	struct brcmnand_soc soc;
> +	void __iomem *base;
> +};
> +
> +#define BCM6368_NAND_INT		0x00
> +#define  BCM6368_NAND_STATUS_SHIFT	0
> +#define  BCM6368_NAND_STATUS_MASK	(0xfff << BCM6368_NAND_STATUS_SHIFT)
> +#define  BCM6368_NAND_ENABLE_SHIFT	16
> +#define  BCM6368_NAND_ENABLE_MASK	(0xffff << BCM6368_NAND_ENABLE_SHIFT)
> +
> +enum {
> +	BCM6368_NP_READ		= BIT(0),
> +	BCM6368_BLOCK_ERASE	= BIT(1),
> +	BCM6368_COPY_BACK	= BIT(2),
> +	BCM6368_PAGE_PGM	= BIT(3),
> +	BCM6368_CTRL_READY	= BIT(4),
> +	BCM6368_DEV_RBPIN	= BIT(5),
> +	BCM6368_ECC_ERR_UNC	= BIT(6),
> +	BCM6368_ECC_ERR_CORR	= BIT(7),
> +};
> +
> +static bool bcm6368_nand_intc_ack(struct brcmnand_soc *soc)
> +{
> +	struct bcm6368_nand_soc *priv =
> +			container_of(soc, struct bcm6368_nand_soc, soc);

because you have this multiple times, maybe it makes sense to add something like:

#define soc_to_priv(_soc) container_of(_soc, struct bcm6368_nand_soc, soc)

> +	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
> +	u32 val = brcmnand_readl(mmio);
> +
> +	if (val & (BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT)) {
> +		/* Ack interrupt */
> +		val &= ~BCM6368_NAND_STATUS_MASK;
> +		val |= BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT;
> +		brcmnand_writel(val, mmio);
> +		return true;
> +	}
> +
> +	return false;
> +}
> +
> +static void bcm6368_nand_intc_set(struct brcmnand_soc *soc, bool en)
> +{
> +	struct bcm6368_nand_soc *priv =
> +			container_of(soc, struct bcm6368_nand_soc, soc);
> +	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
> +	u32 val = brcmnand_readl(mmio);
> +
> +	/* Don't ack any interrupts */
> +	val &= ~BCM6368_NAND_STATUS_MASK;
> +
> +	if (en)
> +		val |= BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT;
> +	else
> +		val &= ~(BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT);
> +
> +	brcmnand_writel(val, mmio);
> +}
> +
> +static int bcm6368_nand_probe(struct udevice *dev)
> +{
> +	struct udevice *pdev = dev;
> +	struct bcm6368_nand_soc *priv = dev_get_priv(dev);
> +	struct brcmnand_soc *soc;
> +	struct resource res;
> +
> +	soc = &priv->soc;
> +
> +	dev_read_resource_byname(pdev, "nand-int-base", &res);
> +	priv->base = ioremap(res.start, resource_size(&res));

we recently got support for dev_remap_addr_name(). Maybe this is useful here.

> +	if (IS_ERR(priv->base))
> +		return PTR_ERR(priv->base);
> +
> +	soc->ctlrdy_ack = bcm6368_nand_intc_ack;
> +	soc->ctlrdy_set_enabled = bcm6368_nand_intc_set;
> +
> +	/* Disable and ack all interrupts  */
> +	brcmnand_writel(0, priv->base + BCM6368_NAND_INT);
> +	brcmnand_writel(BCM6368_NAND_STATUS_MASK,
> +			priv->base + BCM6368_NAND_INT);
> +
> +	return brcmnand_probe(pdev, soc);
> +}
> +
> +static const struct udevice_id bcm6368_nand_dt_ids[] = {
> +	{
> +		.compatible = "brcm,nand-bcm6368",
> +	},
> +	{ /* sentinel */ }
> +};
> +
> +U_BOOT_DRIVER(bcm6368_nand) = {
> +	.name = "bcm6368-nand",
> +	.id = UCLASS_MTD,
> +	.of_match = bcm6368_nand_dt_ids,
> +	.probe = bcm6368_nand_probe,
> +	.priv_auto_alloc_size = sizeof(struct bcm6368_nand_soc),
> +};
> +
> +void board_nand_init(void)
> +{
> +	struct udevice *dev;
> +	int ret;
> +
> +	ret = uclass_get_device_by_driver(UCLASS_MTD,
> +					  DM_GET_DRIVER(bcm6368_nand), &dev);
> +	if (ret && ret != -ENODEV)
> +		pr_err("Failed to initialize %s. (error %d)\n", dev->name,
> +		       ret);
> +}
> 

-- 
- Daniel

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support
  2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                     ` (5 preceding siblings ...)
  2019-08-28 11:44   ` [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
@ 2019-08-28 17:12   ` Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
                       ` (6 more replies)
  6 siblings, 7 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 17:12 UTC (permalink / raw)
  To: u-boot

These patches add support for brcmnand on bmips.
The current brcmnand driver only supports controller >= 4.0,
which means that only BCM63268 works right now.

v3: Introduce changes suggested by Daniel Schwierzeck:
 - Introduce soc_to_priv helper definition.
 - Switch to dev_remap_addr_name.
v2: Drop CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT

Álvaro Fernández Rojas (6):
  nand: brcm: add BCM6368 support
  bmips: bcm6368: add support for brcmnand
  bmips: bcm6328: add support for brcmnand
  bmips: bcm6362: add support for brcmnand
  bmips: bcm63268: add support for brcmnand
  bmips: enable vr-3032u nand support

 arch/mips/dts/brcm,bcm63268.dtsi             |  18 +++
 arch/mips/dts/brcm,bcm6328.dtsi              |  16 +++
 arch/mips/dts/brcm,bcm6362.dtsi              |  18 +++
 arch/mips/dts/brcm,bcm6368.dtsi              |  18 +++
 arch/mips/dts/comtrend,vr-3032u.dts          |  13 +++
 configs/comtrend_vr3032u_ram_defconfig       |   5 +
 drivers/mtd/nand/raw/Kconfig                 |   6 +
 drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 117 +++++++++++++++++++
 include/configs/comtrend_vr3032u.h           |   5 +
 10 files changed, 217 insertions(+)
 create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c

-- 
2.20.1

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 1/6] nand: brcm: add BCM6368 support
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
@ 2019-08-28 17:12     ` Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
                       ` (5 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 17:12 UTC (permalink / raw)
  To: u-boot

This adds support for BCM6368, BCM6328, BCM6362 and BCM63268 SoCs.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
---
 v3: Introduce changes suggested by Daniel Schwierzeck:
  - Introduce soc_to_priv helper definition.
  - Switch to dev_remap_addr_name.
 v2: no changes

 drivers/mtd/nand/raw/Kconfig                 |   6 +
 drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 117 +++++++++++++++++++
 3 files changed, 124 insertions(+)
 create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c

diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index a129f44869..2000826c79 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -72,6 +72,12 @@ config NAND_BRCMNAND
 	  Enable the driver for NAND flash on platforms using a Broadcom NAND
 	  controller.
 
+config NAND_BRCMNAND_6368
+	bool "Support Broadcom NAND controller on bcm6368"
+	depends on NAND_BRCMNAND && ARCH_BMIPS
+	help
+	  Enable support for broadcom nand driver on bcm6368.
+
 config NAND_BRCMNAND_6838
        bool "Support Broadcom NAND controller on bcm6838"
        depends on NAND_BRCMNAND && ARCH_BMIPS && SOC_BMIPS_BCM6838
diff --git a/drivers/mtd/nand/raw/brcmnand/Makefile b/drivers/mtd/nand/raw/brcmnand/Makefile
index a2363cc80e..7e70b859dc 100644
--- a/drivers/mtd/nand/raw/brcmnand/Makefile
+++ b/drivers/mtd/nand/raw/brcmnand/Makefile
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0+
 
+obj-$(CONFIG_NAND_BRCMNAND_6368) += bcm6368_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_63158) += bcm63158_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_6838) += bcm6838_nand.o
 obj-$(CONFIG_NAND_BRCMNAND_6858) += bcm6858_nand.o
diff --git a/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
new file mode 100644
index 0000000000..e2f5452c27
--- /dev/null
+++ b/drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
@@ -0,0 +1,117 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <common.h>
+#include <asm/io.h>
+#include <memalign.h>
+#include <nand.h>
+#include <linux/errno.h>
+#include <linux/io.h>
+#include <linux/ioport.h>
+#include <dm.h>
+
+#include "brcmnand.h"
+
+struct bcm6368_nand_soc {
+	struct brcmnand_soc soc;
+	void __iomem *base;
+};
+
+#define soc_to_priv(_soc) container_of(_soc, struct bcm6368_nand_soc, soc)
+
+#define BCM6368_NAND_INT		0x00
+#define  BCM6368_NAND_STATUS_SHIFT	0
+#define  BCM6368_NAND_STATUS_MASK	(0xfff << BCM6368_NAND_STATUS_SHIFT)
+#define  BCM6368_NAND_ENABLE_SHIFT	16
+#define  BCM6368_NAND_ENABLE_MASK	(0xffff << BCM6368_NAND_ENABLE_SHIFT)
+
+enum {
+	BCM6368_NP_READ		= BIT(0),
+	BCM6368_BLOCK_ERASE	= BIT(1),
+	BCM6368_COPY_BACK	= BIT(2),
+	BCM6368_PAGE_PGM	= BIT(3),
+	BCM6368_CTRL_READY	= BIT(4),
+	BCM6368_DEV_RBPIN	= BIT(5),
+	BCM6368_ECC_ERR_UNC	= BIT(6),
+	BCM6368_ECC_ERR_CORR	= BIT(7),
+};
+
+static bool bcm6368_nand_intc_ack(struct brcmnand_soc *soc)
+{
+	struct bcm6368_nand_soc *priv = soc_to_priv(soc);
+	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
+	u32 val = brcmnand_readl(mmio);
+
+	if (val & (BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT)) {
+		/* Ack interrupt */
+		val &= ~BCM6368_NAND_STATUS_MASK;
+		val |= BCM6368_CTRL_READY << BCM6368_NAND_STATUS_SHIFT;
+		brcmnand_writel(val, mmio);
+		return true;
+	}
+
+	return false;
+}
+
+static void bcm6368_nand_intc_set(struct brcmnand_soc *soc, bool en)
+{
+	struct bcm6368_nand_soc *priv = soc_to_priv(soc);
+	void __iomem *mmio = priv->base + BCM6368_NAND_INT;
+	u32 val = brcmnand_readl(mmio);
+
+	/* Don't ack any interrupts */
+	val &= ~BCM6368_NAND_STATUS_MASK;
+
+	if (en)
+		val |= BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT;
+	else
+		val &= ~(BCM6368_CTRL_READY << BCM6368_NAND_ENABLE_SHIFT);
+
+	brcmnand_writel(val, mmio);
+}
+
+static int bcm6368_nand_probe(struct udevice *dev)
+{
+	struct bcm6368_nand_soc *priv = dev_get_priv(dev);
+	struct brcmnand_soc *soc = &priv->soc;
+
+	priv->base = dev_remap_addr_name(dev, "nand-int-base");
+	if (!priv->base)
+		return -EINVAL;
+
+	soc->ctlrdy_ack = bcm6368_nand_intc_ack;
+	soc->ctlrdy_set_enabled = bcm6368_nand_intc_set;
+
+	/* Disable and ack all interrupts  */
+	brcmnand_writel(0, priv->base + BCM6368_NAND_INT);
+	brcmnand_writel(BCM6368_NAND_STATUS_MASK,
+			priv->base + BCM6368_NAND_INT);
+
+	return brcmnand_probe(dev, soc);
+}
+
+static const struct udevice_id bcm6368_nand_dt_ids[] = {
+	{
+		.compatible = "brcm,nand-bcm6368",
+	},
+	{ /* sentinel */ }
+};
+
+U_BOOT_DRIVER(bcm6368_nand) = {
+	.name = "bcm6368-nand",
+	.id = UCLASS_MTD,
+	.of_match = bcm6368_nand_dt_ids,
+	.probe = bcm6368_nand_probe,
+	.priv_auto_alloc_size = sizeof(struct bcm6368_nand_soc),
+};
+
+void board_nand_init(void)
+{
+	struct udevice *dev;
+	int ret;
+
+	ret = uclass_get_device_by_driver(UCLASS_MTD,
+					  DM_GET_DRIVER(bcm6368_nand), &dev);
+	if (ret && ret != -ENODEV)
+		pr_err("Failed to initialize %s. (error %d)\n", dev->name,
+		       ret);
+}
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 2/6] bmips: bcm6368: add support for brcmnand
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
@ 2019-08-28 17:12     ` Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
                       ` (4 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 17:12 UTC (permalink / raw)
  To: u-boot

BCM6368 uses old 2.1 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v3: no changes
 v2: no changes

 arch/mips/dts/brcm,bcm6368.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6368.dtsi b/arch/mips/dts/brcm,bcm6368.dtsi
index 89590d6ff9..69be65056e 100644
--- a/arch/mips/dts/brcm,bcm6368.dtsi
+++ b/arch/mips/dts/brcm,bcm6368.dtsi
@@ -146,6 +146,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.1",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM6368_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		spi: spi at 10000800 {
 			compatible = "brcm,bcm6358-spi";
 			reg = <0x10000800 0x70c>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 3/6] bmips: bcm6328: add support for brcmnand
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
@ 2019-08-28 17:12     ` Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
                       ` (3 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 17:12 UTC (permalink / raw)
  To: u-boot

BCM6328 uses old 2.2 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v3: no changes
 v2: no changes

 arch/mips/dts/brcm,bcm6328.dtsi | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6328.dtsi b/arch/mips/dts/brcm,bcm6328.dtsi
index 50beed4171..350c0e903b 100644
--- a/arch/mips/dts/brcm,bcm6328.dtsi
+++ b/arch/mips/dts/brcm,bcm6328.dtsi
@@ -124,6 +124,22 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000400 0x200>,
+			      <0x100000b0 0x10>;
+
+			status = "disabled";
+		};
+
 		leds: led-controller at 10000800 {
 			compatible = "brcm,bcm6328-leds";
 			reg = <0x10000800 0x24>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 4/6] bmips: bcm6362: add support for brcmnand
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                       ` (2 preceding siblings ...)
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
@ 2019-08-28 17:12     ` Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
                       ` (2 subsequent siblings)
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 17:12 UTC (permalink / raw)
  To: u-boot

BCM6362 uses old 2.2 HW nand controller, which isn't currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v3: no changes
 v2: no changes

 arch/mips/dts/brcm,bcm6362.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6362.dtsi b/arch/mips/dts/brcm,bcm6362.dtsi
index c77b80a4cc..23c47963c3 100644
--- a/arch/mips/dts/brcm,bcm6362.dtsi
+++ b/arch/mips/dts/brcm,bcm6362.dtsi
@@ -135,6 +135,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM6362_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		lsspi: spi at 10000800 {
 			compatible = "brcm,bcm6358-spi";
 			reg = <0x10000800 0x70c>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 5/6] bmips: bcm63268: add support for brcmnand
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                       ` (3 preceding siblings ...)
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
@ 2019-08-28 17:12     ` Álvaro Fernández Rojas
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
  2019-10-18 11:05     ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Daniel Schwierzeck
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 17:12 UTC (permalink / raw)
  To: u-boot

BCM63268 uses 4.0 HW nand controller, which is currently supported by
brcmnand driver.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v3: no changes
 v2: no changes

 arch/mips/dts/brcm,bcm63268.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm63268.dtsi b/arch/mips/dts/brcm,bcm63268.dtsi
index f8a72ef535..5294242529 100644
--- a/arch/mips/dts/brcm,bcm63268.dtsi
+++ b/arch/mips/dts/brcm,bcm63268.dtsi
@@ -141,6 +141,24 @@
 			status = "disabled";
 		};
 
+		nand: nand-controller at 10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v4.0",
+				     "brcm,brcmnand";
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			clocks = <&periph_clk BCM63268_CLK_NAND>;
+			clock-names = "nand";
+
+			status = "disabled";
+		};
+
 		periph_pwr: power-controller at 1000184c {
 			compatible = "brcm,bcm6328-power-domain";
 			reg = <0x1000184c 0x4>;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 6/6] bmips: enable vr-3032u nand support
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                       ` (4 preceding siblings ...)
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
@ 2019-08-28 17:12     ` Álvaro Fernández Rojas
  2019-10-18 11:05     ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Daniel Schwierzeck
  6 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2019-08-28 17:12 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v3: no changes
 v2: Drop CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT

 arch/mips/dts/comtrend,vr-3032u.dts    | 13 +++++++++++++
 configs/comtrend_vr3032u_ram_defconfig |  5 +++++
 include/configs/comtrend_vr3032u.h     |  5 +++++
 3 files changed, 23 insertions(+)

diff --git a/arch/mips/dts/comtrend,vr-3032u.dts b/arch/mips/dts/comtrend,vr-3032u.dts
index 512cb52de3..110119b507 100644
--- a/arch/mips/dts/comtrend,vr-3032u.dts
+++ b/arch/mips/dts/comtrend,vr-3032u.dts
@@ -99,6 +99,19 @@
 	};
 };
 
+&nand {
+	status = "okay";
+
+	nandcs at 0 {
+		compatible = "brcm,nandcs";
+		reg = <0>;
+		nand-ecc-strength = <15>;
+		nand-ecc-step-size = <512>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+	};
+};
+
 &ohci {
 	status = "okay";
 };
diff --git a/configs/comtrend_vr3032u_ram_defconfig b/configs/comtrend_vr3032u_ram_defconfig
index 013c9ee1f6..33be24c45b 100644
--- a/configs/comtrend_vr3032u_ram_defconfig
+++ b/configs/comtrend_vr3032u_ram_defconfig
@@ -25,6 +25,7 @@ CONFIG_CMD_LICENSE=y
 CONFIG_CMD_MEMINFO=y
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_LOADS is not set
+CONFIG_CMD_NAND=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
@@ -37,6 +38,10 @@ CONFIG_DM_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_BCM6328=y
 CONFIG_LED_BLINK=y
+CONFIG_MTD=y
+CONFIG_NAND=y
+CONFIG_NAND_BRCMNAND=y
+CONFIG_NAND_BRCMNAND_6368=y
 CONFIG_DM_ETH=y
 CONFIG_BCM6368_ETH=y
 CONFIG_PHY=y
diff --git a/include/configs/comtrend_vr3032u.h b/include/configs/comtrend_vr3032u.h
index e183288c5d..d625101ecb 100644
--- a/include/configs/comtrend_vr3032u.h
+++ b/include/configs/comtrend_vr3032u.h
@@ -10,3 +10,8 @@
 
 #define CONFIG_ENV_SIZE			(8 * 1024)
 
+#ifdef CONFIG_NAND
+#define CONFIG_SYS_MAX_NAND_DEVICE	1
+#define CONFIG_SYS_NAND_SELF_INIT
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+#endif /* CONFIG_NAND */
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support
  2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
                       ` (5 preceding siblings ...)
  2019-08-28 17:12     ` [U-Boot] [PATCH V3 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
@ 2019-10-18 11:05     ` Daniel Schwierzeck
  6 siblings, 0 replies; 26+ messages in thread
From: Daniel Schwierzeck @ 2019-10-18 11:05 UTC (permalink / raw)
  To: u-boot



Am 28.08.19 um 19:12 schrieb Álvaro Fernández Rojas:
> These patches add support for brcmnand on bmips.
> The current brcmnand driver only supports controller >= 4.0,
> which means that only BCM63268 works right now.
> 
> v3: Introduce changes suggested by Daniel Schwierzeck:
>  - Introduce soc_to_priv helper definition.
>  - Switch to dev_remap_addr_name.
> v2: Drop CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT
> 
> Álvaro Fernández Rojas (6):
>   nand: brcm: add BCM6368 support
>   bmips: bcm6368: add support for brcmnand
>   bmips: bcm6328: add support for brcmnand
>   bmips: bcm6362: add support for brcmnand
>   bmips: bcm63268: add support for brcmnand
>   bmips: enable vr-3032u nand support
> 
>  arch/mips/dts/brcm,bcm63268.dtsi             |  18 +++
>  arch/mips/dts/brcm,bcm6328.dtsi              |  16 +++
>  arch/mips/dts/brcm,bcm6362.dtsi              |  18 +++
>  arch/mips/dts/brcm,bcm6368.dtsi              |  18 +++
>  arch/mips/dts/comtrend,vr-3032u.dts          |  13 +++
>  configs/comtrend_vr3032u_ram_defconfig       |   5 +
>  drivers/mtd/nand/raw/Kconfig                 |   6 +
>  drivers/mtd/nand/raw/brcmnand/Makefile       |   1 +
>  drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c | 117 +++++++++++++++++++
>  include/configs/comtrend_vr3032u.h           |   5 +
>  10 files changed, 217 insertions(+)
>  create mode 100644 drivers/mtd/nand/raw/brcmnand/bcm6368_nand.c
> 

series applied to u-boot-mips, thanks.

-- 
- Daniel

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2019-10-18 11:05 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-13 19:19 [U-Boot] [PATCH 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
2019-08-13 19:19 ` [U-Boot] [PATCH 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
2019-08-14 13:18   ` Daniel Schwierzeck
2019-08-13 19:19 ` [U-Boot] [PATCH 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
2019-08-13 19:19 ` [U-Boot] [PATCH 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
2019-08-13 19:19 ` [U-Boot] [PATCH 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
2019-08-13 19:19 ` [U-Boot] [PATCH 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
2019-08-14 13:23   ` Daniel Schwierzeck
2019-08-22  9:09     ` Álvaro Fernández Rojas
2019-08-13 19:19 ` [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
2019-08-28 11:44 ` [U-Boot] [PATCH V2 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
2019-08-28 11:44   ` [U-Boot] [PATCH V2 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
2019-08-28 13:07     ` Daniel Schwierzeck
2019-08-28 11:44   ` [U-Boot] [PATCH V2 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
2019-08-28 11:44   ` [U-Boot] [PATCH V2 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
2019-08-28 11:44   ` [U-Boot] [PATCH V2 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
2019-08-28 11:44   ` [U-Boot] [PATCH V2 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
2019-08-28 11:44   ` [U-Boot] [PATCH 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
2019-08-28 17:12   ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Álvaro Fernández Rojas
2019-08-28 17:12     ` [U-Boot] [PATCH V3 1/6] nand: brcm: add BCM6368 support Álvaro Fernández Rojas
2019-08-28 17:12     ` [U-Boot] [PATCH V3 2/6] bmips: bcm6368: add support for brcmnand Álvaro Fernández Rojas
2019-08-28 17:12     ` [U-Boot] [PATCH V3 3/6] bmips: bcm6328: " Álvaro Fernández Rojas
2019-08-28 17:12     ` [U-Boot] [PATCH V3 4/6] bmips: bcm6362: " Álvaro Fernández Rojas
2019-08-28 17:12     ` [U-Boot] [PATCH V3 5/6] bmips: bcm63268: " Álvaro Fernández Rojas
2019-08-28 17:12     ` [U-Boot] [PATCH V3 6/6] bmips: enable vr-3032u nand support Álvaro Fernández Rojas
2019-10-18 11:05     ` [U-Boot] [PATCH V3 0/6] bmips: add brcmnand support Daniel Schwierzeck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.