arm: baltos: active mPCIe slot
authorYegor Yefremov <yegorslists@googlemail.com>
Thu, 1 Dec 2016 11:52:17 +0000 (12:52 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 5 Dec 2016 16:04:41 +0000 (11:04 -0500)
Baltos devices provide a mPCIe slot, whose power is turned off by
default. This patch activates mPCIe slot in U-Boot, so that for example
GSM modem can be already available in user space.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
board/vscom/baltos/board.c

index dbf79a5..d3b1f15 100644 (file)
@@ -39,6 +39,7 @@ DECLARE_GLOBAL_DATA_PTR;
 /* GPIO that controls power to DDR on EVM-SK */
 #define GPIO_DDR_VTT_EN                7
 #define DIP_S1                 44
+#define MPCIE_SW               100
 
 static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
 
@@ -330,6 +331,11 @@ int ft_board_setup(void *blob, bd_t *bd)
        return 0;
 }
 
+static struct module_pin_mux pcie_sw_pin_mux[] = {
+       {OFFSET(mii1_rxdv), (MODE(7) | PULLUDEN )},     /* GPIO3_4 */
+       {-1},
+};
+
 static struct module_pin_mux dip_pin_mux[] = {
        {OFFSET(gpmc_ad12), (MODE(7) | RXACTIVE )},     /* GPIO1_12 */
        {OFFSET(gpmc_ad13), (MODE(7)  | RXACTIVE )},    /* GPIO1_13 */
@@ -355,6 +361,18 @@ int board_late_init(void)
                        baltos_set_console();
                }
        }
+
+       /* turn power for the mPCIe slot */
+       configure_module_pin_mux(pcie_sw_pin_mux);
+       if (gpio_request(MPCIE_SW, "mpcie_sw")) {
+               printf("failed to export GPIO %d\n", MPCIE_SW);
+               return -ENODEV;
+       }
+       if (gpio_direction_output(MPCIE_SW, 1)) {
+               printf("failed to set GPIO %d direction\n", MPCIE_SW);
+               return -ENODEV;
+       }
+
        setenv("board_name", model);
 #endif