serial: core: Add big-endian iotype
authorKevin Cernekee <cernekee@gmail.com>
Wed, 12 Nov 2014 20:53:59 +0000 (12:53 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Nov 2014 01:06:40 +0000 (17:06 -0800)
Since most drivers interpret UPIO_MEM32 to mean "little-endian" and use
readl/writel to access the registers, add a parallel UPIO_MEM32BE to
request the use of big-endian MMIO accessors (ioread32be/iowrite32be).

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial_core.c
include/linux/serial_core.h

index 5c8b8f50f7876a421cd445e849235f0f1179ebee..57ca61b14670f1a540c3f82a24328a390edcfb3c 100644 (file)
@@ -2153,6 +2153,7 @@ uart_report_port(struct uart_driver *drv, struct uart_port *port)
                break;
        case UPIO_MEM:
        case UPIO_MEM32:
+       case UPIO_MEM32BE:
        case UPIO_AU:
        case UPIO_TSI:
                snprintf(address, sizeof(address),
@@ -2796,6 +2797,7 @@ int uart_match_port(struct uart_port *port1, struct uart_port *port2)
                       (port1->hub6   == port2->hub6);
        case UPIO_MEM:
        case UPIO_MEM32:
+       case UPIO_MEM32BE:
        case UPIO_AU:
        case UPIO_TSI:
                return (port1->mapbase == port2->mapbase);
index 3231a43f6acf09fc12f73e352e1aa3f7a2f1898d..057038cf27880d34a17e428fb51baccf563692c2 100644 (file)
@@ -142,12 +142,13 @@ struct uart_port {
        unsigned char           iotype;                 /* io access style */
        unsigned char           unused1;
 
-#define UPIO_PORT              (0)
-#define UPIO_HUB6              (1)
-#define UPIO_MEM               (2)
-#define UPIO_MEM32             (3)
-#define UPIO_AU                        (4)                     /* Au1x00 and RT288x type IO */
-#define UPIO_TSI               (5)                     /* Tsi108/109 type IO */
+#define UPIO_PORT              (0)                     /* 8b I/O port access */
+#define UPIO_HUB6              (1)                     /* Hub6 ISA card */
+#define UPIO_MEM               (2)                     /* 8b MMIO access */
+#define UPIO_MEM32             (3)                     /* 32b little endian */
+#define UPIO_MEM32BE           (4)                     /* 32b big endian */
+#define UPIO_AU                        (5)                     /* Au1x00 and RT288x type IO */
+#define UPIO_TSI               (6)                     /* Tsi108/109 type IO */
 
        unsigned int            read_status_mask;       /* driver specific */
        unsigned int            ignore_status_mask;     /* driver specific */