diff options
Diffstat (limited to 'arch/arm/mach-imx/mach-imx6q.c')
-rw-r--r-- | arch/arm/mach-imx/mach-imx6q.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index aafec45babab..6da2da5ed2f5 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c @@ -231,6 +231,28 @@ static void __init imx6q_csi_mux_init(void) } } +/* + * Init GPIO PCIE_PWR_EN to keep power supply to miniPCIE 3G modem + * +*/ +static void __init imx6q_mini_pcie_init(void) +{ + struct device_node *np = NULL; + int ret, power_on_gpio; + np = of_find_node_by_name(NULL, "minipcie_ctrl"); + if (!np) + return; + + power_on_gpio = of_get_named_gpio(np, "power-on-gpio", 0); + if (gpio_is_valid(power_on_gpio)) { + ret = gpio_request_one(power_on_gpio, GPIOF_OUT_INIT_HIGH, + "miniPCIE Power On"); + pr_warn("!!request miniPCIE Power On gpio\n"); + if (ret) + pr_warn("failed to request miniPCIE Power On gpio\n"); + } +} + #define OCOTP_MACn(n) (0x00000620 + (n) * 0x10) void __init imx6_enet_mac_init(const char *compatible) { @@ -339,6 +361,7 @@ static void __init imx6q_init_machine(void) imx_anatop_init(); imx6_pm_init(); imx6q_csi_mux_init(); + imx6q_mini_pcie_init(); } #define OCOTP_CFG3 0x440 |