xref: /rk3399_rockchip-uboot/arch/arm/mach-davinci/ksz8873.c (revision b9cb64825b5e6efeb715abd8b48d9b12f98973e9)
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 Yamada int 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 Yamada int 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 Yamada int 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 Yamada int ksz8873_auto_negotiate(int phy_addr)
51*601fbec7SMasahiro Yamada {
52*601fbec7SMasahiro Yamada 	return dp83848_get_link_speed(phy_addr);
53*601fbec7SMasahiro Yamada }
54