]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
arm: tegra: pluto: use native remote wake for onboard i500
authorNeil Patel <neilp@nvidia.com>
Mon, 12 Nov 2012 20:50:08 +0000 (15:50 -0500)
committerDan Willemsen <dwillemsen@nvidia.com>
Sat, 14 Sep 2013 19:42:24 +0000 (12:42 -0700)
Bug 1174774

Change-Id: I673e6f74759ca0af918f671a67a4c2998677c1bd
Signed-off-by: Neil Patel <neilp@nvidia.com>
Reviewed-on: http://git-master/r/163088
Reviewed-by: Steve Lin <stlin@nvidia.com>
Tested-by: Steve Lin <stlin@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
arch/arm/mach-tegra/board-pluto.c
arch/arm/mach-tegra/board-pluto.h
arch/arm/mach-tegra/include/mach/tegra_usb_modem_power.h
arch/arm/mach-tegra/tegra_usb_modem_power.c
arch/arm/mach-tegra/wakeups-t11x.c

index cb8c320f69e5abebe38ec0ab1e48155994029136..8e8d80f985519767f3fc94203e13ecc8bd4bf50a 100644 (file)
@@ -505,15 +505,6 @@ static struct tegra_usb_otg_data tegra_otg_pdata = {
 static struct regulator *baseband_reg;
 static struct gpio modem_gpios[] = { /* i500 modem */
        {MDM_RST, GPIOF_OUT_INIT_LOW, "MODEM RESET"},
-       {MDM_ACK, GPIOF_OUT_INIT_HIGH, "MODEM ACK1"},
-};
-
-static void baseband_post_phy_on(void);
-static void baseband_pre_phy_off(void);
-
-static struct tegra_usb_phy_platform_ops baseband_plat_ops = {
-       .pre_phy_off = baseband_pre_phy_off,
-       .post_phy_on = baseband_post_phy_on,
 };
 
 static struct gpio modem2_gpios[] = {
@@ -543,7 +534,6 @@ static struct tegra_usb_platform_data tegra_ehci2_hsic_baseband_pdata = {
                .remote_wakeup_supported = false,
                .power_off_on_suspend = false,
        },
-       .ops = &baseband_plat_ops,
 };
 
 #ifdef CONFIG_ARCH_TEGRA_11x_SOC
@@ -656,16 +646,6 @@ static struct platform_device tegra_bb_oem1 = {
 };
 #endif
 
-static void baseband_post_phy_on(void)
-{
-       gpio_set_value(MDM_ACK, 0);
-}
-
-static void baseband_pre_phy_off(void)
-{
-       gpio_set_value(MDM_ACK, 1);
-}
-
 static int baseband_init(void)
 {
        int ret;
@@ -698,8 +678,7 @@ static const struct tegra_modem_operations baseband_operations = {
 
 static struct tegra_usb_modem_power_platform_data baseband_pdata = {
        .ops = &baseband_operations,
-       .wake_gpio = MDM_REQ,
-       .wake_irq_flags = IRQF_TRIGGER_FALLING,
+       .wake_gpio = -1,
        .boot_gpio = MDM_COLDBOOT,
        .boot_irq_flags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
        .autosuspend_delay = 2000,
index 24a119c48bc279cd199fa27740f19162e2d42007..8baa84992eaeb6978b0fb7d4978f979d11ce377a 100644 (file)
@@ -81,8 +81,6 @@
 /* Modem1 related GPIOs */
 #define MDM_RST                                TEGRA_GPIO_PR3
 #define MDM_COLDBOOT                   TEGRA_GPIO_PO5
-#define MDM_REQ                                TEGRA_GPIO_PO4
-#define MDM_ACK                                TEGRA_GPIO_PO1
 
 /* Modem2 related GPIOs */
 #define MDM2_PWR_ON                    TEGRA_GPIO_PX1
index 210b9f61ecb59093f6ec4304c6984da0620a7b89..0f6e9e1c1b6dd339b3483c132d2bb09e1be804e4 100644 (file)
@@ -40,9 +40,9 @@ struct tegra_modem_operations {
 /* tegra usb modem power platform data */
 struct tegra_usb_modem_power_platform_data {
        const struct tegra_modem_operations *ops;
-       unsigned int wake_gpio;         /* remote wakeup gpio */
+       int wake_gpio;                  /* remote wakeup gpio */
        unsigned long wake_irq_flags;   /* remote wakeup irq flags */
-       unsigned int boot_gpio;         /* modem boot gpio */
+       int boot_gpio;                  /* modem boot gpio */
        unsigned long boot_irq_flags;   /* modem boot irq flags */
        int autosuspend_delay;          /* autosuspend delay in milliseconds */
        int short_autosuspend_delay;    /* short autosuspend delay in ms */
index 838f700b17b570b6626cac7605d3bf033a6dc04d..2d669793449a35b5d02a3103a99bd182a42f736f 100644 (file)
@@ -457,25 +457,33 @@ static int mdm_init(struct tegra_usb_modem *modem, struct platform_device *pdev)
        pm_qos_add_request(&modem->cpu_boost_req, PM_QOS_CPU_FREQ_MIN,
                           PM_QOS_DEFAULT_VALUE);
 
-       /* request remote wakeup irq from platform data */
-       ret = mdm_request_wakeable_irq(modem,
-                                      tegra_usb_modem_wake_thread,
-                                      pdata->wake_gpio,
-                                      pdata->wake_irq_flags,
-                                      "mdm_wake", &modem->wake_irq);
-       if (ret) {
-               dev_err(&pdev->dev, "request wake irq error\n");
-               goto error;
+       /* if wake gpio is not specified we rely on native usb remote wake */
+       if (gpio_is_valid(pdata->wake_gpio)) {
+               /* request remote wakeup irq from platform data */
+               ret = mdm_request_wakeable_irq(modem,
+                                              tegra_usb_modem_wake_thread,
+                                              pdata->wake_gpio,
+                                              pdata->wake_irq_flags,
+                                              "mdm_wake", &modem->wake_irq);
+               if (ret) {
+                       dev_err(&pdev->dev, "request wake irq error\n");
+                       goto error;
+               }
        }
 
-       /* request boot irq from platform data */
-       ret = mdm_request_wakeable_irq(modem,
-                                      tegra_usb_modem_boot_thread,
-                                      pdata->boot_gpio,
-                                      pdata->boot_irq_flags,
-                                      "mdm_boot", &modem->boot_irq);
-       if (ret) {
-               dev_err(&pdev->dev, "request boot irq error\n");
+       if (gpio_is_valid(pdata->boot_gpio)) {
+               /* request boot irq from platform data */
+               ret = mdm_request_wakeable_irq(modem,
+                                              tegra_usb_modem_boot_thread,
+                                              pdata->boot_gpio,
+                                              pdata->boot_irq_flags,
+                                              "mdm_boot", &modem->boot_irq);
+               if (ret) {
+                       dev_err(&pdev->dev, "request boot irq error\n");
+                       goto error;
+               }
+       } else {
+               dev_err(&pdev->dev, "boot irq not specified\n");
                goto error;
        }
 
index 5593fdb37fce5edb7a053bd6e851beea58be81e8..ff64c5b28d40232b213971a130c175cfd6c4e159 100644 (file)
@@ -56,7 +56,7 @@ static int tegra_gpio_wakes[] = {
        -EINVAL,                                /* wake29 */
        -EINVAL,                                /* wake30 */
        -EINVAL,                                /* wake31 */
-       TEGRA_GPIO_PO4,                         /* wake32 */
+       -EINVAL,                                /* wake32 */
        TEGRA_GPIO_PJ0,                         /* wake33 */
        TEGRA_GPIO_PK2,                         /* wake34 */
        TEGRA_GPIO_PI6,                         /* wake35 */