[U-Boot] [PATCH v3 01/14] pico-imx6ul: Convert to distro config

From: Fabio Estevam festevam@gmail.com
Instead of keeping a custom environment, use a more generic approach by switching to disto config.
Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
configs/pico-imx6ul_defconfig | 2 + include/configs/pico-imx6ul.h | 69 ++++++++++------------------------- 2 files changed, 21 insertions(+), 50 deletions(-)
diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index 59ef7b7f22..3f969a2d6e 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -4,7 +4,9 @@ CONFIG_SYS_TEXT_BASE=0x87800000 CONFIG_TARGET_PICO_IMX6UL=y # CONFIG_CMD_BMODE is not set CONFIG_NR_DRAM_BANKS=1 +CONFIG_DISTRO_DEFAULTS=y CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/technexion/pico-imx6ul/imximage.cfg" +CONFIG_BOOTCOMMAND="run finduuid; run distro_bootcmd" CONFIG_BOOTDELAY=3 CONFIG_SUPPORT_RAW_INITRD=y CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb" diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index 80a2d1fbdb..1a148bf1a6 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -52,64 +52,33 @@ #define CONFIG_SYS_MMC_IMG_LOAD_PART 1
#define CONFIG_EXTRA_ENV_SETTINGS \ + "script=boot.scr\0" \ "image=zImage\0" \ "console=ttymxc5\0" \ "fdt_high=0xffffffff\0" \ "initrd_high=0xffffffff\0" \ - "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \ + "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ "fdt_addr=0x83000000\0" \ - "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ - "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \ + "fdt_addr_r=0x83000000\0" \ + "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ + "pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ + "ramdisk_addr_r=0x83000000\0" \ + "ramdiskaddr=0x83000000\0" \ + "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \ CONFIG_DFU_ENV_SETTINGS \ - "finduuid=part uuid mmc 0:2 uuid\0" \ + "finduuid=part uuid mmc 0:1 uuid\0" \ "partitions=" \ "uuid_disk=${uuid_gpt_disk};" \ - "name=boot,size=16MiB;name=rootfs,size=0,uuid=${uuid_gpt_rootfs}\0" \ - "setup_emmc=gpt write mmc 0 $partitions; reset;\0" \ - "mmcargs=setenv bootargs console=${console},${baudrate} " \ - "root=PARTUUID=${uuid} rootwait rw\0" \ - "loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ - "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ - "mmcboot=echo Booting from mmc ...; " \ - "run finduuid; " \ - "run mmcargs; " \ - "if run loadfdt; then " \ - "bootz ${loadaddr} - ${fdt_addr}; " \ - "else " \ - "echo WARN: Cannot load the DT; " \ - "fi;\0" \ - "netargs=setenv bootargs console=${console},${baudrate} " \ - "root=/dev/nfs " \ - "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ - "netboot=echo Booting from net ...; " \ - "run netargs; " \ - "if test ${ip_dyn} = yes; then " \ - "setenv get_cmd dhcp; " \ - "else " \ - "setenv get_cmd tftp; " \ - "fi; " \ - "${get_cmd} ${image}; " \ - "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ - "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \ - "bootz ${loadaddr} - ${fdt_addr}; " \ - "else " \ - "if test ${boot_fdt} = try; then " \ - "bootz; " \ - "else " \ - "echo WARN: Cannot load the DT; " \ - "fi; " \ - "fi; " \ - "else " \ - "bootz; " \ - "fi;\0" \ - -#define CONFIG_BOOTCOMMAND \ - "if mmc rescan; then " \ - "if run loadimage; then " \ - "run mmcboot; " \ - "else run netboot; " \ - "fi; " \ - "else run netboot; fi" + "name=rootfs,size=0,uuid=${uuid_gpt_rootfs}\0" \ + "fastboot_partition_alias_system=rootfs\0" \ + "setup_emmc=mmc dev 0; gpt write mmc 0 $partitions; reset;\0" \ + BOOTENV + +#define BOOT_TARGET_DEVICES(func) \ + func(MMC, mmc, 0) \ + func(DHCP, dhcp, na) + +#include <config_distro_bootcmd.h>
#define CONFIG_SYS_MEMTEST_START 0x80000000 #define CONFIG_SYS_MEMTEST_END CONFIG_SYS_MEMTEST_START + SZ_128M

