if_bge.c (100695) | if_bge.c (103103) |
---|---|
1/* 2 * Copyright (c) 2001 Wind River Systems 3 * Copyright (c) 1997, 1998, 1999, 2001 4 * Bill Paul <wpaul@windriver.com>. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 16 unchanged lines hidden (view full) --- 25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31 * THE POSSIBILITY OF SUCH DAMAGE. 32 * | 1/* 2 * Copyright (c) 2001 Wind River Systems 3 * Copyright (c) 1997, 1998, 1999, 2001 4 * Bill Paul <wpaul@windriver.com>. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 16 unchanged lines hidden (view full) --- 25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31 * THE POSSIBILITY OF SUCH DAMAGE. 32 * |
33 * $FreeBSD: head/sys/dev/bge/if_bge.c 100695 2002-07-26 03:47:08Z jdp $ | 33 * $FreeBSD: head/sys/dev/bge/if_bge.c 103103 2002-09-08 19:12:02Z jdp $ |
34 */ 35 36/* 37 * Broadcom BCM570x family gigabit ethernet driver for FreeBSD. 38 * 39 * Written by Bill Paul <wpaul@windriver.com> 40 * Senior Engineer, Wind River Systems 41 */ --- 75 unchanged lines hidden (view full) --- 117 118MODULE_DEPEND(bge, miibus, 1, 1, 1); 119 120/* "controller miibus0" required. See GENERIC if you get errors here. */ 121#include "miibus_if.h" 122 123#if !defined(lint) 124static const char rcsid[] = | 34 */ 35 36/* 37 * Broadcom BCM570x family gigabit ethernet driver for FreeBSD. 38 * 39 * Written by Bill Paul <wpaul@windriver.com> 40 * Senior Engineer, Wind River Systems 41 */ --- 75 unchanged lines hidden (view full) --- 117 118MODULE_DEPEND(bge, miibus, 1, 1, 1); 119 120/* "controller miibus0" required. See GENERIC if you get errors here. */ 121#include "miibus_if.h" 122 123#if !defined(lint) 124static const char rcsid[] = |
125 "$FreeBSD: head/sys/dev/bge/if_bge.c 100695 2002-07-26 03:47:08Z jdp $"; | 125 "$FreeBSD: head/sys/dev/bge/if_bge.c 103103 2002-09-08 19:12:02Z jdp $"; |
126#endif 127 128/* 129 * Various supported device vendors/types and their names. Note: the 130 * spec seems to indicate that the hardware still has Alteon's vendor 131 * ID burned into it, though it will always be overriden by the vendor 132 * ID in the EEPROM. Just to be safe, we cover all possibilities. 133 */ 134 135static struct bge_type bge_devs[] = { 136 { ALT_VENDORID, ALT_DEVICEID_BCM5700, 137 "Broadcom BCM5700 Gigabit Ethernet" }, 138 { ALT_VENDORID, ALT_DEVICEID_BCM5701, 139 "Broadcom BCM5701 Gigabit Ethernet" }, 140 { BCOM_VENDORID, BCOM_DEVICEID_BCM5700, 141 "Broadcom BCM5700 Gigabit Ethernet" }, 142 { BCOM_VENDORID, BCOM_DEVICEID_BCM5701, 143 "Broadcom BCM5701 Gigabit Ethernet" }, | 126#endif 127 128/* 129 * Various supported device vendors/types and their names. Note: the 130 * spec seems to indicate that the hardware still has Alteon's vendor 131 * ID burned into it, though it will always be overriden by the vendor 132 * ID in the EEPROM. Just to be safe, we cover all possibilities. 133 */ 134 135static struct bge_type bge_devs[] = { 136 { ALT_VENDORID, ALT_DEVICEID_BCM5700, 137 "Broadcom BCM5700 Gigabit Ethernet" }, 138 { ALT_VENDORID, ALT_DEVICEID_BCM5701, 139 "Broadcom BCM5701 Gigabit Ethernet" }, 140 { BCOM_VENDORID, BCOM_DEVICEID_BCM5700, 141 "Broadcom BCM5700 Gigabit Ethernet" }, 142 { BCOM_VENDORID, BCOM_DEVICEID_BCM5701, 143 "Broadcom BCM5701 Gigabit Ethernet" }, |
144 { BCOM_VENDORID, BCOM_DEVICEID_BCM5703X, 145 "Broadcom BCM5703X Gigabit Ethernet" }, |
|
144 { SK_VENDORID, SK_DEVICEID_ALTIMA, 145 "SysKonnect Gigabit Ethernet" }, 146 { ALTIMA_VENDORID, ALTIMA_DEVICE_AC1000, 147 "Altima AC1000 Gigabit Ethernet" }, 148 { ALTIMA_VENDORID, ALTIMA_DEVICE_AC9100, 149 "Altima AC9100 Gigabit Ethernet" }, 150 { 0, 0, NULL } 151}; --- 324 unchanged lines hidden (view full) --- 476 struct bge_softc *sc; 477 struct ifnet *ifp; 478 u_int32_t val; 479 int i; 480 481 sc = device_get_softc(dev); 482 ifp = &sc->arpcom.ac_if; 483 | 146 { SK_VENDORID, SK_DEVICEID_ALTIMA, 147 "SysKonnect Gigabit Ethernet" }, 148 { ALTIMA_VENDORID, ALTIMA_DEVICE_AC1000, 149 "Altima AC1000 Gigabit Ethernet" }, 150 { ALTIMA_VENDORID, ALTIMA_DEVICE_AC9100, 151 "Altima AC9100 Gigabit Ethernet" }, 152 { 0, 0, NULL } 153}; --- 324 unchanged lines hidden (view full) --- 478 struct bge_softc *sc; 479 struct ifnet *ifp; 480 u_int32_t val; 481 int i; 482 483 sc = device_get_softc(dev); 484 ifp = &sc->arpcom.ac_if; 485 |
484 if (sc->bge_asicrev == BGE_ASICREV_BCM5701_B5 && phy != 1) 485 return(0); | 486 if (phy != 1) 487 switch(sc->bge_asicrev) { 488 case BGE_ASICREV_BCM5701_B5: 489 case BGE_ASICREV_BCM5703_A2: 490 return(0); 491 } |
486 487 CSR_WRITE_4(sc, BGE_MI_COMM, BGE_MICMD_READ|BGE_MICOMM_BUSY| 488 BGE_MIPHY(phy)|BGE_MIREG(reg)); 489 490 for (i = 0; i < BGE_TIMEOUT; i++) { 491 val = CSR_READ_4(sc, BGE_MI_COMM); 492 if (!(val & BGE_MICOMM_BUSY)) 493 break; --- 982 unchanged lines hidden (view full) --- 1476bge_attach(dev) 1477 device_t dev; 1478{ 1479 int s; 1480 u_int32_t command; 1481 struct ifnet *ifp; 1482 struct bge_softc *sc; 1483 u_int32_t hwcfg = 0; | 492 493 CSR_WRITE_4(sc, BGE_MI_COMM, BGE_MICMD_READ|BGE_MICOMM_BUSY| 494 BGE_MIPHY(phy)|BGE_MIREG(reg)); 495 496 for (i = 0; i < BGE_TIMEOUT; i++) { 497 val = CSR_READ_4(sc, BGE_MI_COMM); 498 if (!(val & BGE_MICOMM_BUSY)) 499 break; --- 982 unchanged lines hidden (view full) --- 1482bge_attach(dev) 1483 device_t dev; 1484{ 1485 int s; 1486 u_int32_t command; 1487 struct ifnet *ifp; 1488 struct bge_softc *sc; 1489 u_int32_t hwcfg = 0; |
1490 u_int32_t mac_addr = 0; |
|
1484 int unit, error = 0, rid; 1485 1486 s = splimp(); 1487 1488 sc = device_get_softc(dev); 1489 unit = device_get_unit(dev); 1490 sc->bge_dev = dev; 1491 sc->bge_unit = unit; --- 72 unchanged lines hidden (view full) --- 1564 bge_release_resources(sc); 1565 error = ENXIO; 1566 goto fail; 1567 } 1568 1569 /* 1570 * Get station address from the EEPROM. 1571 */ | 1491 int unit, error = 0, rid; 1492 1493 s = splimp(); 1494 1495 sc = device_get_softc(dev); 1496 unit = device_get_unit(dev); 1497 sc->bge_dev = dev; 1498 sc->bge_unit = unit; --- 72 unchanged lines hidden (view full) --- 1571 bge_release_resources(sc); 1572 error = ENXIO; 1573 goto fail; 1574 } 1575 1576 /* 1577 * Get station address from the EEPROM. 1578 */ |
1572 if (bge_read_eeprom(sc, (caddr_t)&sc->arpcom.ac_enaddr, | 1579 mac_addr = bge_readmem_ind(sc, 0x0c14); 1580 if ((mac_addr >> 16) == 0x484b) { 1581 sc->arpcom.ac_enaddr[0] = (u_char)(mac_addr >> 8); 1582 sc->arpcom.ac_enaddr[1] = (u_char)mac_addr; 1583 mac_addr = bge_readmem_ind(sc, 0x0c18); 1584 sc->arpcom.ac_enaddr[2] = (u_char)(mac_addr >> 24); 1585 sc->arpcom.ac_enaddr[3] = (u_char)(mac_addr >> 16); 1586 sc->arpcom.ac_enaddr[4] = (u_char)(mac_addr >> 8); 1587 sc->arpcom.ac_enaddr[5] = (u_char)mac_addr; 1588 } else if (bge_read_eeprom(sc, (caddr_t)&sc->arpcom.ac_enaddr, |
1573 BGE_EE_MAC_OFFSET + 2, ETHER_ADDR_LEN)) { 1574 printf("bge%d: failed to read station address\n", unit); 1575 bge_release_resources(sc); 1576 error = ENXIO; 1577 goto fail; 1578 } 1579 1580 /* --- 1205 unchanged lines hidden --- | 1589 BGE_EE_MAC_OFFSET + 2, ETHER_ADDR_LEN)) { 1590 printf("bge%d: failed to read station address\n", unit); 1591 bge_release_resources(sc); 1592 error = ENXIO; 1593 goto fail; 1594 } 1595 1596 /* --- 1205 unchanged lines hidden --- |