Index: sys/dev/pcmcia/if_ne_pcmcia.c *************** *** 87,92 **** --- 87,93 ---- u_int8_t [ETHER_ADDR_LEN]); u_int8_t *ne_pcmcia_dl10019_get_enaddr(struct ne_pcmcia_softc *, u_int8_t [ETHER_ADDR_LEN]); + int ne_pcmcia_ax88790_power_up(struct ne_pcmcia_softc *); CFATTACH_DECL_NEW(ne_pcmcia, sizeof(struct ne_pcmcia_softc), ne_pcmcia_match, ne_pcmcia_attach, ne_pcmcia_detach, dp8390_activate); *************** *** 182,187 **** --- 183,227 ---- PCMCIA_CIS_GENIUS_ME3000II, 0, -1, { 0x00, 0x40, 0x95 }, 0 }, + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "PCMCIA", "LD-CDK/TX" }, + 0, -1, { 0x00, 0x00, 0x00 }, NE2000DVF_AX88190 }, + + /* BUFFALO LPC2-CLT */ + { PCMCIA_VENDOR_BUFFALO, 0x300, + PCMCIA_CIS_INVALID, + 0, -1, { 0x00, 0x00, 0x00 }, 0 }, + + /* BUFFALO LPC3-CLX */ + { PCMCIA_VENDOR_BUFFALO, 0x301, + PCMCIA_CIS_INVALID, + 0, -1, { 0x00, 0x00, 0x00 }, NE2000DVF_AX88190 }, + + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "BUFFALO", "LPC-PCM-CLX" }, + 0, -1, { 0x00, 0x00, 0x00 }, NE2000DVF_AX88190 }, + + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "corega K.K.", "corega FEther PCC-TXD" }, + 0, -1, { 0x00, 0x00, 0x00 }, NE2000DVF_AX88190 }, + + /* FNW-3700-TX */ + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "Fast Ethernet", "16-bit PC Card" }, + 0, -1, { 0x00, 0x00, 0x00 }, NE2000DVF_AX88190 }, + + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "Allied Telesis K.K.", "LA100-PCM V2" }, + 0, -1, { 0x00, 0x90, 0x99 }, NE2000DVF_DL10019 }, + + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "GREEN HOUSE", "ELP100NLC" }, + 0, -1, { 0x00, 0x00, 0x00 }, NE2000DVF_AX88190 }, + + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "Logitec", "LPM-LN100TL" }, + 0, -1, { 0x00, 0x00, 0x00 }, NE2000DVF_AX88190 }, + /* * You have to add new entries which contains *************** *** 414,420 **** { PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA411, PCMCIA_CIS_INVALID, ! 0, -1, { 0x00, 0x40, 0xf4 }, 0 }, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, PCMCIA_CIS_DYNALINK_L10C, --- 454,460 ---- { PCMCIA_VENDOR_NETGEAR, PCMCIA_PRODUCT_NETGEAR_FA411, PCMCIA_CIS_INVALID, ! 0, -1, { 0x00, 0x40, 0xf4 }, NE2000DVF_AX88190 }, { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, PCMCIA_CIS_DYNALINK_L10C, *************** *** 693,698 **** --- 733,739 ---- if (test != 0) { nsc->sc_type = NE2000_TYPE_AX88790; typestr = " (AX88790)"; + ne_pcmcia_ax88790_power_up(psc); } else { nsc->sc_type = NE2000_TYPE_AX88190; typestr = " (AX88190)"; *************** *** 785,790 **** --- 826,832 ---- ne_pcmcia_enable(struct dp8390_softc *dsc) { struct ne_pcmcia_softc *psc = (struct ne_pcmcia_softc *)dsc; + struct ne2000_softc *nsc = (void *)dsc; int error; /* set up the interrupt */ *************** *** 799,804 **** --- 841,849 ---- psc->sc_ih = 0; } + if (error == 0 && nsc->sc_type == NE2000_TYPE_AX88790) + ne_pcmcia_ax88790_power_up(psc); + return (error); } *************** *** 868,870 **** --- 913,930 ---- #undef PAR0 return (myea); } + + int + ne_pcmcia_ax88790_power_up(psc) + struct ne_pcmcia_softc *psc; + { + struct pcmcia_function *pf = psc->sc_pf; + struct ne2000_softc *nsc = (void *)psc; + + /* Power *up* phy. */ + pcmcia_ccr_write(pf, PCMCIA_CCR_STATUS, PCMCIA_CCR_STATUS_PWRDWN); + + /* Use internal phy. */ + bus_space_write_1(nsc->sc_asict, nsc->sc_asich, 0x07, 0x10); + return 0; + } Index: sys/dev/pcmcia/pcmcia_cis_quirks.c *************** *** 234,240 **** --- 234,268 ---- .irqmask = 0x3fbc, /* irqmask */ }; + static const struct pcmcia_function pcmcia_ax88790_func0 = { + .number = 0, + .function = PCMCIA_FUNCTION_NETWORK, + .last_config_index = 0, /* XXX unused */ + .ccr_base = 0x3c0, + .ccr_mask = 0x63 + }; + + static const struct pcmcia_config_entry pcmcia_ax88790_cfe0 = { + .number = 7, + .flags = PCMCIA_CFE_IO16 | PCMCIA_CFE_IRQLEVEL | + PCMCIA_CFE_MWAIT_REQUIRED, + .iftype = PCMCIA_IFTYPE_IO, + .num_iospace = 1, + .iomask = 10, + .iospace = { { .length = 0x20, .start = 0x300 } }, + .irqmask = 0xffff + }; + static const struct pcmcia_cis_quirk pcmcia_cis_quirks[] = { + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "Logitec", "LPM-LN100TL" }, + &pcmcia_ax88790_func0, &pcmcia_ax88790_cfe0 }, + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "IO DATA", "ETXPCM" }, + &pcmcia_ax88790_func0, &pcmcia_ax88790_cfe0 }, + { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID, + { "Fast Ethernet", "16-bit PC Card" }, /* FNW-3700-TX */ + &pcmcia_ax88790_func0, &pcmcia_ax88790_cfe0 }, { PCMCIA_VENDOR_3COM, PCMCIA_PRODUCT_3COM_3CXEM556, PCMCIA_CIS_INVALID, &pcmcia_3cxem556_func0, &pcmcia_3cxem556_func0_cfe0 },