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