xref: /openbmc/u-boot/arch/arm/mach-davinci/include/mach/emac_defs.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
23d357619SMasahiro Yamada /*
33d357619SMasahiro Yamada  * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
43d357619SMasahiro Yamada  *
53d357619SMasahiro Yamada  * Based on:
63d357619SMasahiro Yamada  *
73d357619SMasahiro Yamada  * ----------------------------------------------------------------------------
83d357619SMasahiro Yamada  *
93d357619SMasahiro Yamada  * dm644x_emac.h
103d357619SMasahiro Yamada  *
113d357619SMasahiro Yamada  * TI DaVinci (DM644X) EMAC peripheral driver header for DV-EVM
123d357619SMasahiro Yamada  *
133d357619SMasahiro Yamada  * Copyright (C) 2005 Texas Instruments.
143d357619SMasahiro Yamada  *
153d357619SMasahiro Yamada  * ----------------------------------------------------------------------------
163d357619SMasahiro Yamada  *
173d357619SMasahiro Yamada  * Modifications:
183d357619SMasahiro Yamada  * ver. 1.0: Sep 2005, TI PSP Team - Created EMAC version for uBoot.
193d357619SMasahiro Yamada  */
203d357619SMasahiro Yamada 
213d357619SMasahiro Yamada #ifndef _DM644X_EMAC_H_
223d357619SMasahiro Yamada #define _DM644X_EMAC_H_
233d357619SMasahiro Yamada 
243d357619SMasahiro Yamada #include <asm/arch/hardware.h>
253d357619SMasahiro Yamada 
263d357619SMasahiro Yamada #ifdef CONFIG_SOC_DM365
273d357619SMasahiro Yamada #define EMAC_BASE_ADDR			(0x01d07000)
283d357619SMasahiro Yamada #define EMAC_WRAPPER_BASE_ADDR		(0x01d0a000)
293d357619SMasahiro Yamada #define EMAC_WRAPPER_RAM_ADDR		(0x01d08000)
303d357619SMasahiro Yamada #define EMAC_MDIO_BASE_ADDR		(0x01d0b000)
313d357619SMasahiro Yamada #define DAVINCI_EMAC_VERSION2
323d357619SMasahiro Yamada #elif defined(CONFIG_SOC_DA8XX)
333d357619SMasahiro Yamada #define EMAC_BASE_ADDR			DAVINCI_EMAC_CNTRL_REGS_BASE
343d357619SMasahiro Yamada #define EMAC_WRAPPER_BASE_ADDR		DAVINCI_EMAC_WRAPPER_CNTRL_REGS_BASE
353d357619SMasahiro Yamada #define EMAC_WRAPPER_RAM_ADDR		DAVINCI_EMAC_WRAPPER_RAM_BASE
363d357619SMasahiro Yamada #define EMAC_MDIO_BASE_ADDR		DAVINCI_MDIO_CNTRL_REGS_BASE
373d357619SMasahiro Yamada #define DAVINCI_EMAC_VERSION2
383d357619SMasahiro Yamada #else
393d357619SMasahiro Yamada #define EMAC_BASE_ADDR			(0x01c80000)
403d357619SMasahiro Yamada #define EMAC_WRAPPER_BASE_ADDR		(0x01c81000)
413d357619SMasahiro Yamada #define EMAC_WRAPPER_RAM_ADDR		(0x01c82000)
423d357619SMasahiro Yamada #define EMAC_MDIO_BASE_ADDR		(0x01c84000)
433d357619SMasahiro Yamada #endif
443d357619SMasahiro Yamada 
453d357619SMasahiro Yamada #ifdef CONFIG_SOC_DM646X
463d357619SMasahiro Yamada #define DAVINCI_EMAC_VERSION2
473d357619SMasahiro Yamada #define DAVINCI_EMAC_GIG_ENABLE
483d357619SMasahiro Yamada #endif
493d357619SMasahiro Yamada 
503d357619SMasahiro Yamada #ifdef CONFIG_SOC_DM646X
513d357619SMasahiro Yamada /* MDIO module input frequency */
523d357619SMasahiro Yamada #define EMAC_MDIO_BUS_FREQ		76500000
533d357619SMasahiro Yamada /* MDIO clock output frequency */
543d357619SMasahiro Yamada #define EMAC_MDIO_CLOCK_FREQ		2500000		/* 2.5 MHz */
553d357619SMasahiro Yamada #elif defined(CONFIG_SOC_DM365)
563d357619SMasahiro Yamada /* MDIO module input frequency */
573d357619SMasahiro Yamada #define EMAC_MDIO_BUS_FREQ		121500000
583d357619SMasahiro Yamada /* MDIO clock output frequency */
593d357619SMasahiro Yamada #define EMAC_MDIO_CLOCK_FREQ		2200000		/* 2.2 MHz */
603d357619SMasahiro Yamada #elif defined(CONFIG_SOC_DA8XX)
613d357619SMasahiro Yamada /* MDIO module input frequency */
623d357619SMasahiro Yamada #define EMAC_MDIO_BUS_FREQ		clk_get(DAVINCI_MDIO_CLKID)
633d357619SMasahiro Yamada /* MDIO clock output frequency */
643d357619SMasahiro Yamada #define EMAC_MDIO_CLOCK_FREQ		2000000		/* 2.0 MHz */
653d357619SMasahiro Yamada #else
663d357619SMasahiro Yamada /* MDIO module input frequency */
673d357619SMasahiro Yamada #define EMAC_MDIO_BUS_FREQ		99000000	/* PLL/6 - 99 MHz */
683d357619SMasahiro Yamada /* MDIO clock output frequency */
693d357619SMasahiro Yamada #define EMAC_MDIO_CLOCK_FREQ		2000000		/* 2.0 MHz */
703d357619SMasahiro Yamada #endif
713d357619SMasahiro Yamada 
723d357619SMasahiro Yamada #define PHY_KSZ8873	(0x00221450)
733d357619SMasahiro Yamada int ksz8873_is_phy_connected(int phy_addr);
743d357619SMasahiro Yamada int ksz8873_get_link_speed(int phy_addr);
753d357619SMasahiro Yamada int ksz8873_init_phy(int phy_addr);
763d357619SMasahiro Yamada int ksz8873_auto_negotiate(int phy_addr);
773d357619SMasahiro Yamada 
783d357619SMasahiro Yamada #define PHY_LXT972	(0x001378e2)
793d357619SMasahiro Yamada int lxt972_is_phy_connected(int phy_addr);
803d357619SMasahiro Yamada int lxt972_get_link_speed(int phy_addr);
813d357619SMasahiro Yamada int lxt972_init_phy(int phy_addr);
823d357619SMasahiro Yamada int lxt972_auto_negotiate(int phy_addr);
833d357619SMasahiro Yamada 
843d357619SMasahiro Yamada #define PHY_DP83848	(0x20005c90)
853d357619SMasahiro Yamada int dp83848_is_phy_connected(int phy_addr);
863d357619SMasahiro Yamada int dp83848_get_link_speed(int phy_addr);
873d357619SMasahiro Yamada int dp83848_init_phy(int phy_addr);
883d357619SMasahiro Yamada int dp83848_auto_negotiate(int phy_addr);
893d357619SMasahiro Yamada 
903d357619SMasahiro Yamada #define PHY_ET1011C	(0x282f013)
913d357619SMasahiro Yamada int et1011c_get_link_speed(int phy_addr);
923d357619SMasahiro Yamada 
933d357619SMasahiro Yamada #endif  /* _DM644X_EMAC_H_ */
94