imx: ventana: add support for GW5909
authorTim Harvey <tharvey@gateworks.com>
Mon, 4 Feb 2019 21:10:57 +0000 (13:10 -0800)
committerStefano Babic <sbabic@denx.de>
Fri, 15 Feb 2019 21:01:15 +0000 (22:01 +0100)
The GW5909 is a small single board computer based on the i.MX6DL SoC
with the same peripheral set as the GW5904 but with half the DRAM loaded
and an additional RS232 transceiver off UART2.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
board/gateworks/gw_ventana/common.c
board/gateworks/gw_ventana/eeprom.c
board/gateworks/gw_ventana/ventana_eeprom.h

index 568dc920ae784da630b8bc14ac57feed5af203c2..c1e2e8a5061e90fe1ab9a78facef33c7071fd686 100644 (file)
@@ -455,6 +455,8 @@ static iomux_v3_cfg_t const gw5904_gpio_pads[] = {
        IOMUX_PADS(PAD_SD2_DAT1__GPIO1_IO14 | DIO_PAD_CFG),
        /* M2_RST# */
        IOMUX_PADS(PAD_SD2_DAT2__GPIO1_IO13 | DIO_PAD_CFG),
+       /* RS232_EN# */
+       IOMUX_PADS(PAD_SD4_DAT3__GPIO2_IO11 | DIO_PAD_CFG),
 };
 
 static iomux_v3_cfg_t const gw5905_gpio_pads[] = {
@@ -1133,6 +1135,23 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
                .msata_en = GP_MSATA_SEL,
                .rs232_en = GP_RS232_EN,
        },
+
+       /* GW5909 */
+       {
+               .gpio_pads = gw5904_gpio_pads,
+               .num_pads = ARRAY_SIZE(gw5904_gpio_pads)/2,
+               .dio_cfg = gw5904_dio,
+               .dio_num = ARRAY_SIZE(gw5904_dio),
+               .leds = {
+                       IMX_GPIO_NR(4, 6),
+                       IMX_GPIO_NR(4, 7),
+                       IMX_GPIO_NR(4, 15),
+               },
+               .pcie_rst = IMX_GPIO_NR(1, 0),
+               .mezz_pwren = IMX_GPIO_NR(2, 19),
+               .mezz_irq = IMX_GPIO_NR(2, 18),
+               .otgpwr_en = IMX_GPIO_NR(3, 22),
+       },
 };
 
 #define SETUP_GPIO_OUTPUT(gpio, name, level) \
@@ -1275,6 +1294,7 @@ void setup_iomux_gpio(int board, struct ventana_board_info *info)
                gpio_request(IMX_GPIO_NR(1, 7) , "bklt_12ven");
                gpio_direction_output(IMX_GPIO_NR(1, 7), 1);
                break;
+       case GW5909:
        case GW5904:
                gpio_request(IMX_GPIO_NR(5, 11), "skt1_wdis#");
                gpio_direction_output(IMX_GPIO_NR(5, 11), 1);
@@ -1553,6 +1573,7 @@ int board_mmc_init(bd_t *bis)
                return fsl_esdhc_initialize(bis, &usdhc_cfg[1]);
        case GW5904:
        case GW5905:
+       case GW5909:
                /* usdhc3: 8bit eMMC */
                SETUP_IOMUX_PADS(gw5904_emmc_pads);
                usdhc_cfg[0].esdhc_base = USDHC3_BASE_ADDR;
@@ -1582,6 +1603,7 @@ int board_mmc_getcd(struct mmc *mmc)
        case GW5903:
        case GW5904:
        case GW5905:
+       case GW5909:
                /* emmc is always present */
                if (cfg->esdhc_base == USDHC3_BASE_ADDR)
                        return 1;
index 85802141dd5251b62dad1a881d5c39c9f3d865ae..bcd634920c3bfa4e192d83a68b0711c80062e1ca 100644 (file)
@@ -109,6 +109,8 @@ read_eeprom(int bus, struct ventana_board_info *info)
                        type = GW5907;
                else if (info->model[4] == '0' && info->model[5] == '8')
                        type = GW5908;
+               else if (info->model[4] == '0' && info->model[5] == '9')
+                       type = GW5909;
                break;
        }
        return type;
index c80dfa1f7a3fb269113a3025df4971ac9f3ca9af..3e24287fe71ad78b2dd3c5e6541459c55858a775 100644 (file)
@@ -118,6 +118,7 @@ enum {
        GW5906,
        GW5907,
        GW5908,
+       GW5909,
        GW_UNKNOWN,
        GW_BADCRC,
 };