From: Fabio Estevam festevam@gmail.com
There are two versions of imx6ul pico SOMs: one with 256MB and another one with 512MB of RAM.
Convert to SPL so that both versions can be supported. This patch doesn't rework the clock initialization to avoid changing the behavior in this same patch, so it will be cleaned up in future.
Currently only the 256MB is tested/supported.
Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Fabio Berton fabio.berton@ossystems.com.br Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: - add newline after SPDX header - avoid initializing CCGR7 as UL does not have it - mention clocks initialization will be cleaned up in future
arch/arm/mach-imx/mx6/Kconfig | 1 + board/technexion/pico-imx6ul/Makefile | 2 +- board/technexion/pico-imx6ul/spl.c | 115 ++++++++++++++++++++++++++ configs/pico-imx6ul_defconfig | 14 +++- include/configs/pico-imx6ul.h | 1 + 5 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 board/technexion/pico-imx6ul/spl.c
diff --git a/arch/arm/mach-imx/mx6/Kconfig b/arch/arm/mach-imx/mx6/Kconfig index a2799c436e..06c25bae36 100644 --- a/arch/arm/mach-imx/mx6/Kconfig +++ b/arch/arm/mach-imx/mx6/Kconfig @@ -402,6 +402,7 @@ config TARGET_OT1200 config TARGET_PICO_IMX6UL bool "PICO-IMX6UL-EMMC" select MX6UL + select SUPPORT_SPL
config TARGET_LITEBOARD bool "Grinn liteBoard (i.MX6UL)" diff --git a/board/technexion/pico-imx6ul/Makefile b/board/technexion/pico-imx6ul/Makefile index 8fdb7875ac..b7493df01c 100644 --- a/board/technexion/pico-imx6ul/Makefile +++ b/board/technexion/pico-imx6ul/Makefile @@ -2,4 +2,4 @@ # (C) Copyright 2015 Technexion Ltd. # (C) Copyright 2015 Freescale Semiconductor, Inc.
-obj-y := pico-imx6ul.o +obj-y := pico-imx6ul.o spl.o diff --git a/board/technexion/pico-imx6ul/spl.c b/board/technexion/pico-imx6ul/spl.c new file mode 100644 index 0000000000..78c731fe7c --- /dev/null +++ b/board/technexion/pico-imx6ul/spl.c @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0+ + +#include <asm/arch/clock.h> +#include <asm/arch/iomux.h> +#include <asm/arch/imx-regs.h> +#include <asm/arch/crm_regs.h> +#include <asm/arch/mx6ul_pins.h> +#include <asm/arch/mx6-pins.h> +#include <asm/arch/sys_proto.h> +#include <asm/gpio.h> +#include <asm/mach-imx/iomux-v3.h> +#include <asm/mach-imx/boot_mode.h> +#include <linux/libfdt.h> +#include <spl.h> + +#if defined(CONFIG_SPL_BUILD) +#include <asm/arch/mx6-ddr.h> + +static struct mx6ul_iomux_grp_regs mx6_grp_ioregs = { + .grp_addds = 0x00000030, + .grp_ddrmode_ctl = 0x00020000, + .grp_b0ds = 0x00000030, + .grp_ctlds = 0x00000030, + .grp_b1ds = 0x00000030, + .grp_ddrpke = 0x00000000, + .grp_ddrmode = 0x00020000, + .grp_ddr_type = 0x00080000, +}; + +static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = { + .dram_dqm0 = 0x00000030, + .dram_dqm1 = 0x00000030, + .dram_ras = 0x00000030, + .dram_cas = 0x00000030, + .dram_odt0 = 0x00000030, + .dram_odt1 = 0x00000030, + .dram_sdba2 = 0x00000000, + .dram_sdclk_0 = 0x00000030, + .dram_sdqs0 = 0x00000030, + .dram_sdqs1 = 0x00000030, + .dram_reset = 0x00000030, +}; + +static struct mx6_mmdc_calibration mx6_mmcd_calib = { + .p0_mpwldectrl0 = 0x00000000, + .p0_mpdgctrl0 = 0x01380134, + .p0_mprddlctl = 0x40404244, + .p0_mpwrdlctl = 0x40405050, +}; + +static struct mx6_ddr_sysinfo ddr_sysinfo = { + .dsize = 0, + .cs1_mirror = 0, + .cs_density = 32, + .ncs = 1, + .bi_on = 1, + .rtt_nom = 1, + .rtt_wr = 0, + .ralat = 5, + .walat = 0, + .mif3_mode = 3, + .rst_to_cke = 0x23, + .sde_to_rst = 0x10, + .refsel = 1, + .refr = 3, +}; + +static struct mx6_ddr3_cfg mem_ddr = { + .mem_speed = 1333, + .density = 2, + .width = 16, + .banks = 8, + .rowaddr = 14, + .coladdr = 10, + .pagesz = 2, + .trcd = 1350, + .trcmin = 4950, + .trasmin = 3600, +}; + +static void ccgr_init(void) +{ + struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; + + writel(0xFFFFFFFF, &ccm->CCGR0); + writel(0xFFFFFFFF, &ccm->CCGR1); + writel(0xFFFFFFFF, &ccm->CCGR2); + writel(0xFFFFFFFF, &ccm->CCGR3); + writel(0xFFFFFFFF, &ccm->CCGR4); + writel(0xFFFFFFFF, &ccm->CCGR5); + writel(0xFFFFFFFF, &ccm->CCGR6); +} + +static void spl_dram_init(void) +{ + mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs); + mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr); +} + +void board_init_f(ulong dummy) +{ + ccgr_init(); + arch_cpu_init(); + board_early_init_f(); + timer_init(); + preloader_console_init(); + spl_dram_init(); + memset(__bss_start, 0, __bss_end - __bss_start); + board_init_r(NULL, 0); +} + +void reset_cpu(ulong addr) +{ +} +#endif diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index 3f969a2d6e..589e67be96 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -1,12 +1,23 @@ CONFIG_ARM=y CONFIG_ARCH_MX6=y CONFIG_SYS_TEXT_BASE=0x87800000 +CONFIG_SPL_GPIO_SUPPORT=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_TARGET_PICO_IMX6UL=y +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL=y +CONFIG_SPL_LIBDISK_SUPPORT=y # CONFIG_CMD_BMODE is not set CONFIG_NR_DRAM_BANKS=1 CONFIG_DISTRO_DEFAULTS=y -CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/technexion/pico-imx6ul/imximage.cfg" +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg" CONFIG_BOOTCOMMAND="run finduuid; run distro_bootcmd" +CONFIG_SPL_I2C_SUPPORT=y +CONFIG_SPL_USB_HOST_SUPPORT=y +CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_BOOTDELAY=3 CONFIG_SUPPORT_RAW_INITRD=y CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb" @@ -21,6 +32,7 @@ CONFIG_CMD_GPT=y CONFIG_CMD_MMC=y CONFIG_CMD_PART=y CONFIG_CMD_USB=y +CONFIG_CMD_USB_SDP=y CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_CMD_DHCP=y CONFIG_CMD_MII=y diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index 1a148bf1a6..14d5cc3ddb 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -12,6 +12,7 @@ #include <linux/sizes.h> #include "mx6_common.h" #include <asm/mach-imx/gpio.h> +#include "imx6_spl.h"
/* Network support */

