Merge changes I5359aee9,Ia2e526aa into msm-3.0
* changes:
msm_serial_hs_lite: Use new clock framework apis
msm_serial_hs_lite: Cleanup regarding usage of clock enable/disable apis
diff --git a/drivers/tty/serial/msm_serial_hs_lite.c b/drivers/tty/serial/msm_serial_hs_lite.c
index 6e3982e..f49769d 100644
--- a/drivers/tty/serial/msm_serial_hs_lite.c
+++ b/drivers/tty/serial/msm_serial_hs_lite.c
@@ -142,20 +142,21 @@
if (enable) {
- ret = clk_enable(msm_hsl_port->clk);
+ ret = clk_prepare_enable(msm_hsl_port->clk);
if (ret)
goto err;
if (msm_hsl_port->pclk) {
- ret = clk_enable(msm_hsl_port->pclk);
+ ret = clk_prepare_enable(msm_hsl_port->pclk);
if (ret) {
- clk_disable(msm_hsl_port->clk);
+ clk_disable_unprepare(msm_hsl_port->clk);
goto err;
}
}
} else {
- clk_disable(msm_hsl_port->clk);
+
+ clk_disable_unprepare(msm_hsl_port->clk);
if (msm_hsl_port->pclk)
- clk_disable(msm_hsl_port->pclk);
+ clk_disable_unprepare(msm_hsl_port->pclk);
}
err:
return ret;
@@ -245,53 +246,37 @@
{
struct msm_hsl_port *msm_hsl_port = UART_TO_MSM(port);
- clk_en(port, 1);
-
msm_hsl_port->imr &= ~UARTDM_ISR_TXLEV_BMSK;
msm_hsl_write(port, msm_hsl_port->imr,
regmap[msm_hsl_port->ver_id][UARTDM_IMR]);
-
- clk_en(port, 0);
}
static void msm_hsl_start_tx(struct uart_port *port)
{
struct msm_hsl_port *msm_hsl_port = UART_TO_MSM(port);
- clk_en(port, 1);
-
msm_hsl_port->imr |= UARTDM_ISR_TXLEV_BMSK;
msm_hsl_write(port, msm_hsl_port->imr,
regmap[msm_hsl_port->ver_id][UARTDM_IMR]);
-
- clk_en(port, 0);
}
static void msm_hsl_stop_rx(struct uart_port *port)
{
struct msm_hsl_port *msm_hsl_port = UART_TO_MSM(port);
- clk_en(port, 1);
-
msm_hsl_port->imr &= ~(UARTDM_ISR_RXLEV_BMSK |
UARTDM_ISR_RXSTALE_BMSK);
msm_hsl_write(port, msm_hsl_port->imr,
regmap[msm_hsl_port->ver_id][UARTDM_IMR]);
-
- clk_en(port, 0);
}
static void msm_hsl_enable_ms(struct uart_port *port)
{
struct msm_hsl_port *msm_hsl_port = UART_TO_MSM(port);
- clk_en(port, 1);
-
msm_hsl_port->imr |= UARTDM_ISR_DELTA_CTS_BMSK;
msm_hsl_write(port, msm_hsl_port->imr,
regmap[msm_hsl_port->ver_id][UARTDM_IMR]);
-
- clk_en(port, 0);
}
static void handle_rx(struct uart_port *port, unsigned int misr)
@@ -460,7 +445,6 @@
unsigned long flags;
spin_lock_irqsave(&port->lock, flags);
- clk_en(port, 1);
vid = msm_hsl_port->ver_id;
misr = msm_hsl_read(port, regmap[vid][UARTDM_MISR]);
/* disable interrupt */
@@ -482,7 +466,6 @@
/* restore interrupt */
msm_hsl_write(port, msm_hsl_port->imr, regmap[vid][UARTDM_IMR]);
- clk_en(port, 0);
spin_unlock_irqrestore(&port->lock, flags);
return IRQ_HANDLED;
@@ -490,14 +473,11 @@
static unsigned int msm_hsl_tx_empty(struct uart_port *port)
{
- unsigned int vid = UART_TO_MSM(port)->ver_id;
unsigned int ret;
+ unsigned int vid = UART_TO_MSM(port)->ver_id;
- clk_en(port, 1);
ret = (msm_hsl_read(port, regmap[vid][UARTDM_SR]) &
UARTDM_SR_TXEMT_BMSK) ? TIOCSER_TEMT : 0;
- clk_en(port, 0);
-
return ret;
}
@@ -525,8 +505,6 @@
unsigned int mr;
unsigned int loop_mode;
- clk_en(port, 1);
-
mr = msm_hsl_read(port, regmap[vid][UARTDM_MR1]);
if (!(mctrl & TIOCM_RTS)) {
@@ -551,22 +529,16 @@
msm_hsl_write(port, UARTDM_CR_RX_EN_BMSK
| UARTDM_CR_TX_EN_BMSK, regmap[vid][UARTDM_CR]);
}
-
- clk_en(port, 0);
}
static void msm_hsl_break_ctl(struct uart_port *port, int break_ctl)
{
unsigned int vid = UART_TO_MSM(port)->ver_id;
- clk_en(port, 1);
-
if (break_ctl)
msm_hsl_write(port, START_BREAK, regmap[vid][UARTDM_CR]);
else
msm_hsl_write(port, STOP_BREAK, regmap[vid][UARTDM_CR]);
-
- clk_en(port, 0);
}
static void msm_hsl_set_baud_rate(struct uart_port *port, unsigned int baud)
@@ -774,14 +746,10 @@
const struct msm_serial_hslite_platform_data *pdata =
pdev->dev.platform_data;
- clk_en(port, 1);
-
msm_hsl_port->imr = 0;
/* disable interrupts */
msm_hsl_write(port, 0, regmap[msm_hsl_port->ver_id][UARTDM_IMR]);
- clk_en(port, 0);
-
free_irq(port->irq, port);
#ifndef CONFIG_PM_RUNTIME
@@ -806,7 +774,6 @@
unsigned int vid;
spin_lock_irqsave(&port->lock, flags);
- clk_en(port, 1);
/* calculate and set baud rate */
baud = uart_get_baud_rate(port, termios, old, 300, 460800);
@@ -872,7 +839,6 @@
uart_update_timeout(port, termios->c_cflag, baud);
- clk_en(port, 0);
spin_unlock_irqrestore(&port->lock, flags);
}
@@ -971,13 +937,13 @@
}
if (msm_serial_hsl_has_gsbi(port)) {
if (msm_hsl_port->pclk)
- clk_enable(msm_hsl_port->pclk);
+ clk_prepare_enable(msm_hsl_port->pclk);
if ((ioread32(msm_hsl_port->mapped_gsbi + GSBI_CONTROL_ADDR) &
GSBI_PROTOCOL_I2C_UART) != GSBI_PROTOCOL_I2C_UART)
iowrite32(GSBI_PROTOCOL_I2C_UART,
msm_hsl_port->mapped_gsbi + GSBI_CONTROL_ADDR);
if (msm_hsl_port->pclk)
- clk_disable(msm_hsl_port->pclk);
+ clk_disable_unprepare(msm_hsl_port->pclk);
}
}
@@ -1384,10 +1350,10 @@
* condition with the earlyprintk handover mechanism.
*/
if (msm_hsl_port->pclk)
- clk_enable(msm_hsl_port->pclk);
+ clk_prepare_enable(msm_hsl_port->pclk);
ret = uart_add_one_port(&msm_hsl_uart_driver, port);
if (msm_hsl_port->pclk)
- clk_disable(msm_hsl_port->pclk);
+ clk_disable_unprepare(msm_hsl_port->pclk);
return ret;
}