summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2015-05-14 05:10:42 +0000
committeryongari <yongari@FreeBSD.org>2015-05-14 05:10:42 +0000
commitf5235a5f5fc4a163052e895dec17dd5715a4ce6a (patch)
tree6b36b6095a9410ccf19e022bcdc0a786b4f63d5d /sys
parent677d1a06c2270f347f151f884993bc381f1bb6ff (diff)
downloadFreeBSD-src-f5235a5f5fc4a163052e895dec17dd5715a4ce6a.zip
FreeBSD-src-f5235a5f5fc4a163052e895dec17dd5715a4ce6a.tar.gz
MFC r281877:
Add another variant of BCM5708S controller to IBM HS21 workaround list. PR: 118238
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/mii/brgphy.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c
index dd29b34..94ee789 100644
--- a/sys/dev/mii/brgphy.c
+++ b/sys/dev/mii/brgphy.c
@@ -158,25 +158,33 @@ static const struct mii_phy_funcs brgphy_funcs = {
brgphy_reset
};
-#define HS21_PRODUCT_ID "IBM eServer BladeCenter HS21"
-#define HS21_BCM_CHIPID 0x57081021
+static const struct hs21_type {
+ const uint32_t id;
+ const char *prod;
+} hs21_type_lists[] = {
+ { 0x57081021, "IBM eServer BladeCenter HS21" },
+ { 0x57081011, "IBM eServer BladeCenter HS21 -[8853PAU]-" },
+};
static int
detect_hs21(struct bce_softc *bce_sc)
{
char *sysenv;
- int found;
+ int found, i;
found = 0;
- if (bce_sc->bce_chipid == HS21_BCM_CHIPID) {
- sysenv = getenv("smbios.system.product");
- if (sysenv != NULL) {
- if (strncmp(sysenv, HS21_PRODUCT_ID,
- strlen(HS21_PRODUCT_ID)) == 0)
- found = 1;
- freeenv(sysenv);
+ sysenv = getenv("smbios.system.product");
+ if (sysenv == NULL)
+ return (found);
+ for (i = 0; i < nitems(hs21_type_lists); i++) {
+ if (bce_sc->bce_chipid == hs21_type_lists[i].id &&
+ strncmp(sysenv, hs21_type_lists[i].prod,
+ strlen(hs21_type_lists[i].prod)) == 0) {
+ found++;
+ break;
}
}
+ freeenv(sysenv);
return (found);
}
OpenPOWER on IntegriCloud