mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
serial: move delta_msr_wait into the tty_port
This is used by various drivers not just serial and can be extracted as commonality Signed-off-by: Alan Cox <[email protected]>
This commit is contained in:
parent
a2bceae065
commit
bdc04e3174
32 changed files with 54 additions and 54 deletions
|
|
@ -1510,7 +1510,7 @@ static unsigned int check_modem_status(struct uart_8250_port *up)
|
|||
if (status & UART_MSR_DCTS)
|
||||
uart_handle_cts_change(&up->port, status & UART_MSR_CTS);
|
||||
|
||||
wake_up_interruptible(&up->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&up->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
return status;
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ static void pl010_modem_status(struct uart_amba_port *uap)
|
|||
if (delta & UART01x_FR_CTS)
|
||||
uart_handle_cts_change(&uap->port, status & UART01x_FR_CTS);
|
||||
|
||||
wake_up_interruptible(&uap->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&uap->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static irqreturn_t pl010_int(int irq, void *dev_id)
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ static void pl011_modem_status(struct uart_amba_port *uap)
|
|||
if (delta & UART01x_FR_CTS)
|
||||
uart_handle_cts_change(&uap->port, status & UART01x_FR_CTS);
|
||||
|
||||
wake_up_interruptible(&uap->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&uap->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static irqreturn_t pl011_int(int irq, void *dev_id)
|
||||
|
|
|
|||
|
|
@ -776,7 +776,7 @@ static void atmel_tasklet_func(unsigned long data)
|
|||
if (status_change & ATMEL_US_CTS)
|
||||
uart_handle_cts_change(port, !(status & ATMEL_US_CTS));
|
||||
|
||||
wake_up_interruptible(&port->state->delta_msr_wait);
|
||||
wake_up_interruptible(&port->state->port.delta_msr_wait);
|
||||
|
||||
atmel_port->irq_status_prev = status;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -695,7 +695,7 @@ static inline void check_modem_status(struct icom_port *icom_port)
|
|||
delta_status & ICOM_CTS);
|
||||
|
||||
wake_up_interruptible(&icom_port->uart_port.state->
|
||||
delta_msr_wait);
|
||||
port.delta_msr_wait);
|
||||
old_status = status;
|
||||
}
|
||||
spin_unlock(&icom_port->uart_port.lock);
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ static void imx_mctrl_check(struct imx_port *sport)
|
|||
if (changed & TIOCM_CTS)
|
||||
uart_handle_cts_change(&sport->port, status & TIOCM_CTS);
|
||||
|
||||
wake_up_interruptible(&sport->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&sport->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -388,7 +388,7 @@ static irqreturn_t imx_rtsint(int irq, void *dev_id)
|
|||
|
||||
writel(USR1_RTSD, sport->port.membase + USR1);
|
||||
uart_handle_cts_change(&sport->port, !!val);
|
||||
wake_up_interruptible(&sport->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&sport->port.state->port.delta_msr_wait);
|
||||
|
||||
spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||
return IRQ_HANDLED;
|
||||
|
|
|
|||
|
|
@ -1287,7 +1287,7 @@ static inline int do_read(struct uart_port *the_port, char *buf, int len)
|
|||
(port->ip_port, 0);
|
||||
wake_up_interruptible
|
||||
(&the_port->state->
|
||||
delta_msr_wait);
|
||||
port.delta_msr_wait);
|
||||
}
|
||||
|
||||
/* If we had any data to return, we
|
||||
|
|
@ -1491,7 +1491,7 @@ ioc3uart_intr_one(struct ioc3_submodule *is,
|
|||
uart_handle_dcd_change(the_port,
|
||||
shadow & SHADOW_DCD);
|
||||
wake_up_interruptible
|
||||
(&the_port->state->delta_msr_wait);
|
||||
(&the_port->state->port.delta_msr_wait);
|
||||
} else if ((port->ip_notify & N_DDCD)
|
||||
&& !(shadow & SHADOW_DCD)) {
|
||||
/* Flag delta DCD/no DCD */
|
||||
|
|
@ -1511,7 +1511,7 @@ ioc3uart_intr_one(struct ioc3_submodule *is,
|
|||
uart_handle_cts_change(the_port, shadow
|
||||
& SHADOW_CTS);
|
||||
wake_up_interruptible
|
||||
(&the_port->state->delta_msr_wait);
|
||||
(&the_port->state->port.delta_msr_wait);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1728,7 +1728,7 @@ static void ic3_shutdown(struct uart_port *the_port)
|
|||
return;
|
||||
|
||||
state = the_port->state;
|
||||
wake_up_interruptible(&state->delta_msr_wait);
|
||||
wake_up_interruptible(&state->port.delta_msr_wait);
|
||||
|
||||
spin_lock_irqsave(&the_port->lock, port_flags);
|
||||
set_notification(port, N_ALL, 0);
|
||||
|
|
|
|||
|
|
@ -1882,7 +1882,7 @@ static void handle_intr(void *arg, uint32_t sio_ir)
|
|||
the_port = port->ip_port;
|
||||
the_port->icount.dcd = 1;
|
||||
wake_up_interruptible
|
||||
(&the_port->state->delta_msr_wait);
|
||||
(&the_port->state->port.delta_msr_wait);
|
||||
} else if ((port->ip_notify & N_DDCD)
|
||||
&& !(shadow & IOC4_SHADOW_DCD)) {
|
||||
/* Flag delta DCD/no DCD */
|
||||
|
|
@ -1904,7 +1904,7 @@ static void handle_intr(void *arg, uint32_t sio_ir)
|
|||
the_port->icount.cts =
|
||||
(shadow & IOC4_SHADOW_CTS) ? 1 : 0;
|
||||
wake_up_interruptible
|
||||
(&the_port->state->delta_msr_wait);
|
||||
(&the_port->state->port.delta_msr_wait);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2237,7 +2237,7 @@ static inline int do_read(struct uart_port *the_port, unsigned char *buf,
|
|||
the_port->icount.dcd = 0;
|
||||
wake_up_interruptible
|
||||
(&the_port->state->
|
||||
delta_msr_wait);
|
||||
port.delta_msr_wait);
|
||||
}
|
||||
|
||||
/* If we had any data to return, we
|
||||
|
|
@ -2439,7 +2439,7 @@ static void ic4_shutdown(struct uart_port *the_port)
|
|||
state = the_port->state;
|
||||
port->ip_port = NULL;
|
||||
|
||||
wake_up_interruptible(&state->delta_msr_wait);
|
||||
wake_up_interruptible(&state->port.delta_msr_wait);
|
||||
|
||||
if (state->port.tty)
|
||||
set_bit(TTY_IO_ERROR, &state->port.tty->flags);
|
||||
|
|
|
|||
|
|
@ -354,7 +354,7 @@ static void ip22zilog_status_handle(struct uart_ip22zilog_port *up,
|
|||
uart_handle_cts_change(&up->port,
|
||||
(status & CTS));
|
||||
|
||||
wake_up_interruptible(&up->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&up->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
up->prev_status = status;
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ static void handle_delta_cts(struct uart_port *port)
|
|||
{
|
||||
msm_write(port, UART_CR_CMD_RESET_CTS, UART_CR);
|
||||
port->icount.cts++;
|
||||
wake_up_interruptible(&port->state->delta_msr_wait);
|
||||
wake_up_interruptible(&port->state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static irqreturn_t msm_irq(int irq, void *dev_id)
|
||||
|
|
|
|||
|
|
@ -369,7 +369,7 @@ static void pmz_status_handle(struct uart_pmac_port *uap)
|
|||
uart_handle_cts_change(&uap->port,
|
||||
!(status & CTS));
|
||||
|
||||
wake_up_interruptible(&uap->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&uap->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
if (status & BRK_ABRT)
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ static void pnx8xxx_mctrl_check(struct pnx8xxx_port *sport)
|
|||
if (changed & TIOCM_CTS)
|
||||
uart_handle_cts_change(&sport->port, status & TIOCM_CTS);
|
||||
|
||||
wake_up_interruptible(&sport->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&sport->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ static inline void check_modem_status(struct uart_pxa_port *up)
|
|||
if (status & UART_MSR_DCTS)
|
||||
uart_handle_cts_change(&up->port, status & UART_MSR_CTS);
|
||||
|
||||
wake_up_interruptible(&up->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&up->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ static void sa1100_mctrl_check(struct sa1100_port *sport)
|
|||
if (changed & TIOCM_CTS)
|
||||
uart_handle_cts_change(&sport->port, status & TIOCM_CTS);
|
||||
|
||||
wake_up_interruptible(&sport->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&sport->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -440,7 +440,7 @@ static void sbd_status_handle(struct sbd_port *sport)
|
|||
|
||||
if (delta & ((M_DUART_IN_PIN2_VAL | M_DUART_IN_PIN0_VAL) <<
|
||||
S_DUART_IN_PIN_CHNG))
|
||||
wake_up_interruptible(&uport->state->delta_msr_wait);
|
||||
wake_up_interruptible(&uport->state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static irqreturn_t sbd_interrupt(int irq, void *dev_id)
|
||||
|
|
|
|||
|
|
@ -215,7 +215,8 @@ static int uart_startup(struct uart_state *state, int init_hw)
|
|||
static void uart_shutdown(struct uart_state *state)
|
||||
{
|
||||
struct uart_port *uport = state->uart_port;
|
||||
struct tty_struct *tty = state->port.tty;
|
||||
struct tty_port *port = &state->port;
|
||||
struct tty_struct *tty = port->tty;
|
||||
|
||||
/*
|
||||
* Set the TTY IO error marker
|
||||
|
|
@ -223,7 +224,7 @@ static void uart_shutdown(struct uart_state *state)
|
|||
if (tty)
|
||||
set_bit(TTY_IO_ERROR, &tty->flags);
|
||||
|
||||
if (test_and_clear_bit(ASYNCB_INITIALIZED, &state->port.flags)) {
|
||||
if (test_and_clear_bit(ASYNCB_INITIALIZED, &port->flags)) {
|
||||
/*
|
||||
* Turn off DTR and RTS early.
|
||||
*/
|
||||
|
|
@ -237,7 +238,7 @@ static void uart_shutdown(struct uart_state *state)
|
|||
* any outstanding file descriptors should be pointing at
|
||||
* hung_up_tty_fops now.
|
||||
*/
|
||||
wake_up_interruptible(&state->delta_msr_wait);
|
||||
wake_up_interruptible(&port->delta_msr_wait);
|
||||
|
||||
/*
|
||||
* Free the IRQ and disable the port.
|
||||
|
|
@ -1004,11 +1005,15 @@ static int uart_do_autoconfig(struct uart_state *state)
|
|||
* - mask passed in arg for lines of interest
|
||||
* (use |'ed TIOCM_RNG/DSR/CD/CTS for masking)
|
||||
* Caller should use TIOCGICOUNT to see which one it was
|
||||
*
|
||||
* FIXME: This wants extracting into a common all driver implementation
|
||||
* of TIOCMWAIT using tty_port.
|
||||
*/
|
||||
static int
|
||||
uart_wait_modem_status(struct uart_state *state, unsigned long arg)
|
||||
{
|
||||
struct uart_port *uport = state->uart_port;
|
||||
struct tty_port *port = &state->port;
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
struct uart_icount cprev, cnow;
|
||||
int ret;
|
||||
|
|
@ -1025,7 +1030,7 @@ uart_wait_modem_status(struct uart_state *state, unsigned long arg)
|
|||
uport->ops->enable_ms(uport);
|
||||
spin_unlock_irq(&uport->lock);
|
||||
|
||||
add_wait_queue(&state->delta_msr_wait, &wait);
|
||||
add_wait_queue(&port->delta_msr_wait, &wait);
|
||||
for (;;) {
|
||||
spin_lock_irq(&uport->lock);
|
||||
memcpy(&cnow, &uport->icount, sizeof(struct uart_icount));
|
||||
|
|
@ -1053,7 +1058,7 @@ uart_wait_modem_status(struct uart_state *state, unsigned long arg)
|
|||
}
|
||||
|
||||
current->state = TASK_RUNNING;
|
||||
remove_wait_queue(&state->delta_msr_wait, &wait);
|
||||
remove_wait_queue(&port->delta_msr_wait, &wait);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1430,7 +1435,7 @@ static void uart_hangup(struct tty_struct *tty)
|
|||
clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags);
|
||||
port->tty = NULL;
|
||||
wake_up_interruptible(&port->open_wait);
|
||||
wake_up_interruptible(&state->delta_msr_wait);
|
||||
wake_up_interruptible(&port->delta_msr_wait);
|
||||
}
|
||||
mutex_unlock(&port->mutex);
|
||||
}
|
||||
|
|
@ -2378,7 +2383,6 @@ int uart_register_driver(struct uart_driver *drv)
|
|||
tty_port_init(port);
|
||||
port->close_delay = 500; /* .5 seconds */
|
||||
port->closing_wait = 30000; /* 30 seconds */
|
||||
init_waitqueue_head(&state->delta_msr_wait);
|
||||
tasklet_init(&state->tlet, uart_tasklet_action,
|
||||
(unsigned long)state);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ static irqreturn_t ks8695uart_modem_status(int irq, void *dev_id)
|
|||
if (status & URMS_URTERI)
|
||||
port->icount.rng++;
|
||||
|
||||
wake_up_interruptible(&port->state->delta_msr_wait);
|
||||
wake_up_interruptible(&port->state->port.delta_msr_wait);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ static void lh7a40xuart_modem_status (struct uart_port* port)
|
|||
if (delta & CTS)
|
||||
uart_handle_cts_change (port, status & CTS);
|
||||
|
||||
wake_up_interruptible (&port->state->delta_msr_wait);
|
||||
wake_up_interruptible (&port->state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static irqreturn_t lh7a40xuart_int (int irq, void* dev_id)
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ static void check_status(struct uart_sunsab_port *up,
|
|||
up->port.icount.dsr++;
|
||||
}
|
||||
|
||||
wake_up_interruptible(&up->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&up->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static irqreturn_t sunsab_interrupt(int irq, void *dev_id)
|
||||
|
|
|
|||
|
|
@ -441,7 +441,7 @@ static void check_modem_status(struct uart_sunsu_port *up)
|
|||
if (status & UART_MSR_DCTS)
|
||||
uart_handle_cts_change(&up->port, status & UART_MSR_CTS);
|
||||
|
||||
wake_up_interruptible(&up->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&up->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id)
|
||||
|
|
|
|||
|
|
@ -451,7 +451,7 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up,
|
|||
uart_handle_cts_change(&up->port,
|
||||
(status & CTS));
|
||||
|
||||
wake_up_interruptible(&up->port.state->delta_msr_wait);
|
||||
wake_up_interruptible(&up->port.state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
up->prev_status = status;
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ static void timbuart_mctrl_check(struct uart_port *port, u32 isr, u32 *ier)
|
|||
iowrite32(CTS_DELTA, port->membase + TIMBUART_ISR);
|
||||
cts = timbuart_get_mctrl(port);
|
||||
uart_handle_cts_change(port, cts & TIOCM_CTS);
|
||||
wake_up_interruptible(&port->state->delta_msr_wait);
|
||||
wake_up_interruptible(&port->state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
*ier |= CTS_DELTA;
|
||||
|
|
|
|||
|
|
@ -386,7 +386,7 @@ static inline void check_modem_status(struct uart_port *port)
|
|||
if (msr & UART_MSR_DCTS)
|
||||
uart_handle_cts_change(port, msr & UART_MSR_CTS);
|
||||
|
||||
wake_up_interruptible(&port->state->delta_msr_wait);
|
||||
wake_up_interruptible(&port->state->port.delta_msr_wait);
|
||||
}
|
||||
|
||||
static inline void transmit_chars(struct uart_port *port)
|
||||
|
|
|
|||
|
|
@ -686,7 +686,7 @@ static void zs_status_handle(struct zs_port *zport, struct zs_port *zport_a)
|
|||
uport->icount.rng++;
|
||||
|
||||
if (delta)
|
||||
wake_up_interruptible(&uport->state->delta_msr_wait);
|
||||
wake_up_interruptible(&uport->state->port.delta_msr_wait);
|
||||
|
||||
spin_lock(&scc->zlock);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue