getting sio.c to work with sony-ericsson GC89

Matthew Dillon dillon at apollo.backplane.com
Sun May 20 09:46:46 PDT 2007


:I've recently been trying to get the EDGE/GPRS portion of the GC89
:working under 1.8.x, but have been having some troubles ..
:
:The card attaches fine as a regular 'com' port under OpenBSD 4
:and can handle a 15minute PPP session, but unfortunately the com/sio
:and cardbus differences between DF/Free and Net/Open are quite
:different so I'm having trouble nailing down the problem.. thinking this
:should be a 'sio' though, as it appears to be a Broadcom 4344 '16550'
:kind of thing.
:
:Initially, the card was 'unable to drain sio0', but after hacking
:around that test on the odd chance that it probed with no spare data,
:it doesn't seem to work in any case.
:
:diff against sio.c attached, only other changes were to add the card
:to pcidevs (not included here), add tons of printk's in various
:places and set:

    Well, usually an 'unable to drain sio' error means that it either
    couldn't map the IO ports or they aren't where it thinks they are.

    I'm not an expert on the cardbus stuff, but I know we've always
    had interrupt issues with it, too.  If the interrupt isn't working
    you may have to turn on emergency interrupt polling
    (kern.emergey_intr_enable=1).  But the problem at the moment 
    sounds more like a mapping issue then an interrupt issue.

    One thing you can do is print out the mappings and then access the
    IO space with a userland program using /dev/io.  See i386_get_ioperm()
    and i386_set_ioperm().  Then write a userland program to try to access
    the hardware directly so you can see if the ports are even present
    and debug it.

    The SIO driver is the correct driver, and it should be able to handle
    a 16550 no problem once everything is mapped properly.

    One thing I did notice was on (I think) your NetBSD output:

:pccom3 at cardbus0 dev 0 function 1: irq 9: ns16550a, 16 byte fifo

    It says it is using 'function 1'.  I'm not sure what that means,
    but if it is the RID then it doesn't match the 0x10 used for the rid
    in your sio patch.

						-Matt







More information about the Kernel mailing list