diff options
| author | Alan Cox <alan@linux.intel.com> | 2009-09-19 13:13:31 -0700 | 
|---|---|---|
| committer | Live-CD User <linux@linux.site> | 2009-09-19 13:13:31 -0700 | 
| commit | bdc04e3174e18f475289fa8f4144f66686326b7e (patch) | |
| tree | c0bf03c8d6df1629bfa26b686fe65ffb0c87aeb7 | |
| parent | a2bceae065ed8c4f552b35c4dde4cc2db05ce9e3 (diff) | |
| download | olio-linux-3.10-bdc04e3174e18f475289fa8f4144f66686326b7e.tar.xz olio-linux-3.10-bdc04e3174e18f475289fa8f4144f66686326b7e.zip  | |
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 <alan@linux.intel.com>
32 files changed, 54 insertions, 54 deletions
diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c index 70bd61b2a7d..df5038bbcbc 100644 --- a/drivers/char/cyclades.c +++ b/drivers/char/cyclades.c @@ -729,7 +729,7 @@ static void cyy_chip_modem(struct cyclades_card *cinfo, int chip,  		if (mdm_change & CyRI)  			info->icount.rng++; -		wake_up_interruptible(&info->delta_msr_wait); +		wake_up_interruptible(&info->port.delta_msr_wait);  	}  	if ((mdm_change & CyDCD) && (info->port.flags & ASYNC_CHECK_CD)) { @@ -1197,7 +1197,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)  			break;  		}  		if (delta_count) -			wake_up_interruptible(&info->delta_msr_wait); +			wake_up_interruptible(&info->port.delta_msr_wait);  		if (special_count)  			tty_schedule_flip(tty);  		tty_kref_put(tty); @@ -1464,7 +1464,7 @@ static void cy_shutdown(struct cyclades_port *info, struct tty_struct *tty)  		spin_lock_irqsave(&card->card_lock, flags);  		/* Clear delta_msr_wait queue to avoid mem leaks. */ -		wake_up_interruptible(&info->delta_msr_wait); +		wake_up_interruptible(&info->port.delta_msr_wait);  		if (info->port.xmit_buf) {  			unsigned char *temp; @@ -2788,7 +2788,7 @@ cy_ioctl(struct tty_struct *tty, struct file *file,  		/* note the counters on entry */  		cnow = info->icount;  		spin_unlock_irqrestore(&info->card->card_lock, flags); -		ret_val = wait_event_interruptible(info->delta_msr_wait, +		ret_val = wait_event_interruptible(info->port.delta_msr_wait,  				cy_cflags_changed(info, arg, &cnow));  		break; @@ -3153,7 +3153,6 @@ static int __devinit cy_init_card(struct cyclades_card *cinfo)  		info->port.close_delay = 5 * HZ / 10;  		info->port.flags = STD_COM_FLAGS;  		init_completion(&info->shutdown_wait); -		init_waitqueue_head(&info->delta_msr_wait);  		if (cy_is_Z(cinfo)) {  			struct FIRM_ID *firm_id = cinfo->base_addr + ID_ADDRESS; diff --git a/drivers/char/esp.c b/drivers/char/esp.c index a5c59fc2b0f..b19d43cd954 100644 --- a/drivers/char/esp.c +++ b/drivers/char/esp.c @@ -572,7 +572,7 @@ static void check_modem_status(struct esp_struct *info)  			info->icount.dcd++;  		if (status & UART_MSR_DCTS)  			info->icount.cts++; -		wake_up_interruptible(&info->delta_msr_wait); +		wake_up_interruptible(&info->port.delta_msr_wait);  	}  	if ((info->port.flags & ASYNC_CHECK_CD) && (status & UART_MSR_DDCD)) { @@ -927,7 +927,7 @@ static void shutdown(struct esp_struct *info)  	 * clear delta_msr_wait queue to avoid mem leaks: we may free the irq  	 * here so the queue might never be waken up  	 */ -	wake_up_interruptible(&info->delta_msr_wait); +	wake_up_interruptible(&info->port.delta_msr_wait);  	wake_up_interruptible(&info->break_wait);  	/* stop a DMA transfer on the port being closed */ @@ -1800,7 +1800,7 @@ static int rs_ioctl(struct tty_struct *tty, struct file *file,  		spin_unlock_irqrestore(&info->lock, flags);  		while (1) {  			/* FIXME: convert to new style wakeup */ -			interruptible_sleep_on(&info->delta_msr_wait); +			interruptible_sleep_on(&info->port.delta_msr_wait);  			/* see if a signal did it */  			if (signal_pending(current))  				return -ERESTARTSYS; @@ -2452,7 +2452,6 @@ static int __init espserial_init(void)  		info->config.flow_off = flow_off;  		info->config.pio_threshold = pio_threshold;  		info->next_port = ports; -		init_waitqueue_head(&info->delta_msr_wait);  		init_waitqueue_head(&info->break_wait);  		ports = info;  		printk(KERN_INFO "ttyP%d at 0x%04x (irq = %d) is an ESP ", diff --git a/drivers/char/mxser.c b/drivers/char/mxser.c index 30544ca5e95..37058ff7da7 100644 --- a/drivers/char/mxser.c +++ b/drivers/char/mxser.c @@ -258,7 +258,6 @@ struct mxser_port {  	struct mxser_mon mon_data;  	spinlock_t slock; -	wait_queue_head_t delta_msr_wait;  };  struct mxser_board { @@ -818,7 +817,7 @@ static void mxser_check_modem_status(struct tty_struct *tty,  	if (status & UART_MSR_DCTS)  		port->icount.cts++;  	port->mon_data.modem_status = status; -	wake_up_interruptible(&port->delta_msr_wait); +	wake_up_interruptible(&port->port.delta_msr_wait);  	if ((port->port.flags & ASYNC_CHECK_CD) && (status & UART_MSR_DDCD)) {  		if (status & UART_MSR_DCD) @@ -973,7 +972,7 @@ static void mxser_shutdown(struct tty_struct *tty)  	 * clear delta_msr_wait queue to avoid mem leaks: we may free the irq  	 * here so the queue might never be waken up  	 */ -	wake_up_interruptible(&info->delta_msr_wait); +	wake_up_interruptible(&info->port.delta_msr_wait);  	/*  	 * Free the IRQ, if necessary @@ -1762,7 +1761,7 @@ static int mxser_ioctl(struct tty_struct *tty, struct file *file,  		cnow = info->icount;	/* note the counters on entry */  		spin_unlock_irqrestore(&info->slock, flags); -		return wait_event_interruptible(info->delta_msr_wait, +		return wait_event_interruptible(info->port.delta_msr_wait,  				mxser_cflags_changed(info, arg, &cnow));  	/*  	 * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) @@ -2414,7 +2413,6 @@ static int __devinit mxser_initbrd(struct mxser_board *brd,  		info->port.close_delay = 5 * HZ / 10;  		info->port.closing_wait = 30 * HZ;  		info->normal_termios = mxvar_sdriver->init_termios; -		init_waitqueue_head(&info->delta_msr_wait);  		memset(&info->mon_data, 0, sizeof(struct mxser_mon));  		info->err_shadow = 0;  		spin_lock_init(&info->slock); diff --git a/drivers/char/tty_port.c b/drivers/char/tty_port.c index 549bd0fa8bb..c767e30a142 100644 --- a/drivers/char/tty_port.c +++ b/drivers/char/tty_port.c @@ -23,6 +23,7 @@ void tty_port_init(struct tty_port *port)  	memset(port, 0, sizeof(*port));  	init_waitqueue_head(&port->open_wait);  	init_waitqueue_head(&port->close_wait); +	init_waitqueue_head(&port->delta_msr_wait);  	mutex_init(&port->mutex);  	spin_lock_init(&port->lock);  	port->close_delay = (50 * HZ) / 100; @@ -124,6 +125,7 @@ void tty_port_hangup(struct tty_port *port)  	port->tty = NULL;  	spin_unlock_irqrestore(&port->lock, flags);  	wake_up_interruptible(&port->open_wait); +	wake_up_interruptible(&port->delta_msr_wait);  	tty_port_shutdown(port);  }  EXPORT_SYMBOL(tty_port_hangup); diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index e415c5eca59..2209620d234 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c @@ -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; diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c index 39032413d4a..429a8ae8693 100644 --- a/drivers/serial/amba-pl010.c +++ b/drivers/serial/amba-pl010.c @@ -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) diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c index ef82a34baf0..ef7adc8135d 100644 --- a/drivers/serial/amba-pl011.c +++ b/drivers/serial/amba-pl011.c @@ -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) diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index 963e3c12af4..3551c5cb709 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c @@ -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;  	} diff --git a/drivers/serial/icom.c b/drivers/serial/icom.c index f86c47e08a0..2d7feecaf49 100644 --- a/drivers/serial/icom.c +++ b/drivers/serial/icom.c @@ -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); diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 1febeafcb97..18130f11238 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c @@ -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; diff --git a/drivers/serial/ioc3_serial.c b/drivers/serial/ioc3_serial.c index de4ab1bfee8..d8983dd5c4b 100644 --- a/drivers/serial/ioc3_serial.c +++ b/drivers/serial/ioc3_serial.c @@ -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); diff --git a/drivers/serial/ioc4_serial.c b/drivers/serial/ioc4_serial.c index 2055d323f15..2e02c3026d2 100644 --- a/drivers/serial/ioc4_serial.c +++ b/drivers/serial/ioc4_serial.c @@ -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); diff --git a/drivers/serial/ip22zilog.c b/drivers/serial/ip22zilog.c index 2e847deb41d..ebff4a1d4bc 100644 --- a/drivers/serial/ip22zilog.c +++ b/drivers/serial/ip22zilog.c @@ -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; diff --git a/drivers/serial/msm_serial.c b/drivers/serial/msm_serial.c index ff18d50c99c..b05c5aa02cb 100644 --- a/drivers/serial/msm_serial.c +++ b/drivers/serial/msm_serial.c @@ -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) diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c index 0dc786835dc..0700cd10b97 100644 --- a/drivers/serial/pmac_zilog.c +++ b/drivers/serial/pmac_zilog.c @@ -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) diff --git a/drivers/serial/pnx8xxx_uart.c b/drivers/serial/pnx8xxx_uart.c index 2da74763527..0aa75a97531 100644 --- a/drivers/serial/pnx8xxx_uart.c +++ b/drivers/serial/pnx8xxx_uart.c @@ -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);  }  /* diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c index ad48919c041..6443b7ff274 100644 --- a/drivers/serial/pxa.c +++ b/drivers/serial/pxa.c @@ -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);  }  /* diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c index 61ef3ae2492..7f5e2687322 100644 --- a/drivers/serial/sa1100.c +++ b/drivers/serial/sa1100.c @@ -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);  }  /* diff --git a/drivers/serial/sb1250-duart.c b/drivers/serial/sb1250-duart.c index fa5f303b36d..a2f2b325449 100644 --- a/drivers/serial/sb1250-duart.c +++ b/drivers/serial/sb1250-duart.c @@ -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) diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 9d42e57e197..e16d15343df 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c @@ -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);  	} diff --git a/drivers/serial/serial_ks8695.c b/drivers/serial/serial_ks8695.c index 4560b2e7068..2e71bbc04da 100644 --- a/drivers/serial/serial_ks8695.c +++ b/drivers/serial/serial_ks8695.c @@ -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;  } diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c index 057fc5e8cc8..ea744707c4d 100644 --- a/drivers/serial/serial_lh7a40x.c +++ b/drivers/serial/serial_lh7a40x.c @@ -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) diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c index 7c4f2fe8e24..d1ad3412863 100644 --- a/drivers/serial/sunsab.c +++ b/drivers/serial/sunsab.c @@ -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) diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c index 5a32365b58a..68d262b1574 100644 --- a/drivers/serial/sunsu.c +++ b/drivers/serial/sunsu.c @@ -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) diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c index 055034d12b1..ef693ae22e7 100644 --- a/drivers/serial/sunzilog.c +++ b/drivers/serial/sunzilog.c @@ -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; diff --git a/drivers/serial/timbuart.c b/drivers/serial/timbuart.c index 3d40be6f389..34b31da01d0 100644 --- a/drivers/serial/timbuart.c +++ b/drivers/serial/timbuart.c @@ -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; diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c index cf4410e6d53..3beb6ab4fa6 100644 --- a/drivers/serial/vr41xx_siu.c +++ b/drivers/serial/vr41xx_siu.c @@ -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) diff --git a/drivers/serial/zs.c b/drivers/serial/zs.c index b9c9fb9198d..1a7fd3e7031 100644 --- a/drivers/serial/zs.c +++ b/drivers/serial/zs.c @@ -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);  	} diff --git a/include/linux/cyclades.h b/include/linux/cyclades.h index bbebef7713b..a5049eaf782 100644 --- a/include/linux/cyclades.h +++ b/include/linux/cyclades.h @@ -578,7 +578,6 @@ struct cyclades_port {  	struct cyclades_idle_stats	idle_stats;  	struct cyclades_icount	icount;  	struct completion       shutdown_wait; -	wait_queue_head_t       delta_msr_wait;  	int throttle;  }; diff --git a/include/linux/hayesesp.h b/include/linux/hayesesp.h index 940aeb51d53..92b08cfe4a7 100644 --- a/include/linux/hayesesp.h +++ b/include/linux/hayesesp.h @@ -96,7 +96,6 @@ struct esp_struct {  	int			xmit_head;  	int			xmit_tail;  	int			xmit_cnt; -	wait_queue_head_t	delta_msr_wait;  	wait_queue_head_t	break_wait;  	struct async_icount	icount;	/* kernel counters for the 4 input interrupts */  	struct hayes_esp_config config; /* port configuration */ diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 27767ea5fa2..bcafecd3b7c 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -349,7 +349,6 @@ struct uart_state {  	struct circ_buf		xmit;  	struct tasklet_struct	tlet; -	wait_queue_head_t	delta_msr_wait;  	struct uart_port	*uart_port;  }; diff --git a/include/linux/tty.h b/include/linux/tty.h index 9fdc3d84baa..0daa8a72b17 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -203,6 +203,7 @@ struct tty_port {  	int			count;		/* Usage count */  	wait_queue_head_t	open_wait;	/* Open waiters */  	wait_queue_head_t	close_wait;	/* Close waiters */ +	wait_queue_head_t	delta_msr_wait;	/* Modem status change */  	unsigned long		flags;		/* TTY flags ASY_*/  	struct mutex		mutex;		/* Locking */  	unsigned char		*xmit_buf;	/* Optional buffer */  |