* [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 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 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 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