Merge "msm_serial_hs: Don't configure gpios into UART Mode always"
diff --git a/drivers/tty/serial/msm_serial_hs.c b/drivers/tty/serial/msm_serial_hs.c
index 84cd3e7..7a0e32b 100644
--- a/drivers/tty/serial/msm_serial_hs.c
+++ b/drivers/tty/serial/msm_serial_hs.c
@@ -391,8 +391,6 @@
struct msm_hs_port *msm_uport;
struct device *dev;
- struct msm_serial_hs_platform_data *pdata = pdev->dev.platform_data;
-
if (pdev->id < 0 || pdev->id >= UARTDM_NR) {
printk(KERN_ERR "Invalid plaform device ID = %d\n", pdev->id);
@@ -402,10 +400,6 @@
msm_uport = &q_uart_port[pdev->id];
dev = msm_uport->uport.dev;
- if (pdata && pdata->gpio_config)
- if (pdata->gpio_config(0))
- dev_err(dev, "GPIO config error\n");
-
sysfs_remove_file(&pdev->dev.kobj, &dev_attr_clock.attr);
debugfs_remove(msm_uport->loopback_dir);
@@ -1646,6 +1640,9 @@
unsigned long flags;
unsigned int data;
struct msm_hs_port *msm_uport = UARTDM_TO_MSM(uport);
+ struct platform_device *pdev = to_platform_device(uport->dev);
+ const struct msm_serial_hs_platform_data *pdata =
+ pdev->dev.platform_data;
struct circ_buf *tx_buf = &uport->state->xmit;
struct msm_hs_tx *tx = &msm_uport->tx;
@@ -1665,6 +1662,10 @@
return ret;
}
+ if (pdata && pdata->gpio_config)
+ if (unlikely(pdata->gpio_config(1)))
+ dev_err(uport->dev, "Cannot configure gpios\n");
+
/* Set auto RFR Level */
data = msm_hs_read(uport, UARTDM_MR1_ADDR);
data &= ~UARTDM_MR1_AUTO_RFR_LEVEL1_BMSK;
@@ -1945,10 +1946,6 @@
if (unlikely(msm_uport->wakeup.irq < 0))
return -ENXIO;
- if (pdata->gpio_config)
- if (unlikely(pdata->gpio_config(1)))
- dev_err(uport->dev, "Cannot configure"
- "gpios\n");
}
resource = platform_get_resource_byname(pdev, IORESOURCE_DMA,
@@ -2086,6 +2083,9 @@
unsigned int data;
unsigned long flags;
struct msm_hs_port *msm_uport = UARTDM_TO_MSM(uport);
+ struct platform_device *pdev = to_platform_device(uport->dev);
+ const struct msm_serial_hs_platform_data *pdata =
+ pdev->dev.platform_data;
if (msm_uport->tx.dma_in_flight) {
spin_lock_irqsave(&uport->lock, flags);
@@ -2148,6 +2148,10 @@
free_irq(uport->irq, msm_uport);
if (use_low_power_wakeup(msm_uport))
free_irq(msm_uport->wakeup.irq, msm_uport);
+
+ if (pdata && pdata->gpio_config)
+ if (pdata->gpio_config(0))
+ dev_err(uport->dev, "GPIO config error\n");
}
static void __exit msm_serial_hs_exit(void)