~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/drivers/net/phy/smsc.c

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * SMSC PHY drivers
 
3
 *
 
4
 * SPDX-License-Identifier:     GPL-2.0+
 
5
 *
 
6
 * Base code from drivers/net/phy/davicom.c
 
7
 *   Copyright 2010-2011 Freescale Semiconductor, Inc.
 
8
 *   author Andy Fleming
 
9
 *
 
10
 * Some code copied from linux kernel
 
11
 * Copyright (c) 2006 Herbert Valerio Riedel <hvr@gnu.org>
 
12
 */
 
13
#include <miiphy.h>
 
14
 
 
15
/* This code does not check the partner abilities. */
 
16
static int smsc_parse_status(struct phy_device *phydev)
 
17
{
 
18
        int mii_reg;
 
19
 
 
20
        mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMSR);
 
21
 
 
22
        if (mii_reg & (BMSR_100FULL | BMSR_100HALF))
 
23
                phydev->speed = SPEED_100;
 
24
        else
 
25
                phydev->speed = SPEED_10;
 
26
 
 
27
        if (mii_reg & (BMSR_10FULL | BMSR_100FULL))
 
28
                phydev->duplex = DUPLEX_FULL;
 
29
        else
 
30
                phydev->duplex = DUPLEX_HALF;
 
31
 
 
32
        return 0;
 
33
}
 
34
 
 
35
static int smsc_startup(struct phy_device *phydev)
 
36
{
 
37
        genphy_update_link(phydev);
 
38
        smsc_parse_status(phydev);
 
39
        return 0;
 
40
}
 
41
 
 
42
static struct phy_driver lan8700_driver = {
 
43
        .name = "SMSC LAN8700",
 
44
        .uid = 0x0007c0c0,
 
45
        .mask = 0xffff0,
 
46
        .features = PHY_BASIC_FEATURES,
 
47
        .config = &genphy_config_aneg,
 
48
        .startup = &smsc_startup,
 
49
        .shutdown = &genphy_shutdown,
 
50
};
 
51
 
 
52
static struct phy_driver lan911x_driver = {
 
53
        .name = "SMSC LAN911x Internal PHY",
 
54
        .uid = 0x0007c0d0,
 
55
        .mask = 0xffff0,
 
56
        .features = PHY_BASIC_FEATURES,
 
57
        .config = &genphy_config_aneg,
 
58
        .startup = &smsc_startup,
 
59
        .shutdown = &genphy_shutdown,
 
60
};
 
61
 
 
62
static struct phy_driver lan8710_driver = {
 
63
        .name = "SMSC LAN8710/LAN8720",
 
64
        .uid = 0x0007c0f0,
 
65
        .mask = 0xffff0,
 
66
        .features = PHY_BASIC_FEATURES,
 
67
        .config = &genphy_config_aneg,
 
68
        .startup = &genphy_startup,
 
69
        .shutdown = &genphy_shutdown,
 
70
};
 
71
 
 
72
int phy_smsc_init(void)
 
73
{
 
74
        phy_register(&lan8710_driver);
 
75
        phy_register(&lan911x_driver);
 
76
        phy_register(&lan8700_driver);
 
77
 
 
78
        return 0;
 
79
}