Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Sep 1996 14:43:36 +0900 (JST)
From:      Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   i386/1644: sio.c can't keep RTS off while RTS flow controll is off.
Message-ID:  <199609190543.OAA03096@uno.sat.t.u-tokyo.ac.jp>
Resent-Message-ID: <199609190550.WAA29682@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         1644
>Category:       i386
>Synopsis:       sio.c can't keep RTS off while RTS flow controll is off.
>Confidential:   yes
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Sep 18 22:50:02 PDT 1996
>Last-Modified:
>Originator:     Hidetoshi Shimokawa
>Organization:
Univsity of Tokyo
>Release:        FreeBSD 2.2-CURRENT i386
>Environment:
	common 16550A base serial interface.

>Description:
	when I want keep RTS off for some use (without flow control),
	it doesn't work righ.
	(it is required for qvplay which transfer data from CASIO
	digital camera QV10 series)

	
	in sio.c, it seems that comment is right, but code doesn't do it.

                /*
                 * XXX don't raise MCR_RTS if CTS_RTS_IFLOW is off.  Set it
                 * appropriately in comparam() if RTS-flow is being changed.
                 * Check for races.
                 */
                if (!(com->mcr_image & MCR_RTS) && com->iptr < com->ihighwater)
                        outb(com->modem_ctl_port, com->mcr_image |= MCR_RTS);



>How-To-Repeat:

	disable hard flow control and make RTS off, then watch RTS line.
	(sorry, I didn't do this)

>Fix:
	the same fix should be also applied to stable branch.

*** sio.c.orig  Sun Sep 15 22:26:20 1996
--- sio.c       Thu Sep 19 03:55:38 1996
***************
*** 2000,2006 ****
                 * appropriately in comparam() if RTS-flow is being changed.
                 * Check for races.
                 */
!               if (!(com->mcr_image & MCR_RTS) && com->iptr < com->ihighwater)
                        outb(com->modem_ctl_port, com->mcr_image |= MCR_RTS);
        }
        enable_intr();
--- 2000,2007 ----
                 * appropriately in comparam() if RTS-flow is being changed.
                 * Check for races.
                 */
!               if (!(com->mcr_image & MCR_RTS) && (com->iptr < com->ihighwater)
!                       && (com->state & CS_RTS_IFLOW))
                        outb(com->modem_ctl_port, com->mcr_image |= MCR_RTS);
        }
        enable_intr();

>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609190543.OAA03096>