]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
board/BuR/tseries: reactivate NAND-board
authorHannes Petermaier <oe5hpm@oevsv.at>
Wed, 8 Apr 2015 05:38:34 +0000 (07:38 +0200)
committerLothar Waßmann <LW@KARO-electronics.de>
Tue, 8 Sep 2015 20:30:12 +0000 (22:30 +0200)
The NAND-version has been become a bit orphan.
Now we need to reactivate it, so bring necessary things:

- loading devicetree
- switch control signal to correct pins
- setup pinmux
- default-environment

up to date.

Signed-off-by: Hannes Petermaier <oe5hpm@oevsv.at>
board/BuR/common/common.c
board/BuR/tseries/board.c
board/BuR/tseries/mux.c
include/configs/tseries.h

index e85064a6774707c630e2e182b928e914a9e8f5a7..23a98e4fdff9cc3b4a80c3939157735f4adc0793 100644 (file)
@@ -33,6 +33,7 @@
 #endif
 #include "bur_common.h"
 #include "../../../drivers/video/am335x-fb.h"
+#include <nand.h>
 
 static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
 
@@ -159,17 +160,22 @@ int load_lcdtiming(struct am335x_lcdpanel *panel)
 #ifdef CONFIG_USE_FDT
 static int load_devicetree(void)
 {
-       char *dtbname = getenv("dtb");
-       char *dtbdev = getenv("dtbdev");
-       char *dtppart = getenv("dtbpart");
-       u32 dtbaddr = getenv_ulong("dtbaddr", 16, 0UL);
        int rc;
        loff_t dtbsize;
+       u32 dtbaddr = getenv_ulong("dtbaddr", 16, 0UL);
 
        if (dtbaddr == 0) {
                printf("%s: don't have a valid <dtbaddr> in env!\n", __func__);
                return -1;
        }
+#ifdef CONFIG_NAND
+       dtbsize = 0x20000;
+       rc = nand_read_skip_bad(&nand_info[0], 0x40000, (size_t *)&dtbsize,
+                               NULL, 0x20000, (u_char *)dtbaddr);
+#else
+       char *dtbname = getenv("dtb");
+       char *dtbdev = getenv("dtbdev");
+       char *dtppart = getenv("dtbpart");
        if (!dtbdev || !dtbdev || !dtbname) {
                printf("%s: <dtbdev>/<dtbpart>/<dtb> missing.\n", __func__);
                return -1;
@@ -180,6 +186,7 @@ static int load_devicetree(void)
                return -1;
        }
        rc = fs_read(dtbname, (u32)dtbaddr, 0, 0, &dtbsize);
+#endif
        if (rc == 0) {
                gd->fdt_blob = (void *)dtbaddr;
                gd->fdt_size = dtbsize;
index 89e989f2467411341f34d3f437ee5f3d595f319a..d1d698e7d2489603d079037d77fc8d51a44b81b4 100644 (file)
@@ -128,6 +128,9 @@ void am33xx_spl_board_init(void)
        i2c_set_bus_num(0);
        i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE);
        pmicsetup(0);
+
+       gpio_direction_output(64+29, 1); /* switch NAND_RnB to GPMC_WAIT1 */
+       gpio_direction_output(64+28, 1); /* switch MII2_CRS to GPMC_WAIT0 */
 }
 
 const struct dpll_params *get_dpll_ddr_params(void)
