Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Dec 1995 17:24:52 +1030 (CST)
From:      Michael Smith <msmith@atrad.adelaide.edu.au>
To:        mccrory@plk.af.mil
Cc:        questions@freebsd.org
Subject:   Re: config boca modem problem
Message-ID:  <199512210654.RAA15007@genesis.atrad.adelaide.edu.au>
In-Reply-To: <199512201403.HAA24060@erebus.fc.dna.mil> from "Roy A.Mccrory" at Dec 20, 95 07:03:20 am

next in thread | previous in thread | raw e-mail | index | archive | help
Roy A.Mccrory stands accused of saying:
> 
> I have a new internal boca mv34i modem which my kernel can't sucessfully probe.

Does this card have a 'real' 16550 on it, or a custom blob that claims to
emulate one?

> using -c to probe the modem with "flags sio2 0x82" gives
> "probe test 5 failed
> probe test 6 failed"
> and returns a status of 0x0.

Test 5 failing means that the UART failed to clear its interrupt
assertion when the IIR in the UART was read.  This may be because you
have something else on IRQ 5, or it may be due to a poor 16550
emulation.  We're working (occasionally) on fixing these sort of
problems, but the lack of staying power on the part of people with
these problems has made progress slow.

Also, most people with any sense wouldn't touch an internal modem with a 
40-foot pole, so none of us working on it have one to test with...

> When the system boots, i get sio2 not configured messages every 10 minutes.

This is probably because you have a getty or something similar trying to
talk to the port.

> If anyone has any ideas how to fix it, I would appreciate hearing from you.

Various sorts; you could start by looking at the code in /sys/i386/isa/sio.c
and adding DELAY(1000); calls between each of these lines in the sioprobe()
function, to wit:

        if (idev->id_irq != 0)
                failures[3] = isa_irq_pending(idev) ? 0 : 1;
	DELAY(1000);
        failures[4] = (inb(iobase + com_iir) & IIR_IMASK) - IIR_TXRDY;
	DELAY(1000);
        if (idev->id_irq != 0)
                failures[5] = isa_irq_pending(idev) ? 1 : 0;
	DELAY(1000);
        failures[6] = (inb(iobase + com_iir) & IIR_IMASK) - IIR_NOPEND;

Also, if you want to verify that the modem actually works, you can modify 
the code a little lower :

	return (result);
to
	return (IO_COMSIZE);

_WARNING_ This will force the system to believe that all sio* ports
defined in the kernel config exist and work.  This may not be
what you want.

> Roy A. McCrory (505) 846-6937 mccrory@plk.af.mil

-- 
]] Mike Smith, Software Engineer        msmith@atrad.adelaide.edu.au    [[
]] Genesis Software                     genesis@atrad.adelaide.edu.au   [[
]] High-speed data acquisition and      (GSM mobile) 041-122-496        [[
]] realtime instrument control          (ph/fax)  +61-8-267-3039        [[
]] "Who does BSD?" "We do Chucky, we do."                               [[



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