
From: Grzegorz Bernacki gjb@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@semihalf.com Signed-off-by: Wolfgang Denk wd@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__ */