From: Markus Niebel <markus.nie...@tqs.de> This patch adds support for booting from SPI NOR flash and having the environment also in SPI NOR. Also all environment settings to allow update of bootloader and kernel are added.
Signed-off-by: Markus Niebel <markus.nie...@tq-group.com> --- board/tqc/tqma6/README | 4 ++ boards.cfg | 2 + include/configs/tqma6.h | 103 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+) diff --git a/board/tqc/tqma6/README b/board/tqc/tqma6/README index 096cd17..2c012e7 100644 --- a/board/tqc/tqma6/README +++ b/board/tqc/tqma6/README @@ -9,6 +9,7 @@ U-Boot to the TQ Systems TQMa6 modules. The following boot source is supported: - SD/eMMC +- SPI NOR 2. Building ------------ @@ -24,8 +25,11 @@ s - means i.MX6S: TQMa6S (i.MX6S) baseboard is a placeholder for the boot device mmc - means eMMC +spi - mean SPI NOR This gives the following configurations: tqma6q_mba6_mmc_config +tqma6q_mba6_spi_config tqma6s_mba6_mmc_config +tqma6s_mba6_spi_config diff --git a/boards.cfg b/boards.cfg index 4868ed9..d41288a 100644 --- a/boards.cfg +++ b/boards.cfg @@ -331,7 +331,9 @@ Active arm armv7 mx6 freescale mx6slevk Active arm armv7 mx6 gateworks gw_ventana gwventana gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6QDL,SPL Tim Harvey <thar...@gateworks.com> Active arm armv7 mx6 solidrun hummingboard hummingboard_solo hummingboard:IMX_CONFIG=board/solidrun/hummingboard/solo.cfg,MX6S,DDR_MB=512 Jon Nettleton <jon.nettle...@gmail.com> Active arm armv7 mx6 tqc tqma6 tqma6q_mba6_mmc tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6q.cfg,MX6Q,MBA6,TQMA6X_MMC_BOOT Markus Niebel <markus.nie...@tq-group.com> +Active arm armv7 mx6 tqc tqma6 tqma6q_mba6_spi tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6q.cfg,MX6Q,MBA6,TQMA6X_SPI_BOOT Markus Niebel <markus.nie...@tq-group.com> Active arm armv7 mx6 tqc tqma6 tqma6s_mba6_mmc tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6s.cfg,MX6S,MBA6,TQMA6X_MMC_BOOT Markus Niebel <markus.nie...@tq-group.com> +Active arm armv7 mx6 tqc tqma6 tqma6s_mba6_spi tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6s.cfg,MX6S,MBA6,TQMA6X_SPI_BOOT Markus Niebel <markus.nie...@tq-group.com> Active arm armv7 omap3 - overo omap3_overo - Steve Sakoman <sako...@gmail.com> Active arm armv7 omap3 - pandora omap3_pandora - Grazvydas Ignotas <nota...@gmail.com> Active arm armv7 omap3 8dtech eco5pk eco5pk - Raphael Assenat <r...@8d.com> diff --git a/include/configs/tqma6.h b/include/configs/tqma6.h index 2c5016d..d2b12c3 100644 --- a/include/configs/tqma6.h +++ b/include/configs/tqma6.h @@ -211,6 +211,109 @@ #define CONFIG_BOOTCOMMAND \ "run mmcboot; run netboot; run panicboot" +#elif defined(CONFIG_TQMA6X_SPI_BOOT) + +#define CONFIG_FLASH_SECTOR_SIZE 0x10000 + +#define CONFIG_UBOOT_OFFSET 0x400 +#define CONFIG_UBOOT_SECTOR_START 0x0 +/* max u-boot size: 512k */ +#define CONFIG_UBOOT_SECTOR_SIZE CONFIG_FLASH_SECTOR_SIZE +#define CONFIG_UBOOT_SECTOR_COUNT 0x8 +#define CONFIG_UBOOT_SIZE (CONFIG_UBOOT_SECTOR_SIZE * \ + CONFIG_UBOOT_SECTOR_COUNT) + +#define CONFIG_ENV_IS_IN_SPI_FLASH +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT +#define CONFIG_ENV_OFFSET (CONFIG_UBOOT_SIZE) +#define CONFIG_ENV_SECT_SIZE CONFIG_FLASH_SECTOR_SIZE +#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + \ + CONFIG_ENV_SECT_SIZE) + +#define CONFIG_ENV_SPI_BUS (CONFIG_SF_DEFAULT_BUS) +#define CONFIG_ENV_SPI_CS (CONFIG_SF_DEFAULT_CS) +#define CONFIG_ENV_SPI_MAX_HZ (CONFIG_SF_DEFAULT_SPEED) +#define CONFIG_ENV_SPI_MODE (CONFIG_SF_DEFAULT_MODE) + +#define CONFIG_FDT_OFFSET (CONFIG_ENV_OFFSET_REDUND + \ + CONFIG_ENV_SECT_SIZE) +#define CONFIG_FDT_SECT_SIZE (CONFIG_FLASH_SECTOR_SIZE) + +#define CONFIG_FDT_SECTOR_START 0x0a /* 8 Sector u-boot, 2 Sector env */ +#define CONFIG_FDT_SECTOR_COUNT 0x01 + +#define CONFIG_KERNEL_SECTOR_START 0x10 +#define CONFIG_KERNEL_SECTOR_COUNT 0x60 + +#define CONFIG_EXTRA_BOOTDEV_ENV_SETTINGS \ + "mmcblkdev=0\0" \ + "uboot_offset="__stringify(CONFIG_UBOOT_OFFSET)"\0" \ + "uboot_sectors="__stringify(CONFIG_UBOOT_SECTOR_COUNT)"\0" \ + "fdt_start="__stringify(CONFIG_FDT_SECTOR_START)"\0" \ + "fdt_sectors="__stringify(CONFIG_FDT_SECTOR_COUNT)"\0" \ + "kernel_start="__stringify(CONFIG_KERNEL_SECTOR_START)"\0" \ + "kernel_sectors="__stringify(CONFIG_KERNEL_SECTOR_COUNT)"\0" \ + "update_uboot=if tftp ${uboot}; then " \ + "if itest ${filesize} > 0; then " \ + "setexpr blkc ${filesize} + " \ + __stringify(CONFIG_UBOOT_OFFSET) "; " \ + "setexpr size ${uboot_sectors} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "if itest ${blkc} <= ${size}; then " \ + "sf probe; " \ + "sf erase 0 ${size}; " \ + "sf write ${loadaddr} ${uboot_offset} " \ + "${filesize}; " \ + "fi; " \ + "fi; fi; " \ + "setenv filesize 0; setenv blkc; setenv size \0" \ + "update_kernel=run kernel_name; if tftp ${kernel}; then " \ + "if itest ${filesize} > 0; then " \ + "setexpr size ${kernel_sectors} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "setexpr offset ${kernel_start} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "if itest ${filesize} <= ${size}; then " \ + "sf probe; " \ + "sf erase ${offset} ${size}; " \ + "sf write ${loadaddr} ${offset} " \ + "${filesize}; " \ + "fi; " \ + "fi; fi; " \ + "setenv filesize 0; setenv size ; setenv offset\0" \ + "update_fdt=if tftp ${fdt_file}; then " \ + "if itest ${filesize} > 0; then " \ + "setexpr size ${fdt_sectors} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "setexpr offset ${fdt_start} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "if itest ${filesize} <= ${size}; then " \ + "sf probe; " \ + "sf erase ${offset} ${size}; " \ + "sf write ${loadaddr} ${offset} " \ + "${filesize}; " \ + "fi; " \ + "fi; fi; " \ + "setenv filesize 0; setenv size ; setenv offset\0" \ + "loadimage=sf probe; " \ + "setexpr size ${kernel_sectors} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "setexpr offset ${kernel_start} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "sf read ${loadaddr} ${offset} ${size}; " \ + "setenv size ; setenv offset\0" \ + "loadfdt=sf probe; " \ + "setexpr size ${fdt_sectors} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "setexpr offset ${fdt_start} * " \ + __stringify(CONFIG_FLASH_SECTOR_SIZE)"; " \ + "sf read ${${fdt_addr}} ${offset} ${size}; " \ + "setenv size ; setenv offset\0" \ + + +#define CONFIG_BOOTCOMMAND \ + "sf probe; run mmcboot; run netboot; run panicboot" \ + #else #error "need to define boot source" -- 1.7.9.5 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot