Date: Mon, 5 Aug 2002 19:39:29 -0700 (PDT) From: Doug Ambrisko <ambrisko@ambrisko.com> To: Hudson Lee <hudlee@vineyard.net> Cc: freebsd-mobile@FreeBSD.ORG Subject: Re: an driver with cisco aironet mini-pci 350 Message-ID: <200208060239.g762dTG33822@ambrisko.com> In-Reply-To: <20020727164749.GA48515@harlem.foo.bar>
next in thread | previous in thread | raw e-mail | index | archive | help
Since the latest Linux from Cisco has code to drive this card it shouldn't be to hard to add support assuming they added the PCI attachment in a reasonable way. It's now very difficult to get programing information directly from Cisco :-( I have a mini-PCI to PCI adapter so I can plug it into a couple of test systems including a Soekris box. I have an older PCI version here. Hopefully we just have to update the attachment and it should just work. Can you dump the the PCI registers 0x10 & 0x14 via pciconf -l. We can probably just skip over the indirection of the PLX chip and go straight into attaching the Aironet driver to the rid. You can try this guess at a patch for kicks. Index: if_an_pci.c =================================================================== RCS file: /cvs/src/sys/dev/an/if_an_pci.c,v retrieving revision 1.2.2.6 diff -u -r1.2.2.6 if_an_pci.c --- if_an_pci.c 26 Sep 2001 01:02:01 -0000 1.2.2.6 +++ if_an_pci.c 6 Aug 2002 02:38:48 -0000 @@ -100,6 +100,7 @@ #define AIRONET_DEVICEID_4500 0x4500 #define AIRONET_DEVICEID_4800 0x4800 #define AIRONET_DEVICEID_4xxx 0x0001 +#define AIRONET_DEVICEID_MPI350 0xA504 #define AN_PCI_PLX_LOIO 0x14 /* PLX chip iobase */ #define AN_PCI_LOIO 0x18 /* Aironet iobase */ @@ -131,6 +132,12 @@ t++; } + if (pci_get_vendor(dev) == AIRONET_VENDORID && + pci_get_device(dev) == AIRONET_DEVICEID_MPI350) { + device_set_desc(dev, "Cisco Aironet MPI350"); + return(0); + } + return(ENXIO); } @@ -150,21 +157,24 @@ flags = device_get_flags(dev); bzero(sc, sizeof(struct an_softc)); - /* - * Map control/status registers. - */ - command = pci_read_config(dev, PCIR_COMMAND, 4); - command |= PCIM_CMD_PORTEN; - pci_write_config(dev, PCIR_COMMAND, command, 4); - command = pci_read_config(dev, PCIR_COMMAND, 4); - - if (!(command & PCIM_CMD_PORTEN)) { - printf("an%d: failed to enable I/O ports!\n", unit); - error = ENXIO; - goto fail; + if (pci_get_device(dev) == AIRONET_DEVICEID_MPI350) { + sc->port_rid = AN_PCI_PLX_LOIO; + } else { + /* + * Map control/status registers. + */ + command = pci_read_config(dev, PCIR_COMMAND, 4); + command |= PCIM_CMD_PORTEN; + pci_write_config(dev, PCIR_COMMAND, command, 4); + command = pci_read_config(dev, PCIR_COMMAND, 4); + + if (!(command & PCIM_CMD_PORTEN)) { + printf("an%d: failed to enable I/O ports!\n", unit); + error = ENXIO; + goto fail; + } + sc->port_rid = AN_PCI_LOIO; } - - sc->port_rid = AN_PCI_LOIO; error = an_alloc_port(dev, sc->port_rid, 1); if (error) { 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?200208060239.g762dTG33822>