On 02/24/2015 12:01 PM, Peter Hurley wrote: > ioctl(TIOCGSERIAL|TIOCSSERIAL) report and can change the port->iotype. > UART drivers use the UPIO_* definitions, but the uapi header defines > parallel values and userspace uses these parallel values for ioctls; > thus the userspace values are definitive. > > Define UPIO_* iotypes in terms of the uapi defines, SERIAL_IO_*; > extend the uapi defines to include all values in use by the serial > core. Greg, Please don't apply this patch. I'll resend it after I fix up the userspace breakage introduced by: commit 3ffb1a8193bead7bf4ef0fec2dae050c70e4c1c1 Author: Kevin Cernekee <cernekee@xxxxxxxxx> Date: Wed Nov 12 12:53:59 2014 -0800 serial: core: Add big-endian iotype 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). The patch above re-numbers userspace-dependent values. Regards, Peter Hurley > Signed-off-by: Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> > --- > include/linux/serial_core.h | 14 +++++++------- > include/uapi/linux/serial.h | 4 ++++ > 2 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h > index a3fd182..a04acb7 100644 > --- a/include/linux/serial_core.h > +++ b/include/linux/serial_core.h > @@ -143,13 +143,13 @@ struct uart_port { > unsigned char iotype; /* io access style */ > unsigned char unused1; > > -#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 */ > +#define UPIO_PORT (SERIAL_IO_PORT) /* 8b I/O port access */ > +#define UPIO_HUB6 (SERIAL_IO_HUB6) /* Hub6 ISA card */ > +#define UPIO_MEM (SERIAL_IO_MEM) /* 8b MMIO access */ > +#define UPIO_MEM32 (SERIAL_IO_MEM32) /* 32b little endian */ > +#define UPIO_MEM32BE (SERIAL_IO_MEM32BE) /* 32b big endian */ > +#define UPIO_AU (SERIAL_IO_AU) /* Au1x00 and RT288x type IO */ > +#define UPIO_TSI (SERIAL_IO_TSI) /* Tsi108/109 type IO */ > > unsigned int read_status_mask; /* driver specific */ > unsigned int ignore_status_mask; /* driver specific */ > diff --git a/include/uapi/linux/serial.h b/include/uapi/linux/serial.h > index 5e0d0ed..99ef1ab 100644 > --- a/include/uapi/linux/serial.h > +++ b/include/uapi/linux/serial.h > @@ -65,6 +65,10 @@ struct serial_struct { > #define SERIAL_IO_PORT 0 > #define SERIAL_IO_HUB6 1 > #define SERIAL_IO_MEM 2 > +#define SERIAL_IO_MEM32 3 > +#define SERIAL_IO_MEM32BE 4 > +#define SERIAL_IO_AU 5 > +#define SERIAL_IO_TSI 6 > > #define UART_CLEAR_FIFO 0x01 > #define UART_USE_FIFO 0x02 > -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html