Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Apr 2003 19:53:14 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        scott+freebsd@fishballoon.org
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: [PATCH] CE2 support added to xe driver
Message-ID:  <20030424.195314.38682120.imp@bsdimp.com>
In-Reply-To: <20030424125226.GB89997@tuatara.fishballoon.org>
References:  <20030423230906.GU572@tuatara.fishballoon.org> <20030423.212847.19952078.imp@bsdimp.com> <20030424125226.GB89997@tuatara.fishballoon.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20030424125226.GB89997@tuatara.fishballoon.org>
            Scott Mitchell <scott+freebsd@fishballoon.org> writes:
: On Wed, Apr 23, 2003 at 09:28:47PM -0600, M. Warner Losh wrote:
: > Oh wait, looking at the CIS for the Xircom CreditCard Ethernet+Modem
: > 28.8, CEM28, 3.00 that I have shows that it is just a modem.
: > 
: > Looking at the code:
: > 
: > 	bus_space_write_1(bst, bsh, DINGO_ECOR, DINGO_ECOR_IRQ_LEVEL |
: > 						DINGO_ECOR_INT_ENABLE |
: > 						DINGO_ECOR_IOB_ENABLE |
: > 						DINGO_ECOR_ETH_ENABLE);
: > Set 0x800 to 0x47 (This looks a lot like MFC cards: Enable function,
: >    enable I/O and enable IRQ, but the startup software writes 0x41)
: > 	ioport = bus_get_resource_start(dev, SYS_RES_IOPORT, sc->port_rid);
: > 	bus_space_write_1(bst, bsh, DINGO_EBAR0, ioport & 0xff);
: > 	bus_space_write_1(bst, bsh, DINGO_EBAR1, (ioport >> 8) & 0xff);
: > Set 0x80a and 0x80c to the ioport we want to use.  This corresponds to
: > the I/O base registers in the standard.
: > 
: > 	bus_space_write_1(bst, bsh, DINGO_DCOR0, DINGO_DCOR0_SF_INT);
: > 0x820 to 0x1 (enable function, if it follows the MFC)
: > 	bus_space_write_1(bst, bsh, DINGO_DCOR1, DINGO_DCOR1_INT_LEVEL |
: > 						 DINGO_DCOR1_EEDIO);
: > 0x822 to 0xc (comments don't correspond to the standard meanings)
: > 	bus_space_write_1(bst, bsh, DINGO_DCOR2, 0x00);
: > 	bus_space_write_1(bst, bsh, DINGO_DCOR3, 0x00);
: > 	bus_space_write_1(bst, bsh, DINGO_DCOR4, 0x00);
: 
: I'm hoping that something similar to this, along with an offset to the base
: address used in the XE_IN* and XE_OUT* macros, will be enough to get these
: cards working.  They're really just earlier iterations of the Dingo (CEM56)
: hardware, so I'd expect a similar hack to be effective.  The DINGO_DCOR*
: registers are Dingo-specific; I'll have to reread the Xircom docs to find
: out exactly what's going on there.  Very likely that code will be redundant
: on the older cards.

OK.  It looks like there needs to be some non-standard way of dealing
with these things.  I'm thinking that the pccard code might want to
provide a good way to easily do this.

: >  89 08 04 06 00 80 c7 7f 31 3d
: > >>> Vendor Specific tuple
: 
: Notice that the MAC address is for some reason in tuple 89 on this card (my
: CEM28 is exactly the same).  Another quirk will be required there...

I don't know about a quirk, but maybe a way to grab a CIS of a given
type.  Would save having to use the CIS scanning code in this
driver...

Warner



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