diff options
Diffstat (limited to 'drivers/serial/serial_zynq.c')
| -rw-r--r-- | drivers/serial/serial_zynq.c | 33 | 
1 files changed, 15 insertions, 18 deletions
| diff --git a/drivers/serial/serial_zynq.c b/drivers/serial/serial_zynq.c index ff28f3c80..22c6bf099 100644 --- a/drivers/serial/serial_zynq.c +++ b/drivers/serial/serial_zynq.c @@ -10,6 +10,8 @@  #include <asm/io.h>  #include <linux/compiler.h>  #include <serial.h> +#include <asm/arch/clk.h> +#include <asm/arch/hardware.h>  #define ZYNQ_UART_SR_TXFULL	0x00000010 /* TX FIFO full */  #define ZYNQ_UART_SR_RXEMPTY	0x00000002 /* RX FIFO empty */ @@ -33,28 +35,24 @@ struct uart_zynq {  };  static struct uart_zynq *uart_zynq_ports[2] = { -#ifdef CONFIG_ZYNQ_SERIAL_BASEADDR0 -	[0] = (struct uart_zynq *)CONFIG_ZYNQ_SERIAL_BASEADDR0, +	[0] = (struct uart_zynq *)ZYNQ_SERIAL_BASEADDR0, +	[1] = (struct uart_zynq *)ZYNQ_SERIAL_BASEADDR1, +}; + +#if !defined(CONFIG_ZYNQ_SERIAL_BAUDRATE0) +# define CONFIG_ZYNQ_SERIAL_BAUDRATE0	CONFIG_BAUDRATE  #endif -#ifdef CONFIG_ZYNQ_SERIAL_BASEADDR1 -	[1] = (struct uart_zynq *)CONFIG_ZYNQ_SERIAL_BASEADDR1, +#if !defined(CONFIG_ZYNQ_SERIAL_BAUDRATE1) +# define CONFIG_ZYNQ_SERIAL_BAUDRATE1	CONFIG_BAUDRATE  #endif -};  struct uart_zynq_params {  	u32 baudrate; -	u32 clock;  };  static struct uart_zynq_params uart_zynq_ports_param[2] = { -#if defined(CONFIG_ZYNQ_SERIAL_BAUDRATE0) && defined(CONFIG_ZYNQ_SERIAL_CLOCK0)  	[0].baudrate = CONFIG_ZYNQ_SERIAL_BAUDRATE0, -	[0].clock = CONFIG_ZYNQ_SERIAL_CLOCK0, -#endif -#if defined(CONFIG_ZYNQ_SERIAL_BAUDRATE1) && defined(CONFIG_ZYNQ_SERIAL_CLOCK1)  	[1].baudrate = CONFIG_ZYNQ_SERIAL_BAUDRATE1, -	[1].clock = CONFIG_ZYNQ_SERIAL_CLOCK1, -#endif  };  /* Set up the baud rate in gd struct */ @@ -64,7 +62,7 @@ static void uart_zynq_serial_setbrg(const int port)  	unsigned int calc_bauderror, bdiv, bgen;  	unsigned long calc_baud = 0;  	unsigned long baud = uart_zynq_ports_param[port].baudrate; -	unsigned long clock = uart_zynq_ports_param[port].clock; +	unsigned long clock = get_uart_clk(port);  	struct uart_zynq *regs = uart_zynq_ports[port];  	/*                master clock @@ -186,20 +184,19 @@ struct serial_device uart_zynq_serial1_device =  __weak struct serial_device *default_serial_console(void)  { +#if defined(CONFIG_ZYNQ_SERIAL_UART0)  	if (uart_zynq_ports[0])  		return &uart_zynq_serial0_device; +#endif +#if defined(CONFIG_ZYNQ_SERIAL_UART1)  	if (uart_zynq_ports[1])  		return &uart_zynq_serial1_device; - +#endif  	return NULL;  }  void zynq_serial_initalize(void)  { -#ifdef CONFIG_ZYNQ_SERIAL_BASEADDR0  	serial_register(&uart_zynq_serial0_device); -#endif -#ifdef CONFIG_ZYNQ_SERIAL_BASEADDR1  	serial_register(&uart_zynq_serial1_device); -#endif  } |