1 /* 2 * Micrel KSZ8873 PHY Driver for TI DaVinci 3 * (TMS320DM644x) based boards. 4 * 5 * Copyright (C) 2011 Heiko Schocher <hsdenx.de> 6 * 7 * based on: 8 * National Semiconductor DP83848 PHY Driver for TI DaVinci 9 * (TMS320DM644x) based boards. 10 * 11 * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net> 12 * 13 * -------------------------------------------------------- 14 * 15 * SPDX-License-Identifier: GPL-2.0+ 16 */ 17 18 #include <common.h> 19 #include <miiphy.h> 20 #include <net.h> 21 #include <asm/arch/emac_defs.h> 22 #include <asm/io.h> 23 #include "../../../drivers/net/davinci_emac.h" 24 25 int ksz8873_is_phy_connected(int phy_addr) 26 { 27 u_int16_t dummy; 28 29 return davinci_eth_phy_read(phy_addr, MII_PHYSID1, &dummy); 30 } 31 32 int ksz8873_get_link_speed(int phy_addr) 33 { 34 emac_regs *emac = (emac_regs *)EMAC_BASE_ADDR; 35 36 /* we always have a link to the switch, 100 FD */ 37 writel((EMAC_MACCONTROL_MIIEN_ENABLE | 38 EMAC_MACCONTROL_FULLDUPLEX_ENABLE), 39 &emac->MACCONTROL); 40 return 1; 41 } 42 43 44 int ksz8873_init_phy(int phy_addr) 45 { 46 return 1; 47 } 48 49 50 int ksz8873_auto_negotiate(int phy_addr) 51 { 52 return dp83848_get_link_speed(phy_addr); 53 } 54