Index: linux-3.12.33-rt47-i386/drivers/tty/serial/Kconfig =================================================================== --- linux-3.12.33-rt47-i386.orig/drivers/tty/serial/Kconfig +++ linux-3.12.33-rt47-i386/drivers/tty/serial/Kconfig @@ -575,7 +575,7 @@ config SERIAL_IMX_CONSOLE config SERIAL_UARTLITE tristate "Xilinx uartlite serial port support" - depends on PPC32 || MICROBLAZE || MFD_TIMBERDALE || ARCH_ZYNQ + depends on X86 || PPC32 || MICROBLAZE || MFD_TIMBERDALE || ARCH_ZYNQ select SERIAL_CORE help Say Y here if you want to use the Xilinx uartlite serial controller. Index: linux-3.12.33-rt47-i386/drivers/tty/serial/uartlite.c =================================================================== --- linux-3.12.33-rt47-i386.orig/drivers/tty/serial/uartlite.c +++ linux-3.12.33-rt47-i386/drivers/tty/serial/uartlite.c @@ -57,6 +57,7 @@ #define ULITE_CONTROL_RST_RX 0x02 #define ULITE_CONTROL_IE 0x10 +#if 0 struct uartlite_reg_ops { u32 (*in)(void __iomem *addr); void (*out)(u32 val, void __iomem *addr); @@ -105,6 +106,17 @@ static inline void uart_out32(u32 val, u reg_ops->out(val, port->membase + offset); } +#else +static inline u32 uart_in32(u32 offset, struct uart_port *port) +{ + return readb(port->membase + offset); +} + +static inline void uart_out32(u32 val, u32 offset, struct uart_port *port) +{ + writeb(val,port->membase + offset); +} +#endif static struct uart_port ulite_ports[ULITE_NR_UARTS]; @@ -268,6 +280,8 @@ static int ulite_startup(struct uart_por if (ret) return ret; + ret = readb(port->membase + ULITE_STATUS); + uart_out32(ULITE_CONTROL_RST_RX | ULITE_CONTROL_RST_TX, ULITE_CONTROL, port); uart_out32(ULITE_CONTROL_IE, ULITE_CONTROL, port); @@ -329,7 +343,6 @@ static void ulite_release_port(struct ua static int ulite_request_port(struct uart_port *port) { - int ret; pr_debug("ulite console: port=%p; port->mapbase=%llx\n", port, (unsigned long long) port->mapbase); @@ -346,14 +359,18 @@ static int ulite_request_port(struct uar return -EBUSY; } + +#if 0 + int ret; port->private_data = &uartlite_be; ret = uart_in32(ULITE_CONTROL, port); uart_out32(ULITE_CONTROL_RST_TX, ULITE_CONTROL, port); ret = uart_in32(ULITE_STATUS, port); /* Endianess detection */ if ((ret & ULITE_STATUS_TXEMPTY) != ULITE_STATUS_TXEMPTY) - port->private_data = &uartlite_le; + port->private_data = &uartlite_le; +#endif return 0; } @@ -576,7 +593,7 @@ static int ulite_assign(struct device *d port->membase = NULL; port->ops = &ulite_ops; port->irq = irq; - port->flags = UPF_BOOT_AUTOCONF; + port->flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ; port->dev = dev; port->type = PORT_UNKNOWN; port->line = id;