]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
5751aa2f NI |
2 | /* |
3 | * SMSC PHY drivers | |
4 | * | |
5751aa2f NI |
5 | * Base code from drivers/net/phy/davicom.c |
6 | * Copyright 2010-2011 Freescale Semiconductor, Inc. | |
7 | * author Andy Fleming | |
8 | * | |
1bce2aeb | 9 | * Some code copied from linux kernel |
5751aa2f | 10 | * Copyright (c) 2006 Herbert Valerio Riedel <hvr@gnu.org> |
5751aa2f | 11 | */ |
d678a59d | 12 | #include <common.h> |
5751aa2f NI |
13 | #include <miiphy.h> |
14 | ||
f27f3b52 | 15 | /* This code does not check the partner abilities. */ |
5751aa2f NI |
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 | { | |
b733c278 MS |
37 | int ret; |
38 | ||
39 | ret = genphy_update_link(phydev); | |
40 | if (ret) | |
41 | return ret; | |
42 | ||
43 | return smsc_parse_status(phydev); | |
5751aa2f NI |
44 | } |
45 | ||
2ea350c4 | 46 | U_BOOT_PHY_DRIVER(lan8700) = { |
5751aa2f NI |
47 | .name = "SMSC LAN8700", |
48 | .uid = 0x0007c0c0, | |
49 | .mask = 0xffff0, | |
50 | .features = PHY_BASIC_FEATURES, | |
51 | .config = &genphy_config_aneg, | |
52 | .startup = &smsc_startup, | |
53 | .shutdown = &genphy_shutdown, | |
54 | }; | |
55 | ||
2ea350c4 | 56 | U_BOOT_PHY_DRIVER(lan911x) = { |
5751aa2f NI |
57 | .name = "SMSC LAN911x Internal PHY", |
58 | .uid = 0x0007c0d0, | |
59 | .mask = 0xffff0, | |
60 | .features = PHY_BASIC_FEATURES, | |
61 | .config = &genphy_config_aneg, | |
62 | .startup = &smsc_startup, | |
63 | .shutdown = &genphy_shutdown, | |
64 | }; | |
65 | ||
2ea350c4 | 66 | U_BOOT_PHY_DRIVER(lan8710) = { |
5751aa2f NI |
67 | .name = "SMSC LAN8710/LAN8720", |
68 | .uid = 0x0007c0f0, | |
69 | .mask = 0xffff0, | |
25634210 | 70 | .features = PHY_BASIC_FEATURES, |
5751aa2f | 71 | .config = &genphy_config_aneg, |
f27f3b52 | 72 | .startup = &genphy_startup, |
5751aa2f NI |
73 | .shutdown = &genphy_shutdown, |
74 | }; | |
75 | ||
2ea350c4 | 76 | U_BOOT_PHY_DRIVER(lan8740) = { |
46c9d938 PCM |
77 | .name = "SMSC LAN8740", |
78 | .uid = 0x0007c110, | |
79 | .mask = 0xffff0, | |
80 | .features = PHY_BASIC_FEATURES, | |
81 | .config = &genphy_config_aneg, | |
82 | .startup = &genphy_startup, | |
83 | .shutdown = &genphy_shutdown, | |
84 | }; | |
008ed16c | 85 | |
2ea350c4 | 86 | U_BOOT_PHY_DRIVER(lan8741) = { |
a0fd381f AS |
87 | .name = "SMSC LAN8741", |
88 | .uid = 0x0007c120, | |
89 | .mask = 0xffff0, | |
90 | .features = PHY_BASIC_FEATURES, | |
91 | .config = &genphy_config_aneg, | |
92 | .startup = &genphy_startup, | |
93 | .shutdown = &genphy_shutdown, | |
94 | }; | |
95 | ||
2ea350c4 | 96 | U_BOOT_PHY_DRIVER(lan8742) = { |
008ed16c MK |
97 | .name = "SMSC LAN8742", |
98 | .uid = 0x0007c130, | |
99 | .mask = 0xffff0, | |
100 | .features = PHY_BASIC_FEATURES, | |
101 | .config = &genphy_config_aneg, | |
102 | .startup = &genphy_startup, | |
103 | .shutdown = &genphy_shutdown, | |
104 | }; |