mirror of https://github.com/hak5/openwrt.git
generic: ar8216: improve ar8xxx_is_possible check
The commit "generic: ar8216: add sanity check to ar8216_probe"
(774da6c7a4
) stated that PHY IDs
should be checked at address 0-4. However, the PHY 4 was
never check by the loop. This patch extends the check to be
similar to the Atheors SDK. It tries all 4 ports and skips
unconnected PHYs if necessary. If it cannot find any familiar
PHYs, it will prevent the phy driver from initializing.
This patch is necessary for the C-60. It doesn't have a
PHY at port 3, so this caused the check in ar8xxx_is_possible
to fail. As a result, the ethernet ports on the C-60 didn't
work.
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
lede-17.01
parent
bcfb535730
commit
e9455c561d
|
@ -2113,21 +2113,21 @@ ar8xxx_phy_match(u32 phy_id)
|
||||||
static bool
|
static bool
|
||||||
ar8xxx_is_possible(struct mii_bus *bus)
|
ar8xxx_is_possible(struct mii_bus *bus)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned int i, found_phys = 0;
|
||||||
|
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
u32 phy_id;
|
u32 phy_id;
|
||||||
|
|
||||||
phy_id = mdiobus_read(bus, i, MII_PHYSID1) << 16;
|
phy_id = mdiobus_read(bus, i, MII_PHYSID1) << 16;
|
||||||
phy_id |= mdiobus_read(bus, i, MII_PHYSID2);
|
phy_id |= mdiobus_read(bus, i, MII_PHYSID2);
|
||||||
if (!ar8xxx_phy_match(phy_id)) {
|
if (ar8xxx_phy_match(phy_id)) {
|
||||||
|
found_phys++;
|
||||||
|
} else if (phy_id) {
|
||||||
pr_debug("ar8xxx: unknown PHY at %s:%02x id:%08x\n",
|
pr_debug("ar8xxx: unknown PHY at %s:%02x id:%08x\n",
|
||||||
dev_name(&bus->dev), i, phy_id);
|
dev_name(&bus->dev), i, phy_id);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return !!found_phys;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Reference in New Issue