|
@@ -132,10 +132,10 @@ void setup_ventana_i2c(void)
|
|
|
|
|
|
/* common to add baseboards */
|
|
|
static iomux_v3_cfg_t const gw_gpio_pads[] = {
|
|
|
- /* MSATA_EN */
|
|
|
- IOMUX_PADS(PAD_SD4_DAT0__GPIO2_IO08 | DIO_PAD_CFG),
|
|
|
/* RS232_EN# */
|
|
|
IOMUX_PADS(PAD_SD4_DAT3__GPIO2_IO11 | DIO_PAD_CFG),
|
|
|
+ /* SD3_VSELECT */
|
|
|
+ IOMUX_PADS(PAD_NANDF_CS1__GPIO6_IO14 | DIO_PAD_CFG),
|
|
|
};
|
|
|
|
|
|
/* prototype */
|
|
@@ -183,6 +183,8 @@ static iomux_v3_cfg_t const gw51xx_gpio_pads[] = {
|
|
|
};
|
|
|
|
|
|
static iomux_v3_cfg_t const gw52xx_gpio_pads[] = {
|
|
|
+ /* MSATA_EN */
|
|
|
+ IOMUX_PADS(PAD_SD4_DAT0__GPIO2_IO08 | DIO_PAD_CFG),
|
|
|
/* PANLEDG# */
|
|
|
IOMUX_PADS(PAD_KEY_COL0__GPIO4_IO06 | DIO_PAD_CFG),
|
|
|
/* PANLEDR# */
|
|
@@ -212,6 +214,8 @@ static iomux_v3_cfg_t const gw52xx_gpio_pads[] = {
|
|
|
};
|
|
|
|
|
|
static iomux_v3_cfg_t const gw53xx_gpio_pads[] = {
|
|
|
+ /* MSATA_EN */
|
|
|
+ IOMUX_PADS(PAD_SD4_DAT0__GPIO2_IO08 | DIO_PAD_CFG),
|
|
|
/* CAN_STBY */
|
|
|
IOMUX_PADS(PAD_GPIO_2__GPIO1_IO02 | DIO_PAD_CFG),
|
|
|
/* USB_HUBRST# */
|
|
@@ -241,6 +245,8 @@ static iomux_v3_cfg_t const gw53xx_gpio_pads[] = {
|
|
|
};
|
|
|
|
|
|
static iomux_v3_cfg_t const gw54xx_gpio_pads[] = {
|
|
|
+ /* MSATA_EN */
|
|
|
+ IOMUX_PADS(PAD_SD4_DAT0__GPIO2_IO08 | DIO_PAD_CFG),
|
|
|
/* CAN_STBY */
|
|
|
IOMUX_PADS(PAD_GPIO_2__GPIO1_IO02 | DIO_PAD_CFG),
|
|
|
/* PANLEDG# */
|
|
@@ -283,6 +289,8 @@ static iomux_v3_cfg_t const gw551x_gpio_pads[] = {
|
|
|
};
|
|
|
|
|
|
static iomux_v3_cfg_t const gw552x_gpio_pads[] = {
|
|
|
+ /* MSATA_EN */
|
|
|
+ IOMUX_PADS(PAD_SD4_DAT0__GPIO2_IO08 | DIO_PAD_CFG),
|
|
|
/* USBOTG_SEL */
|
|
|
IOMUX_PADS(PAD_GPIO_7__GPIO1_IO07 | DIO_PAD_CFG),
|
|
|
/* USB_HUBRST# */
|
|
@@ -310,6 +318,20 @@ static iomux_v3_cfg_t const gw552x_gpio_pads[] = {
|
|
|
IOMUX_PADS(PAD_GPIO_17__GPIO7_IO12 | DIO_PAD_CFG),
|
|
|
};
|
|
|
|
|
|
+static iomux_v3_cfg_t const gw553x_gpio_pads[] = {
|
|
|
+ /* PANLEDG# */
|
|
|
+ IOMUX_PADS(PAD_KEY_COL2__GPIO4_IO10 | DIO_PAD_CFG),
|
|
|
+ /* PANLEDR# */
|
|
|
+ IOMUX_PADS(PAD_KEY_ROW2__GPIO4_IO11 | DIO_PAD_CFG),
|
|
|
+
|
|
|
+ /* VID_PWR */
|
|
|
+ IOMUX_PADS(PAD_CSI0_DATA_EN__GPIO5_IO20 | DIO_PAD_CFG),
|
|
|
+ /* PCI_RST# */
|
|
|
+ IOMUX_PADS(PAD_GPIO_0__GPIO1_IO00 | DIO_PAD_CFG),
|
|
|
+ /* PCIESKT_WDIS# */
|
|
|
+ IOMUX_PADS(PAD_GPIO_17__GPIO7_IO12 | DIO_PAD_CFG),
|
|
|
+};
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
* Board Specific GPIO
|
|
@@ -445,6 +467,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
|
|
|
.vidin_en = IMX_GPIO_NR(3, 31),
|
|
|
.usb_sel = IMX_GPIO_NR(1, 2),
|
|
|
.wdis = IMX_GPIO_NR(7, 12),
|
|
|
+ .msata_en = GP_MSATA_SEL,
|
|
|
},
|
|
|
|
|
|
/* GW53xx */
|
|
@@ -489,6 +512,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
|
|
|
.gps_shdn = IMX_GPIO_NR(1, 27),
|
|
|
.vidin_en = IMX_GPIO_NR(3, 31),
|
|
|
.wdis = IMX_GPIO_NR(7, 12),
|
|
|
+ .msata_en = GP_MSATA_SEL,
|
|
|
},
|
|
|
|
|
|
/* GW54xx */
|
|
@@ -535,6 +559,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
|
|
|
.dioi2c_en = IMX_GPIO_NR(4, 5),
|
|
|
.pcie_sson = IMX_GPIO_NR(1, 20),
|
|
|
.wdis = IMX_GPIO_NR(5, 17),
|
|
|
+ .msata_en = GP_MSATA_SEL,
|
|
|
},
|
|
|
|
|
|
/* GW551x */
|
|
@@ -602,6 +627,47 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
|
|
|
.pcie_rst = IMX_GPIO_NR(1, 29),
|
|
|
.usb_sel = IMX_GPIO_NR(1, 7),
|
|
|
.wdis = IMX_GPIO_NR(7, 12),
|
|
|
+ .msata_en = GP_MSATA_SEL,
|
|
|
+ },
|
|
|
+
|
|
|
+ /* GW553x */
|
|
|
+ {
|
|
|
+ .gpio_pads = gw553x_gpio_pads,
|
|
|
+ .num_pads = ARRAY_SIZE(gw553x_gpio_pads)/2,
|
|
|
+ .dio_cfg = {
|
|
|
+ {
|
|
|
+ { IOMUX_PADS(PAD_SD1_DAT0__GPIO1_IO16) },
|
|
|
+ IMX_GPIO_NR(1, 16),
|
|
|
+ { 0, 0 },
|
|
|
+ 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ { IOMUX_PADS(PAD_SD1_DAT2__GPIO1_IO19) },
|
|
|
+ IMX_GPIO_NR(1, 19),
|
|
|
+ { IOMUX_PADS(PAD_SD1_DAT2__PWM2_OUT) },
|
|
|
+ 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ { IOMUX_PADS(PAD_SD1_DAT1__GPIO1_IO17) },
|
|
|
+ IMX_GPIO_NR(1, 17),
|
|
|
+ { IOMUX_PADS(PAD_SD1_DAT1__PWM3_OUT) },
|
|
|
+ 3
|
|
|
+ },
|
|
|
+ {
|
|
|
+ { IOMUX_PADS(PAD_SD1_CMD__GPIO1_IO18) },
|
|
|
+ IMX_GPIO_NR(1, 18),
|
|
|
+ { IOMUX_PADS(PAD_SD1_CMD__PWM4_OUT) },
|
|
|
+ 4
|
|
|
+ },
|
|
|
+ },
|
|
|
+ .num_gpios = 4,
|
|
|
+ .leds = {
|
|
|
+ IMX_GPIO_NR(4, 10),
|
|
|
+ IMX_GPIO_NR(4, 11),
|
|
|
+ },
|
|
|
+ .pcie_rst = IMX_GPIO_NR(1, 0),
|
|
|
+ .vidin_en = IMX_GPIO_NR(5, 20),
|
|
|
+ .wdis = IMX_GPIO_NR(7, 12),
|
|
|
},
|
|
|
};
|
|
|
|
|
@@ -616,10 +682,6 @@ void setup_iomux_gpio(int board, struct ventana_board_info *info)
|
|
|
gpio_request(GP_USB_OTG_PWR, "usbotg_pwr");
|
|
|
gpio_direction_output(GP_USB_OTG_PWR, 0);
|
|
|
|
|
|
- /* MSATA Enable - default to PCI */
|
|
|
- gpio_request(GP_MSATA_SEL, "msata_en");
|
|
|
- gpio_direction_output(GP_MSATA_SEL, 0);
|
|
|
-
|
|
|
/* RS232_EN# */
|
|
|
gpio_request(GP_RS232_EN, "rs232_en");
|
|
|
gpio_direction_output(GP_RS232_EN, 0);
|
|
@@ -649,6 +711,12 @@ void setup_iomux_gpio(int board, struct ventana_board_info *info)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /* MSATA Enable - default to PCI */
|
|
|
+ if (gpio_cfg[board].msata_en) {
|
|
|
+ gpio_request(gpio_cfg[board].msata_en, "msata_en");
|
|
|
+ gpio_direction_output(gpio_cfg[board].msata_en, 0);
|
|
|
+ }
|
|
|
+
|
|
|
/* Expansion Mezzanine IO */
|
|
|
if (gpio_cfg[board].mezz_pwren) {
|
|
|
gpio_request(gpio_cfg[board].mezz_pwren, "mezz_pwr");
|
|
@@ -700,6 +768,11 @@ void setup_iomux_gpio(int board, struct ventana_board_info *info)
|
|
|
gpio_request(gpio_cfg[board].wdis, "wlan_dis");
|
|
|
gpio_direction_output(gpio_cfg[board].wdis, 1);
|
|
|
}
|
|
|
+
|
|
|
+ /* sense vselect pin to see if we support uhs-i */
|
|
|
+ gpio_request(GP_SD3_VSELECT, "sd3_vselect");
|
|
|
+ gpio_direction_input(GP_SD3_VSELECT);
|
|
|
+ gpio_cfg[board].usd_vsel = !gpio_get_value(GP_SD3_VSELECT);
|
|
|
}
|
|
|
|
|
|
/* setup GPIO pinmux and default configuration per baseboard and env */
|
|
@@ -718,10 +791,9 @@ void setup_board_gpio(int board, struct ventana_board_info *info)
|
|
|
gpio_direction_output(GP_RS232_EN, (hwconfig("rs232")) ? 0 : 1);
|
|
|
|
|
|
/* MSATA Enable */
|
|
|
- if (is_cpu_type(MXC_CPU_MX6Q) &&
|
|
|
- test_bit(EECONFIG_SATA, info->config)) {
|
|
|
+ if (gpio_cfg[board].msata_en && is_cpu_type(MXC_CPU_MX6Q)) {
|
|
|
gpio_direction_output(GP_MSATA_SEL,
|
|
|
- (hwconfig("msata")) ? 1 : 0);
|
|
|
+ (hwconfig("msata")) ? 1 : 0);
|
|
|
}
|
|
|
|
|
|
/* USBOTG Select (PCISKT or FrontPanel) */
|
|
@@ -760,8 +832,13 @@ void setup_board_gpio(int board, struct ventana_board_info *info)
|
|
|
ctrl);
|
|
|
gpio_requestf(cfg->gpio_param, "dio%d", i);
|
|
|
gpio_direction_input(cfg->gpio_param);
|
|
|
- } else if (hwconfig_subarg_cmp("dio2", "mode", "pwm") &&
|
|
|
+ } else if (hwconfig_subarg_cmp(arg, "mode", "pwm") &&
|
|
|
cfg->pwm_padmux) {
|
|
|
+ if (!cfg->pwm_param) {
|
|
|
+ printf("DIO%d: Error: pwm config invalid\n",
|
|
|
+ i);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (!quiet)
|
|
|
printf("DIO%d: pwm%d\n", i, cfg->pwm_param);
|
|
|
imx_iomux_v3_setup_pad(cfg->pwm_padmux[cputype] |
|
|
@@ -770,8 +847,7 @@ void setup_board_gpio(int board, struct ventana_board_info *info)
|
|
|
}
|
|
|
|
|
|
if (!quiet) {
|
|
|
- if (is_cpu_type(MXC_CPU_MX6Q) &&
|
|
|
- (test_bit(EECONFIG_SATA, info->config))) {
|
|
|
+ if (gpio_cfg[board].msata_en && is_cpu_type(MXC_CPU_MX6Q)) {
|
|
|
printf("MSATA: %s\n", (hwconfig("msata") ?
|
|
|
"enabled" : "disabled"));
|
|
|
}
|