From 325931c9019c094da49cdc73adc3317c9039d24c Mon Sep 17 00:00:00 2001 From: Bill Paul Date: Fri, 22 Sep 2000 03:49:12 +0000 Subject: [PATCH] Make pcn_miibus_readreg() latch onto the first PHY that it finds (as a result of mii_phy_probe()) and use that rather than hardcoding a constant. The hardcoded way was too specific to the particular card I had and caused PHY probing to fail on at least one laptop with a built-in AMD chip. Reported by: rjk@grauel.com (Richard J Kuhns) --- sys/pci/if_pcn.c | 5 ++++- sys/pci/if_pcnreg.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/pci/if_pcn.c b/sys/pci/if_pcn.c index 5f6625b433b7..0767dffc916f 100644 --- a/sys/pci/if_pcn.c +++ b/sys/pci/if_pcn.c @@ -238,13 +238,16 @@ static int pcn_miibus_readreg(dev, phy, reg) sc = device_get_softc(dev); - if (phy >= 30) + if (sc->pcn_phyaddr && phy > sc->pcn_phyaddr) return(0); pcn_bcr_write(sc, PCN_BCR_MIIADDR, reg | (phy << 5)); val = pcn_bcr_read(sc, PCN_BCR_MIIDATA) & 0xFFFF; if (val == 0xFFFF) return(0); + + sc->pcn_phyaddr = phy; + return(val); } diff --git a/sys/pci/if_pcnreg.h b/sys/pci/if_pcnreg.h index 70740352e963..dc234b62895f 100644 --- a/sys/pci/if_pcnreg.h +++ b/sys/pci/if_pcnreg.h @@ -453,6 +453,7 @@ struct pcn_softc { device_t pcn_miibus; u_int8_t pcn_unit; u_int8_t pcn_link; + u_int8_t pcn_phyaddr; int pcn_if_flags; int pcn_type; struct pcn_list_data *pcn_ldata;