* [PATCH v9 0/3] mtd: nand: jz4780: Add NAND and BCH drivers
@ 2015-12-03 12:02 Harvey Hunt
2015-12-03 12:02 ` [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} Harvey Hunt
2015-12-03 12:02 ` [PATCH v9 3/3] MIPS: dts: jz4780/ci20: Add NEMC, BCH and NAND device tree nodes Harvey Hunt
0 siblings, 2 replies; 7+ messages in thread
From: Harvey Hunt @ 2015-12-03 12:02 UTC (permalink / raw)
To: linux-mtd
Cc: Harvey Hunt, Brian Norris, David Woodhouse, Paul Burton,
Zubair Lutfullah Kakakhel, devicetree, linux-kernel, linux-mips
Hi,
This series adds support for the BCH controller and NAND devices on
the Ingenic JZ4780 SoC.
Tested on the MIPS Creator Ci20 board. All dependencies are now in
mainline.
This version of the series is based on 4.4-rc3.
As suggested by Boris [0], refactoring work has been done to treat NAND
chips as children nodes of the NAND controller.
Review and feedback welcome.
Thanks,
Harvey
[0] https://patchwork.ozlabs.org/patch/526818/
Cc: Brian Norris <computersforpeace@gmail.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: linux-mtd@lists.infradead.org
Alex Smith (3):
dt-bindings: binding for jz4780-{nand,bch}
mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs
MIPS: dts: jz4780/ci20: Add NEMC, BCH and NAND device tree nodes
.../bindings/mtd/ingenic,jz4780-nand.txt | 86 +++++
arch/mips/boot/dts/ingenic/ci20.dts | 63 ++++
arch/mips/boot/dts/ingenic/jz4780.dtsi | 26 ++
drivers/mtd/nand/Kconfig | 7 +
drivers/mtd/nand/Makefile | 1 +
drivers/mtd/nand/jz4780_bch.c | 361 ++++++++++++++++++
drivers/mtd/nand/jz4780_bch.h | 42 +++
drivers/mtd/nand/jz4780_nand.c | 420 +++++++++++++++++++++
8 files changed, 1006 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt
create mode 100644 drivers/mtd/nand/jz4780_bch.c
create mode 100644 drivers/mtd/nand/jz4780_bch.h
create mode 100644 drivers/mtd/nand/jz4780_nand.c
--
2.6.2
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} 2015-12-03 12:02 [PATCH v9 0/3] mtd: nand: jz4780: Add NAND and BCH drivers Harvey Hunt @ 2015-12-03 12:02 ` Harvey Hunt 2015-12-03 21:38 ` Rob Herring 2015-12-08 14:17 ` Boris Brezillon 2015-12-03 12:02 ` [PATCH v9 3/3] MIPS: dts: jz4780/ci20: Add NEMC, BCH and NAND device tree nodes Harvey Hunt 1 sibling, 2 replies; 7+ messages in thread From: Harvey Hunt @ 2015-12-03 12:02 UTC (permalink / raw) To: linux-mtd Cc: Alex Smith, Zubair Lutfullah Kakakhel, David Woodhouse, Brian Norris, devicetree, linux-kernel, Harvey Hunt From: Alex Smith <alex.smith@imgtec.com> Add DT bindings for NAND devices connected to the NEMC on JZ4780 SoCs, as well as the hardware BCH controller, used by the jz4780_{nand,bch} drivers. Signed-off-by: Alex Smith <alex.smith@imgtec.com> Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Brian Norris <computersforpeace@gmail.com> Cc: linux-mtd@lists.infradead.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com> --- v8 -> v9: - Document that partitions are represented as a child node of a NAND chip. v7 -> v8: - Describe how NAND chips are now child nodes of the NAND controller. v6 -> v7: - Add nand-ecc-mode to DT bindings. - Add nand-on-flash-bbt to DT bindings. v5 -> v6: - No change. v4 -> v5: - Rename ingenic,bch-device to ingenic,bch-controller to fit with existing convention. v3 -> v4: - No change v2 -> v3: - Rebase to 4.0-rc6 - Changed ingenic,ecc-size to common nand-ecc-step-size - Changed ingenic,ecc-strength to common nand-ecc-strength - Changed ingenic,busy-gpio to common rb-gpios - Changed ingenic,wp-gpio to common wp-gpios v1 -> v2: - Rebase to 4.0-rc3 .../bindings/mtd/ingenic,jz4780-nand.txt | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt diff --git a/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt b/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt new file mode 100644 index 0000000..29ea585 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt @@ -0,0 +1,86 @@ +* Ingenic JZ4780 NAND/BCH + +This file documents the device tree bindings for NAND flash devices on the +JZ4780. NAND devices are connected to the NEMC controller (described in +memory-controllers/ingenic,jz4780-nemc.txt), and thus NAND device nodes must +be children of the NEMC node. + +Required NAND controller device properties: +- compatible: Should be set to "ingenic,jz4780-nand". +- reg: For each bank with a NAND chip attached, should specify a bank number, + an offset of 0 and a size of 0x1000000 (i.e. the whole NEMC bank). + +Optional NAND controller device properties: +- ingenic,bch-controller: To make use of the hardware BCH controller, this + property must contain a phandle for the BCH controller node. The required + properties for this node are described below. If this is not specified, + software BCH will be used instead. + +Optional children nodes: +- Individual NAND chips are children of the NAND controller node. + +Required children node properties: +- reg: An integer ranging from 1 to 6 representing the CS line to use. + +Optional children node properties: +- nand-ecc-step-size: ECC block size in bytes. +- nand-ecc-strength: ECC strength (max number of correctable bits). +- nand-ecc-mode: String, operation mode of the NAND ecc mode. "hw" by default +- nand-on-flash-bbt: boolean to enable on flash bbt option, if not present false +- rb-gpios: GPIO specifier for the busy pin. +- wp-gpios: GPIO specifier for the write protect pin. + +Optional child node of NAND chip nodes: +- partitions: see Documentation/devicetree/bindings/mtd/partition.txt + +Example: + +nemc: nemc@13410000 { + ... + + nandc: nand-controller@1 { + compatible = "ingenic,jz4780-nand"; + reg = <1 0 0x1000000>; /* Bank 1 */ + + #address-cells = <1>; + #size-cells = <0>; + + ingenic,bch-controller = <&bch>; + + nand@1 { + reg = <1>; + + nand-ecc-step-size = <1024>; + nand-ecc-strength = <24>; + nand-ecc-mode = "hw"; + nand-on-flash-bbt; + + rb-gpios = <&gpa 20 GPIO_ACTIVE_LOW>; + wp-gpios = <&gpf 22 GPIO_ACTIVE_LOW>; + + partitions { + #address-cells = <2>; + #size-cells = <2>; + ... + } + }; + }; +}; + +The BCH controller is a separate SoC component used for error correction on +NAND devices. The following is a description of the device properties for a +BCH controller. + +Required BCH properties: +- compatible: Should be set to "ingenic,jz4780-bch". +- reg: Should specify the BCH controller registers location and length. +- clocks: Clock for the BCH controller. + +Example: + +bch: bch@134d0000 { + compatible = "ingenic,jz4780-bch"; + reg = <0x134d0000 0x10000>; + + clocks = <&cgu JZ4780_CLK_BCH>; +}; -- 2.6.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} 2015-12-03 12:02 ` [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} Harvey Hunt @ 2015-12-03 21:38 ` Rob Herring 2015-12-03 22:38 ` Brian Norris 2015-12-08 14:17 ` Boris Brezillon 1 sibling, 1 reply; 7+ messages in thread From: Rob Herring @ 2015-12-03 21:38 UTC (permalink / raw) To: Harvey Hunt Cc: linux-mtd, Alex Smith, Zubair Lutfullah Kakakhel, David Woodhouse, Brian Norris, devicetree, linux-kernel On Thu, Dec 03, 2015 at 12:02:20PM +0000, Harvey Hunt wrote: > From: Alex Smith <alex.smith@imgtec.com> > > Add DT bindings for NAND devices connected to the NEMC on JZ4780 SoCs, > as well as the hardware BCH controller, used by the jz4780_{nand,bch} > drivers. > > Signed-off-by: Alex Smith <alex.smith@imgtec.com> > Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> > Cc: David Woodhouse <dwmw2@infradead.org> > Cc: Brian Norris <computersforpeace@gmail.com> > Cc: linux-mtd@lists.infradead.org > Cc: devicetree@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com> > --- > v8 -> v9: > - Document that partitions are represented as a child node of a NAND chip. Don't multiple flash chips typically get interleaved in order to get parallelism needed for performance? Then the view of the partitions would apply across all chips. Anyway, it's optional, so: Acked-by: Rob Herring <robh@kernel.org> > v7 -> v8: > - Describe how NAND chips are now child nodes of the NAND controller. > > v6 -> v7: > - Add nand-ecc-mode to DT bindings. > - Add nand-on-flash-bbt to DT bindings. > > v5 -> v6: > - No change. > > v4 -> v5: > - Rename ingenic,bch-device to ingenic,bch-controller to fit with > existing convention. > > v3 -> v4: > - No change > > v2 -> v3: > - Rebase to 4.0-rc6 > - Changed ingenic,ecc-size to common nand-ecc-step-size > - Changed ingenic,ecc-strength to common nand-ecc-strength > - Changed ingenic,busy-gpio to common rb-gpios > - Changed ingenic,wp-gpio to common wp-gpios > > v1 -> v2: > - Rebase to 4.0-rc3 > > .../bindings/mtd/ingenic,jz4780-nand.txt | 86 ++++++++++++++++++++++ > 1 file changed, 86 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt > > diff --git a/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt b/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt > new file mode 100644 > index 0000000..29ea585 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt > @@ -0,0 +1,86 @@ > +* Ingenic JZ4780 NAND/BCH > + > +This file documents the device tree bindings for NAND flash devices on the > +JZ4780. NAND devices are connected to the NEMC controller (described in > +memory-controllers/ingenic,jz4780-nemc.txt), and thus NAND device nodes must > +be children of the NEMC node. > + > +Required NAND controller device properties: > +- compatible: Should be set to "ingenic,jz4780-nand". > +- reg: For each bank with a NAND chip attached, should specify a bank number, > + an offset of 0 and a size of 0x1000000 (i.e. the whole NEMC bank). > + > +Optional NAND controller device properties: > +- ingenic,bch-controller: To make use of the hardware BCH controller, this > + property must contain a phandle for the BCH controller node. The required > + properties for this node are described below. If this is not specified, > + software BCH will be used instead. > + > +Optional children nodes: > +- Individual NAND chips are children of the NAND controller node. > + > +Required children node properties: > +- reg: An integer ranging from 1 to 6 representing the CS line to use. > + > +Optional children node properties: > +- nand-ecc-step-size: ECC block size in bytes. > +- nand-ecc-strength: ECC strength (max number of correctable bits). > +- nand-ecc-mode: String, operation mode of the NAND ecc mode. "hw" by default > +- nand-on-flash-bbt: boolean to enable on flash bbt option, if not present false > +- rb-gpios: GPIO specifier for the busy pin. > +- wp-gpios: GPIO specifier for the write protect pin. > + > +Optional child node of NAND chip nodes: > +- partitions: see Documentation/devicetree/bindings/mtd/partition.txt > + > +Example: > + > +nemc: nemc@13410000 { > + ... > + > + nandc: nand-controller@1 { > + compatible = "ingenic,jz4780-nand"; > + reg = <1 0 0x1000000>; /* Bank 1 */ > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + ingenic,bch-controller = <&bch>; > + > + nand@1 { > + reg = <1>; > + > + nand-ecc-step-size = <1024>; > + nand-ecc-strength = <24>; > + nand-ecc-mode = "hw"; > + nand-on-flash-bbt; > + > + rb-gpios = <&gpa 20 GPIO_ACTIVE_LOW>; > + wp-gpios = <&gpf 22 GPIO_ACTIVE_LOW>; > + > + partitions { > + #address-cells = <2>; > + #size-cells = <2>; > + ... > + } > + }; > + }; > +}; > + > +The BCH controller is a separate SoC component used for error correction on > +NAND devices. The following is a description of the device properties for a > +BCH controller. > + > +Required BCH properties: > +- compatible: Should be set to "ingenic,jz4780-bch". > +- reg: Should specify the BCH controller registers location and length. > +- clocks: Clock for the BCH controller. > + > +Example: > + > +bch: bch@134d0000 { > + compatible = "ingenic,jz4780-bch"; > + reg = <0x134d0000 0x10000>; > + > + clocks = <&cgu JZ4780_CLK_BCH>; > +}; > -- > 2.6.2 > > -- > To unsubscribe from this list: send the line "unsubscribe devicetree" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} 2015-12-03 21:38 ` Rob Herring @ 2015-12-03 22:38 ` Brian Norris 0 siblings, 0 replies; 7+ messages in thread From: Brian Norris @ 2015-12-03 22:38 UTC (permalink / raw) To: Rob Herring Cc: Harvey Hunt, linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Alex Smith, Zubair Lutfullah Kakakhel, David Woodhouse, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA On Thu, Dec 03, 2015 at 03:38:12PM -0600, Rob Herring wrote: > On Thu, Dec 03, 2015 at 12:02:20PM +0000, Harvey Hunt wrote: > > v8 -> v9: > > - Document that partitions are represented as a child node of a NAND chip. > > Don't multiple flash chips typically get interleaved in order to get > parallelism needed for performance? Then the view of the partitions > would apply across all chips. Not in MTD so far. We have mtdconcat to do some combination of flash, but it's not too easy to use right now. There are also some "MTD RAID" patches submitted recently that might cover what you're talking about, but that's brand new and unreviewed, and I don't think anyone has considered trying to handle partitions for such a thing yet. Partitioning of this kind isn't even that useful for NAND flash, actually, since fixed assignment of flash ranges restricts the flexibility of UBI's wear-leveling algorithms. It probably makes more sense to deal with UBI volumes instead of MTD partitions when talking about NAND flash. And those aren't specified in DT. > Anyway, it's optional, so: > > Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Brian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} 2015-12-03 12:02 ` [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} Harvey Hunt 2015-12-03 21:38 ` Rob Herring @ 2015-12-08 14:17 ` Boris Brezillon 1 sibling, 0 replies; 7+ messages in thread From: Boris Brezillon @ 2015-12-08 14:17 UTC (permalink / raw) To: Harvey Hunt Cc: linux-mtd, devicetree, Zubair Lutfullah Kakakhel, linux-kernel, Alex Smith, Brian Norris, David Woodhouse On Thu, 3 Dec 2015 12:02:20 +0000 Harvey Hunt <harvey.hunt@imgtec.com> wrote: > From: Alex Smith <alex.smith@imgtec.com> > > Add DT bindings for NAND devices connected to the NEMC on JZ4780 SoCs, > as well as the hardware BCH controller, used by the jz4780_{nand,bch} > drivers. > > Signed-off-by: Alex Smith <alex.smith@imgtec.com> > Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> > Cc: David Woodhouse <dwmw2@infradead.org> > Cc: Brian Norris <computersforpeace@gmail.com> > Cc: linux-mtd@lists.infradead.org > Cc: devicetree@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com> FWIW: Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com> > --- > v8 -> v9: > - Document that partitions are represented as a child node of a NAND chip. > > v7 -> v8: > - Describe how NAND chips are now child nodes of the NAND controller. > > v6 -> v7: > - Add nand-ecc-mode to DT bindings. > - Add nand-on-flash-bbt to DT bindings. > > v5 -> v6: > - No change. > > v4 -> v5: > - Rename ingenic,bch-device to ingenic,bch-controller to fit with > existing convention. > > v3 -> v4: > - No change > > v2 -> v3: > - Rebase to 4.0-rc6 > - Changed ingenic,ecc-size to common nand-ecc-step-size > - Changed ingenic,ecc-strength to common nand-ecc-strength > - Changed ingenic,busy-gpio to common rb-gpios > - Changed ingenic,wp-gpio to common wp-gpios > > v1 -> v2: > - Rebase to 4.0-rc3 > > .../bindings/mtd/ingenic,jz4780-nand.txt | 86 ++++++++++++++++++++++ > 1 file changed, 86 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt > > diff --git a/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt b/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt > new file mode 100644 > index 0000000..29ea585 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mtd/ingenic,jz4780-nand.txt > @@ -0,0 +1,86 @@ > +* Ingenic JZ4780 NAND/BCH > + > +This file documents the device tree bindings for NAND flash devices on the > +JZ4780. NAND devices are connected to the NEMC controller (described in > +memory-controllers/ingenic,jz4780-nemc.txt), and thus NAND device nodes must > +be children of the NEMC node. > + > +Required NAND controller device properties: > +- compatible: Should be set to "ingenic,jz4780-nand". > +- reg: For each bank with a NAND chip attached, should specify a bank number, > + an offset of 0 and a size of 0x1000000 (i.e. the whole NEMC bank). > + > +Optional NAND controller device properties: > +- ingenic,bch-controller: To make use of the hardware BCH controller, this > + property must contain a phandle for the BCH controller node. The required > + properties for this node are described below. If this is not specified, > + software BCH will be used instead. > + > +Optional children nodes: > +- Individual NAND chips are children of the NAND controller node. > + > +Required children node properties: > +- reg: An integer ranging from 1 to 6 representing the CS line to use. > + > +Optional children node properties: > +- nand-ecc-step-size: ECC block size in bytes. > +- nand-ecc-strength: ECC strength (max number of correctable bits). > +- nand-ecc-mode: String, operation mode of the NAND ecc mode. "hw" by default > +- nand-on-flash-bbt: boolean to enable on flash bbt option, if not present false > +- rb-gpios: GPIO specifier for the busy pin. > +- wp-gpios: GPIO specifier for the write protect pin. > + > +Optional child node of NAND chip nodes: > +- partitions: see Documentation/devicetree/bindings/mtd/partition.txt > + > +Example: > + > +nemc: nemc@13410000 { > + ... > + > + nandc: nand-controller@1 { > + compatible = "ingenic,jz4780-nand"; > + reg = <1 0 0x1000000>; /* Bank 1 */ > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + ingenic,bch-controller = <&bch>; > + > + nand@1 { > + reg = <1>; > + > + nand-ecc-step-size = <1024>; > + nand-ecc-strength = <24>; > + nand-ecc-mode = "hw"; > + nand-on-flash-bbt; > + > + rb-gpios = <&gpa 20 GPIO_ACTIVE_LOW>; > + wp-gpios = <&gpf 22 GPIO_ACTIVE_LOW>; > + > + partitions { > + #address-cells = <2>; > + #size-cells = <2>; > + ... > + } > + }; > + }; > +}; > + > +The BCH controller is a separate SoC component used for error correction on > +NAND devices. The following is a description of the device properties for a > +BCH controller. > + > +Required BCH properties: > +- compatible: Should be set to "ingenic,jz4780-bch". > +- reg: Should specify the BCH controller registers location and length. > +- clocks: Clock for the BCH controller. > + > +Example: > + > +bch: bch@134d0000 { > + compatible = "ingenic,jz4780-bch"; > + reg = <0x134d0000 0x10000>; > + > + clocks = <&cgu JZ4780_CLK_BCH>; > +}; -- Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v9 3/3] MIPS: dts: jz4780/ci20: Add NEMC, BCH and NAND device tree nodes 2015-12-03 12:02 [PATCH v9 0/3] mtd: nand: jz4780: Add NAND and BCH drivers Harvey Hunt 2015-12-03 12:02 ` [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} Harvey Hunt @ 2015-12-03 12:02 ` Harvey Hunt 2015-12-08 14:20 ` Boris Brezillon 1 sibling, 1 reply; 7+ messages in thread From: Harvey Hunt @ 2015-12-03 12:02 UTC (permalink / raw) To: linux-mtd Cc: Alex Smith, Zubair Lutfullah Kakakhel, David Woodhouse, Brian Norris, Paul Burton, devicetree, linux-kernel, linux-mips, Harvey Hunt From: Alex Smith <alex.smith@imgtec.com> Add device tree nodes for the NEMC and BCH to the JZ4780 device tree, and make use of them in the Ci20 device tree to add a node for the board's NAND. Note that since the pinctrl driver is not yet upstream, this includes neither pin configuration nor busy/write-protect GPIO pins for the NAND. Use of the NAND relies on the boot loader to have left the pins configured in a usable state, which should be the case when booted from the NAND. Signed-off-by: Alex Smith <alex.smith@imgtec.com> Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Brian Norris <computersforpeace@gmail.com> Cc: Paul Burton <paul.burton@imgtec.com> Cc: linux-mtd@lists.infradead.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-mips@linux-mips.org Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com> --- v8 -> v9: - Represent the partition table as a subnode of a NAND chip. v7 -> v8: - Describe the NAND chips as children nodes of the NAND controller. - Remove ingenic, prefix from ECC settings. - Renamed some ECC settings. v6 -> v7: - Add nand-ecc-mode to DT. - Add nand-on-flash-bbt to DT. v4 -> v5: - New patch adding DT nodes for the NAND so that the driver can be tested. arch/mips/boot/dts/ingenic/ci20.dts | 63 ++++++++++++++++++++++++++++++++++ arch/mips/boot/dts/ingenic/jz4780.dtsi | 26 ++++++++++++++ 2 files changed, 89 insertions(+) diff --git a/arch/mips/boot/dts/ingenic/ci20.dts b/arch/mips/boot/dts/ingenic/ci20.dts index 9fcb9e7..782258c 100644 --- a/arch/mips/boot/dts/ingenic/ci20.dts +++ b/arch/mips/boot/dts/ingenic/ci20.dts @@ -42,3 +42,66 @@ &uart4 { status = "okay"; }; + +&nemc { + status = "okay"; + + nandc: nand-controller@1 { + compatible = "ingenic,jz4780-nand"; + reg = <1 0 0x1000000>; + + #address-cells = <1>; + #size-cells = <0>; + + ingenic,bch-controller = <&bch>; + + ingenic,nemc-tAS = <10>; + ingenic,nemc-tAH = <5>; + ingenic,nemc-tBP = <10>; + ingenic,nemc-tAW = <15>; + ingenic,nemc-tSTRV = <100>; + + nand@1 { + reg = <1>; + + nand-ecc-step-size = <1024>; + nand-ecc-strength = <24>; + nand-ecc-mode = "hw"; + nand-on-flash-bbt; + + partitions { + #address-cells = <2>; + #size-cells = <2>; + + partition@0 { + label = "u-boot-spl"; + reg = <0x0 0x0 0x0 0x800000>; + }; + + partition@0x800000 { + label = "u-boot"; + reg = <0x0 0x800000 0x0 0x200000>; + }; + + partition@0xa00000 { + label = "u-boot-env"; + reg = <0x0 0xa00000 0x0 0x200000>; + }; + + partition@0xc00000 { + label = "boot"; + reg = <0x0 0xc00000 0x0 0x4000000>; + }; + + partition@0x8c00000 { + label = "system"; + reg = <0x0 0x4c00000 0x1 0xfb400000>; + }; + }; + }; + }; +}; + +&bch { + status = "okay"; +}; diff --git a/arch/mips/boot/dts/ingenic/jz4780.dtsi b/arch/mips/boot/dts/ingenic/jz4780.dtsi index 65389f6..b868b42 100644 --- a/arch/mips/boot/dts/ingenic/jz4780.dtsi +++ b/arch/mips/boot/dts/ingenic/jz4780.dtsi @@ -108,4 +108,30 @@ status = "disabled"; }; + + nemc: nemc@13410000 { + compatible = "ingenic,jz4780-nemc"; + reg = <0x13410000 0x10000>; + #address-cells = <2>; + #size-cells = <1>; + ranges = <1 0 0x1b000000 0x1000000 + 2 0 0x1a000000 0x1000000 + 3 0 0x19000000 0x1000000 + 4 0 0x18000000 0x1000000 + 5 0 0x17000000 0x1000000 + 6 0 0x16000000 0x1000000>; + + clocks = <&cgu JZ4780_CLK_NEMC>; + + status = "disabled"; + }; + + bch: bch@134d0000 { + compatible = "ingenic,jz4780-bch"; + reg = <0x134d0000 0x10000>; + + clocks = <&cgu JZ4780_CLK_BCH>; + + status = "disabled"; + }; }; -- 2.6.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v9 3/3] MIPS: dts: jz4780/ci20: Add NEMC, BCH and NAND device tree nodes 2015-12-03 12:02 ` [PATCH v9 3/3] MIPS: dts: jz4780/ci20: Add NEMC, BCH and NAND device tree nodes Harvey Hunt @ 2015-12-08 14:20 ` Boris Brezillon 0 siblings, 0 replies; 7+ messages in thread From: Boris Brezillon @ 2015-12-08 14:20 UTC (permalink / raw) To: Harvey Hunt Cc: linux-mtd, devicetree, Zubair Lutfullah Kakakhel, Paul Burton, linux-mips, linux-kernel, Alex Smith, Brian Norris, David Woodhouse On Thu, 3 Dec 2015 12:02:22 +0000 Harvey Hunt <harvey.hunt@imgtec.com> wrote: > From: Alex Smith <alex.smith@imgtec.com> > > Add device tree nodes for the NEMC and BCH to the JZ4780 device tree, > and make use of them in the Ci20 device tree to add a node for the > board's NAND. > > Note that since the pinctrl driver is not yet upstream, this includes > neither pin configuration nor busy/write-protect GPIO pins for the > NAND. Use of the NAND relies on the boot loader to have left the pins > configured in a usable state, which should be the case when booted > from the NAND. > > Signed-off-by: Alex Smith <alex.smith@imgtec.com> > Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> > Cc: David Woodhouse <dwmw2@infradead.org> > Cc: Brian Norris <computersforpeace@gmail.com> > Cc: Paul Burton <paul.burton@imgtec.com> > Cc: linux-mtd@lists.infradead.org > Cc: devicetree@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: linux-mips@linux-mips.org > Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com> > --- > v8 -> v9: > - Represent the partition table as a subnode of a NAND chip. > > v7 -> v8: > - Describe the NAND chips as children nodes of the NAND controller. > - Remove ingenic, prefix from ECC settings. > - Renamed some ECC settings. > > v6 -> v7: > - Add nand-ecc-mode to DT. > - Add nand-on-flash-bbt to DT. > > v4 -> v5: > - New patch adding DT nodes for the NAND so that the driver can be > tested. > > arch/mips/boot/dts/ingenic/ci20.dts | 63 ++++++++++++++++++++++++++++++++++ > arch/mips/boot/dts/ingenic/jz4780.dtsi | 26 ++++++++++++++ > 2 files changed, 89 insertions(+) > > diff --git a/arch/mips/boot/dts/ingenic/ci20.dts b/arch/mips/boot/dts/ingenic/ci20.dts > index 9fcb9e7..782258c 100644 > --- a/arch/mips/boot/dts/ingenic/ci20.dts > +++ b/arch/mips/boot/dts/ingenic/ci20.dts > @@ -42,3 +42,66 @@ > &uart4 { > status = "okay"; > }; > + > +&nemc { > + status = "okay"; > + > + nandc: nand-controller@1 { > + compatible = "ingenic,jz4780-nand"; > + reg = <1 0 0x1000000>; > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + ingenic,bch-controller = <&bch>; > + > + ingenic,nemc-tAS = <10>; > + ingenic,nemc-tAH = <5>; > + ingenic,nemc-tBP = <10>; > + ingenic,nemc-tAW = <15>; > + ingenic,nemc-tSTRV = <100>; I guess those are encoding controller specific timings. Maybe they could be automatically deduced from nand_timings information (I'm not asking to implement that right now, but keep it in the back of your mind as possible future improvements). -- Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-12-08 14:20 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-03 12:02 [PATCH v9 0/3] mtd: nand: jz4780: Add NAND and BCH drivers Harvey Hunt
2015-12-03 12:02 ` [PATCH v9 1/3] dt-bindings: binding for jz4780-{nand,bch} Harvey Hunt
2015-12-03 21:38 ` Rob Herring
2015-12-03 22:38 ` Brian Norris
2015-12-08 14:17 ` Boris Brezillon
2015-12-03 12:02 ` [PATCH v9 3/3] MIPS: dts: jz4780/ci20: Add NEMC, BCH and NAND device tree nodes Harvey Hunt
2015-12-08 14:20 ` Boris Brezillon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).