summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorguoyin.chen <guoyin.chen@freescale.com>2012-05-11 17:02:12 +0800
committerguoyin.chen <guoyin.chen@freescale.com>2012-05-14 09:09:01 +0800
commit3eae8e8a9854293d6e92756f0eeb928ef14770a6 (patch)
tree73440b26baf2bddde74a15f5332215b9ae9ada7d /arch
parent49d10ee5e19f5b327691b83f069f4b5186e551de (diff)
ENGR00182786 Add 3g modem reset function
board's reset will not reset the modem power on gpio reset the 3g modem at kernel boot up to make sure 3g modem at reset state in system up Signed-off-by: guoyin.chen <guoyin.chen@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabresd.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c
index c808fe705ef9..a50fcaf5517a 100644
--- a/arch/arm/mach-mx6/board-mx6q_sabresd.c
+++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c
@@ -1368,6 +1368,20 @@ static void pcie_3v3_power(bool on)
}
+static void pcie_3v3_reset()
+{
+ /* reset miniPCIe */
+ gpio_request(SABRESD_PCIE_RST_B_REVB, "pcie_reset_rebB");
+ gpio_direction_output(SABRESD_PCIE_RST_B_REVB, 1);
+
+ gpio_set_value(SABRESD_PCIE_RST_B_REVB, 0);
+ /* The PCI Express Mini CEM specification states that PREST# is
+ deasserted minimum 1ms after 3.3vVaux has been applied and stable*/
+ msleep(1);
+ gpio_set_value(SABRESD_PCIE_RST_B_REVB, 1);
+}
+
+
static void gps_power_on(bool on)
{
/* Enable/disable aux_3v15 */
@@ -1749,7 +1763,12 @@ static void __init mx6_sabresd_board_init(void)
gpio_direction_output(SABRESD_AUX_5V_EN, 1);
gpio_set_value(SABRESD_AUX_5V_EN, 1);
+ pcie_3v3_power(false);
+ msleep(10);
pcie_3v3_power(true);
+ msleep(10);
+ pcie_3v3_reset();
+
gps_power_on(true);
/* Register charger chips */