10935cac6SKhoronzhuk, Ivan /* 20935cac6SKhoronzhuk, Ivan * emac definitions for keystone2 devices 30935cac6SKhoronzhuk, Ivan * 40935cac6SKhoronzhuk, Ivan * (C) Copyright 2012-2014 50935cac6SKhoronzhuk, Ivan * Texas Instruments Incorporated, <www.ti.com> 60935cac6SKhoronzhuk, Ivan * 70935cac6SKhoronzhuk, Ivan * SPDX-License-Identifier: GPL-2.0+ 80935cac6SKhoronzhuk, Ivan */ 90935cac6SKhoronzhuk, Ivan 100935cac6SKhoronzhuk, Ivan #ifndef _KEYSTONE_NET_H_ 110935cac6SKhoronzhuk, Ivan #define _KEYSTONE_NET_H_ 120935cac6SKhoronzhuk, Ivan 130935cac6SKhoronzhuk, Ivan #include <asm/io.h> 14bf7bd4e7SMugunthan V N #include <phy.h> 150935cac6SKhoronzhuk, Ivan 160935cac6SKhoronzhuk, Ivan /* EMAC */ 170935cac6SKhoronzhuk, Ivan #ifdef CONFIG_KSNET_NETCP_V1_0 180935cac6SKhoronzhuk, Ivan 190935cac6SKhoronzhuk, Ivan #define GBETH_BASE (CONFIG_KSNET_NETCP_BASE + 0x00090000) 200935cac6SKhoronzhuk, Ivan #define EMAC_EMACSL_BASE_ADDR (GBETH_BASE + 0x900) 210935cac6SKhoronzhuk, Ivan #define EMAC_MDIO_BASE_ADDR (GBETH_BASE + 0x300) 220935cac6SKhoronzhuk, Ivan #define EMAC_SGMII_BASE_ADDR (GBETH_BASE + 0x100) 230935cac6SKhoronzhuk, Ivan #define DEVICE_EMACSL_BASE(x) (EMAC_EMACSL_BASE_ADDR + (x) * 0x040) 240935cac6SKhoronzhuk, Ivan 250935cac6SKhoronzhuk, Ivan /* Register offsets */ 260935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_CTL 0x04 270935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_STATUS 0x08 280935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_RESET 0x0c 290935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_MAXLEN 0x10 300935cac6SKhoronzhuk, Ivan 310935cac6SKhoronzhuk, Ivan #elif defined CONFIG_KSNET_NETCP_V1_5 320935cac6SKhoronzhuk, Ivan 330935cac6SKhoronzhuk, Ivan #define GBETH_BASE (CONFIG_KSNET_NETCP_BASE + 0x00200000) 340935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_RX_PRI_MAP 0x020 350935cac6SKhoronzhuk, Ivan #define EMAC_EMACSL_BASE_ADDR (GBETH_BASE + 0x22000) 360935cac6SKhoronzhuk, Ivan #define EMAC_MDIO_BASE_ADDR (GBETH_BASE + 0x00f00) 370935cac6SKhoronzhuk, Ivan #define EMAC_SGMII_BASE_ADDR (GBETH_BASE + 0x00100) 380935cac6SKhoronzhuk, Ivan #define DEVICE_EMACSL_BASE(x) (EMAC_EMACSL_BASE_ADDR + (x) * 0x1000) 390935cac6SKhoronzhuk, Ivan 400935cac6SKhoronzhuk, Ivan /* Register offsets */ 410935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_CTL 0x330 420935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_STATUS 0x334 430935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_RESET 0x338 440935cac6SKhoronzhuk, Ivan #define CPGMACSL_REG_MAXLEN 0x024 450935cac6SKhoronzhuk, Ivan 460935cac6SKhoronzhuk, Ivan #endif 470935cac6SKhoronzhuk, Ivan 480935cac6SKhoronzhuk, Ivan #define KEYSTONE2_EMAC_GIG_ENABLE 490935cac6SKhoronzhuk, Ivan 500935cac6SKhoronzhuk, Ivan #define MAC_ID_BASE_ADDR CONFIG_KSNET_MAC_ID_BASE 510935cac6SKhoronzhuk, Ivan 520935cac6SKhoronzhuk, Ivan /* MDIO module input frequency */ 53e6d71e1cSVitaly Andrianov #ifdef CONFIG_SOC_K2G 54*43ebbfc3SMasahiro Yamada #define EMAC_MDIO_BUS_FREQ (ks_clk_get_rate(sys_clk0_3_clk)) 55e6d71e1cSVitaly Andrianov #else 56*43ebbfc3SMasahiro Yamada #define EMAC_MDIO_BUS_FREQ (ks_clk_get_rate(pass_pll_clk)) 57e6d71e1cSVitaly Andrianov #endif 580935cac6SKhoronzhuk, Ivan /* MDIO clock output frequency */ 59f0772266SVitaly Andrianov #define EMAC_MDIO_CLOCK_FREQ 2500000 /* 2.5 MHz */ 600935cac6SKhoronzhuk, Ivan 610935cac6SKhoronzhuk, Ivan /* MII Status Register */ 620935cac6SKhoronzhuk, Ivan #define MII_STATUS_REG 1 630935cac6SKhoronzhuk, Ivan #define MII_STATUS_LINK_MASK 0x4 640935cac6SKhoronzhuk, Ivan 650935cac6SKhoronzhuk, Ivan #define MDIO_CONTROL_IDLE 0x80000000 660935cac6SKhoronzhuk, Ivan #define MDIO_CONTROL_ENABLE 0x40000000 670935cac6SKhoronzhuk, Ivan #define MDIO_CONTROL_FAULT_ENABLE 0x40000 680935cac6SKhoronzhuk, Ivan #define MDIO_CONTROL_FAULT 0x80000 690935cac6SKhoronzhuk, Ivan #define MDIO_USERACCESS0_GO 0x80000000 700935cac6SKhoronzhuk, Ivan #define MDIO_USERACCESS0_WRITE_READ 0x0 710935cac6SKhoronzhuk, Ivan #define MDIO_USERACCESS0_WRITE_WRITE 0x40000000 720935cac6SKhoronzhuk, Ivan #define MDIO_USERACCESS0_ACK 0x20000000 730935cac6SKhoronzhuk, Ivan 740935cac6SKhoronzhuk, Ivan #define EMAC_MACCONTROL_MIIEN_ENABLE 0x20 750935cac6SKhoronzhuk, Ivan #define EMAC_MACCONTROL_FULLDUPLEX_ENABLE 0x1 760935cac6SKhoronzhuk, Ivan #define EMAC_MACCONTROL_GIGABIT_ENABLE BIT(7) 770935cac6SKhoronzhuk, Ivan #define EMAC_MACCONTROL_GIGFORCE BIT(17) 780935cac6SKhoronzhuk, Ivan #define EMAC_MACCONTROL_RMIISPEED_100 BIT(15) 790935cac6SKhoronzhuk, Ivan 800935cac6SKhoronzhuk, Ivan #define EMAC_MIN_ETHERNET_PKT_SIZE 60 810935cac6SKhoronzhuk, Ivan 820935cac6SKhoronzhuk, Ivan struct mac_sl_cfg { 830935cac6SKhoronzhuk, Ivan u_int32_t max_rx_len; /* Maximum receive packet length. */ 840935cac6SKhoronzhuk, Ivan u_int32_t ctl; /* Control bitfield */ 850935cac6SKhoronzhuk, Ivan }; 860935cac6SKhoronzhuk, Ivan 870935cac6SKhoronzhuk, Ivan /** 880935cac6SKhoronzhuk, Ivan * Definition: Control bitfields used in the ctl field of mac_sl_cfg 890935cac6SKhoronzhuk, Ivan */ 900935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_RCV_CONTROL_FRAMES BIT(24) 910935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_RCV_SHORT_FRAMES BIT(23) 920935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_RCV_ERROR_FRAMES BIT(22) 930935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_EXT_CTL BIT(18) 940935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_GIG_FORCE BIT(17) 950935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_IFCTL_B BIT(16) 960935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_IFCTL_A BIT(15) 970935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_CMD_IDLE BIT(11) 980935cac6SKhoronzhuk, Ivan #define GMACSL_TX_ENABLE_SHORT_GAP BIT(10) 990935cac6SKhoronzhuk, Ivan #define GMACSL_ENABLE_GIG_MODE BIT(7) 1000935cac6SKhoronzhuk, Ivan #define GMACSL_TX_ENABLE_PACE BIT(6) 1010935cac6SKhoronzhuk, Ivan #define GMACSL_ENABLE BIT(5) 1020935cac6SKhoronzhuk, Ivan #define GMACSL_TX_ENABLE_FLOW_CTL BIT(4) 1030935cac6SKhoronzhuk, Ivan #define GMACSL_RX_ENABLE_FLOW_CTL BIT(3) 1040935cac6SKhoronzhuk, Ivan #define GMACSL_ENABLE_LOOPBACK BIT(1) 1050935cac6SKhoronzhuk, Ivan #define GMACSL_ENABLE_FULL_DUPLEX BIT(0) 1060935cac6SKhoronzhuk, Ivan 1070935cac6SKhoronzhuk, Ivan /* EMAC SL function return values */ 1080935cac6SKhoronzhuk, Ivan #define GMACSL_RET_OK 0 1090935cac6SKhoronzhuk, Ivan #define GMACSL_RET_INVALID_PORT -1 1100935cac6SKhoronzhuk, Ivan #define GMACSL_RET_WARN_RESET_INCOMPLETE -2 1110935cac6SKhoronzhuk, Ivan #define GMACSL_RET_WARN_MAXLEN_TOO_BIG -3 1120935cac6SKhoronzhuk, Ivan #define GMACSL_RET_CONFIG_FAIL_RESET_ACTIVE -4 1130935cac6SKhoronzhuk, Ivan 1140935cac6SKhoronzhuk, Ivan /* EMAC SL register definitions */ 1150935cac6SKhoronzhuk, Ivan #define DEVICE_EMACSL_RESET_POLL_COUNT 100 1160935cac6SKhoronzhuk, Ivan 1170935cac6SKhoronzhuk, Ivan /* Soft reset register values */ 1180935cac6SKhoronzhuk, Ivan #define CPGMAC_REG_RESET_VAL_RESET_MASK BIT(0) 1190935cac6SKhoronzhuk, Ivan #define CPGMAC_REG_RESET_VAL_RESET BIT(0) 1200935cac6SKhoronzhuk, Ivan #define CPGMAC_REG_MAXLEN_LEN 0x3fff 1210935cac6SKhoronzhuk, Ivan 1220935cac6SKhoronzhuk, Ivan /* CPSW */ 1230935cac6SKhoronzhuk, Ivan /* Control bitfields */ 1240935cac6SKhoronzhuk, Ivan #define CPSW_CTL_P2_PASS_PRI_TAGGED BIT(5) 1250935cac6SKhoronzhuk, Ivan #define CPSW_CTL_P1_PASS_PRI_TAGGED BIT(4) 1260935cac6SKhoronzhuk, Ivan #define CPSW_CTL_P0_PASS_PRI_TAGGED BIT(3) 1270935cac6SKhoronzhuk, Ivan #define CPSW_CTL_P0_ENABLE BIT(2) 1280935cac6SKhoronzhuk, Ivan #define CPSW_CTL_VLAN_AWARE BIT(1) 1290935cac6SKhoronzhuk, Ivan #define CPSW_CTL_FIFO_LOOPBACK BIT(0) 1300935cac6SKhoronzhuk, Ivan 1310935cac6SKhoronzhuk, Ivan #define DEVICE_CPSW_NUM_PORTS CONFIG_KSNET_CPSW_NUM_PORTS 1320935cac6SKhoronzhuk, Ivan #define DEVICE_N_GMACSL_PORTS (DEVICE_CPSW_NUM_PORTS - 1) 1330935cac6SKhoronzhuk, Ivan 1340935cac6SKhoronzhuk, Ivan #ifdef CONFIG_KSNET_NETCP_V1_0 1350935cac6SKhoronzhuk, Ivan 1360935cac6SKhoronzhuk, Ivan #define DEVICE_CPSW_BASE (GBETH_BASE + 0x800) 1370935cac6SKhoronzhuk, Ivan #define CPSW_REG_CTL 0x004 1380935cac6SKhoronzhuk, Ivan #define CPSW_REG_STAT_PORT_EN 0x00c 1390935cac6SKhoronzhuk, Ivan #define CPSW_REG_MAXLEN 0x040 1400935cac6SKhoronzhuk, Ivan #define CPSW_REG_ALE_CONTROL 0x608 1410935cac6SKhoronzhuk, Ivan #define CPSW_REG_ALE_PORTCTL(x) (0x640 + (x) * 4) 1420935cac6SKhoronzhuk, Ivan #define CPSW_REG_VAL_STAT_ENABLE_ALL 0xf 1430935cac6SKhoronzhuk, Ivan 1440935cac6SKhoronzhuk, Ivan #elif defined CONFIG_KSNET_NETCP_V1_5 1450935cac6SKhoronzhuk, Ivan 1460935cac6SKhoronzhuk, Ivan #define DEVICE_CPSW_BASE (GBETH_BASE + 0x20000) 1470935cac6SKhoronzhuk, Ivan #define CPSW_REG_CTL 0x00004 1480935cac6SKhoronzhuk, Ivan #define CPSW_REG_STAT_PORT_EN 0x00014 1490935cac6SKhoronzhuk, Ivan #define CPSW_REG_MAXLEN 0x01024 1500935cac6SKhoronzhuk, Ivan #define CPSW_REG_ALE_CONTROL 0x1e008 1510935cac6SKhoronzhuk, Ivan #define CPSW_REG_ALE_PORTCTL(x) (0x1e040 + (x) * 4) 1520935cac6SKhoronzhuk, Ivan #define CPSW_REG_VAL_STAT_ENABLE_ALL 0x1ff 1530935cac6SKhoronzhuk, Ivan 1540935cac6SKhoronzhuk, Ivan #endif 1550935cac6SKhoronzhuk, Ivan 1560935cac6SKhoronzhuk, Ivan #define CPSW_REG_VAL_ALE_CTL_RESET_AND_ENABLE ((u_int32_t)0xc0000000) 1570935cac6SKhoronzhuk, Ivan #define CPSW_REG_VAL_ALE_CTL_BYPASS ((u_int32_t)0x00000010) 1580935cac6SKhoronzhuk, Ivan #define CPSW_REG_VAL_PORTCTL_FORWARD_MODE 0x3 1590935cac6SKhoronzhuk, Ivan 1600935cac6SKhoronzhuk, Ivan #define target_get_switch_ctl() CPSW_CTL_P0_ENABLE 1610935cac6SKhoronzhuk, Ivan #define SWITCH_MAX_PKT_SIZE 9000 1620935cac6SKhoronzhuk, Ivan 1630935cac6SKhoronzhuk, Ivan /* SGMII */ 1640935cac6SKhoronzhuk, Ivan #define SGMII_REG_STATUS_LOCK BIT(4) 1650935cac6SKhoronzhuk, Ivan #define SGMII_REG_STATUS_LINK BIT(0) 1660935cac6SKhoronzhuk, Ivan #define SGMII_REG_STATUS_AUTONEG BIT(2) 1670935cac6SKhoronzhuk, Ivan #define SGMII_REG_CONTROL_AUTONEG BIT(0) 1680935cac6SKhoronzhuk, Ivan #define SGMII_REG_CONTROL_MASTER BIT(5) 1690935cac6SKhoronzhuk, Ivan #define SGMII_REG_MR_ADV_ENABLE BIT(0) 1700935cac6SKhoronzhuk, Ivan #define SGMII_REG_MR_ADV_LINK BIT(15) 1710935cac6SKhoronzhuk, Ivan #define SGMII_REG_MR_ADV_FULL_DUPLEX BIT(12) 1720935cac6SKhoronzhuk, Ivan #define SGMII_REG_MR_ADV_GIG_MODE BIT(11) 1730935cac6SKhoronzhuk, Ivan 1740935cac6SKhoronzhuk, Ivan #define SGMII_LINK_MAC_MAC_AUTONEG 0 1750935cac6SKhoronzhuk, Ivan #define SGMII_LINK_MAC_PHY 1 1760935cac6SKhoronzhuk, Ivan #define SGMII_LINK_MAC_MAC_FORCED 2 1770935cac6SKhoronzhuk, Ivan #define SGMII_LINK_MAC_FIBER 3 1780935cac6SKhoronzhuk, Ivan #define SGMII_LINK_MAC_PHY_FORCED 4 1790935cac6SKhoronzhuk, Ivan 1800935cac6SKhoronzhuk, Ivan #ifdef CONFIG_KSNET_NETCP_V1_0 1810935cac6SKhoronzhuk, Ivan #define SGMII_OFFSET(x) ((x <= 1) ? (x * 0x100) : ((x * 0x100) + 0x100)) 1820935cac6SKhoronzhuk, Ivan #elif defined CONFIG_KSNET_NETCP_V1_5 1830935cac6SKhoronzhuk, Ivan #define SGMII_OFFSET(x) ((x) * 0x100) 1840935cac6SKhoronzhuk, Ivan #endif 1850935cac6SKhoronzhuk, Ivan 1860935cac6SKhoronzhuk, Ivan #define SGMII_IDVER_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x000) 1870935cac6SKhoronzhuk, Ivan #define SGMII_SRESET_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x004) 1880935cac6SKhoronzhuk, Ivan #define SGMII_CTL_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x010) 1890935cac6SKhoronzhuk, Ivan #define SGMII_STATUS_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x014) 1900935cac6SKhoronzhuk, Ivan #define SGMII_MRADV_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x018) 1910935cac6SKhoronzhuk, Ivan #define SGMII_LPADV_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x020) 1920935cac6SKhoronzhuk, Ivan #define SGMII_TXCFG_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x030) 1930935cac6SKhoronzhuk, Ivan #define SGMII_RXCFG_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x034) 1940935cac6SKhoronzhuk, Ivan #define SGMII_AUXCFG_REG(x) (EMAC_SGMII_BASE_ADDR + SGMII_OFFSET(x) + 0x038) 1950935cac6SKhoronzhuk, Ivan 1964657a2d4SVitaly Andrianov /* RGMII */ 1974657a2d4SVitaly Andrianov #define RGMII_REG_STATUS_LINK BIT(0) 1984657a2d4SVitaly Andrianov 1994657a2d4SVitaly Andrianov #define RGMII_STATUS_REG (GBETH_BASE + 0x18) 2004657a2d4SVitaly Andrianov 2010935cac6SKhoronzhuk, Ivan /* PSS */ 2020935cac6SKhoronzhuk, Ivan #ifdef CONFIG_KSNET_NETCP_V1_0 2030935cac6SKhoronzhuk, Ivan 2040935cac6SKhoronzhuk, Ivan #define DEVICE_PSTREAM_CFG_REG_ADDR (CONFIG_KSNET_NETCP_BASE + 0x604) 2050935cac6SKhoronzhuk, Ivan #define DEVICE_PSTREAM_CFG_VAL_ROUTE_CPPI 0x06060606 2060935cac6SKhoronzhuk, Ivan #define hw_config_streaming_switch()\ 2070935cac6SKhoronzhuk, Ivan writel(DEVICE_PSTREAM_CFG_VAL_ROUTE_CPPI, DEVICE_PSTREAM_CFG_REG_ADDR); 2080935cac6SKhoronzhuk, Ivan 2090935cac6SKhoronzhuk, Ivan #elif defined CONFIG_KSNET_NETCP_V1_5 2100935cac6SKhoronzhuk, Ivan 2110935cac6SKhoronzhuk, Ivan #define DEVICE_PSTREAM_CFG_REG_ADDR (CONFIG_KSNET_NETCP_BASE + 0x500) 2120935cac6SKhoronzhuk, Ivan #define DEVICE_PSTREAM_CFG_VAL_ROUTE_CPPI 0x0 2130935cac6SKhoronzhuk, Ivan 2140935cac6SKhoronzhuk, Ivan #define hw_config_streaming_switch()\ 2150935cac6SKhoronzhuk, Ivan writel(DEVICE_PSTREAM_CFG_VAL_ROUTE_CPPI,\ 2160935cac6SKhoronzhuk, Ivan DEVICE_PSTREAM_CFG_REG_ADDR);\ 2170935cac6SKhoronzhuk, Ivan writel(DEVICE_PSTREAM_CFG_VAL_ROUTE_CPPI,\ 2180935cac6SKhoronzhuk, Ivan DEVICE_PSTREAM_CFG_REG_ADDR+4);\ 2190935cac6SKhoronzhuk, Ivan writel(DEVICE_PSTREAM_CFG_VAL_ROUTE_CPPI,\ 2200935cac6SKhoronzhuk, Ivan DEVICE_PSTREAM_CFG_REG_ADDR+8);\ 2210935cac6SKhoronzhuk, Ivan writel(DEVICE_PSTREAM_CFG_VAL_ROUTE_CPPI,\ 2220935cac6SKhoronzhuk, Ivan DEVICE_PSTREAM_CFG_REG_ADDR+12); 2230935cac6SKhoronzhuk, Ivan 2240935cac6SKhoronzhuk, Ivan #endif 2250935cac6SKhoronzhuk, Ivan 2260935cac6SKhoronzhuk, Ivan /* EMAC MDIO Registers Structure */ 2270935cac6SKhoronzhuk, Ivan struct mdio_regs { 2280935cac6SKhoronzhuk, Ivan u32 version; 2290935cac6SKhoronzhuk, Ivan u32 control; 2300935cac6SKhoronzhuk, Ivan u32 alive; 2310935cac6SKhoronzhuk, Ivan u32 link; 2320935cac6SKhoronzhuk, Ivan u32 linkintraw; 2330935cac6SKhoronzhuk, Ivan u32 linkintmasked; 2340935cac6SKhoronzhuk, Ivan u32 rsvd0[2]; 2350935cac6SKhoronzhuk, Ivan u32 userintraw; 2360935cac6SKhoronzhuk, Ivan u32 userintmasked; 2370935cac6SKhoronzhuk, Ivan u32 userintmaskset; 2380935cac6SKhoronzhuk, Ivan u32 userintmaskclear; 2390935cac6SKhoronzhuk, Ivan u32 rsvd1[20]; 2400935cac6SKhoronzhuk, Ivan u32 useraccess0; 2410935cac6SKhoronzhuk, Ivan u32 userphysel0; 2420935cac6SKhoronzhuk, Ivan u32 useraccess1; 2430935cac6SKhoronzhuk, Ivan u32 userphysel1; 2440935cac6SKhoronzhuk, Ivan }; 2450935cac6SKhoronzhuk, Ivan 2460935cac6SKhoronzhuk, Ivan struct eth_priv_t { 2470935cac6SKhoronzhuk, Ivan char int_name[32]; 2480935cac6SKhoronzhuk, Ivan int rx_flow; 2490935cac6SKhoronzhuk, Ivan int phy_addr; 2500935cac6SKhoronzhuk, Ivan int slave_port; 2510935cac6SKhoronzhuk, Ivan int sgmii_link_type; 252bf7bd4e7SMugunthan V N phy_interface_t phy_if; 2533fe93623SKhoronzhuk, Ivan struct phy_device *phy_dev; 2540935cac6SKhoronzhuk, Ivan }; 2550935cac6SKhoronzhuk, Ivan 2560935cac6SKhoronzhuk, Ivan int keystone2_emac_initialize(struct eth_priv_t *eth_priv); 2570935cac6SKhoronzhuk, Ivan void sgmii_serdes_setup_156p25mhz(void); 2580935cac6SKhoronzhuk, Ivan void sgmii_serdes_shutdown(void); 2590935cac6SKhoronzhuk, Ivan 2600935cac6SKhoronzhuk, Ivan #endif /* _KEYSTONE_NET_H_ */ 261