From: Fabio Estevam festevam@gmail.com
fastboot tool is a convenient way to flash the eMMC, so add support for it.
Examples of usages:
On the pico-imx6ul U-Boot prompt:
=> fastboot 0
On the Linux PC connected via USB:
1. Retrieving the U-Boot version
$ sudo fastboot getvar bootloader-version -i 0x0525 bootloader-version: U-Boot 2018.07-rc2-00130-g0881835-dirty finished. total time: 0.000s
2. Resetting the board
$ sudo fastboot reboot -i 0x0525
(this causes the pico-imx6ul to reboot)
Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Fabio Berton fabio.berton@ossystems.com.br Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
configs/pico-imx6ul_defconfig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index 589e67be96..cae7ded1fa 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -45,6 +45,12 @@ CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y CONFIG_ENV_IS_IN_MMC=y CONFIG_DFU_MMC=y +CONFIG_USB_FUNCTION_FASTBOOT=y +CONFIG_FASTBOOT_BUF_ADDR=0x82000000 +CONFIG_FASTBOOT_BUF_SIZE=0x10000000 +CONFIG_FASTBOOT_FLASH=y +CONFIG_FASTBOOT_FLASH_MMC_DEV=0 +CONFIG_FASTBOOT_CMD_OEM_FORMAT=y CONFIG_FSL_ESDHC=y CONFIG_PHYLIB=y CONFIG_PHY_MICREL=y @@ -56,5 +62,4 @@ CONFIG_USB_GADGET_MANUFACTURER="FSL" CONFIG_USB_GADGET_VENDOR_NUM=0x0525 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 CONFIG_CI_UDC=y -CONFIG_USB_GADGET_DOWNLOAD=y CONFIG_OF_LIBFDT=y

From: Fabio Estevam festevam@gmail.com
The 'bmode' command is helpful for switching the boot media.
In the case of pico-imx6ul there are two possible boot media: eMMC or USB.
To boot from eMMC:
=> bmode emmc
To boot from USB (via Serial Download Protocol):
=> bmode usb
Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Fabio Berton fabio.berton@ossystems.com.br Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
configs/pico-imx6ul_defconfig | 1 - 1 file changed, 1 deletion(-)
diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index cae7ded1fa..daa898fb22 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -9,7 +9,6 @@ CONFIG_SPL_MMC_SUPPORT=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_SPL=y CONFIG_SPL_LIBDISK_SUPPORT=y -# CONFIG_CMD_BMODE is not set CONFIG_NR_DRAM_BANKS=1 CONFIG_DISTRO_DEFAULTS=y CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"

From: Fabio Estevam festevam@gmail.com
Currently only the module with 256MB of RAM is supported.
Add support for the 512MB of RAM variant as well.
Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Fabio Berton fabio.berton@ossystems.com.br Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
board/technexion/pico-imx6ul/spl.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/board/technexion/pico-imx6ul/spl.c b/board/technexion/pico-imx6ul/spl.c index 78c731fe7c..1819722024 100644 --- a/board/technexion/pico-imx6ul/spl.c +++ b/board/technexion/pico-imx6ul/spl.c @@ -70,7 +70,6 @@ static struct mx6_ddr3_cfg mem_ddr = { .density = 2, .width = 16, .banks = 8, - .rowaddr = 14, .coladdr = 10, .pagesz = 2, .trcd = 1350, @@ -91,12 +90,34 @@ static void ccgr_init(void) writel(0xFFFFFFFF, &ccm->CCGR6); }
-static void spl_dram_init(void) +static void imx6ul_spl_dram_cfg_size(u32 ram_size) { + if (ram_size == SZ_256M) + mem_ddr.rowaddr = 14; + else + mem_ddr.rowaddr = 15; + mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs); mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr); }
+static void imx6ul_spl_dram_cfg(void) +{ + ulong ram_size_test, ram_size = 0; + + for (ram_size = SZ_512M; ram_size >= SZ_256M; ram_size >>= 1) { + imx6ul_spl_dram_cfg_size(ram_size); + ram_size_test = get_ram_size((long int *)PHYS_SDRAM, ram_size); + if (ram_size_test == ram_size) + break; + } + + if (ram_size < SZ_256M) { + puts("ERROR: DRAM size detection failed\n"); + hang(); + } +} + void board_init_f(ulong dummy) { ccgr_init(); @@ -104,7 +125,7 @@ void board_init_f(ulong dummy) board_early_init_f(); timer_init(); preloader_console_init(); - spl_dram_init(); + imx6ul_spl_dram_cfg(); memset(__bss_start, 0, __bss_end - __bss_start); board_init_r(NULL, 0); }

