On Wednesday, October 28, 2015 at 04:30:01 PM, Otavio Salvador wrote:
> Congatec has several MX6 boards based on quad, dual, dual-lite and solo.
> 
> Add SPL support so that all the variants can be supported.
> 
> Signed-off-by: Otavio Salvador <ota...@ossystems.com.br>
> ---
> 
>  arch/arm/cpu/armv7/mx6/Kconfig                     |   3 +
>  board/congatec/cgtqmx6eval/README                  |  78 ++-
>  board/congatec/cgtqmx6eval/cgtqmx6eval.c           | 580
> +++++++++++++++++---- board/congatec/cgtqmx6eval/imximage.cfg            |
> 143 -----
>  ...gtqmx6qeval_defconfig => cgtqmx6eval_defconfig} |   5 +-
>  include/configs/cgtqmx6eval.h                      |  21 +-
>  6 files changed, 569 insertions(+), 261 deletions(-)
>  delete mode 100644 board/congatec/cgtqmx6eval/imximage.cfg
>  rename configs/{cgtqmx6qeval_defconfig => cgtqmx6eval_defconfig} (57%)
> 
> diff --git a/arch/arm/cpu/armv7/mx6/Kconfig
> b/arch/arm/cpu/armv7/mx6/Kconfig index 0b02e9e..9ee509e 100644
> --- a/arch/arm/cpu/armv7/mx6/Kconfig
> +++ b/arch/arm/cpu/armv7/mx6/Kconfig
> @@ -44,6 +44,9 @@ config TARGET_ARISTAINETOS2B
> 
>  config TARGET_CGTQMX6EVAL
>       bool "cgtqmx6eval"
> +     select SUPPORT_SPL
> +     select DM
> +     select DM_THERMAL
> 
>  config TARGET_CM_FX6
>       bool "CM-FX6"
> diff --git a/board/congatec/cgtqmx6eval/README
> b/board/congatec/cgtqmx6eval/README index 5e76d2a..b339cd0 100644
> --- a/board/congatec/cgtqmx6eval/README
> +++ b/board/congatec/cgtqmx6eval/README
> @@ -1,28 +1,70 @@
> -U-Boot for the Congatec Conga-QEVAl Evaluation Carrier board with
> -qmx6 quad module.
> +U-Boot for the Congatec QMX6 boards
> 
>  This file contains information for the port of U-Boot to the Congatec
> -Conga-QEVAl Evaluation Carrier board with qmx6 quad module.
> +QMX6 boards.
> 
> -1. Boot source, boot from SD card
> +1. Building U-boot
> +------------------
> +
> +- Build U-boot for Congatec QMX6 boards:
> +
> +$ make mrproper
> +$ make cgtqmx6eval_defconfig
> +$ make
> +
> +This will generate the following binaries:
> +
> +- SPL
> +- u-boot.img
> +
> +2. Flashing U-boot in the SPI NOR
>  ---------------------------------
> 
> -By default, the Congatec board can boot only from the SPI-NOR.
> -But, with the u-boot version provided with the board you can write boot
> -registers to force the board to reboot and boot from the SD slot. If
> -"bmode" command is not available from your pre-installed u-boot, these
> -instruction will produce the same effect:
> +Copy SPL and u-boot.img to the exported TFTP directory of the
> +host PC (/tftpboot , for example).
> +
> +=> sf probe
> +
> +=> tftp SPL
> +
> +=> sf erase 0x0 0x10000
> +
> +=> sf write 0x12000000 0x400 0x10000

sf update would suffice.

> +=> tftp u-boot.img
> +
> +=> sf erase 0x10000 0x70000
> +
> +=> sf write 0x12000000 0x10000 0x70000

DTTO.

> +Reboot the board and the new U-boot should come up.
> +

[...]

> +static void conv_ascii(unsigned char *dst, unsigned char *src, int len)
> +{
> +     int remain = len;
> +     unsigned char *sptr = src;
> +     unsigned char *dptr = dst;
> +
> +     while (remain)
> +     {
> +             if (*sptr) {
> +                     *dptr = *sptr;
> +                     dptr++;
> +             }
> +             sptr++;
> +             remain--;
> +     }
> +     *dptr = 0x0;
> +}
> +
> +#define CFG_MFG_ADDR_OFFSET  (spi->size - SZ_16K)
> +static bool is_2gb(void)
> +{
> +     struct spi_flash *spi;
> +     int ret;
> +     char buf[sizeof(struct mfgdata)];
> +     struct mfgdata *data = (struct mfgdata *)buf;
> +     unsigned char outbuf[32];
> +
> +     spi = spi_flash_probe(CONFIG_ENV_SPI_BUS,
> +                           CONFIG_ENV_SPI_CS,
> +                           CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
> +     ret = spi_flash_read(spi, CFG_MFG_ADDR_OFFSET, sizeof(struct mfgdata),
> +                          buf);
> +     if (ret)
> +             return false;
> +
> +     /* Congatec Part Numbers 104 and 105 have 2GiB of RAM */
> +     conv_ascii(outbuf, data->pn, sizeof(data->pn));
> +     if (!strcmp((const char *)outbuf, "016104") ||
> +         !strcmp((const char *)outbuf, "016105"))

So why exactly don't you use memcmp() here and drop the abomination above ?

> +             return true;
> +     else
> +             return false;
> +}

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

Reply via email to