aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/board-tuna-modems.c13
-rw-r--r--arch/arm/mach-omap2/board-tuna.c4
-rw-r--r--arch/arm/mach-omap2/board-tuna.h1
-rw-r--r--drivers/misc/modem_if/modem_link_device_usb.c25
4 files changed, 42 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/board-tuna-modems.c b/arch/arm/mach-omap2/board-tuna-modems.c
index 23b7ca3..8e1c3b3 100644
--- a/arch/arm/mach-omap2/board-tuna-modems.c
+++ b/arch/arm/mach-omap2/board-tuna-modems.c
@@ -704,6 +704,11 @@ static struct resource lte_modem_res[] = {
},
};
+static struct platform_device lte_modem_wake = {
+ .name = "modem_lte_wake",
+ .id = -1,
+};
+
static struct platform_device lte_modem = {
.name = "modem_if",
.id = 2,
@@ -714,6 +719,14 @@ static struct platform_device lte_modem = {
},
};
+/* lte_modem_wake must be registered before the ehci driver */
+void __init modem_toro_init(void)
+{
+ lte_modem_wake.dev.platform_data =
+ (void*)lte_modem_data.gpio_slave_wakeup;
+ platform_device_register(&lte_modem_wake);
+}
+
static int __init init_modem(void)
{
pr_debug("[MODEM_IF] init_modem\n");
diff --git a/arch/arm/mach-omap2/board-tuna.c b/arch/arm/mach-omap2/board-tuna.c
index e450be1..6db68ca 100644
--- a/arch/arm/mach-omap2/board-tuna.c
+++ b/arch/arm/mach-omap2/board-tuna.c
@@ -976,8 +976,10 @@ static void __init tuna_init(void)
omap_hsi_init();
#endif
#ifdef CONFIG_USB_EHCI_HCD_OMAP
- if (TUNA_TYPE_TORO == omap4_tuna_get_type())
+ if (TUNA_TYPE_TORO == omap4_tuna_get_type()) {
+ modem_toro_init();
omap4_ehci_init();
+ }
#endif
}
diff --git a/arch/arm/mach-omap2/board-tuna.h b/arch/arm/mach-omap2/board-tuna.h
index f700456..c09e199 100644
--- a/arch/arm/mach-omap2/board-tuna.h
+++ b/arch/arm/mach-omap2/board-tuna.h
@@ -37,6 +37,7 @@ int tuna_wlan_init(void);
int omap_hsi_init(void);
void omap4_tuna_emif_init(void);
void omap4_ehci_init(void);
+void modem_toro_init(void);
extern struct mmc_platform_data tuna_wifi_data;
extern struct class *sec_class;
diff --git a/drivers/misc/modem_if/modem_link_device_usb.c b/drivers/misc/modem_if/modem_link_device_usb.c
index e8f88cc..0f37821 100644
--- a/drivers/misc/modem_if/modem_link_device_usb.c
+++ b/drivers/misc/modem_if/modem_link_device_usb.c
@@ -758,3 +758,28 @@ static void __exit if_usb_exit(void)
usb_deregister(&if_usb_driver);
}
+
+static int lte_wake_resume(struct device *pdev)
+{
+ int ac_wake_gpio = (int)pdev->platform_data;
+ pr_debug("%s: > S-WUP 1\n", __func__);
+ gpio_set_value(ac_wake_gpio, 1);
+ return 0;
+}
+
+static const struct dev_pm_ops lte_wake_pm_ops = {
+ .resume = lte_wake_resume,
+};
+
+static struct platform_driver lte_wake_driver = {
+ .driver = {
+ .name = "modem_lte_wake",
+ .pm = &lte_wake_pm_ops,
+ },
+};
+
+static int __init lte_wake_init(void)
+{
+ return platform_driver_register(&lte_wake_driver);
+}
+module_init(lte_wake_init);