All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Bunk <bunk@stusta.de>
To: Rogier Wolff <R.E.Wolff@BitWizard.nl>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>, linux-kernel@vger.kernel.org
Subject: [2.6.19 patch] drivers/char/specialix.c: fix the baud conversion
Date: Tue, 10 Oct 2006 08:17:47 +0200	[thread overview]
Message-ID: <20061010061747.GC3650@stusta.de> (raw)
In-Reply-To: <20061009063744.GB2877@bitwizard.nl>

On Mon, Oct 09, 2006 at 08:37:45AM +0200, Rogier Wolff wrote:
> On Mon, Oct 09, 2006 at 12:18:19AM +0200, Adrian Bunk wrote:
> > +       if (baud == 38400) {
> >                 if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI)
> >                         baud ++;
> >                 if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI)
> >                         baud += 2;
> >         }
> > 
> > Increasing the index for baud_table[] by 1 or 2 is quite different from 
> > increasing baud by 1 or 2.
> 
> In that range, 
> 	baud <<= 1; 
> and
> 	baud <<= 2; 
> 
> should work. 

Thanks for the hint.

What about the patch below?

> 	Roger. 

cu
Adrian


<--  snip  -->


This patch corrects the following bugs introduced by
commit 67cc0161ecc9ebee6eba4af6cbfdba028090b1b9:
- remove one remaining and now incorrect baud_table[] usage
- "baud +=" must become "baud <<="

The former bug was spotted by the Coverity checker.

Signed-off-by: Adrian Bunk <bunk@stusta.de>

---

 drivers/char/specialix.c |   15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

--- linux-2.6/drivers/char/specialix.c.old	2006-10-10 08:04:48.000000000 +0200
+++ linux-2.6/drivers/char/specialix.c	2006-10-10 08:06:25.000000000 +0200
@@ -183,11 +183,6 @@
 
 static struct tty_driver *specialix_driver;
 
-static unsigned long baud_table[] =  {
-	0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
-	9600, 19200, 38400, 57600, 115200, 0,
-};
-
 static struct specialix_board sx_board[SX_NBOARD] =  {
 	{ 0, SX_IOBASE1,  9, },
 	{ 0, SX_IOBASE2, 11, },
@@ -1090,9 +1085,9 @@
 
 	if (baud == 38400) {
 		if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI)
-			baud ++;
+			baud <<= 1;
 		if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI)
-			baud += 2;
+			baud <<= 2;
 	}
 
 	if (!baud) {
@@ -1150,11 +1145,9 @@
 	sx_out(bp, CD186x_RBPRL, tmp & 0xff);
 	sx_out(bp, CD186x_TBPRL, tmp & 0xff);
 	spin_unlock_irqrestore(&bp->lock, flags);
-	if (port->custom_divisor) {
+	if (port->custom_divisor)
 		baud = (SX_OSCFREQ + port->custom_divisor/2) / port->custom_divisor;
-		baud = ( baud + 5 ) / 10;
-	} else
-		baud = (baud_table[baud] + 5) / 10;   /* Estimated CPS */
+	baud = (baud + 5) / 10;
 
 	/* Two timer ticks seems enough to wakeup something like SLIP driver */
 	tmp = ((baud + HZ/2) / HZ) * 2 - CD186x_NFIFO;

  reply	other threads:[~2006-10-10  6:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-08 22:18 drivers/char/specialix.c: broken baud conversion Adrian Bunk
2006-10-09  6:37 ` Rogier Wolff
2006-10-10  6:17   ` Adrian Bunk [this message]
2006-10-10 12:01     ` [2.6.19 patch] drivers/char/specialix.c: fix the " Rolf Eike Beer
2006-10-11  4:48       ` Adrian Bunk

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=20061010061747.GC3650@stusta.de \
    --to=bunk@stusta.de \
    --cc=R.E.Wolff@BitWizard.nl \
    --cc=alan@lxorguk.ukuu.org.uk \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.