diff options
-rw-r--r-- | arch/arm/mach-omap2/board-tuna-modems.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-tuna.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-tuna.h | 1 | ||||
-rw-r--r-- | drivers/misc/modem_if/modem_link_device_usb.c | 25 |
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(<e_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 = <e_wake_pm_ops, + }, +}; + +static int __init lte_wake_init(void) +{ + return platform_driver_register(<e_wake_driver); +} +module_init(lte_wake_init); |