configs: imx6dl-mamoj: Add Falcon mode support
authorJagan Teki <jagan@amarulasolutions.com>
Mon, 7 May 2018 05:51:39 +0000 (11:21 +0530)
committerStefano Babic <sbabic@denx.de>
Fri, 18 May 2018 06:23:43 +0000 (08:23 +0200)
Add Falcon mode support to boot Linux directly after SPL.

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
board/bticino/mamoj/README
board/bticino/mamoj/spl.c
configs/imx6dl_mamoj_defconfig
include/configs/imx6dl-mamoj.h

index 8b0e9c3..5333c72 100644 (file)
@@ -15,6 +15,8 @@ The following methods can be used for booting Mamoj boards:
 
 2. eMMC boot (via DFU)
 
+3. Falcon mode
+
 1. USB SDP boot:
 ---------------
 
@@ -92,6 +94,31 @@ The following methods can be used for booting Mamoj boards:
 
   Poweroff and Poweron the board and see U-Boot booting from eMMC.
 
+3. Falcon mode:
+--------------
+
+  - Skip 10M space and create dual partitions for eMMC, start sector is 20480
+
+    Partition Map for MMC device 2  --   Partition Type: DOS
+
+    Part    Start Sector    Num Sectors     UUID            Type
+      1     20480           131072          c52e78be-01     83
+      2     151552          7581696         c52e78be-02     83
+
+  - Write uImage
+
+    => fatload mmc 2:1 $kernel_addr_r uImage
+    => mmc write $kernel_addr_r 0x1000 0x4000
+
+  - Write dtb and args
+
+    => setenv bootargs console=ttymxc2,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw quiet
+    => fatload mmc 2:1 $fdt_addr_r imx6dl-mamoj.dtb
+    => spl export fdt $kernel_addr_r - $fdt_addr_r
+    => mmc write 0x13000000 0x800 0x800
+
+  Poweroff and Poweron the board and see Linux booting directly after SPL.
+
 --
 Jagan Teki <jagan@amarulasolutions.com>
 03/12/18
index 4274cc8..c521837 100644 (file)
@@ -30,6 +30,17 @@ static iomux_v3_cfg_t const uart3_pads[] = {
        IOMUX_PADS(PAD_EIM_D25__UART3_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL)),
 };
 
+#ifdef CONFIG_SPL_OS_BOOT
+int spl_start_uboot(void)
+{
+       /* break into full u-boot on 'c' */
+       if (serial_tstc() && serial_getc() == 'c')
+               return 1;
+
+       return 0;
+}
+#endif
+
 struct mx6sdl_iomux_ddr_regs mx6sdl_ddr_ioregs = {
        .dram_sdclk_0 = IMX6SDL_DRIVE_STRENGTH,
        .dram_sdclk_1 = IMX6SDL_DRIVE_STRENGTH,
index e34c2d9..d789496 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_SYS_TEXT_BASE=0x17800000
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_MX6DL_MAMOJ=y
+CONFIG_SPL_OS_BOOT=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6dl-mamoj"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
index 0ac238b..2f5e212 100644 (file)
 #define CONFIG_MXC_USB_FLAGS                   0
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                2
 
+/* Falcon */
+#define CONFIG_SPL_FS_LOAD_ARGS_NAME   "args"
+#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
+#define CONFIG_CMD_SPL
+#define CONFIG_SYS_SPL_ARGS_ADDR       0x13000000
+#define CONFIG_CMD_SPL_WRITE_SIZE      (128 * SZ_1K)
+
+/* MMC support: args@1MB kernel@2MB */
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR          0x800   /* 1MB */
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS         (CONFIG_CMD_SPL_WRITE_SIZE / 512)
+#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR                0x1000  /* 2MB */
+
 /* Miscellaneous configurable options */
 #define CONFIG_SYS_MEMTEST_START       0x80000000
 #define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + 0x8000000)