#include <asm/io.h>
#include <asm/irq.h>
#include <asm/hardware/amba.h>
-#include <asm/hardware/clock.h>
#if defined(CONFIG_SERIAL_AMBA_PL011_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
*/
struct uart_amba_port {
struct uart_port port;
- struct clk *clk;
unsigned int im; /* interrupt mask */
unsigned int old_status;
};
unsigned int cr;
int retval;
- /*
- * Try to enable the clock producer.
- */
- retval = clk_enable(uap->clk);
- if (retval)
- goto out;
-
/*
* Allocate the IRQ
*/
retval = request_irq(uap->port.irq, pl011_int, 0, "uart-pl011", uap);
if (retval)
- goto clk_dis;
+ goto out;
writew(UART011_IFLS_RX4_8|UART011_IFLS_TX4_8,
uap->port.membase + UART011_IFLS);
return 0;
- clk_dis:
- clk_disable(uap->clk);
out:
return retval;
}
val = readw(uap->port.membase + UART011_LCRH);
val &= ~(UART01x_LCRH_BRK | UART01x_LCRH_FEN);
writew(val, uap->port.membase + UART011_LCRH);
-
- /*
- * Shut down the clock producer
- */
- clk_disable(uap->clk);
}
static void
co->index = 0;
uap = amba_ports[co->index];
- ret = clk_enable(uap->clk);
- if (ret)
- return ret;
-
if (options)
uart_parse_options(options, &baud, &parity, &bits, &flow);
else
}
memset(uap, 0, sizeof(struct uart_amba_port));
- uap->clk = clk_get(&dev->dev, "UARTCLK");
- if (IS_ERR(uap->clk)) {
- ret = PTR_ERR(uap->clk);
- goto unmap;
- }
-
uap->port.dev = &dev->dev;
uap->port.mapbase = dev->res.start;
uap->port.membase = base;
uap->port.iotype = UPIO_MEM;
uap->port.irq = dev->irq[0];
- uap->port.uartclk = clk_get_rate(uap->clk);
+#if 0 /* FIXME */
+ uap->port.uartclk = 14745600;
+#else
+ uap->port.uartclk = 24000000;
+#endif
uap->port.fifosize = 16;
uap->port.ops = &amba_pl011_pops;
uap->port.flags = UPF_BOOT_AUTOCONF;
if (ret) {
amba_set_drvdata(dev, NULL);
amba_ports[i] = NULL;
- clk_put(uap->clk);
- unmap:
iounmap(base);
free:
kfree(uap);
amba_ports[i] = NULL;
iounmap(uap->port.membase);
- clk_put(uap->clk);
kfree(uap);
return 0;
}