mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-04-18 04:03:48 +00:00
[SERIAL] Make uart_port flags a bitwise type
Same reasoning as commit 747c8a5594
but this time we're making uart_port flags a bitwise type - not
all of these flags correspond with the old ASYNC_ flags, so there
is the possibility for bugs if the wrong ASYNC_* constants are
used. Always use UPF_* constants for uart_port->flags.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
27ae7a7435
commit
0077d45e46
3 changed files with 31 additions and 27 deletions
|
@ -332,7 +332,7 @@ uart_get_baud_rate(struct uart_port *port, struct termios *termios,
|
||||||
struct termios *old, unsigned int min, unsigned int max)
|
struct termios *old, unsigned int min, unsigned int max)
|
||||||
{
|
{
|
||||||
unsigned int try, baud, altbaud = 38400;
|
unsigned int try, baud, altbaud = 38400;
|
||||||
unsigned int flags = port->flags & UPF_SPD_MASK;
|
upf_t flags = port->flags & UPF_SPD_MASK;
|
||||||
|
|
||||||
if (flags == UPF_SPD_HI)
|
if (flags == UPF_SPD_HI)
|
||||||
altbaud = 57600;
|
altbaud = 57600;
|
||||||
|
@ -615,8 +615,9 @@ static int uart_set_info(struct uart_state *state,
|
||||||
struct serial_struct new_serial;
|
struct serial_struct new_serial;
|
||||||
struct uart_port *port = state->port;
|
struct uart_port *port = state->port;
|
||||||
unsigned long new_port;
|
unsigned long new_port;
|
||||||
unsigned int change_irq, change_port, old_flags, closing_wait;
|
unsigned int change_irq, change_port, closing_wait;
|
||||||
unsigned int old_custom_divisor, close_delay;
|
unsigned int old_custom_divisor, close_delay;
|
||||||
|
upf_t old_flags, new_flags;
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
|
||||||
if (copy_from_user(&new_serial, newinfo, sizeof(new_serial)))
|
if (copy_from_user(&new_serial, newinfo, sizeof(new_serial)))
|
||||||
|
@ -655,6 +656,7 @@ static int uart_set_info(struct uart_state *state,
|
||||||
new_serial.type != port->type;
|
new_serial.type != port->type;
|
||||||
|
|
||||||
old_flags = port->flags;
|
old_flags = port->flags;
|
||||||
|
new_flags = new_serial.flags;
|
||||||
old_custom_divisor = port->custom_divisor;
|
old_custom_divisor = port->custom_divisor;
|
||||||
|
|
||||||
if (!capable(CAP_SYS_ADMIN)) {
|
if (!capable(CAP_SYS_ADMIN)) {
|
||||||
|
@ -664,10 +666,10 @@ static int uart_set_info(struct uart_state *state,
|
||||||
(close_delay != state->close_delay) ||
|
(close_delay != state->close_delay) ||
|
||||||
(closing_wait != state->closing_wait) ||
|
(closing_wait != state->closing_wait) ||
|
||||||
(new_serial.xmit_fifo_size != port->fifosize) ||
|
(new_serial.xmit_fifo_size != port->fifosize) ||
|
||||||
(((new_serial.flags ^ old_flags) & ~UPF_USR_MASK) != 0))
|
(((new_flags ^ old_flags) & ~UPF_USR_MASK) != 0))
|
||||||
goto exit;
|
goto exit;
|
||||||
port->flags = ((port->flags & ~UPF_USR_MASK) |
|
port->flags = ((port->flags & ~UPF_USR_MASK) |
|
||||||
(new_serial.flags & UPF_USR_MASK));
|
(new_flags & UPF_USR_MASK));
|
||||||
port->custom_divisor = new_serial.custom_divisor;
|
port->custom_divisor = new_serial.custom_divisor;
|
||||||
goto check_and_exit;
|
goto check_and_exit;
|
||||||
}
|
}
|
||||||
|
@ -764,7 +766,7 @@ static int uart_set_info(struct uart_state *state,
|
||||||
port->irq = new_serial.irq;
|
port->irq = new_serial.irq;
|
||||||
port->uartclk = new_serial.baud_base * 16;
|
port->uartclk = new_serial.baud_base * 16;
|
||||||
port->flags = (port->flags & ~UPF_CHANGE_MASK) |
|
port->flags = (port->flags & ~UPF_CHANGE_MASK) |
|
||||||
(new_serial.flags & UPF_CHANGE_MASK);
|
(new_flags & UPF_CHANGE_MASK);
|
||||||
port->custom_divisor = new_serial.custom_divisor;
|
port->custom_divisor = new_serial.custom_divisor;
|
||||||
state->close_delay = close_delay;
|
state->close_delay = close_delay;
|
||||||
state->closing_wait = closing_wait;
|
state->closing_wait = closing_wait;
|
||||||
|
|
|
@ -26,7 +26,7 @@ struct plat_serial8250_port {
|
||||||
unsigned char regshift; /* register shift */
|
unsigned char regshift; /* register shift */
|
||||||
unsigned char iotype; /* UPIO_* */
|
unsigned char iotype; /* UPIO_* */
|
||||||
unsigned char hub6;
|
unsigned char hub6;
|
||||||
unsigned int flags; /* UPF_* flags */
|
upf_t flags; /* UPF_* flags */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -203,6 +203,8 @@ struct uart_icount {
|
||||||
__u32 buf_overrun;
|
__u32 buf_overrun;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef unsigned int __bitwise__ upf_t;
|
||||||
|
|
||||||
struct uart_port {
|
struct uart_port {
|
||||||
spinlock_t lock; /* port lock */
|
spinlock_t lock; /* port lock */
|
||||||
unsigned int iobase; /* in/out[bwl] */
|
unsigned int iobase; /* in/out[bwl] */
|
||||||
|
@ -230,29 +232,29 @@ struct uart_port {
|
||||||
unsigned long sysrq; /* sysrq timeout */
|
unsigned long sysrq; /* sysrq timeout */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
unsigned int flags;
|
upf_t flags;
|
||||||
|
|
||||||
#define UPF_FOURPORT (1 << 1)
|
#define UPF_FOURPORT ((__force upf_t) (1 << 1))
|
||||||
#define UPF_SAK (1 << 2)
|
#define UPF_SAK ((__force upf_t) (1 << 2))
|
||||||
#define UPF_SPD_MASK (0x1030)
|
#define UPF_SPD_MASK ((__force upf_t) (0x1030))
|
||||||
#define UPF_SPD_HI (0x0010)
|
#define UPF_SPD_HI ((__force upf_t) (0x0010))
|
||||||
#define UPF_SPD_VHI (0x0020)
|
#define UPF_SPD_VHI ((__force upf_t) (0x0020))
|
||||||
#define UPF_SPD_CUST (0x0030)
|
#define UPF_SPD_CUST ((__force upf_t) (0x0030))
|
||||||
#define UPF_SPD_SHI (0x1000)
|
#define UPF_SPD_SHI ((__force upf_t) (0x1000))
|
||||||
#define UPF_SPD_WARP (0x1010)
|
#define UPF_SPD_WARP ((__force upf_t) (0x1010))
|
||||||
#define UPF_SKIP_TEST (1 << 6)
|
#define UPF_SKIP_TEST ((__force upf_t) (1 << 6))
|
||||||
#define UPF_AUTO_IRQ (1 << 7)
|
#define UPF_AUTO_IRQ ((__force upf_t) (1 << 7))
|
||||||
#define UPF_HARDPPS_CD (1 << 11)
|
#define UPF_HARDPPS_CD ((__force upf_t) (1 << 11))
|
||||||
#define UPF_LOW_LATENCY (1 << 13)
|
#define UPF_LOW_LATENCY ((__force upf_t) (1 << 13))
|
||||||
#define UPF_BUGGY_UART (1 << 14)
|
#define UPF_BUGGY_UART ((__force upf_t) (1 << 14))
|
||||||
#define UPF_MAGIC_MULTIPLIER (1 << 16)
|
#define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16))
|
||||||
#define UPF_CONS_FLOW (1 << 23)
|
#define UPF_CONS_FLOW ((__force upf_t) (1 << 23))
|
||||||
#define UPF_SHARE_IRQ (1 << 24)
|
#define UPF_SHARE_IRQ ((__force upf_t) (1 << 24))
|
||||||
#define UPF_BOOT_AUTOCONF (1 << 28)
|
#define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28))
|
||||||
#define UPF_IOREMAP (1 << 31)
|
#define UPF_IOREMAP ((__force upf_t) (1 << 31))
|
||||||
|
|
||||||
#define UPF_CHANGE_MASK (0x17fff)
|
#define UPF_CHANGE_MASK ((__force upf_t) (0x17fff))
|
||||||
#define UPF_USR_MASK (UPF_SPD_MASK|UPF_LOW_LATENCY)
|
#define UPF_USR_MASK ((__force upf_t) (UPF_SPD_MASK|UPF_LOW_LATENCY))
|
||||||
|
|
||||||
unsigned int mctrl; /* current modem ctrl settings */
|
unsigned int mctrl; /* current modem ctrl settings */
|
||||||
unsigned int timeout; /* character-based timeout */
|
unsigned int timeout; /* character-based timeout */
|
||||||
|
|
Loading…
Add table
Reference in a new issue