Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 May 1998 22:52:50 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, gavin@itworks.com.au
Cc:        freebsd-hardware@FreeBSD.ORG
Subject:   Re: Serial port problems
Message-ID:  <199805091252.WAA00469@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>Stoping in sioprobe() and single stepping give me the following
>
>Probing for devices on the ISA bus:
>Breakpoint at   _sioprobe:      pushl   %ebp
>db> s
...
>Stopped at      _sioprobe+0x35: xorb    %al,%al
>db>
>Stopped at      _sioprobe+0x37: outb    %al,%dx

This turns off DTR (among other things).

>db> cu: Got hangup signal
>Disconnected.

DTR is normally connected to CD for a PC <-> PC connection, so turning
off DTR drops CD and not-dumb-enough terminal programs disconnect.

>gavin@ferret {143} : cu -l cuaa1 -s 9600
>Connected.

>Stopped at      _sioprobe+0x3b: cmpl    $0,0x4(%ecx)
>db> s
>Stopped at      _sioprobe+0x3f: jnz     _sioprobe+0x20
>...
>Does this shed light for anyone?

It probably takes a few thousand instructions to get anywhere interesting.

0x80 in the device flags would show which parts of the probe fail.
According to previous reports, IRQ4 doesn't go away properly when the
device drives IRQ4 low.  It would be interesting to know if IRQ4 ever
has the correct value.  Its value is given by bit 0x10 in port 0x20
(`call inb(0x20)' in ddb).  Programming sio0 manually in ddb should
make it go low:

	call outb(0x3f8+3,3)
	call outb(0x3f8+1,0)
	call outb(0x3f8+4,0xb)

Disconnecting sio0 from IRQ4 should then make it float high:

	call outb(0x3f8+4,0x3)

Bruce

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hardware" in the body of the message



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