[U-Boot] [PATCH] ads5121: Set offset of NFC registers in device tree.

Wolfgang Denk wd at denx.de
Tue Sep 2 23:41:40 CEST 2008


From: Grzegorz Bernacki <gjb at semihalf.com>

Offset of NFC register has changed in rev 2 of SoC.
U-Boot passes information about it in <offset> property of nfc node.

Signed-off-by: Grzegorz Bernacki <gjb at semihalf.com>
Signed-off-by: Wolfgang Denk <wd at denx.de>

---
 board/ads5121/ads5121.c |   33 +++++++++++++++++++++++++++++++++
 include/mpc512x.h       |    4 ++++
 2 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/board/ads5121/ads5121.c b/board/ads5121/ads5121.c
index deaa292..a6cba28 100644
--- a/board/ads5121/ads5121.c
+++ b/board/ads5121/ads5121.c
@@ -27,6 +27,7 @@
 #include <command.h>
 #include <asm/processor.h>
 #include <fdt_support.h>
+#include <libfdt.h>
 #ifdef CONFIG_MISC_INIT_R
 #include <i2c.h>
 #endif
@@ -306,9 +307,41 @@ int checkboard (void)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
+static int fdt_set_nfc_offset(void* blob)
+{
+	int err, nodeoffset;
+	unsigned int offset;
+	volatile immap_t *im = (immap_t *) CFG_IMMR;
+
+	if (SVR_MJREV (im->sysconf.spridr) >= 2)
+		offset = NFC_REV2_REG_OFFSET;
+	else
+		offset = NFC_REG_OFFSET;
+
+	err = fdt_check_header(blob);
+	if (err < 0) {
+		printf("%s: %s\n", __FUNCTION__, fdt_strerror(err));
+		return err;
+	}
+
+	/*  update nfc node */
+	nodeoffset = fdt_path_offset(blob, "/nfc");
+	if (nodeoffset < 0)
+		return 0;
+
+	err = fdt_setprop(blob, nodeoffset, "offset", &offset, sizeof(offset));
+	if (err < 0) {
+		printf("WARNING: could not set NFC offset property %s.\n",
+			fdt_strerror(err));
+		return err;
+	}
+
+}
+
 void ft_board_setup(void *blob, bd_t *bd)
 {
 	ft_cpu_setup(blob, bd);
 	fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
+	fdt_set_nfc_offset(blob);
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/include/mpc512x.h b/include/mpc512x.h
index cb418d1..12f95fb 100644
--- a/include/mpc512x.h
+++ b/include/mpc512x.h
@@ -674,4 +674,8 @@ void iopin_initialize(iopin_t *,int);
 #define PIWAR_IWS_1G			0x0000001D
 #define PIWAR_IWS_2G			0x0000001E
 
+/* NAND Flash controller registers offset */
+#define NFC_REG_OFFSET			0x0E00
+#define NFC_REV2_REG_OFFSET		0x1E00
+
 #endif	/* __MPC512X_H__ */
-- 
1.5.4.2



More information about the U-Boot mailing list