diff options
author | Pyun YongHyeon <yongari@FreeBSD.org> | 2015-04-23 01:39:28 +0000 |
---|---|---|
committer | Pyun YongHyeon <yongari@FreeBSD.org> | 2015-04-23 01:39:28 +0000 |
commit | 0d3c2a9a16a15ad8b2650e0794756802dde6ff7e (patch) | |
tree | 815f59de0721e2d14888f64a18680a4143e93188 /sys/dev/mii | |
parent | 08a75d1f0e7d885f5a891e0e3e64a540daf15689 (diff) | |
download | src-test2-0d3c2a9a16a15ad8b2650e0794756802dde6ff7e.tar.gz src-test2-0d3c2a9a16a15ad8b2650e0794756802dde6ff7e.zip |
Notes
Diffstat (limited to 'sys/dev/mii')
-rw-r--r-- | sys/dev/mii/brgphy.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c index 0d22430720fe..32914a386484 100644 --- a/sys/dev/mii/brgphy.c +++ b/sys/dev/mii/brgphy.c @@ -160,25 +160,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 = kern_getenv("smbios.system.product"); - if (sysenv != NULL) { - if (strncmp(sysenv, HS21_PRODUCT_ID, - strlen(HS21_PRODUCT_ID)) == 0) - found = 1; - freeenv(sysenv); + sysenv = kern_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); } |