Deleted Added
full compact
brgphy.c (83029) brgphy.c (83597)
1/*
2 * Copyright (c) 2000
3 * Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 15 unchanged lines hidden (view full) ---

24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30 * THE POSSIBILITY OF SUCH DAMAGE.
31 *
1/*
2 * Copyright (c) 2000
3 * Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 15 unchanged lines hidden (view full) ---

24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30 * THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 * $FreeBSD: head/sys/dev/mii/brgphy.c 83029 2001-09-04 22:00:33Z wpaul $
32 * $FreeBSD: head/sys/dev/mii/brgphy.c 83597 2001-09-18 00:31:19Z wpaul $
33 */
34
35/*
36 * Driver for the Broadcom BCR5400 1000baseTX PHY. Speed is always
37 * 1000mbps; all we need to negotiate here is full or half duplex.
38 */
39
40#include <sys/param.h>

--- 13 unchanged lines hidden (view full) ---

54#include <dev/mii/miidevs.h>
55
56#include <dev/mii/brgphyreg.h>
57
58#include "miibus_if.h"
59
60#if !defined(lint)
61static const char rcsid[] =
33 */
34
35/*
36 * Driver for the Broadcom BCR5400 1000baseTX PHY. Speed is always
37 * 1000mbps; all we need to negotiate here is full or half duplex.
38 */
39
40#include <sys/param.h>

--- 13 unchanged lines hidden (view full) ---

54#include <dev/mii/miidevs.h>
55
56#include <dev/mii/brgphyreg.h>
57
58#include "miibus_if.h"
59
60#if !defined(lint)
61static const char rcsid[] =
62 "$FreeBSD: head/sys/dev/mii/brgphy.c 83029 2001-09-04 22:00:33Z wpaul $";
62 "$FreeBSD: head/sys/dev/mii/brgphy.c 83597 2001-09-18 00:31:19Z wpaul $";
63#endif
64
65static int brgphy_probe __P((device_t));
66static int brgphy_attach __P((device_t));
67static int brgphy_detach __P((device_t));
68
69static device_method_t brgphy_methods[] = {
70 /* device interface */

--- 204 unchanged lines hidden (view full) ---

275 if ((mii->mii_ifp->if_flags & IFF_LINK0)) {
276 PHY_WRITE(sc, BRGPHY_MII_1000CTL,
277 BRGPHY_1000CTL_MSE|BRGPHY_1000CTL_MSC);
278 } else {
279 PHY_WRITE(sc, BRGPHY_MII_1000CTL,
280 BRGPHY_1000CTL_MSE);
281 }
282 break;
63#endif
64
65static int brgphy_probe __P((device_t));
66static int brgphy_attach __P((device_t));
67static int brgphy_detach __P((device_t));
68
69static device_method_t brgphy_methods[] = {
70 /* device interface */

--- 204 unchanged lines hidden (view full) ---

275 if ((mii->mii_ifp->if_flags & IFF_LINK0)) {
276 PHY_WRITE(sc, BRGPHY_MII_1000CTL,
277 BRGPHY_1000CTL_MSE|BRGPHY_1000CTL_MSC);
278 } else {
279 PHY_WRITE(sc, BRGPHY_MII_1000CTL,
280 BRGPHY_1000CTL_MSE);
281 }
282 break;
283#ifdef foo
284 case IFM_NONE:
285 PHY_WRITE(sc, MII_BMCR, BMCR_ISO|BMCR_PDOWN);
286 break;
287#endif
283 case IFM_100_T4:
284 default:
285 return (EINVAL);
286 }
287 break;
288
289 case MII_TICK:
290 /*

--- 111 unchanged lines hidden (view full) ---

402}
403
404
405static int
406brgphy_mii_phy_auto(mii, waitfor)
407 struct mii_softc *mii;
408 int waitfor;
409{
288 case IFM_100_T4:
289 default:
290 return (EINVAL);
291 }
292 break;
293
294 case MII_TICK:
295 /*

--- 111 unchanged lines hidden (view full) ---

407}
408
409
410static int
411brgphy_mii_phy_auto(mii, waitfor)
412 struct mii_softc *mii;
413 int waitfor;
414{
410 int bmsr, i;
415 int bmsr, ktcr = 0, i;
411
412 if ((mii->mii_flags & MIIF_DOINGAUTO) == 0) {
416
417 if ((mii->mii_flags & MIIF_DOINGAUTO) == 0) {
413 PHY_WRITE(mii, BRGPHY_MII_1000CTL,
418 mii_phy_reset(mii);
419 PHY_WRITE(mii, BRGPHY_MII_BMCR, 0);
420 DELAY(1000);
421 ktcr = PHY_READ(mii, BRGPHY_MII_1000CTL);
422 PHY_WRITE(mii, BRGPHY_MII_1000CTL, ktcr |
414 BRGPHY_1000CTL_AFD|BRGPHY_1000CTL_AHD);
423 BRGPHY_1000CTL_AFD|BRGPHY_1000CTL_AHD);
415 PHY_WRITE(mii, BRGPHY_MII_ANAR, BRGPHY_SEL_TYPE);
424 ktcr = PHY_READ(mii, BRGPHY_MII_1000CTL);
425 DELAY(1000);
426 PHY_WRITE(mii, BRGPHY_MII_ANAR,
427 BMSR_MEDIA_TO_ANAR(mii->mii_capabilities) | ANAR_CSMA);
428 DELAY(1000);
416 PHY_WRITE(mii, BRGPHY_MII_BMCR,
417 BRGPHY_BMCR_AUTOEN | BRGPHY_BMCR_STARTNEG);
418 PHY_WRITE(mii, BRGPHY_MII_IMR, 0xFF00);
419 }
420
421 if (waitfor) {
422 /* Wait 500ms for it to complete. */
423 for (i = 0; i < 500; i++) {

--- 30 unchanged lines hidden ---
429 PHY_WRITE(mii, BRGPHY_MII_BMCR,
430 BRGPHY_BMCR_AUTOEN | BRGPHY_BMCR_STARTNEG);
431 PHY_WRITE(mii, BRGPHY_MII_IMR, 0xFF00);
432 }
433
434 if (waitfor) {
435 /* Wait 500ms for it to complete. */
436 for (i = 0; i < 500; i++) {

--- 30 unchanged lines hidden ---