From e7fc000fcd598614950f90c8e4e8d7b22cb40cd9 Mon Sep 17 00:00:00 2001
From: Yegor Yefremov <yegorslists@googlemail.com>
Date: Fri, 8 Dec 2017 09:38:56 +0100
Subject: [PATCH] Baltos: add support for NAND chips with 4096 bytes page size

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
 board/vscom/baltos/board.c | 15 +++++++++++++-
 include/configs/baltos.h   | 51 +++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 58 insertions(+), 8 deletions(-)

diff --git a/board/vscom/baltos/board.c b/board/vscom/baltos/board.c
index cb39190..9a47a7b 100644
--- a/board/vscom/baltos/board.c
+++ b/board/vscom/baltos/board.c
@@ -293,7 +293,6 @@ int ft_board_setup(void *blob, bd_t *bd)
 	mac_addr[4] = header.MAC1[4];
 	mac_addr[5] = header.MAC1[5];
 
-
 	node = fdt_path_offset(blob, "/ocp/ethernet/slave@4a100200");
 	if (node < 0) {
 		printf("no /soc/fman/ethernet path offset\n");
@@ -326,6 +325,20 @@ int ft_board_setup(void *blob, bd_t *bd)
 		return -ENODEV;
 	}
 
+#if CONFIG_SYS_NAND_U_BOOT_OFFS == 0x200000
+	node = fdt_path_offset(blob, "/ocp/gpmc/nand@0,0");
+	if (node < 0) {
+		printf("no /ocp/gpmc/nand@0,0 path offset\n");
+		return -ENODEV;
+	}
+
+	ret = fdt_setprop(blob, node, "ti,nand-ecc-opt", "bch16\0", 6);
+	if (ret) {
+		printf("error setting ti,nand-ecc-opt property\n");
+		return -ENODEV;
+	}
+#endif
+
 	printf("\nFDT was successfully setup\n");
 
 	return 0;
diff --git a/include/configs/baltos.h b/include/configs/baltos.h
index 3fc9e2f..86183f9 100644
--- a/include/configs/baltos.h
+++ b/include/configs/baltos.h
@@ -43,7 +43,6 @@
 #define CONFIG_SYS_OMAP24_I2C_SPEED 1000
 
 #ifdef CONFIG_NAND
-#define CONFIG_SYS_NAND_U_BOOT_OFFS	0x00080000
 #ifdef CONFIG_SPL_OS_BOOT
 #define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x00200000 /* kernel offset */
 #endif
@@ -239,16 +238,23 @@
 /* USB gadget RNDIS */
 
 /* General network SPL, both CPSW and USB gadget RNDIS */
-#define CONFIG_SPL_NET_VCI_STRING	"AM335x U-Boot SPL"*/
+#define CONFIG_SPL_NET_VCI_STRING	"AM335x U-Boot SPL"
 
+/* Configure NAND */
 #ifdef CONFIG_NAND
+
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+#define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_BAD_BLOCK_POS	NAND_LARGE_BADBLOCK_POS
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_COUNT	(CONFIG_SYS_NAND_BLOCK_SIZE / \
 					 CONFIG_SYS_NAND_PAGE_SIZE)
+#if CONFIG_SYS_NAND_U_BOOT_OFFS == 0x80000
+
+#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW
 #define CONFIG_SYS_NAND_PAGE_SIZE	2048
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	(128*1024)
-#define CONFIG_SYS_NAND_BAD_BLOCK_POS	NAND_LARGE_BADBLOCK_POS
 #define CONFIG_SYS_NAND_ECCPOS		{ 2, 3, 4, 5, 6, 7, 8, 9, \
 					 10, 11, 12, 13, 14, 15, 16, 17, \
 					 18, 19, 20, 21, 22, 23, 24, 25, \
@@ -259,10 +265,41 @@
 
 #define CONFIG_SYS_NAND_ECCSIZE		512
 #define CONFIG_SYS_NAND_ECCBYTES	14
-#define CONFIG_SYS_NAND_ONFI_DETECTION
-#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW
-#define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE
-#endif
+
+#else
+
+#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH16_CODE_HW
+#define CONFIG_SYS_NAND_PAGE_SIZE       4096
+#define CONFIG_SYS_NAND_OOBSIZE         224
+#define CONFIG_SYS_NAND_BLOCK_SIZE      (128 * CONFIG_SYS_NAND_PAGE_SIZE)
+#define CONFIG_SYS_NAND_ECCPOS	{ 2, 3, 4, 5, 6, 7, 8, 9, \
+				10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \
+				20, 21, 22, 23, 24, 25, 26, 27, 28, 29, \
+				30, 31, 32, 33, 34, 35, 36, 37, 38, 39, \
+				40, 41, 42, 43, 44, 45, 46, 47, 48, 49, \
+				50, 51, 52, 53, 54, 55, 56, 57, 58, 59, \
+				60, 61, 62, 63, 64, 65, 66, 67, 68, 69, \
+				70, 71, 72, 73, 74, 75, 76, 77, 78, 79, \
+				80, 81, 82, 83, 84, 85, 86, 87, 88, 89, \
+				90, 91, 92, 93, 94, 95, 96, 97, 98, 99, \
+			100, 101, 102, 103, 104, 105, 106, 107, 108, 109, \
+			110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
+			120, 121, 122, 123, 124, 125, 126, 127, 128, 129, \
+			130, 131, 132, 133, 134, 135, 136, 137, 138, 139, \
+			140, 141, 142, 143, 144, 145, 146, 147, 148, 149, \
+			150, 151, 152, 153, 154, 155, 156, 157, 158, 159, \
+			160, 161, 162, 163, 164, 165, 166, 167, 168, 169, \
+			170, 171, 172, 173, 174, 175, 176, 177, 178, 179, \
+			180, 181, 182, 183, 184, 185, 186, 187, 188, 189, \
+			190, 191, 192, 193, 194, 195, 196, 197, 198, 199, \
+			200, 201, 202, 203, 204, 205, 206, 207, 208, 209, \
+			}
+
+#define CONFIG_SYS_NAND_ECCSIZE 512
+#define CONFIG_SYS_NAND_ECCBYTES 26
+
+#endif /* BALTOS_2048_PAGE */
+#endif /* CONFIG_NAND */
 #endif
 
 /*
-- 
2.1.4

