diff mbox

[U-Boot,5/7] igep003x: UBIize

Message ID 20170401151757.cjusllxak2h6zjfc@lenoch
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Ladislav Michl April 1, 2017, 3:17 p.m. UTC
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>
---
 board/isee/igep003x/board.c       | 17 +++++++++++++++
 configs/am335x_igep0033_defconfig |  4 ++++
 include/configs/am335x_igep003x.h | 45 +++++++++++++++++++++++----------------
 3 files changed, 48 insertions(+), 18 deletions(-)

Comments

Heiko Schocher April 3, 2017, 4:18 a.m. UTC | #1
Hello Ladislav,

Am 01.04.2017 um 17:17 schrieb Ladislav Michl:
> 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>
> ---
>   board/isee/igep003x/board.c       | 17 +++++++++++++++
>   configs/am335x_igep0033_defconfig |  4 ++++
>   include/configs/am335x_igep003x.h | 45 +++++++++++++++++++++++----------------
>   3 files changed, 48 insertions(+), 18 deletions(-)

Reviewed-by: Heiko Schocher<hs@denx.de>

Thanks! Nive to see, that UBI (with FASTMAP) is working with SPL!

bye,
Heiko
>
> diff --git a/board/isee/igep003x/board.c b/board/isee/igep003x/board.c
> index 5fea7ffaef..9abb4824b5 100644
> --- a/board/isee/igep003x/board.c
> +++ b/board/isee/igep003x/board.c
> @@ -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)
>   {
> diff --git a/configs/am335x_igep0033_defconfig b/configs/am335x_igep0033_defconfig
> index 12f04c68f9..71e11da17a 100644
> --- a/configs/am335x_igep0033_defconfig
> +++ b/configs/am335x_igep0033_defconfig
> @@ -13,6 +13,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
> @@ -41,9 +42,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
> diff --git a/include/configs/am335x_igep003x.h b/include/configs/am335x_igep003x.h
> index 348b16f3e8..f7209930d3 100644
> --- a/include/configs/am335x_igep003x.h
> +++ b/include/configs/am335x_igep003x.h
> @@ -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
> @@ -67,11 +67,11 @@
>   		"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} " \
> @@ -97,12 +97,6 @@
>   /* 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
> @@ -110,9 +104,7 @@
>   #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)"
>
>   /* Unsupported features */
>   #undef CONFIG_USE_IRQ
> @@ -120,6 +112,27 @@
>   /* 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)
> @@ -139,8 +152,4 @@
>   #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 */
>
Pau Pajuelo April 6, 2017, 5:22 p.m. UTC | #2
Tested-by: Pau Pajuelo <ppajuel@gmail.com>

2017-04-03 6:18 GMT+02:00 Heiko Schocher <hs@denx.de>:
>
> Hello Ladislav,
>
> Am 01.04.2017 um 17:17 schrieb Ladislav Michl:
>>
>> 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>
>> ---
>>   board/isee/igep003x/board.c       | 17 +++++++++++++++
>>   configs/am335x_igep0033_defconfig |  4 ++++
>>   include/configs/am335x_igep003x.h | 45 +++++++++++++++++++++++----------------
>>   3 files changed, 48 insertions(+), 18 deletions(-)
>
>
> Reviewed-by: Heiko Schocher<hs@denx.de>
>
> Thanks! Nive to see, that UBI (with FASTMAP) is working with SPL!
>
> bye,
> Heiko
>
>>
>> diff --git a/board/isee/igep003x/board.c b/board/isee/igep003x/board.c
>> index 5fea7ffaef..9abb4824b5 100644
>> --- a/board/isee/igep003x/board.c
>> +++ b/board/isee/igep003x/board.c
>> @@ -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)
>>   {
>> diff --git a/configs/am335x_igep0033_defconfig b/configs/am335x_igep0033_defconfig
>> index 12f04c68f9..71e11da17a 100644
>> --- a/configs/am335x_igep0033_defconfig
>> +++ b/configs/am335x_igep0033_defconfig
>> @@ -13,6 +13,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
>> @@ -41,9 +42,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
>> diff --git a/include/configs/am335x_igep003x.h b/include/configs/am335x_igep003x.h
>> index 348b16f3e8..f7209930d3 100644
>> --- a/include/configs/am335x_igep003x.h
>> +++ b/include/configs/am335x_igep003x.h
>> @@ -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
>> @@ -67,11 +67,11 @@
>>                 "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} " \
>> @@ -97,12 +97,6 @@
>>   /* 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
>> @@ -110,9 +104,7 @@
>>   #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)"
>>
>>   /* Unsupported features */
>>   #undef CONFIG_USE_IRQ
>> @@ -120,6 +112,27 @@
>>   /* 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)
>> @@ -139,8 +152,4 @@
>>   #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 */
>>
>
> --
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Tom Rini May 8, 2017, 7:40 p.m. UTC | #3
On Sat, Apr 01, 2017 at 05:17:57PM +0200, Ladislav Michl wrote:

> 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>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/board/isee/igep003x/board.c b/board/isee/igep003x/board.c
index 5fea7ffaef..9abb4824b5 100644
--- a/board/isee/igep003x/board.c
+++ b/board/isee/igep003x/board.c
@@ -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)
 {
diff --git a/configs/am335x_igep0033_defconfig b/configs/am335x_igep0033_defconfig
index 12f04c68f9..71e11da17a 100644
--- a/configs/am335x_igep0033_defconfig
+++ b/configs/am335x_igep0033_defconfig
@@ -13,6 +13,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
@@ -41,9 +42,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
diff --git a/include/configs/am335x_igep003x.h b/include/configs/am335x_igep003x.h
index 348b16f3e8..f7209930d3 100644
--- a/include/configs/am335x_igep003x.h
+++ b/include/configs/am335x_igep003x.h
@@ -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
@@ -67,11 +67,11 @@ 
 		"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} " \
@@ -97,12 +97,6 @@ 
 /* 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
@@ -110,9 +104,7 @@ 
 #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)"
 
 /* Unsupported features */
 #undef CONFIG_USE_IRQ
@@ -120,6 +112,27 @@ 
 /* 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)
@@ -139,8 +152,4 @@ 
 #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 */