[U-Boot] [PATCH] [ARM] Apollon UBI support

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Tue Oct 21 12:20:33 CEST 2008


On 18:19 Tue 21 Oct     , Kyungmin Park wrote:
> If you want to UBI on Apollon, uncomment the CONFIG_SYS_USE_UBI macro
> 
> Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> ---
>  board/apollon/Makefile    |    4 ++-
>  board/apollon/ubi.c       |   55 +++++++++++++++++++++++++++++++++++++++++++++
>  include/configs/apollon.h |   27 +++++++++++++++++++--
>  3 files changed, 82 insertions(+), 4 deletions(-)
>  create mode 100644 board/apollon/ubi.c
> 
> diff --git a/board/apollon/Makefile b/board/apollon/Makefile
> index 9bac9a6..4c3e57f 100644
> --- a/board/apollon/Makefile
> +++ b/board/apollon/Makefile
> @@ -25,9 +25,11 @@ include $(TOPDIR)/config.mk
>  
>  LIB	= $(obj)lib$(BOARD).a
>  
> -COBJS	:= apollon.o mem.o sys_info.o
> +COBJS-y	:= apollon.o mem.o sys_info.o
> +COBJS-$(CONFIG_CMD_UBI) += ubi.o
>  SOBJS	:= lowlevel_init.o
>  
> +COBJS	:= $(COBJS-y)
>  SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
>  OBJS	:= $(addprefix $(obj),$(COBJS))
>  SOBJS	:= $(addprefix $(obj),$(SOBJS))
> diff --git a/board/apollon/ubi.c b/board/apollon/ubi.c
> new file mode 100644
> index 0000000..342569d
> --- /dev/null
> +++ b/board/apollon/ubi.c
> @@ -0,0 +1,55 @@
> +/*
> + * board/apollon/ubi.c
> + */
> +
> +#include <common.h>
> +#include <linux/mtd/mtd.h>
> +#include <linux/mtd/partitions.h>
> +#include <jffs2/load_kernel.h>
> +#include <ubi_uboot.h>
> +
> +/* common/cmd_jffs2.c */
> +extern int mtdparts_init(void);
> +extern int find_dev_and_part(const char *id, struct mtd_device **dev,
> +                u8 *part_num, struct part_info **part);
   ^^^^^^^^^^^^^^^^
   whitespace please fix
