Module Name: src Committed By: msaitoh Date: Mon Jul 8 05:24:34 UTC 2013
Modified Files: src/sys/dev/pci: if_bge.c if_bgereg.h Log Message: 57765 series is not based on 5717 series. 5717 series is based on 57765 series. To generate a diff of this commit: cvs rdiff -u -r1.256 -r1.257 src/sys/dev/pci/if_bge.c cvs rdiff -u -r1.81 -r1.82 src/sys/dev/pci/if_bgereg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/if_bge.c diff -u src/sys/dev/pci/if_bge.c:1.256 src/sys/dev/pci/if_bge.c:1.257 --- src/sys/dev/pci/if_bge.c:1.256 Fri Jul 5 07:08:26 2013 +++ src/sys/dev/pci/if_bge.c Mon Jul 8 05:24:34 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bge.c,v 1.256 2013/07/05 07:08:26 msaitoh Exp $ */ +/* $NetBSD: if_bge.c,v 1.257 2013/07/08 05:24:34 msaitoh Exp $ */ /* * Copyright (c) 2001 Wind River Systems @@ -79,7 +79,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.256 2013/07/05 07:08:26 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.257 2013/07/08 05:24:34 msaitoh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -677,8 +677,9 @@ static const struct bge_product { #define BGE_IS_5714_FAMILY(sc) ((sc)->bge_flags & BGE_5714_FAMILY) #define BGE_IS_575X_PLUS(sc) ((sc)->bge_flags & BGE_575X_PLUS) #define BGE_IS_5755_PLUS(sc) ((sc)->bge_flags & BGE_5755_PLUS) -#define BGE_IS_5717_PLUS(sc) ((sc)->bge_flags & BGE_5717_PLUS) +#define BGE_IS_57765_FAMILY(sc) ((sc)->bge_flags & BGE_57765_FAMILY) #define BGE_IS_57765_PLUS(sc) ((sc)->bge_flags & BGE_57765_PLUS) +#define BGE_IS_5717_PLUS(sc) ((sc)->bge_flags & BGE_5717_PLUS) static const struct bge_revision { uint32_t br_chipid; @@ -2285,8 +2286,7 @@ bge_chipinit(struct bge_softc *sc) CSR_WRITE_4(sc, BGE_MODE_CTL, mode_ctl); } - /* XXX Should we use 57765_FAMILY? */ - if (BGE_IS_57765_PLUS(sc)) { + if (BGE_IS_57765_FAMILY(sc)) { if (sc->bge_chipid == BGE_CHIPID_BCM57765_A0) { /* Save */ mode_ctl = CSR_READ_4(sc, BGE_MODE_CTL); @@ -2403,7 +2403,7 @@ bge_chipinit(struct bge_softc *sc) BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5704) dma_rw_ctl &= ~BGE_PCIDMARWCTL_MINDMA; - if (BGE_IS_5717_PLUS(sc)) { + if (BGE_IS_57765_PLUS(sc)) { dma_rw_ctl &= ~BGE_PCIDMARWCTL_DIS_CACHE_ALIGNMENT; if (sc->bge_chipid == BGE_CHIPID_BCM57765_A0) dma_rw_ctl &= ~BGE_PCIDMARWCTL_CRDRDR_RDMA_MRRS_MSK; @@ -2413,8 +2413,8 @@ bge_chipinit(struct bge_softc *sc) * a status tag update and leave interrupts permanently * disabled. */ - if (BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM5717 && - BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM57765) + if (!BGE_IS_57765_FAMILY(sc) && + BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM5717) dma_rw_ctl |= BGE_PCIDMARWCTL_TAGGED_STATUS_WA; } @@ -2635,7 +2635,7 @@ bge_blockinit(struct bge_softc *sc) rcb = &sc->bge_rdata->bge_info.bge_std_rx_rcb; BGE_HOSTADDR(rcb->bge_hostaddr, BGE_RING_DMA_ADDR(sc, bge_rx_std_ring)); /* 5718 step 16 */ - if (BGE_IS_5717_PLUS(sc)) { + if (BGE_IS_57765_PLUS(sc)) { /* * Bits 31-16: Programmable ring size (2048, 1024, 512, .., 32) * Bits 15-2 : Maximum RX frame size @@ -2801,15 +2801,13 @@ bge_blockinit(struct bge_softc *sc) * 'ring diabled' bit in the flags field of all the receive * return ring control blocks, located in NIC memory. */ - if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5717 || - BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5719 || - BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5720) { + if (BGE_IS_5717_PLUS(sc)) { /* Should be 17, use 16 until we get an SRAM map. */ limit = 16; } else if (BGE_IS_5700_FAMILY(sc)) limit = BGE_RX_RINGS_MAX; else if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5755 || - BGE_IS_57765_PLUS(sc)) + BGE_IS_57765_FAMILY(sc)) limit = 4; else limit = 1; @@ -3043,7 +3041,7 @@ bge_blockinit(struct bge_softc *sc) BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5784 || BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5785 || BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM57780 || - BGE_IS_5717_PLUS(sc)) { /* XXX 57765? */ + BGE_IS_57765_PLUS(sc)) { dmactl = CSR_READ_4(sc, BGE_RDMA_RSRVCTRL); /* * Adjust tx margin to prevent TX data corruption and @@ -3398,14 +3396,16 @@ bge_attach(device_t parent, device_t sel /* Save chipset family. */ switch (BGE_ASICREV(sc->bge_chipid)) { - case BGE_ASICREV_BCM57765: - case BGE_ASICREV_BCM57766: - sc->bge_flags |= BGE_57765_PLUS; - /* FALLTHROUGH */ case BGE_ASICREV_BCM5717: case BGE_ASICREV_BCM5719: case BGE_ASICREV_BCM5720: - sc->bge_flags |= BGE_5717_PLUS | BGE_5755_PLUS | + sc->bge_flags |= BGE_5717_PLUS; + /* FALLTHROUGH */ + case BGE_ASICREV_BCM57765: + case BGE_ASICREV_BCM57766: + if (!BGE_IS_5717_PLUS(sc)) + sc->bge_flags |= BGE_57765_FAMILY; + sc->bge_flags |= BGE_57765_PLUS | BGE_5755_PLUS | BGE_575X_PLUS | BGE_5705_PLUS | BGE_JUMBO_CAPABLE; /* Jumbo frame on BCM5719 A0 does not work. */ if ((BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5719) && @@ -3577,7 +3577,7 @@ bge_attach(device_t parent, device_t sel BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM5906 && BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM5785 && BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM57780 && - !BGE_IS_5717_PLUS(sc)) { + !BGE_IS_57765_PLUS(sc)) { if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5755 || BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5761 || BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5784 || @@ -4394,7 +4394,7 @@ static void bge_rxcsum(struct bge_softc *sc, struct bge_rx_bd *cur_rx, struct mbuf *m) { - if (BGE_IS_5717_PLUS(sc)) { + if (BGE_IS_57765_PLUS(sc)) { if ((cur_rx->bge_flags & BGE_RXBDFLAG_IPV6) == 0) { if ((cur_rx->bge_flags & BGE_RXBDFLAG_IP_CSUM) != 0) m->m_pkthdr.csum_flags = M_CSUM_IPv4; Index: src/sys/dev/pci/if_bgereg.h diff -u src/sys/dev/pci/if_bgereg.h:1.81 src/sys/dev/pci/if_bgereg.h:1.82 --- src/sys/dev/pci/if_bgereg.h:1.81 Fri May 31 17:15:19 2013 +++ src/sys/dev/pci/if_bgereg.h Mon Jul 8 05:24:34 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bgereg.h,v 1.81 2013/05/31 17:15:19 msaitoh Exp $ */ +/* $NetBSD: if_bgereg.h,v 1.82 2013/07/08 05:24:34 msaitoh Exp $ */ /* * Copyright (c) 2001 Wind River Systems * Copyright (c) 1997, 1998, 1999, 2001 @@ -2631,7 +2631,8 @@ struct vpd_key { #define BGE_5714_FAMILY 0x01000000 #define BGE_5700_FAMILY 0x02000000 #define BGE_5717_PLUS 0x04000000 -#define BGE_57765_PLUS 0x08000000 -#define BGE_APE 0x10000000 -#define BGE_CPMU_PRESENT 0x20000000 +#define BGE_57765_FAMILY 0x08000000 +#define BGE_57765_PLUS 0x10000000 +#define BGE_APE 0x20000000 +#define BGE_CPMU_PRESENT 0x40000000 #define BGE_TSO 0x80000000