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