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