From: Fabio Estevam festevam@gmail.com
Update the README file to take into accound the switch to SPL.
Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Fabio Berton fabio.berton@ossystems.com.br Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
board/technexion/pico-imx6ul/README | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/board/technexion/pico-imx6ul/README b/board/technexion/pico-imx6ul/README index 2f66095097..a5415714ee 100644 --- a/board/technexion/pico-imx6ul/README +++ b/board/technexion/pico-imx6ul/README @@ -13,7 +13,13 @@ $ make mrproper $ make pico-imx6ul_defconfig $ make
-This will generate the U-Boot binary called u-boot.imx. +This generates the SPL and u-boot.img binaries. + +1. Loading U-Boot via USB Serial Download Protocol + +Note: This method is convenient for development purposes. +If the eMMC has already a U-Boot flashed with DFU support then +the user can go to step 2 below in order to update U-Boot.
Put pico board in USB download mode (refer to the document http://www.wandboard.org/images/hobbit/hobbitboard-imx6ul-reva1.pdf page 15) @@ -24,11 +30,15 @@ Connect a USB cable between the OTG pico port and the host PC
Open a terminal program such as minicom
-Copy u-boot.imx to the imx_usb_loader folder. +Copy SPL and u-boot.img to the imx_usb_loader folder. + +Load the SPL binary via USB:
-Load u-boot.imx via USB: +$ sudo ./imx_usb SPL
-$ sudo ./imx_usb u-boot.imx +Load the u-boot.img binary via USB: + +$ sudo ./imx_usb u-boot.img
Then U-Boot should start and its messages will appear in the console program.
@@ -37,12 +47,16 @@ Use the default environment variables: => env default -f -a => saveenv
+2. Flashing U-Boot into the eMMC + Run the DFU command: => dfu 0 mmc 0
-Transfer u-boot.imx that will be flashed into the eMMC: +Flash SPL and u-boot.img into the eMMC running the following commands on a PC: + +$ sudo dfu-util -D SPL -a spl
-$ sudo dfu-util -D u-boot.imx -a boot +$ sudo dfu-util -D u-boot.img -a u-boot
Then on the U-Boot prompt the following message should be seen after a successful upgrade:

Due the changes in previous commits, we need to resync the defconfig to reduce noise in next commits.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
configs/pico-imx6ul_defconfig | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index daa898fb22..56cb4810dc 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -9,43 +9,31 @@ CONFIG_SPL_MMC_SUPPORT=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_SPL=y CONFIG_SPL_LIBDISK_SUPPORT=y -CONFIG_NR_DRAM_BANKS=1 CONFIG_DISTRO_DEFAULTS=y +CONFIG_NR_DRAM_BANKS=1 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg" +CONFIG_BOOTDELAY=3 CONFIG_BOOTCOMMAND="run finduuid; run distro_bootcmd" +CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb" +CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y CONFIG_SPL_USB_GADGET_SUPPORT=y CONFIG_SPL_USB_SDP_SUPPORT=y -CONFIG_BOOTDELAY=3 -CONFIG_SUPPORT_RAW_INITRD=y -CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb" -CONFIG_BOARD_EARLY_INIT_F=y -CONFIG_HUSH_PARSER=y -CONFIG_CMD_BOOTZ=y CONFIG_CMD_MEMTEST=y CONFIG_CMD_DFU=y # CONFIG_CMD_FLASH is not set CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y CONFIG_CMD_MMC=y -CONFIG_CMD_PART=y CONFIG_CMD_USB=y CONFIG_CMD_USB_SDP=y CONFIG_CMD_USB_MASS_STORAGE=y -CONFIG_CMD_DHCP=y -CONFIG_CMD_MII=y -CONFIG_CMD_PING=y CONFIG_CMD_CACHE=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4_WRITE=y -CONFIG_CMD_FAT=y -CONFIG_CMD_FS_GENERIC=y CONFIG_ENV_IS_IN_MMC=y CONFIG_DFU_MMC=y CONFIG_USB_FUNCTION_FASTBOOT=y -CONFIG_FASTBOOT_BUF_ADDR=0x82000000 CONFIG_FASTBOOT_BUF_SIZE=0x10000000 CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=0

Currently the baseboards do not offer a way to autodetect which one is in use, so we ask the user if no value has been set.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
configs/pico-imx6ul_defconfig | 5 +++-- include/configs/pico-imx6ul.h | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index 56cb4810dc..3d4063b136 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -13,13 +13,14 @@ CONFIG_DISTRO_DEFAULTS=y CONFIG_NR_DRAM_BANKS=1 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg" CONFIG_BOOTDELAY=3 -CONFIG_BOOTCOMMAND="run finduuid; run distro_bootcmd" -CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb" +CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" +CONFIG_DEFAULT_FDT_FILE="ask" CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y CONFIG_SPL_USB_GADGET_SUPPORT=y CONFIG_SPL_USB_SDP_SUPPORT=y +CONFIG_CMD_BOOTMENU=y CONFIG_CMD_MEMTEST=y CONFIG_CMD_DFU=y # CONFIG_CMD_FLASH is not set diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index 14d5cc3ddb..2276f72bae 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -50,6 +50,10 @@ "/imx6ul-pico-hobbit.dtb ext4 0 1;" \ "rootfs part 0 2\0" \
+#define BOOTMENU_ENV \ + "bootmenu_0=Boot using PICO-Hobbit baseboard=" \ + "setenv fdtfile imx6ul-pico-hobbit.dtb\0" \ + #define CONFIG_SYS_MMC_IMG_LOAD_PART 1
#define CONFIG_EXTRA_ENV_SETTINGS \ @@ -59,6 +63,7 @@ "fdt_high=0xffffffff\0" \ "initrd_high=0xffffffff\0" \ "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ + BOOTMENU_ENV \ "fdt_addr=0x83000000\0" \ "fdt_addr_r=0x83000000\0" \ "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ @@ -67,6 +72,11 @@ "ramdiskaddr=0x83000000\0" \ "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \ CONFIG_DFU_ENV_SETTINGS \ + "findfdt=" \ + "if test $fdtfile = ask ; then " \ + "bootmenu -1; fi;" \ + "if test $fdtfile != ask ; then " \ + "saveenv; fi;\0" \ "finduuid=part uuid mmc 0:1 uuid\0" \ "partitions=" \ "uuid_disk=${uuid_gpt_disk};" \

This rework the DFU settings so it supports the SPL and U-Boot image, as well as the single partition layout we are using by default.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
include/configs/pico-imx6ul.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index 2276f72bae..a510fd1554 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -44,11 +44,12 @@ #define DFU_DEFAULT_POLL_TIMEOUT 300
#define CONFIG_DFU_ENV_SETTINGS \ - "dfu_alt_info=uboot raw 0x2 0x400 mmcpart 1;" \ - "boot part 0 1;" \ - "/zImage ext4 0 1;" \ - "/imx6ul-pico-hobbit.dtb ext4 0 1;" \ - "rootfs part 0 2\0" \ + "dfu_alt_info=" \ + "spl raw 0x2 0x400 mmcpart 1;" \ + "u-boot raw 0x8a 0x400 mmcpart 1;" \ + "/boot/zImage ext4 0 1;" \ + "/boot/imx6ul-pico-hobbit.dtb ext4 0 1;" \ + "rootfs part 0 1\0" \
#define BOOTMENU_ENV \ "bootmenu_0=Boot using PICO-Hobbit baseboard=" \

Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
board/technexion/pico-imx6ul/README | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/board/technexion/pico-imx6ul/README b/board/technexion/pico-imx6ul/README index a5415714ee..66dc977d49 100644 --- a/board/technexion/pico-imx6ul/README +++ b/board/technexion/pico-imx6ul/README @@ -22,13 +22,14 @@ If the eMMC has already a U-Boot flashed with DFU support then the user can go to step 2 below in order to update U-Boot.
Put pico board in USB download mode (refer to the document -http://www.wandboard.org/images/hobbit/hobbitboard-imx6ul-reva1.pdf page 15) +http://www.wandboard.org/images/hobbit/hobbitboard-imx6ul-reva1.pdf +page 15).
-Connect a USB to serial adapter between the host PC and pico +Connect a USB to serial adapter between the host PC and pico.
-Connect a USB cable between the OTG pico port and the host PC +Connect a USB cable between the OTG pico port and the host PC.
-Open a terminal program such as minicom +Open a terminal program such as minicom.
Copy SPL and u-boot.img to the imx_usb_loader folder.
@@ -40,7 +41,7 @@ Load the u-boot.img binary via USB:
$ sudo ./imx_usb u-boot.img
-Then U-Boot should start and its messages will appear in the console program. +Then U-Boot starts and its messages appear in the console program.
Use the default environment variables:
@@ -49,7 +50,8 @@ Use the default environment variables:
2. Flashing U-Boot into the eMMC
-Run the DFU command: +Run the DFU agent so we can flash the new images using dfu-util tool: + => dfu 0 mmc 0
Flash SPL and u-boot.img into the eMMC running the following commands on a PC: @@ -58,14 +60,8 @@ $ sudo dfu-util -D SPL -a spl
$ sudo dfu-util -D u-boot.img -a u-boot
-Then on the U-Boot prompt the following message should be seen after a -successful upgrade: - -#DOWNLOAD ... OK -Ctrl+C to exit ... - Remove power from the pico board.
-Put pico board into normal boot mode +Put pico board into normal boot mode.
Power up the board and the new updated U-Boot should boot from eMMC.

The new config skips the boot menu which asks which board is in use. This is useful to allow direct booting of image without user iteration.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
board/technexion/pico-imx6ul/MAINTAINERS | 5 +++ configs/pico-hobbit-imx6ul_defconfig | 53 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 configs/pico-hobbit-imx6ul_defconfig
diff --git a/board/technexion/pico-imx6ul/MAINTAINERS b/board/technexion/pico-imx6ul/MAINTAINERS index 594a883d15..334847cf71 100644 --- a/board/technexion/pico-imx6ul/MAINTAINERS +++ b/board/technexion/pico-imx6ul/MAINTAINERS @@ -5,3 +5,8 @@ S: Maintained F: board/technexion/pico-imx6ul/ F: include/configs/pico-imx6ul.h F: configs/pico-imx6ul_defconfig + +Technexion PICO-HOBBIT-IMX6UL +M: Otavio Salvador otavio@ossystems.com.br +S: Maintained +F: configs/pico-hobbit-imx6ul_defconfig diff --git a/configs/pico-hobbit-imx6ul_defconfig b/configs/pico-hobbit-imx6ul_defconfig new file mode 100644 index 0000000000..362c0a251d --- /dev/null +++ b/configs/pico-hobbit-imx6ul_defconfig @@ -0,0 +1,53 @@ +CONFIG_ARM=y +CONFIG_ARCH_MX6=y +CONFIG_SYS_TEXT_BASE=0x87800000 +CONFIG_SPL_GPIO_SUPPORT=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_TARGET_PICO_IMX6UL=y +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL=y +CONFIG_SPL_LIBDISK_SUPPORT=y +CONFIG_DISTRO_DEFAULTS=y +CONFIG_NR_DRAM_BANKS=1 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg" +CONFIG_BOOTDELAY=3 +CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" +CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb" +CONFIG_BOARD_EARLY_INIT_F=y +CONFIG_SPL_I2C_SUPPORT=y +CONFIG_SPL_USB_HOST_SUPPORT=y +CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_SDP_SUPPORT=y +CONFIG_CMD_BOOTMENU=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_DFU=y +# CONFIG_CMD_FLASH is not set +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +CONFIG_CMD_MMC=y +CONFIG_CMD_USB=y +CONFIG_CMD_USB_SDP=y +CONFIG_CMD_USB_MASS_STORAGE=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_ENV_IS_IN_MMC=y +CONFIG_DFU_MMC=y +CONFIG_USB_FUNCTION_FASTBOOT=y +CONFIG_FASTBOOT_BUF_SIZE=0x10000000 +CONFIG_FASTBOOT_FLASH=y +CONFIG_FASTBOOT_FLASH_MMC_DEV=0 +CONFIG_FASTBOOT_CMD_OEM_FORMAT=y +CONFIG_FSL_ESDHC=y +CONFIG_PHYLIB=y +CONFIG_PHY_MICREL=y +CONFIG_MII=y +CONFIG_USB=y +CONFIG_USB_STORAGE=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="FSL" +CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 +CONFIG_CI_UDC=y +CONFIG_OF_LIBFDT=y

The FSL_USDHC support is now handled by Kconfig and it is enabled on the respective `defconfig` so the setting in .h is pointless.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: None Changes in v2: None
include/configs/pico-imx6ul.h | 1 - 1 file changed, 1 deletion(-)
diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index a510fd1554..94c14a7a43 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -28,7 +28,6 @@ #define CONFIG_MXC_UART_BASE UART6_BASE_ADDR
/* MMC Configs */ -#define CONFIG_FSL_USDHC #define CONFIG_SYS_FSL_ESDHC_ADDR USDHC1_BASE_ADDR #define CONFIG_SUPPORT_EMMC_BOOT

Hi Otavio,
On Thu, Sep 13, 2018 at 4:57 PM, Otavio Salvador otavio@ossystems.com.br wrote:
The FSL_USDHC support is now handled by Kconfig and it is enabled on the respective `defconfig` so the setting in .h is pointless.
Just checked and I don't see FSL_USDHC option in Kconfig.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br
Changes in v3: None Changes in v2: None
include/configs/pico-imx6ul.h | 1 - 1 file changed, 1 deletion(-)
diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index a510fd1554..94c14a7a43 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -28,7 +28,6 @@ #define CONFIG_MXC_UART_BASE UART6_BASE_ADDR
/* MMC Configs */ -#define CONFIG_FSL_USDHC
I see that CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file, so the change looks good, but the commit message needs to be reworked.
Thanks

On Thu, Sep 13, 2018 at 5:14 PM Fabio Estevam festevam@gmail.com wrote:
...
I see that CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file, so the change looks good, but the commit message needs to be reworked.
Like:
pico-imx6ul: Remove CONFIG_FSL_USDHC from .h
The CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br
?

On Thu, Sep 13, 2018 at 6:33 PM, Otavio Salvador otavio.salvador@ossystems.com.br wrote:
On Thu, Sep 13, 2018 at 5:14 PM Fabio Estevam festevam@gmail.com wrote:
...
I see that CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file, so the change looks good, but the commit message needs to be reworked.
Like:
pico-imx6ul: Remove CONFIG_FSL_USDHC from .h
The CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br
Yes, this looks good.
You can also add:
Reviewed-by: Fabio Estevam festevam@gmail.com

On Thu, Sep 13, 2018 at 6:49 PM Fabio Estevam festevam@gmail.com wrote:
On Thu, Sep 13, 2018 at 6:33 PM, Otavio Salvador otavio.salvador@ossystems.com.br wrote:
On Thu, Sep 13, 2018 at 5:14 PM Fabio Estevam festevam@gmail.com wrote:
...
I see that CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file, so the change looks good, but the commit message needs to be reworked.
Like:
pico-imx6ul: Remove CONFIG_FSL_USDHC from .h
The CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br
Yes, this looks good.
You can also add:
Reviewed-by: Fabio Estevam festevam@gmail.com
I will wait until tomorrow to send v4.

Falcon mode boots the kernel directly from SPL, without loading the full U-Boot.
As pico-imx6ul does not have a GPIO for selecting Falcon versus normal mode, enter in Falcon mode when the customer selects the CONFIG_SPL_OS_BOOT option in menuconfig.
Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: - new patch
Changes in v2: None
board/technexion/pico-imx6ul/spl.c | 8 ++++++++ configs/pico-imx6ul_defconfig | 2 ++ include/configs/pico-imx6ul.h | 12 ++++++++++++ 3 files changed, 22 insertions(+)
diff --git a/board/technexion/pico-imx6ul/spl.c b/board/technexion/pico-imx6ul/spl.c index 1819722024..6464a32d3b 100644 --- a/board/technexion/pico-imx6ul/spl.c +++ b/board/technexion/pico-imx6ul/spl.c @@ -14,6 +14,14 @@ #include <spl.h>
#if defined(CONFIG_SPL_BUILD) + +#ifdef CONFIG_SPL_OS_BOOT +int spl_start_uboot(void) +{ + return 0; +} +#endif + #include <asm/arch/mx6-ddr.h>
static struct mx6ul_iomux_grp_regs mx6_grp_ioregs = { diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index 3d4063b136..c8d58cbe71 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -21,6 +21,8 @@ CONFIG_SPL_USB_HOST_SUPPORT=y CONFIG_SPL_USB_GADGET_SUPPORT=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_CMD_BOOTMENU=y +CONFIG_CMD_SPL=y +CONFIG_CMD_SPL_WRITE_SIZE=0x20000 CONFIG_CMD_MEMTEST=y CONFIG_CMD_DFU=y # CONFIG_CMD_FLASH is not set diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index 94c14a7a43..8855be107d 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -14,6 +14,18 @@ #include <asm/mach-imx/gpio.h> #include "imx6_spl.h"
+#ifdef CONFIG_SPL_OS_BOOT +/* Falcon Mode */ +#define CONFIG_SPL_FS_LOAD_ARGS_NAME "args" +#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage" +#define CONFIG_SYS_SPL_ARGS_ADDR 0x88000000 + +/* Falcon Mode - 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 */ +#endif + /* Network support */
#define CONFIG_FEC_MXC

Hi Otavio,
On 13/09/2018 21:57, Otavio Salvador wrote:
Falcon mode boots the kernel directly from SPL, without loading the full U-Boot.
As pico-imx6ul does not have a GPIO for selecting Falcon versus normal mode, enter in Falcon mode when the customer selects the CONFIG_SPL_OS_BOOT option in menuconfig.
I merged two days ago V2 on my branch with just minor conflicts in ico-imx6ul.h on current tree. New version looks identical to V2 with exception of the last two patches. Is it enough I pick up the last two patches or is there something I am missing ?
Regards, Stefano
Signed-off-by: Otavio Salvador otavio@ossystems.com.br
Changes in v3:
- new patch
Changes in v2: None
board/technexion/pico-imx6ul/spl.c | 8 ++++++++ configs/pico-imx6ul_defconfig | 2 ++ include/configs/pico-imx6ul.h | 12 ++++++++++++ 3 files changed, 22 insertions(+)
diff --git a/board/technexion/pico-imx6ul/spl.c b/board/technexion/pico-imx6ul/spl.c index 1819722024..6464a32d3b 100644 --- a/board/technexion/pico-imx6ul/spl.c +++ b/board/technexion/pico-imx6ul/spl.c @@ -14,6 +14,14 @@ #include <spl.h>
#if defined(CONFIG_SPL_BUILD)
+#ifdef CONFIG_SPL_OS_BOOT +int spl_start_uboot(void) +{
- return 0;
+} +#endif
#include <asm/arch/mx6-ddr.h>
static struct mx6ul_iomux_grp_regs mx6_grp_ioregs = { diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index 3d4063b136..c8d58cbe71 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -21,6 +21,8 @@ CONFIG_SPL_USB_HOST_SUPPORT=y CONFIG_SPL_USB_GADGET_SUPPORT=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_CMD_BOOTMENU=y +CONFIG_CMD_SPL=y +CONFIG_CMD_SPL_WRITE_SIZE=0x20000 CONFIG_CMD_MEMTEST=y CONFIG_CMD_DFU=y # CONFIG_CMD_FLASH is not set diff --git a/include/configs/pico-imx6ul.h b/include/configs/pico-imx6ul.h index 94c14a7a43..8855be107d 100644 --- a/include/configs/pico-imx6ul.h +++ b/include/configs/pico-imx6ul.h @@ -14,6 +14,18 @@ #include <asm/mach-imx/gpio.h> #include "imx6_spl.h"
+#ifdef CONFIG_SPL_OS_BOOT +/* Falcon Mode */ +#define CONFIG_SPL_FS_LOAD_ARGS_NAME "args" +#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage" +#define CONFIG_SYS_SPL_ARGS_ADDR 0x88000000
+/* Falcon Mode - 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 */ +#endif
/* Network support */
#define CONFIG_FEC_MXC

On Fri, Sep 14, 2018 at 8:53 AM Stefano Babic sbabic@denx.de wrote:
On 13/09/2018 21:57, Otavio Salvador wrote:
Falcon mode boots the kernel directly from SPL, without loading the full U-Boot.
As pico-imx6ul does not have a GPIO for selecting Falcon versus normal mode, enter in Falcon mode when the customer selects the CONFIG_SPL_OS_BOOT option in menuconfig.
I merged two days ago V2 on my branch with just minor conflicts in ico-imx6ul.h on current tree. New version looks identical to V2 with exception of the last two patches. Is it enough I pick up the last two patches or is there something I am missing ?
Some commit log improvements. As it wasn't push to imx tree, do you want me to send v4 with all fixes?

On 14/09/2018 14:49, Otavio Salvador wrote:
On Fri, Sep 14, 2018 at 8:53 AM Stefano Babic sbabic@denx.de wrote:
On 13/09/2018 21:57, Otavio Salvador wrote:
Falcon mode boots the kernel directly from SPL, without loading the full U-Boot.
As pico-imx6ul does not have a GPIO for selecting Falcon versus normal mode, enter in Falcon mode when the customer selects the CONFIG_SPL_OS_BOOT option in menuconfig.
I merged two days ago V2 on my branch with just minor conflicts in ico-imx6ul.h on current tree. New version looks identical to V2 with exception of the last two patches. Is it enough I pick up the last two patches or is there something I am missing ?
Some commit log improvements. As it wasn't push to imx tree,
Due to breakage before release, I was convinced by Tom to run a full travis before any PR (I push my local branch to github to let travis build it: https://github.com/sbabic/u-boot-imx)
Yes, that the reason my question: I am still able to change before merging.
do you want me to send v4 with all fixes?
As far as I see, it is not required. I fixed myself the niptick in commit log for 1/14, and I have already rebase and fix the conflicts in pico-imx6ul - there is no need to redo the same work.
I cannot find any other changes between V2 and V3, so I am getting to pick up the last two commits before pushing to the server.
Best regards, Stefano

On Fri, Sep 14, 2018 at 10:07 AM Stefano Babic sbabic@denx.de wrote:
On 14/09/2018 14:49, Otavio Salvador wrote:
On Fri, Sep 14, 2018 at 8:53 AM Stefano Babic sbabic@denx.de wrote:
On 13/09/2018 21:57, Otavio Salvador wrote:
Falcon mode boots the kernel directly from SPL, without loading the full U-Boot.
As pico-imx6ul does not have a GPIO for selecting Falcon versus normal mode, enter in Falcon mode when the customer selects the CONFIG_SPL_OS_BOOT option in menuconfig.
I merged two days ago V2 on my branch with just minor conflicts in ico-imx6ul.h on current tree. New version looks identical to V2 with exception of the last two patches. Is it enough I pick up the last two patches or is there something I am missing ?
Some commit log improvements. As it wasn't push to imx tree,
Due to breakage before release, I was convinced by Tom to run a full travis before any PR (I push my local branch to github to let travis build it: https://github.com/sbabic/u-boot-imx)
Yes, that the reason my question: I am still able to change before merging.
do you want me to send v4 with all fixes?
As far as I see, it is not required. I fixed myself the niptick in commit log for 1/14, and I have already rebase and fix the conflicts in pico-imx6ul - there is no need to redo the same work.
I cannot find any other changes between V2 and V3, so I am getting to pick up the last two commits before pushing to the server.
Great.
Please amend:
Author: Otavio Salvador otavio@ossystems.com.br Date: Thu Aug 30 13:48:47 2018 -0300
pico-imx6ul: Remove CONFIG_FSL_USDHC from .h
The CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file.
Reviewed-by: Fabio Estevam festevam@gmail.com Signed-off-by: Otavio Salvador otavio@ossystems.com.br

On 14/09/2018 15:19, Otavio Salvador wrote:
On Fri, Sep 14, 2018 at 10:07 AM Stefano Babic sbabic@denx.de wrote:
On 14/09/2018 14:49, Otavio Salvador wrote:
On Fri, Sep 14, 2018 at 8:53 AM Stefano Babic sbabic@denx.de wrote:
On 13/09/2018 21:57, Otavio Salvador wrote:
Falcon mode boots the kernel directly from SPL, without loading the full U-Boot.
As pico-imx6ul does not have a GPIO for selecting Falcon versus normal mode, enter in Falcon mode when the customer selects the CONFIG_SPL_OS_BOOT option in menuconfig.
I merged two days ago V2 on my branch with just minor conflicts in ico-imx6ul.h on current tree. New version looks identical to V2 with exception of the last two patches. Is it enough I pick up the last two patches or is there something I am missing ?
Some commit log improvements. As it wasn't push to imx tree,
Due to breakage before release, I was convinced by Tom to run a full travis before any PR (I push my local branch to github to let travis build it: https://github.com/sbabic/u-boot-imx)
Yes, that the reason my question: I am still able to change before merging.
do you want me to send v4 with all fixes?
As far as I see, it is not required. I fixed myself the niptick in commit log for 1/14, and I have already rebase and fix the conflicts in pico-imx6ul - there is no need to redo the same work.
I cannot find any other changes between V2 and V3, so I am getting to pick up the last two commits before pushing to the server.
Great.
Please amend:
Author: Otavio Salvador otavio@ossystems.com.br Date: Thu Aug 30 13:48:47 2018 -0300
pico-imx6ul: Remove CONFIG_FSL_USDHC from .h The CONFIG_FSL_USDHC is defined inside "mx6_common.h", which is already included in this file. Reviewed-by: Fabio Estevam <festevam@gmail.com> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
ok, thanks, done.
Regards, Stefano

From: Fabio Estevam festevam@gmail.com
Falcon mode allows the SPL to load and jump directly to the kernel, without loading U-Boot proper.
Add detailed step by step on how to use Falcon mode on pico-imx6ul.
Signed-off-by: Fabio Estevam festevam@gmail.com Signed-off-by: Otavio Salvador otavio@ossystems.com.br ---
Changes in v3: - new patch
Changes in v2: None
board/technexion/pico-imx6ul/README | 92 +++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+)
diff --git a/board/technexion/pico-imx6ul/README b/board/technexion/pico-imx6ul/README index 66dc977d49..1cabd90759 100644 --- a/board/technexion/pico-imx6ul/README +++ b/board/technexion/pico-imx6ul/README @@ -65,3 +65,95 @@ Remove power from the pico board. Put pico board into normal boot mode.
Power up the board and the new updated U-Boot should boot from eMMC. + +Booting in Falcon mode +====================== + +Generate a uImage kernel: + +$ make imx_v6_v7_defconfig (Using the default imx_v6_v7_defconfig configuration +just for an example. In order to boot faster the user should customize the +defconfig by only enabling the minimal required drivers). + +$ make -j4 uImage LOADADDR=0x80800000 + +$ cp arch/arm/boot/uImage /tftpboot +$ cp arch/arm/boot/dts/imx6ul-pico-hobbit.dtb /tftpboot + +In the U-Boot prompt: + +Setup the server and board IP addresses: +=> setenv serverip 192.168.0.10 +=> setenv ipaddr 192.168.0.11 + +Get the dtb file: +=> tftp ${fdt_addr} imx6ul-pico-hobbit.dtb + +Get the kernel: +=> tftp ${loadaddr} uImage + +Write the kernel at 2MB offset: +=> mmc write ${loadaddr} 0x1000 0x4000 + +Setup the bootargs: +=> setenv bootargs 'console=ttymxc5,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw' + +Prepare args: +=> spl export fdt ${loadaddr} - ${fdt_addr} +## Booting kernel from Legacy Image at 82000000 ... + Image Name: Linux-4.19.0-rc2-next-20180905-0 + Image Type: ARM Linux Kernel Image (uncompressed) + Data Size: 8365608 Bytes = 8 MiB + Load Address: 80800000 + Entry Point: 80800000 + Verifying Checksum ... OK +## Flattened Device Tree blob at 83000000 + Booting using the fdt blob at 0x83000000 + Loading Kernel Image ... OK + Using Device Tree in place at 83000000, end 83009c63 +subcommand not supported +subcommand not supported + Using Device Tree in place at 83000000, end 8300cc63 +Argument image is now in RAM: 0x83000000 + +Write 1MB of args data (0x800 sectors) to 1MB offset (0x800 sectors): + +=> mmc write ${fdt_addr} 0x800 0x800 + +In order to boot with Falcon mode, activate the CONFIG_SPL_OS_BOOT +option in the defconfig + +--- a/configs/pico-hobbit-imx6ul_defconfig ++++ b/configs/pico-hobbit-imx6ul_defconfig +@@ -53,3 +53,4 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525 + CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 + CONFIG_CI_UDC=y + CONFIG_OF_LIBFDT=y ++CONFIG_SPL_OS_BOOT=y + +Then rebuild U-Boot: + +$ make pico-hobbit-imx6ul_defconfig +$ make -j4 + +Launch UMS: +=> ums 0 mmc 0 + +Flash the new binaries: + +$ sudo dd if=SPL of=/dev/sdX bs=1k seek=1; sync +$ sudo dd if=u-boot.img of=/dev/sdX bs=1k seek=69; sync + +And then SPL binary will load and jump directly to the kernel: + +U-Boot SPL 2018.09-rc2-00156-g8c46f15-dirty (Sep 05 2018 - 16:24:05 -0300) +Trying to boot from MMC1 +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Linux version 4.19.0-rc2-next-20180905-00001-gb805e2d (fabio@fabio-Latitude-E5450) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)) #533 SMP Wed Sep 5 16:21:03 -03 2018 +[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d +[ 0.000000] CPU: div instructions available: patching division code +[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache +[ 0.000000] OF: fdt: Machine model: Technexion Pico i.MX6UL Board +[ 0.000000] Memory policy: Data cache writealloc +[ 0.000000] cma: Reserved 64 MiB at 0x8c000000 +...

Hi Otavio,
On Thu, Sep 13, 2018 at 4:56 PM, Otavio Salvador otavio@ossystems.com.br wrote:
From: Fabio Estevam festevam@gmail.com
Instead of keeping a custom environment, use a more generic approach by switching to disto config.
If you send a new version, please fix the typo: it should be "distro", not "disto"
Thanks
participants (4)
-
Fabio Estevam
-
Otavio Salvador
-
Otavio Salvador
-
Stefano Babic