瀏覽代碼

serial: ralink: adds support for the serial core found on ralink wisoc

The MIPS based Ralink WiSoC platform has 1 or more 8250 compatible serial cores.
To make them work we require the same quirks that are used by AU1x00.

Signed-off-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
John Crispin 13 年之前
父節點
當前提交
c420811f11
共有 3 個文件被更改,包括 12 次插入4 次删除
  1. 3 3
      drivers/tty/serial/8250/8250.c
  2. 8 0
      drivers/tty/serial/8250/Kconfig
  3. 1 1
      include/linux/serial_core.h

+ 3 - 3
drivers/tty/serial/8250/8250.c

@@ -317,9 +317,9 @@ static void default_serial_dl_write(struct uart_8250_port *up, int value)
 	serial_out(up, UART_DLM, value >> 8 & 0xff);
 	serial_out(up, UART_DLM, value >> 8 & 0xff);
 }
 }
 
 
-#ifdef CONFIG_MIPS_ALCHEMY
+#if defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_SERIAL_8250_RT288X)
 
 
-/* Au1x00 UART hardware has a weird register layout */
+/* Au1x00/RT288x UART hardware has a weird register layout */
 static const u8 au_io_in_map[] = {
 static const u8 au_io_in_map[] = {
 	[UART_RX]  = 0,
 	[UART_RX]  = 0,
 	[UART_IER] = 2,
 	[UART_IER] = 2,
@@ -440,7 +440,7 @@ static void set_io_from_upio(struct uart_port *p)
 		p->serial_out = mem32_serial_out;
 		p->serial_out = mem32_serial_out;
 		break;
 		break;
 
 
-#ifdef CONFIG_MIPS_ALCHEMY
+#if defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_SERIAL_8250_RT288X)
 	case UPIO_AU:
 	case UPIO_AU:
 		p->serial_in = au_serial_in;
 		p->serial_in = au_serial_in;
 		p->serial_out = au_serial_out;
 		p->serial_out = au_serial_out;

+ 8 - 0
drivers/tty/serial/8250/Kconfig

@@ -276,3 +276,11 @@ config SERIAL_8250_EM
 	  Selecting this option will add support for the integrated serial
 	  Selecting this option will add support for the integrated serial
 	  port hardware found on the Emma Mobile line of processors.
 	  port hardware found on the Emma Mobile line of processors.
 	  If unsure, say N.
 	  If unsure, say N.
+
+config SERIAL_8250_RT288X
+	bool "Ralink RT288x/RT305x/RT3662/RT3883 serial port support"
+	depends on SERIAL_8250 && (SOC_RT288X || SOC_RT305X || SOC_RT3883)
+	help
+	  If you have a Ralink RT288x/RT305x SoC based board and want to use the
+	  serial port, say Y to this option. The driver can handle up to 2 serial
+	  ports. If unsure, say N.

+ 1 - 1
include/linux/serial_core.h

@@ -134,7 +134,7 @@ struct uart_port {
 #define UPIO_HUB6		(1)
 #define UPIO_HUB6		(1)
 #define UPIO_MEM		(2)
 #define UPIO_MEM		(2)
 #define UPIO_MEM32		(3)
 #define UPIO_MEM32		(3)
-#define UPIO_AU			(4)			/* Au1x00 type IO */
+#define UPIO_AU			(4)			/* Au1x00 and RT288x type IO */
 #define UPIO_TSI		(5)			/* Tsi108/109 type IO */
 #define UPIO_TSI		(5)			/* Tsi108/109 type IO */
 
 
 	unsigned int		read_status_mask;	/* driver specific */
 	unsigned int		read_status_mask;	/* driver specific */