Added support for hex-encoded MAC address of Megahertz X-Jack Ethernet Card
Reviewed by: Warner Losh <imp@village.org>
This commit is contained in:
parent
bf005823c4
commit
de2119c894
@ -148,9 +148,6 @@ static u_int smc_crc(u_char *);
|
||||
*/
|
||||
#define SW_PAD
|
||||
|
||||
/* XXX KLUDGE XXX */
|
||||
u_char sn_pccard_macaddr[6] = { 0x00, 0x00, 0x86, 0x10, 0x2b, 0xc0 };
|
||||
|
||||
static const char *chip_ids[15] = {
|
||||
NULL, NULL, NULL,
|
||||
/* 3 */ "SMC91C90/91C92",
|
||||
@ -173,6 +170,7 @@ sn_attach(device_t dev)
|
||||
struct sockaddr_dl *sdl;
|
||||
int rev;
|
||||
u_short address;
|
||||
int j;
|
||||
|
||||
sn_activate(dev);
|
||||
|
||||
@ -192,18 +190,12 @@ sn_attach(device_t dev)
|
||||
i = inw(BASE + CONFIG_REG_W);
|
||||
printf(i & CR_AUI_SELECT ? "AUI" : "UTP");
|
||||
|
||||
if (1) {
|
||||
/* XXX The pccard probe routine for megahearts needs to */
|
||||
/* XXX snag this from your info 2 */
|
||||
int j;
|
||||
for (j = 0; j < 3; j++) {
|
||||
u_short w;
|
||||
|
||||
for (j = 0; j < 3; j++) {
|
||||
u_short w;
|
||||
|
||||
w = (u_short)sn_pccard_macaddr[j * 2] |
|
||||
(((u_short)sn_pccard_macaddr[j * 2 + 1]) << 8);
|
||||
outw(BASE + IAR_ADDR0_REG_W + j * 2, w);
|
||||
}
|
||||
w = (u_short)sc->arpcom.ac_enaddr[j * 2] |
|
||||
(((u_short)sc->arpcom.ac_enaddr[j * 2 + 1]) << 8);
|
||||
outw(BASE + IAR_ADDR0_REG_W + j * 2, w);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <machine/resource.h>
|
||||
#include <sys/rman.h>
|
||||
|
||||
#include <net/ethernet.h>
|
||||
#include <net/if.h>
|
||||
#include <net/if_arp.h>
|
||||
#include <net/if_media.h>
|
||||
@ -52,6 +53,7 @@
|
||||
|
||||
#include <dev/sn/if_snreg.h>
|
||||
#include <dev/sn/if_snvar.h>
|
||||
#include <dev/pccard/pccardvar.h>
|
||||
|
||||
/*
|
||||
* Initialize the device - called from Slot manager.
|
||||
@ -65,6 +67,17 @@ sn_pccard_probe(device_t dev)
|
||||
static int
|
||||
sn_pccard_attach(device_t dev)
|
||||
{
|
||||
struct sn_softc *sc = device_get_softc(dev);
|
||||
int i;
|
||||
u_char sum;
|
||||
u_char ether_addr[ETHER_ADDR_LEN];
|
||||
|
||||
pccard_get_ether(dev, ether_addr);
|
||||
for (i = 0, sum = 0; i < ETHER_ADDR_LEN; i++)
|
||||
sum |= ether_addr[i];
|
||||
if (sum)
|
||||
bcopy(ether_addr, sc->arpcom.ac_enaddr, ETHER_ADDR_LEN);
|
||||
|
||||
return (sn_attach(dev));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user