public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Hurley <peter@hurleysoftware.com>
To: Jiri Slaby <jslaby@suse.cz>
Cc: gregkh@linuxfoundation.org, jirislaby@gmail.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 10/16] TTY: cleanup tty->hw_stopped uses
Date: Fri, 08 Mar 2013 09:39:24 -0500	[thread overview]
Message-ID: <1362753564.4219.17.camel@thor.lan> (raw)
In-Reply-To: <1362658360-26629-10-git-send-email-jslaby@suse.cz>

On Thu, 2013-03-07 at 13:12 +0100, Jiri Slaby wrote:
> tty->hw_stopped is set only by drivers to remember HW state. If it is
> never set to 1 in a particular driver, there is no need to check it in
> the driver at all. Remove such checks.
> 
> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
> ---
>  arch/ia64/hp/sim/simserial.c     | 16 +++-------------
>  drivers/isdn/i4l/isdn_tty.c      |  3 ---
>  drivers/net/caif/caif_serial.c   |  1 -
>  drivers/tty/rocket.c             | 19 ++++++++-----------
>  drivers/tty/serial/68328serial.c |  9 +++------
>  drivers/tty/serial/arc_uart.c    |  2 +-
>  drivers/tty/serial/crisv10.c     | 12 ++----------
>  7 files changed, 17 insertions(+), 45 deletions(-)
> 
> diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c
> index da2f319..e70cade 100644
> --- a/arch/ia64/hp/sim/simserial.c
> +++ b/arch/ia64/hp/sim/simserial.c
> @@ -142,8 +142,7 @@ static void transmit_chars(struct tty_struct *tty, struct serial_state *info,
>  		goto out;
>  	}
>  
> -	if (info->xmit.head == info->xmit.tail || tty->stopped ||
> -			tty->hw_stopped) {
> +	if (info->xmit.head == info->xmit.tail || tty->stopped) {
>  #ifdef SIMSERIAL_DEBUG
>  		printk("transmit_chars: head=%d, tail=%d, stopped=%d\n",
>  		       info->xmit.head, info->xmit.tail, tty->stopped);
> @@ -181,7 +180,7 @@ static void rs_flush_chars(struct tty_struct *tty)
>  	struct serial_state *info = tty->driver_data;
>  
>  	if (info->xmit.head == info->xmit.tail || tty->stopped ||
> -			tty->hw_stopped || !info->xmit.buf)
> +			!info->xmit.buf)
>  		return;
>  
>  	transmit_chars(tty, info, NULL);
> @@ -217,7 +216,7 @@ static int rs_write(struct tty_struct * tty,
>  	 * Hey, we transmit directly from here in our case
>  	 */
>  	if (CIRC_CNT(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE) &&
> -			!tty->stopped && !tty->hw_stopped)
> +			!tty->stopped)
>  		transmit_chars(tty, info, NULL);
>  
>  	return ret;
> @@ -325,14 +324,6 @@ static int rs_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
>  
>  #define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
>  
> -static void rs_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
> -{
> -	/* Handle turning off CRTSCTS */
> -	if ((old_termios->c_cflag & CRTSCTS) &&
> -	    !(tty->termios.c_cflag & CRTSCTS)) {
> -		tty->hw_stopped = 0;
> -	}
> -}
>  /*
>   * This routine will shutdown a serial port; interrupts are disabled, and
>   * DTR is dropped if the hangup on close termio flag is on.
> @@ -481,7 +472,6 @@ static const struct tty_operations hp_ops = {
>  	.throttle = rs_throttle,
>  	.unthrottle = rs_unthrottle,
>  	.send_xchar = rs_send_xchar,
> -	.set_termios = rs_set_termios,
>  	.hangup = rs_hangup,
>  	.proc_fops = &rs_proc_fops,
>  };
> diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
> index d8a7d83..2210766 100644
> --- a/drivers/isdn/i4l/isdn_tty.c
> +++ b/drivers/isdn/i4l/isdn_tty.c
> @@ -1470,9 +1470,6 @@ isdn_tty_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
>  		    tty->termios.c_ospeed == old_termios->c_ospeed)
>  			return;
>  		isdn_tty_change_speed(info);
> -		if ((old_termios->c_cflag & CRTSCTS) &&
> -		    !(tty->termios.c_cflag & CRTSCTS))
> -			tty->hw_stopped = 0;
>  	}
>  }
>  
> diff --git a/drivers/net/caif/caif_serial.c b/drivers/net/caif/caif_serial.c
> index 666891a..d1bf0ff 100644
> --- a/drivers/net/caif/caif_serial.c
> +++ b/drivers/net/caif/caif_serial.c
> @@ -88,7 +88,6 @@ static inline void update_tty_status(struct ser_device *ser)
>  {
>  	ser->tty_status =
>  		ser->tty->stopped << 5 |
> -		ser->tty->hw_stopped << 4 |
>  		ser->tty->flow_stopped << 3 |
>  		ser->tty->packet << 2 |
>  		ser->tty->port->low_latency << 1 |

I would maybe leave this with a code comment instead.

		ser->tty->hw_stopped << 4 |      /* hw_stopped is not used by tty layer */


> diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
> index bbffd7a..f5abc28 100644
> --- a/drivers/tty/rocket.c
> +++ b/drivers/tty/rocket.c
> @@ -449,7 +449,7 @@ static void rp_do_transmit(struct r_port *info)
>  
>  	/*  Loop sending data to FIFO until done or FIFO full */
>  	while (1) {
> -		if (tty->stopped || tty->hw_stopped)
> +		if (tty->stopped)
>  			break;
>  		c = min(info->xmit_fifo_room, info->xmit_cnt);
>  		c = min(c, XMIT_BUF_SIZE - info->xmit_tail);
> @@ -1106,15 +1106,12 @@ static void rp_set_termios(struct tty_struct *tty,
>  
>  	/* Handle transition away from B0 status */
>  	if (!(old_termios->c_cflag & CBAUD) && (tty->termios.c_cflag & CBAUD)) {
> -		if (!tty->hw_stopped || !(tty->termios.c_cflag & CRTSCTS))
> -			sSetRTS(cp);
> +		sSetRTS(cp);

Terrible original logic there.

>  		sSetDTR(cp);
>  	}
>  
> -	if ((old_termios->c_cflag & CRTSCTS) && !(tty->termios.c_cflag & CRTSCTS)) {
> -		tty->hw_stopped = 0;
> +	if ((old_termios->c_cflag & CRTSCTS) && !(tty->termios.c_cflag & CRTSCTS))
>  		rp_start(tty);
> -	}
>  }
>  
>  static int rp_break(struct tty_struct *tty, int break_state)
> @@ -1570,10 +1567,10 @@ static int rp_put_char(struct tty_struct *tty, unsigned char ch)
>  	spin_lock_irqsave(&info->slock, flags);
>  	cp = &info->channel;
>  
> -	if (!tty->stopped && !tty->hw_stopped && info->xmit_fifo_room == 0)
> +	if (!tty->stopped && info->xmit_fifo_room == 0)
>  		info->xmit_fifo_room = TXFIFO_SIZE - sGetTxCnt(cp);
>  
> -	if (tty->stopped || tty->hw_stopped || info->xmit_fifo_room == 0 || info->xmit_cnt != 0) {
> +	if (tty->stopped || info->xmit_fifo_room == 0 || info->xmit_cnt != 0) {
>  		info->xmit_buf[info->xmit_head++] = ch;
>  		info->xmit_head &= XMIT_BUF_SIZE - 1;
>  		info->xmit_cnt++;
> @@ -1614,14 +1611,14 @@ static int rp_write(struct tty_struct *tty,
>  #endif
>  	cp = &info->channel;
>  
> -	if (!tty->stopped && !tty->hw_stopped && info->xmit_fifo_room < count)
> +	if (!tty->stopped && info->xmit_fifo_room < count)
>  		info->xmit_fifo_room = TXFIFO_SIZE - sGetTxCnt(cp);
>  
>          /*
>  	 *  If the write queue for the port is empty, and there is FIFO space, stuff bytes 
>  	 *  into FIFO.  Use the write queue for temp storage.
>           */
> -	if (!tty->stopped && !tty->hw_stopped && info->xmit_cnt == 0 && info->xmit_fifo_room > 0) {
> +	if (!tty->stopped && info->xmit_cnt == 0 && info->xmit_fifo_room > 0) {
>  		c = min(count, info->xmit_fifo_room);
>  		b = buf;
>  
> @@ -1669,7 +1666,7 @@ static int rp_write(struct tty_struct *tty,
>  		retval += c;
>  	}
>  
> -	if ((retval > 0) && !tty->stopped && !tty->hw_stopped)
> +	if ((retval > 0) && !tty->stopped)
>  		set_bit((info->aiop * 8) + info->chan, (void *) &xmit_flags[info->board]);
>  	
>  end:
> diff --git a/drivers/tty/serial/68328serial.c b/drivers/tty/serial/68328serial.c
> index 4939947..ef2e08e 100644
> --- a/drivers/tty/serial/68328serial.c
> +++ b/drivers/tty/serial/68328serial.c
> @@ -630,8 +630,7 @@ static void rs_flush_chars(struct tty_struct *tty)
>  	/* Enable transmitter */
>  	local_irq_save(flags);
>  
> -	if (info->xmit_cnt <= 0 || tty->stopped || tty->hw_stopped ||
> -			!info->xmit_buf) {
> +	if (info->xmit_cnt <= 0 || tty->stopped || !info->xmit_buf) {
>  		local_irq_restore(flags);
>  		return;
>  	}
> @@ -697,7 +696,7 @@ static int rs_write(struct tty_struct * tty,
>  		total += c;
>  	}
>  
> -	if (info->xmit_cnt && !tty->stopped && !tty->hw_stopped) {
> +	if (info->xmit_cnt && !tty->stopped) {
>  		/* Enable transmitter */
>  		local_irq_disable();		
>  #ifndef USE_INTS
> @@ -978,10 +977,8 @@ static void rs_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
>  	change_speed(info, tty);
>  
>  	if ((old_termios->c_cflag & CRTSCTS) &&
> -	    !(tty->termios.c_cflag & CRTSCTS)) {
> -		tty->hw_stopped = 0;
> +	    !(tty->termios.c_cflag & CRTSCTS))
>  		rs_start(tty);
> -	}
>  	
>  }
>  
> diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c
> index d97e194..cbf1d15 100644
> --- a/drivers/tty/serial/arc_uart.c
> +++ b/drivers/tty/serial/arc_uart.c
> @@ -162,7 +162,7 @@ static unsigned int arc_serial_tx_empty(struct uart_port *port)
>  /*
>   * Driver internal routine, used by both tty(serial core) as well as tx-isr
>   *  -Called under spinlock in either cases
> - *  -also tty->stopped / tty->hw_stopped has already been checked
> + *  -also tty->stopped has already been checked
>   *     = by uart_start( ) before calling us
>   *     = tx_ist checks that too before calling
>   */
> diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c
> index 5f37c31..50f56f3 100644
> --- a/drivers/tty/serial/crisv10.c
> +++ b/drivers/tty/serial/crisv10.c
> @@ -2534,8 +2534,7 @@ static void handle_ser_tx_interrupt(struct e100_serial *info)
>  	}
>  	/* Normal char-by-char interrupt */
>  	if (info->xmit.head == info->xmit.tail
> -	    || info->port.tty->stopped
> -	    || info->port.tty->hw_stopped) {
> +	    || info->port.tty->stopped) {
>  		DFLOW(DEBUG_LOG(info->line, "tx_int: stopped %i\n",
>  				info->port.tty->stopped));
>  		e100_disable_serial_tx_ready_irq(info);
> @@ -3098,7 +3097,6 @@ rs_flush_chars(struct tty_struct *tty)
>  	if (info->tr_running ||
>  	    info->xmit.head == info->xmit.tail ||
>  	    tty->stopped ||
> -	    tty->hw_stopped ||
>  	    !info->xmit.buf)
>  		return;
>  
> @@ -3176,7 +3174,6 @@ static int rs_raw_write(struct tty_struct *tty,
>  
>  	if (info->xmit.head != info->xmit.tail &&
>  	    !tty->stopped &&
> -	    !tty->hw_stopped &&
>  	    !info->tr_running) {
>  		start_transmit(info);
>  	}
> @@ -3733,10 +3730,8 @@ rs_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
>  
>  	/* Handle turning off CRTSCTS */
>  	if ((old_termios->c_cflag & CRTSCTS) &&
> -	    !(tty->termios.c_cflag & CRTSCTS)) {
> -		tty->hw_stopped = 0;
> +	    !(tty->termios.c_cflag & CRTSCTS))
>  		rs_start(tty);
> -	}
>  
>  }
>  
> @@ -4256,9 +4251,6 @@ static void seq_line_info(struct seq_file *m, struct e100_serial *info)
>  		if (info->port.tty->stopped)
>  			seq_printf(m, " stopped:%i",
>  				   (int)info->port.tty->stopped);
> -		if (info->port.tty->hw_stopped)
> -			seq_printf(m, " hw_stopped:%i",
> -				   (int)info->port.tty->hw_stopped);

User-space visible. Tool may expect this field.



  reply	other threads:[~2013-03-08 14:39 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-07 12:12 [PATCH 01/16] TTY: jsm, remove superfluous check Jiri Slaby
2013-03-07 12:12 ` [PATCH 02/16] TTY: synclink, " Jiri Slaby
2013-03-07 12:12 ` [PATCH 03/16] TTY: do not warn about setting speed via SPD_* Jiri Slaby
2013-03-07 12:12 ` [PATCH 04/16] TTY: msm_smd_tty, clean up activate/shutdown Jiri Slaby
2013-03-07 12:12 ` [PATCH 05/16] TTY: add tty_port_tty_wakeup helper Jiri Slaby
2013-03-08 15:02   ` Peter Hurley
2013-03-08 19:02     ` Jiri Slaby
2013-03-18 23:16       ` Greg KH
2013-03-07 12:12 ` [PATCH 06/16] TTY: add tty_port_tty_hangup helper Jiri Slaby
2013-03-07 12:12 ` [PATCH 07/16] TTY: quatech2, remove unneeded is_open Jiri Slaby
2013-03-13 13:46   ` Bill Pemberton
2013-03-13 14:17     ` Jiri Slaby
2013-03-13 14:27       ` Bill Pemberton
2013-03-07 12:12 ` [PATCH 08/16] TTY: serial/bfin_uart, unbreak build with KGDB enabled Jiri Slaby
2013-03-08  7:59   ` Sonic Zhang
2013-03-07 12:12 ` [PATCH 09/16] TTY: serial/msm_serial_hs, remove unused tty Jiri Slaby
2013-03-07 12:12 ` [PATCH 10/16] TTY: cleanup tty->hw_stopped uses Jiri Slaby
2013-03-08 14:39   ` Peter Hurley [this message]
2013-03-08 14:46     ` Jiri Slaby
2013-03-08 14:55       ` Peter Hurley
2013-03-07 12:12 ` [PATCH 11/16] crisv10: stop returning info from handle_ser_rx_interrupt Jiri Slaby
2013-03-08 15:06   ` Peter Hurley
2013-03-07 12:12 ` [PATCH 12/16] crisv10: use flags from tty_port Jiri Slaby
2013-03-07 12:12 ` [PATCH 13/16] crisv10: remove unused members Jiri Slaby
2013-03-07 12:12 ` [PATCH 14/16] crisv10: use close delays from tty_port Jiri Slaby
2013-03-07 12:12 ` [PATCH 15/16] crisv10: use *_wait " Jiri Slaby
2013-03-07 12:12 ` [PATCH 16/16] crisv10: use counts " Jiri Slaby

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1362753564.4219.17.camel@thor.lan \
    --to=peter@hurleysoftware.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@gmail.com \
    --cc=jslaby@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox