If you want to UBI on Apollon, uncomment the CONFIG_SYS_USE_UBI macro

Signed-off-by: Kyungmin Park <[EMAIL PROTECTED]>
---
 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);
+
+/* drivers/mtd/ubi/build.c */
+extern int ubi_mtd_param_parse(const char *val, struct kernel_param *kp);
+extern int ubi_init(void);
+
+#ifdef CONFIG_CMD_UBI
+
+int ubi_board_scan(void)
+{
+        struct mtd_device *dev;
+        struct part_info *part;
+        struct mtd_partition mtd_part;
+        char buffer[32];
+        u8 pnum;
+        int err;
+
+        if (mtdparts_init() !=0)
+                return 1;
+
+        if (find_dev_and_part("onenand0,4", &dev, &pnum, &part) != 0)
+                return 1;
+
+        printf("%s[%d] pnum %d\n", __func__, __LINE__, pnum);
+        sprintf(buffer, "mtd=%d", pnum);
+        mtd_part.name = buffer;
+        mtd_part.size = part->size;
+        mtd_part.offset = part->offset;
+        add_mtd_partitions(&onenand_mtd, &mtd_part, 1);
+
+        err = ubi_mtd_param_parse(buffer, NULL);
+        if (err)
+                return err;
+
+        err = ubi_init();
+        if (err)
+                return err;
+
+        return 0;
+}
+
+#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"
 #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"
 #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"                                 \
+       "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 */
-- 
1.5.3.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to