Module Name: src Committed By: cegger Date: Tue Aug 18 05:50:55 UTC 2009
Modified Files: src/sys/dev/pci: if_ale.c Log Message: don't read/write 1000baseT specific MII registers on 10/100M only device. from OpenBSD. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/dev/pci/if_ale.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/if_ale.c diff -u src/sys/dev/pci/if_ale.c:1.5 src/sys/dev/pci/if_ale.c:1.6 --- src/sys/dev/pci/if_ale.c:1.5 Wed Aug 5 07:03:04 2009 +++ src/sys/dev/pci/if_ale.c Tue Aug 18 05:50:55 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ale.c,v 1.5 2009/08/05 07:03:04 cegger Exp $ */ +/* $NetBSD: if_ale.c,v 1.6 2009/08/18 05:50:55 cegger Exp $ */ /*- * Copyright (c) 2008, Pyun YongHyeon <yong...@freebsd.org> @@ -32,7 +32,7 @@ /* Driver for Atheros AR8121/AR8113/AR8114 PCIe Ethernet. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ale.c,v 1.5 2009/08/05 07:03:04 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ale.c,v 1.6 2009/08/18 05:50:55 cegger Exp $"); #include "bpfilter.h" #include "vlan.h" @@ -142,6 +142,17 @@ if (phy != sc->ale_phyaddr) return 0; + if (sc->ale_flags & ALE_FLAG_FASTETHER) { + switch (reg) { + case MII_100T2CR: + case MII_100T2SR: + case MII_EXTSR: + return 0; + default: + break; + } + } + CSR_WRITE_4(sc, ALE_MDIO, MDIO_OP_EXECUTE | MDIO_OP_READ | MDIO_SUP_PREAMBLE | MDIO_CLK_25_4 | MDIO_REG_ADDR(reg)); for (i = ALE_PHY_TIMEOUT; i > 0; i--) { @@ -157,7 +168,7 @@ return 0; } - return ((v & MDIO_DATA_MASK) >> MDIO_DATA_SHIFT); + return (v & MDIO_DATA_MASK) >> MDIO_DATA_SHIFT; } static void @@ -170,6 +181,17 @@ if (phy != sc->ale_phyaddr) return; + if (sc->ale_flags & ALE_FLAG_FASTETHER) { + switch (reg) { + case MII_100T2CR: + case MII_100T2SR: + case MII_EXTSR: + return; + default: + break; + } + } + CSR_WRITE_4(sc, ALE_MDIO, MDIO_OP_EXECUTE | MDIO_OP_WRITE | (val & MDIO_DATA_MASK) << MDIO_DATA_SHIFT | MDIO_SUP_PREAMBLE | MDIO_CLK_25_4 | MDIO_REG_ADDR(reg));