xref: /openbmc/u-boot/arch/arm/mach-davinci/ksz8873.c (revision 208ecbad2ea83333e8f3c9933213867addf16f4a)
183d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
2601fbec7SMasahiro Yamada /*
3601fbec7SMasahiro Yamada  * Micrel KSZ8873 PHY Driver for TI DaVinci
4601fbec7SMasahiro Yamada  * (TMS320DM644x) based boards.
5601fbec7SMasahiro Yamada  *
6601fbec7SMasahiro Yamada  * Copyright (C) 2011 Heiko Schocher <hsdenx.de>
7601fbec7SMasahiro Yamada  *
8601fbec7SMasahiro Yamada  * based on:
9601fbec7SMasahiro Yamada  * National Semiconductor DP83848 PHY Driver for TI DaVinci
10601fbec7SMasahiro Yamada  * (TMS320DM644x) based boards.
11601fbec7SMasahiro Yamada  *
12601fbec7SMasahiro Yamada  * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
13601fbec7SMasahiro Yamada  *
14601fbec7SMasahiro Yamada  * --------------------------------------------------------
15601fbec7SMasahiro Yamada  */
16601fbec7SMasahiro Yamada 
17601fbec7SMasahiro Yamada #include <common.h>
18601fbec7SMasahiro Yamada #include <miiphy.h>
19601fbec7SMasahiro Yamada #include <net.h>
20601fbec7SMasahiro Yamada #include <asm/arch/emac_defs.h>
21601fbec7SMasahiro Yamada #include <asm/io.h>
22*ffad5fa0SGrygorii Strashko #include "../../../drivers/net/ti/davinci_emac.h"
23601fbec7SMasahiro Yamada 
ksz8873_is_phy_connected(int phy_addr)24601fbec7SMasahiro Yamada int ksz8873_is_phy_connected(int phy_addr)
25601fbec7SMasahiro Yamada {
26601fbec7SMasahiro Yamada 	u_int16_t	dummy;
27601fbec7SMasahiro Yamada 
28601fbec7SMasahiro Yamada 	return davinci_eth_phy_read(phy_addr, MII_PHYSID1, &dummy);
29601fbec7SMasahiro Yamada }
30601fbec7SMasahiro Yamada 
ksz8873_get_link_speed(int phy_addr)31601fbec7SMasahiro Yamada int ksz8873_get_link_speed(int phy_addr)
32601fbec7SMasahiro Yamada {
33601fbec7SMasahiro Yamada 	emac_regs *emac = (emac_regs *)EMAC_BASE_ADDR;
34601fbec7SMasahiro Yamada 
35601fbec7SMasahiro Yamada 	/* we always have a link to the switch, 100 FD */
36601fbec7SMasahiro Yamada 	writel((EMAC_MACCONTROL_MIIEN_ENABLE |
37601fbec7SMasahiro Yamada 		EMAC_MACCONTROL_FULLDUPLEX_ENABLE),
38601fbec7SMasahiro Yamada 	       &emac->MACCONTROL);
39601fbec7SMasahiro Yamada 	return 1;
40601fbec7SMasahiro Yamada }
41601fbec7SMasahiro Yamada 
42601fbec7SMasahiro Yamada 
ksz8873_init_phy(int phy_addr)43601fbec7SMasahiro Yamada int ksz8873_init_phy(int phy_addr)
44601fbec7SMasahiro Yamada {
45601fbec7SMasahiro Yamada 	return 1;
46601fbec7SMasahiro Yamada }
47601fbec7SMasahiro Yamada 
48601fbec7SMasahiro Yamada 
ksz8873_auto_negotiate(int phy_addr)49601fbec7SMasahiro Yamada int ksz8873_auto_negotiate(int phy_addr)
50601fbec7SMasahiro Yamada {
51601fbec7SMasahiro Yamada 	return dp83848_get_link_speed(phy_addr);
52601fbec7SMasahiro Yamada }
53