It will be better to have it in a header?
> +
> +/* drivers/mtd/ubi/build.c */
> +extern int ubi_mtd_param_parse(const char *val, struct kernel_param *kp);
> +extern int ubi_init(void);
It will be better to have it in a header?
> +
> +#ifdef CONFIG_CMD_UBI
please move this to the Makefile
> +
> +int ubi_board_scan(void)
> +{
> +        struct mtd_device *dev;
   ^^^^^^^^
   whitespace please fix
> +        struct part_info *part;
   ^^^^^^^^
   whitespace please fix
> +        struct mtd_partition mtd_part;
   whitespace please fix
   ^^^^^^^^
> +        char buffer[32];
   ^^^^^^^^
   whitespace please fix
> +        u8 pnum;
   ^^^^^^^^
   whitespace please fix
> +        int err;
   ^^^^^^^^
   whitespace please fix
> +
> +        if (mtdparts_init() !=0)
   ^^^^^^^^
   whitespace please fix
> +                return 1;
   ^^^^^^^^^^^^^^^^
   whitespace please fix
> +
> +        if (find_dev_and_part("onenand0,4", &dev, &pnum, &part) != 0)
   ^^^^^^^^
   whitespace please fix
> +                return 1;
   ^^^^^^^^^^^^^^^^
   whitespace please fix
> +
> +        printf("%s[%d] pnum %d\n", __func__, __LINE__, pnum);
   ^^^^^^^^
   whitespace please fix
> +        sprintf(buffer, "mtd=%d", pnum);
   ^^^^^^^^
   whitespace please fix
> +        mtd_part.name = buffer;
   ^^^^^^^^
   whitespace please fix
> +        mtd_part.size = part->size;
   ^^^^^^^^
   whitespace please fix
> +        mtd_part.offset = part->offset;
   ^^^^^^^^
   whitespace please fix
> +        add_mtd_partitions(&onenand_mtd, &mtd_part, 1);
   ^^^^^^^^
   whitespace please fix
> +
> +        err = ubi_mtd_param_parse(buffer, NULL);
   ^^^^^^^^
   whitespace please fix
> +        if (err)
   ^^^^^^^^
   whitespace please fix
> +                return err;
   whitespace please fix
> +
> +        err = ubi_init();
   ^^^^^^^^
   whitespace please fix
> +        if (err)
   ^^^^^^^^
   whitespace please fix
> +                return err;
   ^^^^^^^^^^^^^^^^
   whitespace please fix
> +
> +        return 0;
   ^^^^^^^^
   whitespace please fix
> +}
> +
> +#endif
> diff --git a/include/configs/apollon.h b/include/configs/apollon.h
> index d71ed44..3377f60 100644
> --- a/include/configs/apollon.h
> +++ b/include/configs/apollon.h
> @@ -53,6 +53,9 @@
>  #define CONFIG_SYS_USE_NOR		1
>  #endif
>  
> +/* uncommnet if you want to use UBI */
????
> +#define CONFIG_SYS_USE_UBI
> +
>  #include <asm/arch/omap2420.h>	/* get chip and board defs */
>  
>  #define	V_SCLK	12000000
> @@ -73,7 +76,7 @@
>   * Size of malloc() pool
>   */
>  #define	CONFIG_ENV_SIZE SZ_128K	/* Total Size of Environment Sector */
> -#define	CONFIG_SYS_MALLOC_LEN	(CONFIG_ENV_SIZE + SZ_128K)
> +#define	CONFIG_SYS_MALLOC_LEN	(CONFIG_ENV_SIZE + SZ_1M)
>  #define	CONFIG_SYS_GBL_DATA_SIZE	128	/* bytes reserved for initial data */
>  
>  /*
> @@ -116,6 +119,12 @@
>  #define	CONFIG_CMD_DIAG
>  #define	CONFIG_CMD_ONENAND
>  
> +#ifdef CONFIG_SYS_USE_UBI
> +#define	CONFIG_CMD_JFFS2
> +#define	CONFIG_CMD_UBI
> +#define	CONFIG_RBTREE
> +#endif
> +
>  #undef	CONFIG_CMD_AUTOSCRIPT
>  
>  #ifndef	CONFIG_SYS_USE_NOR
> @@ -134,9 +143,9 @@
>  #define	CONFIG_ETHADDR	00:0E:99:00:24:20
>  
>  #ifdef	CONFIG_APOLLON_PLUS
> -# define	CONFIG_BOOTARGS "root=/dev/nfs rw mem=64M console=ttyS0,115200n8 ip=192.168.116.25:192.168.116.1:192.168.116.1:255.255.255.0:apollon:eth0:off nfsroot=/tftpboot/nfsroot profile=2"
> +# define	CONFIG_BOOTARGS "root=/dev/nfs rw mem=64M console=ttyS0,115200n8 ip=192.168.116.25:192.168.116.1:192.168.116.1:255.255.255.0:apollon:eth0:off nfsroot=/tftpboot/nfsroot profile=2 lpj=1646592 ubi.mtd=4"
too long please split
>  #else
> -# define	CONFIG_BOOTARGS "root=/dev/nfs rw mem=128M console=ttyS0,115200n8 ip=192.168.116.25:192.168.116.1:192.168.116.1:255.255.255.0:apollon:eth0:off nfsroot=/tftpboot/nfsroot profile=2"
> +# define	CONFIG_BOOTARGS "root=/dev/nfs rw mem=128M console=ttyS0,115200n8 ip=192.168.116.25:192.168.116.1:192.168.116.1:255.255.255.0:apollon:eth0:off nfsroot=/tftpboot/nfsroot profile=2 lpj=1646592 ubi.mtd=4"
ditto
>  #endif
>  
>  #define	CONFIG_EXTRA_ENV_SETTINGS					\
> @@ -151,6 +160,7 @@
>  	"oneboot=onenand read 0x80008000 0x40000 0x200000; go 0x80008000\0"\
>  	"onesyncboot=run syncmode oneboot\0"				\
>  	"updateb=tftp 0x80180000 u-boot-onenand.bin; onenand erase 0x0 0x20000; onenand write 0x80180000 0x0 0x20000\0"					\
ditto
> +	"ubi=setenv bootargs ${bootargs} ubi.mtd=4 ${mtdparts}; run uImage\0" \
>  	"bootcmd=run uboot\0"
>  
>  /*
> @@ -228,4 +238,15 @@
>  #define	CONFIG_ENV_IS_IN_ONENAND	1
>  #define CONFIG_ENV_ADDR		0x00020000
>  
> +#ifdef CONFIG_SYS_USE_UBI
> +#define CONFIG_JFFS2_CMDLINE
> +#define MTDIDS_DEFAULT		"onenand0=onenand"
> +#define MTDPARTS_DEFAULT	"mtdparts=onenand:128k(bootloader),"	\
> +					"128k(params),"			\
> +					"2m(kernel),"			\
> +					"16m(rootfs),"			\
> +					"32m(fs),"			\
> +					"-(ubifs)"
> +#endif
> +
>  #endif /* __CONFIG_H */
> -- 
Best Regards,
J.


More information about the U-Boot mailing list