1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-05 09:14:03 +00:00

For the PC Card implementation of the CS8920M that's in my IBM

EtherJet, the interrupt is selected in the eeprom based on the layout
of the PC Card board.  Since this is encoded into the EEPROM, and has
no relationship to the IRQ that the pccard bridge routes the PC Card's
interrupt pin to.

As such, stop writing to that register.  This gets my EtherJet working.

# The eeprom reading code appears to be totally wrong for my EtherJet
# card.  This causes the card to bogusly detect the media options
# available.
This commit is contained in:
Warner Losh 2005-01-28 06:35:39 +00:00
parent ad787127cf
commit eb71b55c32
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=140926
3 changed files with 8 additions and 3 deletions

View File

@ -467,7 +467,8 @@ cs_cs89x0_probe(device_t dev)
}
if (!error) {
cs_writereg(sc, pp_isaint, irq);
if (!(sc->flags & CS_NO_IRQ))
cs_writereg(sc, pp_isaint, irq);
} else {
device_printf(dev, "Unknown or invalid irq\n");
return (ENXIO);

View File

@ -80,11 +80,13 @@ cs_pccard_match(device_t dev)
static int
cs_pccard_probe(device_t dev)
{
struct cs_softc *sc = device_get_softc(dev);
int error;
sc->flags |= CS_NO_IRQ;
error = cs_cs89x0_probe(dev);
cs_release_resources(dev);
return (error);
cs_release_resources(dev);
return (error);
}
static int

View File

@ -57,6 +57,8 @@ struct cs_softc {
struct resource* irq_res; /* resource for irq */
void* irq_handle; /* handle for irq handler */
int flags;
#define CS_NO_IRQ 0x1
int nic_addr; /* Base IO address of card */
int send_cmd;
int line_ctl; /* */