Skip to contentSkip to conversation

tegra: enable NAND on Harmony

PATCH New Stephen Warren 4 participants 5 messages Jul 30, 2012 – Aug 13, 2012 Tegra architecture support

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 tegra: enable NAND on Harmony

From: Stephen Warren <[email protected]>

---
 board/nvidia/dts/tegra20-harmony.dts |   10 ++++++++++
 include/configs/harmony.h            |    9 ++++++++-
 2 files changed, 18 insertions(+), 1 deletions(-)
board/nvidia/dts/tegra20-harmony.dts +10 -0
index c351954..ca5facb 100644
@@ -54,4 +54,14 @@
 	usb at c5004000 {
 		status = "disabled";
 	};
+
+	nand-controller at 70008000 {
+		nvidia,wp-gpios = <&gpio 23 0>;		/* PC7 */
+		nvidia,width = <8>;
+		nvidia,timing = <26 100 20 80 20 10 12 10 70>;
+		nand at 0 {
+			reg = <0>;
+			compatible = "hynix,hy27uf4g2b", "nand-flash";
+		};
+	};
 };
include/configs/harmony.h +8 -1
index d0555c1..85059b9 100644
@@ -62,8 +62,15 @@
 #define CONFIG_CMD_EXT2
 #define CONFIG_CMD_FAT
 
+/* NAND support */
+#define CONFIG_CMD_NAND
+#define CONFIG_TEGRA_NAND
+#define CONFIG_SYS_MAX_NAND_DEVICE	1
+#define CONFIG_SYS_NAND_BASE	TEGRA20_NAND_BASE
+
 /* Environment not stored */
-#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET	(SZ_512M - SZ_128K) /* 128K sector size */
 
 /* USB Host support */
 #define CONFIG_USB_EHCI
Signature · 1 line
1.7.0.4
#1 lore raw

PATCH 1/1 tegra: enable NAND on Harmony

Quoted 3 lines · Stephen Warren

From: Stephen Warren <[email protected]>

(nice to have a commit message though)

Quoted 48 lines
---
 board/nvidia/dts/tegra20-harmony.dts |   10 ++++++++++
 include/configs/harmony.h            |    9 ++++++++-
 2 files changed, 18 insertions(+), 1 deletions(-)
board/nvidia/dts/tegra20-harmony.dts +10 -0
index c351954..ca5facb 100644
@@ -54,4 +54,14 @@
        usb at c5004000 {
                status = "disabled";
        };
+
+       nand-controller at 70008000 {
+               nvidia,wp-gpios = <&gpio 23 0>;         /* PC7 */
+               nvidia,width = <8>;
+               nvidia,timing = <26 100 20 80 20 10 12 10 70>;
+               nand at 0 {
+                       reg = <0>;
+                       compatible = "hynix,hy27uf4g2b", "nand-flash";
+               };
+       };
 };
include/configs/harmony.h +8 -2
index d0555c1..85059b9 100644
@@ -62,8 +62,15 @@
 #define CONFIG_CMD_EXT2
 #define CONFIG_CMD_FAT
 
+/* NAND support */
+#define CONFIG_CMD_NAND
+#define CONFIG_TEGRA_NAND
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_SYS_NAND_BASE   TEGRA20_NAND_BASE
+
 /* Environment not stored */
-#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET      (SZ_512M - SZ_128K) /* 128K sector size */
 
 /* USB Host support */
 #define CONFIG_USB_EHCI
--

1.7.0.4

#2 lore raw

PATCH 1/1 tegra: enable NAND on Harmony

In reply to Stephen Warren
Quoted 1 line · Stephen Warren
include/configs/harmony.h +0 -0

[...]

include/configs/harmony.h line 73

Quoted 4 lines

/* Environment not stored */

include/configs/harmony.h +2 -1
-#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET	(SZ_512M - SZ_128K) /* 128K sector size */

Perhaps the comment should be updated now.

Also on a semi-related note, do you think it would be useful to define some kind of common layout for NAND content? I noticed that there is now an open-source implementation of nvflash that could be used to bootstrap U-Boot. That combined with the NAND support in U-Boot could be used to streamline the bootstrapping of boards.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120731/10e0dc3a/attachment.pgp>

#3 lore raw

PATCH 1/1 tegra: enable NAND on Harmony

In reply to Stephen Warren
Quoted 17 lines · Stephen Warren

From: Stephen Warren <[email protected]>

---
 board/nvidia/dts/tegra20-harmony.dts |   10 ++++++++++
 include/configs/harmony.h            |    9 ++++++++-
 2 files changed, 18 insertions(+), 1 deletions(-)
board/nvidia/dts/tegra20-harmony.dts +1 -0
index c351954..ca5facb 100644
@@ -54,4 +54,14 @@
 	usb at c5004000 {
 		status = "disabled";
 	};
+

board/nvidia/dts/tegra20-harmony.dts line 67

Quoted 10 lines
board/nvidia/dts/tegra20-harmony.dts +9 -0
+	nand-controller at 70008000 {
+		nvidia,wp-gpios = <&gpio 23 0>;		/* PC7 */
+		nvidia,width = <8>;
+		nvidia,timing = <26 100 20 80 20 10 12 10 70>;
+		nand at 0 {
+			reg = <0>;
+			compatible = "hynix,hy27uf4g2b", "nand-flash";
+		};
+	};
 };

Where is the binding for a generic "nand-flash" compatible?

-Scott

#4 lore raw

PATCH 1/1 tegra: enable NAND on Harmony

Quoted 5 lines · Scott Wood
Quoted 3 lines · Stephen Warren
board/nvidia/dts/tegra20-harmony.dts +1 -0
 
+	nand-controller at 70008000 {

...

Quoted 5 lines

board/nvidia/dts/tegra20-harmony.dts line 64

Quoted 3 lines
board/nvidia/dts/tegra20-harmony.dts +3 -0
+		nand at 0 {
+			reg = <0>;
+			compatible = "hynix,hy27uf4g2b", "nand-flash";

Where is the binding for a generic "nand-flash" compatible?

I don't know if there is one. This patch was cribbed from one by Simon (CC'd) for Seaboard. Simon do you know the answer?

That said, it seems like it's quite reasonable to create or assume such a binding, since NAND flash appears self-describing.

That said, looking for precedence in the Linux kernel indicates some inconsistencies. There exist:

* Many (ARM and PowerPC) bindings that have no node for the NAND chip itself, but rather the NAND controller has children that describe the partitioning of the NAND chip.

* Many (I think only PowerPC) bindings that have a node for the NAND chip, but containing little but #address/#size-cells, and this node then contains children that describe the partitioning.

* I guess there is at least one PowerPC example just like this patch, that contains a child node containing a compatible value describing the flash model number.