msm8930: Add support for GSBI9 for Primary IPC
This change adds GSBI9 UARTDM device and required resource
(its GPIOs and clocks) with their configurations for 8930
SGLTE Primary IPC functionality.
CRs-Fixed: 459320
Change-Id: Ief186e0dcb64bc2ef38f5c3a33e4942134d87e4e
Signed-off-by: Saket Saurabh <ssaurabh@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-8930.c b/arch/arm/mach-msm/board-8930.c
index d4ea596..69e5288 100644
--- a/arch/arm/mach-msm/board-8930.c
+++ b/arch/arm/mach-msm/board-8930.c
@@ -74,6 +74,7 @@
#include <mach/msm_bus_board.h>
#include <mach/msm_memtypes.h>
#include <mach/dma.h>
+#include <mach/msm_serial_hs.h>
#include <mach/msm_xo.h>
#include <mach/restart.h>
@@ -2850,6 +2851,39 @@
}
}
+#ifdef CONFIG_SERIAL_MSM_HS
+static int configure_uart_gpios(int on)
+{
+ int ret = 0, i;
+ int uart_gpios[] = {93, 94, 95, 96};
+
+ for (i = 0; i < ARRAY_SIZE(uart_gpios); i++) {
+ if (on) {
+ ret = gpio_request(uart_gpios[i], NULL);
+ if (ret) {
+ pr_err("%s: unable to request uart gpio[%d]\n",
+ __func__, uart_gpios[i]);
+ break;
+ }
+ } else {
+ gpio_free(uart_gpios[i]);
+ }
+ }
+
+ if (ret && on && i)
+ for (; i >= 0; i--)
+ gpio_free(uart_gpios[i]);
+ return ret;
+}
+
+static struct msm_serial_hs_platform_data msm_uart_dm9_pdata = {
+ .gpio_config = configure_uart_gpios,
+};
+#else
+static struct msm_serial_hs_platform_data msm_uart_dm9_pdata;
+#endif
+
+
static void __init msm8930_cdp_init(void)
{
if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917)
@@ -2897,6 +2931,15 @@
PM8038_USB_ID_IN_IRQ(PM8038_IRQ_BASE);
}
+ if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE &&
+ machine_is_msm8930_evt()) {
+#ifdef CONFIG_SERIAL_MSM_HS
+ msm_uart_dm9_pdata.wakeup_irq = gpio_to_irq(94); /* GSBI9(2) */
+ msm_device_uart_dm9.dev.platform_data = &msm_uart_dm9_pdata;
+#endif
+ platform_device_register(&msm_device_uart_dm9);
+ }
+
msm_otg_pdata.phy_init_seq = hsusb_phy_init_seq;
msm8960_device_otg.dev.platform_data = &msm_otg_pdata;
android_usb_pdata.swfi_latency =