Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | // SPDX-License-Identifier: GPL-2.0+ /* * SMSC PHY drivers * * Base code from drivers/net/phy/davicom.c * Copyright 2010-2011 Freescale Semiconductor, Inc. * author Andy Fleming * * Some code copied from linux kernel * Copyright (c) 2006 Herbert Valerio Riedel <hvr@gnu.org> */ #include <miiphy.h> /* This code does not check the partner abilities. */ static int smsc_parse_status(struct phy_device *phydev) { int mii_reg; mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMSR); if (mii_reg & (BMSR_100FULL | BMSR_100HALF)) phydev->speed = SPEED_100; else phydev->speed = SPEED_10; if (mii_reg & (BMSR_10FULL | BMSR_100FULL)) phydev->duplex = DUPLEX_FULL; else phydev->duplex = DUPLEX_HALF; return 0; } static int smsc_startup(struct phy_device *phydev) { int ret; ret = genphy_update_link(phydev); if (ret) return ret; return smsc_parse_status(phydev); } U_BOOT_PHY_DRIVER(lan8700) = { .name = "SMSC LAN8700", .uid = 0x0007c0c0, .mask = 0xffff0, .features = PHY_BASIC_FEATURES, .config = &genphy_config_aneg, .startup = &smsc_startup, .shutdown = &genphy_shutdown, }; U_BOOT_PHY_DRIVER(lan911x) = { .name = "SMSC LAN911x Internal PHY", .uid = 0x0007c0d0, .mask = 0xffff0, .features = PHY_BASIC_FEATURES, .config = &genphy_config_aneg, .startup = &smsc_startup, .shutdown = &genphy_shutdown, }; U_BOOT_PHY_DRIVER(lan8710) = { .name = "SMSC LAN8710/LAN8720", .uid = 0x0007c0f0, .mask = 0xffff0, .features = PHY_BASIC_FEATURES, .config = &genphy_config_aneg, .startup = &genphy_startup, .shutdown = &genphy_shutdown, }; U_BOOT_PHY_DRIVER(lan8740) = { .name = "SMSC LAN8740", .uid = 0x0007c110, .mask = 0xffff0, .features = PHY_BASIC_FEATURES, .config = &genphy_config_aneg, .startup = &genphy_startup, .shutdown = &genphy_shutdown, }; U_BOOT_PHY_DRIVER(lan8741) = { .name = "SMSC LAN8741", .uid = 0x0007c120, .mask = 0xffff0, .features = PHY_BASIC_FEATURES, .config = &genphy_config_aneg, .startup = &genphy_startup, .shutdown = &genphy_shutdown, }; U_BOOT_PHY_DRIVER(lan8742) = { .name = "SMSC LAN8742", .uid = 0x0007c130, .mask = 0xffff0, .features = PHY_BASIC_FEATURES, .config = &genphy_config_aneg, .startup = &genphy_startup, .shutdown = &genphy_shutdown, }; |