changes from Warner Losh to read firmware version for non prism2 cards

This commit is contained in:
dbj 2002-03-25 09:10:54 +00:00
parent 8a2d9422bd
commit ea44522489
2 changed files with 18 additions and 20 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: wi.c,v 1.54 2002/03/21 07:31:37 itohy Exp $ */ /* $NetBSD: wi.c,v 1.55 2002/03/25 09:10:54 dbj Exp $ */
/* /*
* Copyright (c) 1997, 1998, 1999 * Copyright (c) 1997, 1998, 1999
@ -70,7 +70,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: wi.c,v 1.54 2002/03/21 07:31:37 itohy Exp $"); __KERNEL_RCSID(0, "$NetBSD: wi.c,v 1.55 2002/03/25 09:10:54 dbj Exp $");
#define WI_HERMES_AUTOINC_WAR /* Work around data write autoinc bug. */ #define WI_HERMES_AUTOINC_WAR /* Work around data write autoinc bug. */
#define WI_HERMES_STATS_WAR /* Work around stats counter bug. */ #define WI_HERMES_STATS_WAR /* Work around stats counter bug. */
@ -1680,7 +1680,7 @@ wi_init(ifp)
* It is under investigation for details. * It is under investigation for details.
* (ichiro@netbsd.org) * (ichiro@netbsd.org)
*/ */
if (sc->sc_prism2_ver < 82 ) { if (sc->sc_firmware_ver < 82 ) {
/* firm ver < 0.8 variant 2 */ /* firm ver < 0.8 variant 2 */
WI_SETVAL(WI_RID_PROMISC, 1); WI_SETVAL(WI_RID_PROMISC, 1);
} }
@ -1988,25 +1988,23 @@ wi_get_id(sc)
sc->sc_prism2 = 0; sc->sc_prism2 = 0;
break; break;
default: default:
printf("Lucent chip or unknown chip\n"); printf("Lucent chip or unknown chip");
sc->sc_prism2 = 0; sc->sc_prism2 = 0;
break; break;
} }
if (sc->sc_prism2) { /* get firmware version */
/* try to get prism2 firm version */ memset(&ver, 0, sizeof(ver));
memset(&ver, 0, sizeof(ver)); ver.wi_type = WI_RID_STA_IDENTITY;
ver.wi_type = WI_RID_STA_IDENTITY; ver.wi_len = 5;
ver.wi_len = 5; wi_read_record(sc, (struct wi_ltv_gen *)&ver);
wi_read_record(sc, (struct wi_ltv_gen *)&ver); LE16TOH(ver.wi_ver[1]);
LE16TOH(ver.wi_ver[1]); LE16TOH(ver.wi_ver[2]);
LE16TOH(ver.wi_ver[2]); LE16TOH(ver.wi_ver[3]);
LE16TOH(ver.wi_ver[3]); printf(", Firmware: %i.%i variant %i\n", ver.wi_ver[2],
printf(", Firmware: %i.%i variant %i\n", ver.wi_ver[2], ver.wi_ver[3], ver.wi_ver[1]);
ver.wi_ver[3], ver.wi_ver[1]); sc->sc_firmware_ver = ver.wi_ver[2] * 100 +
sc->sc_prism2_ver = ver.wi_ver[2] * 100 + ver.wi_ver[3] * 10 + ver.wi_ver[1];
ver.wi_ver[3] * 10 + ver.wi_ver[1];
}
return; return;
} }

View File

@ -1,4 +1,4 @@
/* $NetBSD: wivar.h,v 1.8 2002/01/21 11:28:18 ichiro Exp $ */ /* $NetBSD: wivar.h,v 1.9 2002/03/25 09:10:55 dbj Exp $ */
/* /*
* Copyright (c) 1997, 1998, 1999 * Copyright (c) 1997, 1998, 1999
@ -49,7 +49,7 @@ struct wi_softc {
int sc_attached; int sc_attached;
int sc_enabled; int sc_enabled;
int sc_prism2; int sc_prism2;
int sc_prism2_ver; int sc_firmware_ver;
int sc_pci; /* attach to PCI-Bus */ int sc_pci; /* attach to PCI-Bus */
bus_space_tag_t sc_iot; /* bus cookie */ bus_space_tag_t sc_iot; /* bus cookie */