serial: samsung: enable clock before clearing pending interrupts during init
Ensure that the uart controller clock is enabled prior to writing to the interrupt mask and pending registers in the s3c24xx_serial_init_port function. Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bff09b099b
commit
60e9357547
@ -1166,6 +1166,18 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
|
|||||||
ourport->tx_irq = ret;
|
ourport->tx_irq = ret;
|
||||||
|
|
||||||
ourport->clk = clk_get(&platdev->dev, "uart");
|
ourport->clk = clk_get(&platdev->dev, "uart");
|
||||||
|
if (IS_ERR(ourport->clk)) {
|
||||||
|
pr_err("%s: Controller clock not found\n",
|
||||||
|
dev_name(&platdev->dev));
|
||||||
|
return PTR_ERR(ourport->clk);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = clk_prepare_enable(ourport->clk);
|
||||||
|
if (ret) {
|
||||||
|
pr_err("uart: clock failed to prepare+enable: %d\n", ret);
|
||||||
|
clk_put(ourport->clk);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Keep all interrupts masked and cleared */
|
/* Keep all interrupts masked and cleared */
|
||||||
if (s3c24xx_serial_has_interrupt_mask(port)) {
|
if (s3c24xx_serial_has_interrupt_mask(port)) {
|
||||||
@ -1180,6 +1192,7 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
|
|||||||
|
|
||||||
/* reset the fifos (and setup the uart) */
|
/* reset the fifos (and setup the uart) */
|
||||||
s3c24xx_serial_resetport(port, cfg);
|
s3c24xx_serial_resetport(port, cfg);
|
||||||
|
clk_disable_unprepare(ourport->clk);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user