Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci Sync with *BSD. No functional change:



details:   https://anonhg.NetBSD.org/src/rev/52db085c4093
branches:  trunk
changeset: 785454:52db085c4093
user:      msaitoh <msaitoh%NetBSD.org@localhost>
date:      Thu Mar 14 18:49:20 2013 +0000

description:
Sync with *BSD. No functional change:
- make bge_chipid() and use it.
- use switch() instead of a lot of if()s.
- sort lines.

diffstat:

 sys/dev/pci/if_bge.c |  157 ++++++++++++++++++++++++++------------------------
 1 files changed, 81 insertions(+), 76 deletions(-)

diffs (213 lines):

diff -r a6e333a6034a -r 52db085c4093 sys/dev/pci/if_bge.c
--- a/sys/dev/pci/if_bge.c      Thu Mar 14 14:55:35 2013 +0000
+++ b/sys/dev/pci/if_bge.c      Thu Mar 14 18:49:20 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_bge.c,v 1.214 2013/03/13 09:44:20 msaitoh Exp $     */
+/*     $NetBSD: if_bge.c,v 1.215 2013/03/14 18:49:20 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.214 2013/03/13 09:44:20 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.215 2013/03/14 18:49:20 msaitoh Exp $");
 
 #include "vlan.h"
 
@@ -184,6 +184,7 @@
 
 typedef int (*bge_eaddr_fcn_t)(struct bge_softc *, uint8_t[]);
 
+static uint32_t bge_chipid(const struct pci_attach_args *pa);
 static int bge_probe(device_t, cfdata_t, void *);
 static void bge_attach(device_t, device_t, void *);
 static void bge_release_resources(struct bge_softc *);
@@ -647,14 +648,14 @@
          NULL },
 };
 
+#define BGE_IS_JUMBO_CAPABLE(sc)       ((sc)->bge_flags & BGE_JUMBO_CAPABLE)
 #define BGE_IS_5700_FAMILY(sc)         ((sc)->bge_flags & BGE_5700_FAMILY)
+#define BGE_IS_5705_PLUS(sc)           ((sc)->bge_flags & BGE_5705_PLUS)
 #define BGE_IS_5714_FAMILY(sc)         ((sc)->bge_flags & BGE_5714_FAMILY)
-#define BGE_IS_5705_PLUS(sc)   ((sc)->bge_flags & BGE_5705_PLUS)
-#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_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_PLUS(sc)          ((sc)->bge_flags & BGE_57765_PLUS)
-#define BGE_IS_JUMBO_CAPABLE(sc)       ((sc)->bge_flags & BGE_JUMBO_CAPABLE)
 
 static const struct bge_revision {
        uint32_t                br_chipid;
@@ -2610,6 +2611,42 @@
        return EOPNOTSUPP;
 }
 
+static uint32_t
+bge_chipid(const struct pci_attach_args *pa)
+{
+       uint32_t id;
+
+       id = pci_conf_read(pa->pa_pc, pa->pa_tag, BGE_PCI_MISC_CTL)
+               >> BGE_PCIMISCCTL_ASICREV_SHIFT;
+
+       if (BGE_ASICREV(id) == BGE_ASICREV_USE_PRODID_REG) {
+               switch (PCI_PRODUCT(pa->pa_id)) {
+               case PCI_PRODUCT_BROADCOM_BCM5717:
+               case PCI_PRODUCT_BROADCOM_BCM5718:
+               case PCI_PRODUCT_BROADCOM_BCM5724: /* ??? */
+                       id = pci_conf_read(pa->pa_pc, pa->pa_tag,
+                           BGE_PCI_GEN2_PRODID_ASICREV);
+                       break;
+               case PCI_PRODUCT_BROADCOM_BCM57761:
+               case PCI_PRODUCT_BROADCOM_BCM57762:
+               case PCI_PRODUCT_BROADCOM_BCM57765:
+               case PCI_PRODUCT_BROADCOM_BCM57766:
+               case PCI_PRODUCT_BROADCOM_BCM57781:
+               case PCI_PRODUCT_BROADCOM_BCM57785:
+               case PCI_PRODUCT_BROADCOM_BCM57791:
+               case PCI_PRODUCT_BROADCOM_BCM57795:
+                       id = pci_conf_read(pa->pa_pc, pa->pa_tag,
+                           BGE_PCI_GEN15_PRODID_ASICREV);
+                       break;
+               default:
+                       id = pci_conf_read(pa->pa_pc, pa->pa_tag,
+                           BGE_PCI_PRODID_ASICREV);
+                       break;
+               }
+       }
+
+       return id;
+}
 
 /*
  * Probe for a Broadcom chip. Check the PCI vendor and device IDs
@@ -2730,37 +2767,8 @@
        pci_conf_write(pc, sc->sc_pcitag, BGE_PCI_PWRMGMT_CMD, pm_ctl);
        DELAY(1000);    /* 27 usec is allegedly sufficent */
 