index ac7e885f61589391a8569cd71f4b970bb9a0e9ea..caedf009a3efe859c2e0e667dd30c0b721277f52 100644 (file)
@@ -123,7 +123,7 @@ static struct module_pin_mux nand_pin_mux[] = {
        {OFFSET(gpmc_ad5), (MODE(0) | PULLUP_EN | RXACTIVE)},   /* NAND AD5 */
        {OFFSET(gpmc_ad6), (MODE(0) | PULLUP_EN | RXACTIVE)},   /* NAND AD6 */
        {OFFSET(gpmc_ad7), (MODE(0) | PULLUP_EN | RXACTIVE)},   /* NAND AD7 */
-       {OFFSET(gpmc_wait0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* NAND WAIT */
+       {OFFSET(gpmc_clk), (MODE(2) | RXACTIVE | PULLUP_EN)},   /* NAND WAIT */
        {OFFSET(gpmc_wpn), (MODE(7) | PULLUP_EN | RXACTIVE)},   /* NAND_WPN */
        {OFFSET(gpmc_csn0), (MODE(0) | PULLUDEN)},      /* NAND_CS0 */
        {OFFSET(gpmc_advn_ale), (MODE(0) | PULLUDEN)},  /* NAND_ADV_ALE */
index a6c7d5f136ffdbef71f72595d414d20e3e3ab9d0..1e41a12a6c86ddcae5b4e23b47a78495b20b88c3 100644 (file)
@@ -23,6 +23,8 @@
 #define CONFIG_HW_WATCHDOG
 #define CONFIG_OMAP_WATCHDOG
 #define CONFIG_SPL_WATCHDOG_SUPPORT
+
+#define CONFIG_SPL_GPIO_SUPPORT
 /* Bootcount using the RTC block */
 #define CONFIG_SYS_BOOTCOUNT_ADDR      0x44E3E000
 #define CONFIG_BOOTCOUNT_LIMIT
        "mtdparts=" MTDPARTS_DEFAULT "\0" \
        "nandargs=setenv bootargs console=${console} " \
                "${optargs} " \
-               "root=${nandroot} " \
-               "rootfstype=${nandrootfstype}\0" \
-       "nandroot=ubi0:rootfs rw ubi.mtd=8,2048\0" \
-       "nandrootfstype=ubifs rootwait=1\0" \
-       "nandimgsize=0x500000\0" \
-       "nandboot=echo Booting from nand ...; " \
+               "root=mtd6 " \
+               "rootfstype=jffs2\0" \
+       "kernelsize=0x400000\0" \
+       "nandboot=echo booting from nand ...; " \
                "run nandargs; " \
-               "nand read ${loadaddr} kernel ${nandimgsize}; " \
-               "bootz ${loadaddr}\0"
+               "nand read ${loadaddr} kernel ${kernelsize}; " \
+               "bootz ${loadaddr} - ${dtbaddr}\0" \
+       "defboot=run nandboot\0" \
+       "bootlimit=1\0" \
+       "altbootcmd=run usbscript\0"
 #else
 #define NANDARGS ""
 #endif /* CONFIG_NAND */
@@ -231,15 +234,15 @@ MMCARGS
 
 #define MTDIDS_DEFAULT                 "nand0=omap2-nand.0"
 #define MTDPARTS_DEFAULT               "mtdparts=omap2-nand.0:" \
-                                       "128k(SPL)," \
-                                       "128k(SPL.backup1)," \
-                                       "128k(SPL.backup2)," \
-                                       "128k(SPL.backup3)," \
-                                       "512k(u-boot)," \
-                                       "128k(u-boot-spl-os)," \
+                                       "128k(MLO)," \
+                                       "128k(MLO.backup)," \
+                                       "128k(dtb)," \
                                        "128k(u-boot-env)," \
-                                       "5m(kernel),"\
-                                       "-(rootfs)"
+                                       "512k(u-boot)," \
+                                       "4m(kernel),"\
+                                       "128m(rootfs),"\
+                                       "-(user)"
+#define CONFIG_NAND_OMAP_GPMC_WSCFG    1
 #endif /* CONFIG_NAND */
 
 /* USB configuration */
@@ -298,7 +301,7 @@ MMCARGS
 #else
 #define CONFIG_ENV_IS_IN_NAND
 #endif
-#define CONFIG_ENV_OFFSET              0x120000 /* TODO: Adresse definieren */
+#define CONFIG_ENV_OFFSET              0x60000
 #define CONFIG_SYS_ENV_SECT_SIZE       CONFIG_ENV_SIZE
 #else
 #error "no storage for Environment defined!"