igep003x: UBIize
authorLadislav Michl <ladis@linux-mips.org>
Sat, 1 Apr 2017 15:17:57 +0000 (17:17 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 8 May 2017 15:57:27 +0000 (11:57 -0400)
Convert IGEP board to use UBI volumes for U-Boot, its environment and
kernel. With exception of first four sectors read by SoC BootROM whole
NAND is UBI managed.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
Reviewed-by: Heiko Schocher<hs@denx.de>
Tested-by: Pau Pajuelo <ppajuel@gmail.com>
board/isee/igep003x/board.c
configs/am335x_igep0033_defconfig
include/configs/am335x_igep003x.h

index 5fea7ffaef15508464b33d1646c3a3af2565694c..9abb4824b584ecf594b30b35de1172b5bff53660 100644 (file)
@@ -23,6 +23,9 @@
 #include <i2c.h>
 #include <miiphy.h>
 #include <cpsw.h>
+#include <fdt_support.h>
+#include <mtd_node.h>
+#include <jffs2/load_kernel.h>
 #include "board.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -104,6 +107,20 @@ int board_init(void)
        return 0;
 }
 
+#ifdef CONFIG_OF_BOARD_SETUP
+int ft_board_setup(void *blob, bd_t *bd)
+{
+#ifdef CONFIG_FDT_FIXUP_PARTITIONS
+       static struct node_info nodes[] = {
+               { "ti,omap2-nand", MTD_DEV_TYPE_NAND, },
+       };
+
+       fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
+#endif
+       return 0;
+}
+#endif
+
 #if defined(CONFIG_DRIVER_TI_CPSW)
 static void cpsw_control(int enabled)
 {
index 3b9ed4385613a7fb7c3de4e06e20a770061a5f14..fa468f05e7fd91d2ce04b7b7ae22b69963fee5f0 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0033"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -42,9 +43,12 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
+CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
+CONFIG_FDT_FIXUP_PARTITIONS=y
 # CONFIG_GENERATE_SMBIOS_TABLE is not set
index cf47fcfe463dceff1cebad39a5710b27e0487744..65941579ba0fbd2c40a59b9e9c288aba39cff0f9 100644 (file)
@@ -21,7 +21,7 @@
 #define V_OSCK                         24000000  /* Clock output from T2 */
 #define V_SCLK                         (V_OSCK)
 
-#define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
+#define CONFIG_ENV_SIZE                        (96 << 10)      /*  96 KiB */
 
 /* Make the verbose messages from UBI stop printing */
 #define CONFIG_UBI_SILENCE_MSG
                "fi;\0" \
        "mtdids=" MTDIDS_DEFAULT "\0" \
        "mtdparts=" MTDPARTS_DEFAULT "\0" \
-       "nandroot=ubi0:filesystem rw ubi.mtd=3,2048\0" \
+       "nandroot=ubi0:rootfs rw ubi.mtd=1\0" \
        "nandrootfstype=ubifs rootwait\0" \
-       "nandload=ubi part filesystem 2048; ubifsmount ubi0; " \
-               "ubifsload ${loadaddr} ${bootdir}/${bootfile}; " \
-               "ubifsload ${fdtaddr} ${bootdir}/${dtbfile} \0" \
+       "nandload=ubi part UBI; " \
+               "ubi read ${loadaddr} kernel; " \
+               "ubi read ${fdtaddr} dtb \0" \
        "nandargs=setenv bootargs console=${console} " \
                "${optargs} " \
                "root=${nandroot} " \
 /* NAND support */
 #define CONFIG_NAND_OMAP_ELM
 #define CONFIG_SYS_NAND_ONFI_DETECTION 1
-#define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB */
-#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_OFFSET              0x180000 /* environment starts here */
-#define CONFIG_ENV_ADDR_REDUND         (CONFIG_ENV_OFFSET + CONFIG_SYS_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND         (CONFIG_ENV_SIZE)
 
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_LZO
 
 #define MTDIDS_DEFAULT                 "nand0=omap2-nand.0"
-#define MTDPARTS_DEFAULT               "mtdparts=omap2-nand.0:512k(spl),"\
-                                       "1m(uboot),256k(environment),"\
-                                       "-(filesystem)"
+#define MTDPARTS_DEFAULT               "mtdparts=omap2-nand.0:512k(SPL),-(UBI)"
 
 /* SPL */
 #define CONFIG_SPL_LDSCRIPT            "arch/arm/mach-omap2/am33xx/u-boot-spl.lds"
 
+/* UBI configuration */
+#define CONFIG_SPL_UBI                 1
+#define CONFIG_SPL_UBI_MAX_VOL_LEBS    256
+#define CONFIG_SPL_UBI_MAX_PEB_SIZE    (256*1024)
+#define CONFIG_SPL_UBI_MAX_PEBS                4096
+#define CONFIG_SPL_UBI_VOL_IDS         8
+#define CONFIG_SPL_UBI_LOAD_MONITOR_ID 0
+#define CONFIG_SPL_UBI_LOAD_KERNEL_ID  3
+#define CONFIG_SPL_UBI_LOAD_ARGS_ID    4
+#define CONFIG_SPL_UBI_PEB_OFFSET      4
+#define CONFIG_SPL_UBI_VID_OFFSET      512
+#define CONFIG_SPL_UBI_LEB_START       2048
+#define CONFIG_SPL_UBI_INFO_ADDR       0x88080000
+
+/* environment organization */
+#define CONFIG_ENV_IS_IN_UBI           1
+#define CONFIG_ENV_UBI_PART            "UBI"
+#define CONFIG_ENV_UBI_VOLUME          "config"
+#define CONFIG_ENV_UBI_VOLUME_REDUND   "config_r"
+
+/* NAND config */
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_COUNT     (CONFIG_SYS_NAND_BLOCK_SIZE / \
                                         CONFIG_SYS_NAND_PAGE_SIZE)
 #define CONFIG_SYS_NAND_ECCBYTES       14
 #define CONFIG_NAND_OMAP_ECCSCHEME     OMAP_ECC_BCH8_CODE_HW
 
-#define        CONFIG_SYS_NAND_U_BOOT_START    CONFIG_SYS_TEXT_BASE
-
-#define CONFIG_SYS_NAND_U_BOOT_OFFS    0x80000
-
 #endif /* ! __CONFIG_IGEP003X_H */