-       /*
-        * Save ASIC rev.
-        */
-       sc->bge_chipid =
-           pci_conf_read(pa->pa_pc, pa->pa_tag, BGE_PCI_MISC_CTL)
-               >> BGE_PCIMISCCTL_ASICREV_SHIFT;
-
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_USE_PRODID_REG) {
-               switch (PCI_PRODUCT(pa->pa_id)) {
-               case PCI_PRODUCT_BROADCOM_BCM5717:
-               case PCI_PRODUCT_BROADCOM_BCM5718:
-               case PCI_PRODUCT_BROADCOM_BCM5724: /* ??? */
-                       sc->bge_chipid = pci_conf_read(pc, pa->pa_tag,
-                           BGE_PCI_GEN2_PRODID_ASICREV);
-                       break;
-               case PCI_PRODUCT_BROADCOM_BCM57761:
-               case PCI_PRODUCT_BROADCOM_BCM57762:
-               case PCI_PRODUCT_BROADCOM_BCM57765:
-               case PCI_PRODUCT_BROADCOM_BCM57781:
-               case PCI_PRODUCT_BROADCOM_BCM57785:
-               case PCI_PRODUCT_BROADCOM_BCM57791:
-               case PCI_PRODUCT_BROADCOM_BCM57795:
-                       sc->bge_chipid = pci_conf_read(pc, pa->pa_tag,
-                           BGE_PCI_GEN15_PRODID_ASICREV);
-                       break;
-               default:
-                       sc->bge_chipid = pci_conf_read(pc, pa->pa_tag,
-                           BGE_PCI_PRODID_ASICREV);
-                       break;
-               }
-       }
+       /* Save various chip information. */
+       sc->bge_chipid = bge_chipid(pa);
 
        if ((pci_get_capability(sc->sc_pc, sc->sc_pcitag, PCI_CAP_PCIEXPRESS,
                &sc->bge_pciecap, NULL) != 0)
@@ -2778,48 +2786,45 @@
                            "unable to find PCIX capability\n");
        }
 
-       /* chipid */
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5700 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5701 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5703 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5704)
-               sc->bge_flags |= BGE_5700_FAMILY;
-
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5714_A0 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5780 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5714)
+       /* 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:
+               sc->bge_flags |= BGE_5717_PLUS | BGE_5755_PLUS | BGE_575X_PLUS |
+                   BGE_5705_PLUS;
+               break;
+       case BGE_ASICREV_BCM5755:
+       case BGE_ASICREV_BCM5761:
+       case BGE_ASICREV_BCM5784:
+       case BGE_ASICREV_BCM5785:
+       case BGE_ASICREV_BCM5787:
+       case BGE_ASICREV_BCM57780:
+               sc->bge_flags |= BGE_5755_PLUS | BGE_575X_PLUS | BGE_5705_PLUS;
+               break;
+       case BGE_ASICREV_BCM5700:
+       case BGE_ASICREV_BCM5701:
+       case BGE_ASICREV_BCM5703:
+       case BGE_ASICREV_BCM5704:
+               sc->bge_flags |= BGE_5700_FAMILY | BGE_JUMBO_CAPABLE;
+               break;
+       case BGE_ASICREV_BCM5714_A0:
+       case BGE_ASICREV_BCM5780:
+       case BGE_ASICREV_BCM5714:
                sc->bge_flags |= BGE_5714_FAMILY;
-
-       /* Intentionally exclude BGE_ASICREV_BCM5906 */
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5717 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5755 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5761 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5784 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5785 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5787 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM57765 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM57766 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM57780)
-               sc->bge_flags |= BGE_5755_PLUS;
-
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5750 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5752 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5906 ||
-           BGE_IS_5755_PLUS(sc) ||
-           BGE_IS_5714_FAMILY(sc))
+               /* FALLTHROUGH */
+       case BGE_ASICREV_BCM5750:
+       case BGE_ASICREV_BCM5752:
+       case BGE_ASICREV_BCM5906:
                sc->bge_flags |= BGE_575X_PLUS;
-
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5705 ||
-           BGE_IS_575X_PLUS(sc))
+               /* FALLTHROUGH */
+       case BGE_ASICREV_BCM5705:
                sc->bge_flags |= BGE_5705_PLUS;
-
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM57765 ||
-           BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM57766)
-               sc->bge_flags |= BGE_57765_PLUS;
-
-       if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5717 ||
-           BGE_IS_57765_PLUS(sc))
-               sc->bge_flags |= BGE_5717_PLUS;
+               break;
+       }
+
        /*
         * When using the BCM5701 in PCI-X mode, data corruption has
         * been observed in the first few bytes of some received packets.



Home | Main Index | Thread Index | Old Index