imx: ventana: make hwconfig initialize based on board configuration
authorTim Harvey <tharvey@gateworks.com>
Fri, 15 Jul 2016 14:14:25 +0000 (07:14 -0700)
committerStefano Babic <sbabic@denx.de>
Thu, 28 Jul 2016 11:27:18 +0000 (13:27 +0200)
The hwconfig env var allows user to control hardware specific configuration
of board specific features but not all Ventana boards have the same features.

We will use the magic default value of "_UNKNOWN_" to signify that the
bootloader should create this based on detected board model.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
board/gateworks/gw_ventana/gw_ventana.c
include/configs/gw_ventana.h

index 930cec8c5a731c85acb2604cda0615ba67613947..588ea85b9dad93e5a8e3f6edd48f83e7aab9a51a 100644 (file)
@@ -700,13 +700,14 @@ static const struct boot_mode board_boot_modes[] = {
 int misc_init_r(void)
 {
        struct ventana_board_info *info = &ventana_info;
+       char buf[256];
+       int i;
 
        /* set env vars based on EEPROM data */
        if (ventana_info.model[0]) {
                char str[16], fdt[36];
                char *p;
                const char *cputype = "";
-               int i;
 
                /*
                 * FDT name will be prefixed with CPU type.  Three versions
@@ -769,6 +770,19 @@ int misc_init_r(void)
                setenv("mem_mb", str);
        }
 
+       /* Set a non-initialized hwconfig based on board configuration */
+       if (!strcmp(getenv("hwconfig"), "_UNKNOWN_")) {
+               sprintf(buf, "hwconfig=");
+               if (gpio_cfg[board_type].rs232_en)
+                       strcat(buf, "rs232;");
+               for (i = 0; i < gpio_cfg[board_type].dio_num; i++) {
+                       char buf1[32];
+                       sprintf(buf1, "dio%d:mode=gpio;", i);
+                       if (strlen(buf) + strlen(buf1) < sizeof(buf))
+                               strcat(buf, buf1);
+               }
+               setenv("hwconfig", buf);
+       }
 
        /* setup baseboard specific GPIO based on board and env */
        setup_board_gpio(board_type, info);
index 343f3c56bc3381f22a2f4fd38f0148df0856f2d8..1bd13fe6de2015cc05391ff9d886ecb70c9d9de6 100644 (file)
 /* Environment */
 #define CONFIG_IPADDR             192.168.1.1
 #define CONFIG_SERVERIP           192.168.1.146
-#define HWCONFIG_DEFAULT \
-       "hwconfig=rs232;" \
-       "dio0:mode=gpio;dio1:mode=gpio;dio2:mode=gpio;dio3:mode=gpio\0" \
 
 #define CONFIG_EXTRA_ENV_SETTINGS_COMMON \
        "pcidisable=1\0" \
        "usb_pgood_delay=2000\0" \
        "console=ttymxc1\0" \
        "bootdevs=usb mmc sata flash\0" \
-       HWCONFIG_DEFAULT \
+       "hwconfig=_UNKNOWN_\0" \
        "video=\0" \
        \
        "mtdparts=" MTDPARTS_DEFAULT "\0" \