Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Feb 2003 11:52:43 +0100 (CET)
From:      Michal Mertl <mime@traveller.cz>
To:        Kevin Oberman <oberman@es.net>
Cc:        mobile@FreeBSD.ORG
Subject:   Re: Problems with serial port on Xircom RBEM56G
Message-ID:  <20030204101105.E91588@prg.traveller.cz>
In-Reply-To: <20030204001334.40D4A5D04@ptavv.es.net>
References:  <20030204001334.40D4A5D04@ptavv.es.net>

next in thread | previous in thread | raw e-mail | index | archive | help
> OK. Things are coming together, but one thing I have not figured out
> is why the serial portion of my RBEM56G card is not working. I suspect
> it may be simply adding the requisite information someplace.

It's known problem. There was a patch which made it work sometime in the
past. It worked only on some HW revisions IIRC and doesn't anymore because
of other changes IIRC. It never worked for me.

I'm afraid it's not that easy. When you boot_verbose and set
hw.cardbus.debug=1 and hw.cardbus.cis_debug=1 you will see that the modem
part of the card is probed for sio (serial) but fails. I don't understand
what exactly goes wrong here. Serial port uses the same IRQ as the
ethernet part - that might be problem.

The main source of problem is probably the IO port - I think the range
should be (at least) 8 bytes long - for driving 16550 UART
sio_setreg(port, offset, value) is used (in /sys/isa/sio.con STABLE),
offsets are defined in /sys/dev/ic/ns16550.h and in
/boot/i386/libi386/comconsole.c - constants are in range 0 - 6.

It seems that cardbus layer things the device needs 2 bytes but sio driver
calls
        port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
                                  0, ~0, IO_COMSIZE, RF_ACTIVE);
to allocate 8 bytes (IO_COMSIZE is 8).

Windows 2000 has io port FE78 - FE7F.

On insertion with debugs on I see this (it is the same HW you have):

cardbus0: Opening BAR: type=IO, bar=10, len=0002
cardbus0: Opening BAR: type=MEM, bar=14, len=0002
cardbus0: Opening BAR: type=MEM, bar=18, len=0100
cardbus0: Invalid BAR number: 27(06)
CIS reading done
cardbus0: Non-prefetchable memory at 88000200-88000301
cardbus0: Non-prefetchable memory rid=18 at 88000200-880002ff (100)
cardbus0: Non-prefetchable memory rid=14 at 88000300-88000301 (2)
cardbus0: IO port at 1080-1081
cardbus0: IO port rid=10 at 1080-1081
sio4: irq maps: 0x1 0x1 0x1 0x1
sio4: probe failed test(s): 2 4

Those, who understand resource allocation could be able to tell if above
call to bus_alloc_resource is the problem (or one of). In rid is
indirectly stored info from BAR (2 bytes range) IIRC from my previous
debugging of the problem.

> Is it possible that this is a WinModem? I had been assured it was a
> "real" modem, but maybe I will need to install ltmdm (or get a
> different modem).

I don't think it is a WinModem. Modem's UART (serial interface) is only
badly attached.

-- 
Michal Mertl
mime@traveller.cz

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




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