blob: 7e21343e433966be6a0e1c57a8557c76cf6565fa [file] [log] [blame]
/* Copyright (c) 2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __DWC_ETH_QOS__RGMII_IO_MACRO_REGACC__H__
#define __DWC_ETH_QOS__RGMII_IO_MACRO_REGACC__H__
/* Read Write register operations for EMAC_RGMII_IO_MACRO_CONFIG */
extern ULONG dwc_rgmii_io_csr_base_addr;
#define RGMII_IO_BASE_ADDRESS dwc_rgmii_io_csr_base_addr
#define RGMII_IO_MACRO_CONFIG_RGOFFADDR_OFFSET (0x00000000)
#define RGMII_IO_MACRO_CONFIG_RGOFFADDR ((volatile ULONG *) (RGMII_IO_BASE_ADDRESS + RGMII_IO_MACRO_CONFIG_RGOFFADDR_OFFSET))
#define RGMII_IO_MACRO_CONFIG_RGWR(data) do {\
iowrite32(data, (void *)RGMII_IO_MACRO_CONFIG_RGOFFADDR);\
} while (0)
#define RGMII_IO_MACRO_CONFIG_RGRD(data) do {\
(data) = ioread32((void *)RGMII_IO_MACRO_CONFIG_RGOFFADDR);\
} while (0)
#define RGMII_FUNC_CLK_EN_MASK (ULONG)(0x1)
#define RGMII_FUNC_CLK_EN_WR_MASK (ULONG)(0xbfffffff)
#define RGMII_FUNC_CLK_EN_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_FUNC_CLK_EN_WR_MASK) | ((data & RGMII_FUNC_CLK_EN_MASK) << 30));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_FUNC_CLK_EN_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 30) & RGMII_FUNC_CLK_EN_MASK);\
} while (0)
#define RGMII_GPIO_CFG_RX_INT_MASK (ULONG)(0x3)
#define RGMII_GPIO_CFG_RX_INT_WR_MASK (ULONG)(0xffe7ffff)
#define RGMII_GPIO_CFG_RX_INT_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_GPIO_CFG_RX_INT_WR_MASK) | ((data & RGMII_GPIO_CFG_RX_INT_MASK) << 19));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_GPIO_CFG_RX_INT_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 19) & RGMII_GPIO_CFG_RX_INT_MASK);\
} while (0)
#define RGMII_GPIO_CFG_TX_INT_MASK (ULONG)(0x3)
#define RGMII_GPIO_CFG_TX_INT_WR_MASK (ULONG)(0xfff9ffff)
#define RGMII_GPIO_CFG_TX_INT_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_GPIO_CFG_TX_INT_WR_MASK) | ((data & RGMII_GPIO_CFG_TX_INT_MASK) << 17));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_GPIO_CFG_TX_INT_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 17) & RGMII_GPIO_CFG_TX_INT_MASK);\
} while (0)
#define RGMII_MAX_SPD_PRG_9_MASK (ULONG)(0x1ff)
#define RGMII_MAX_SPD_PRG_9_WR_MASK (ULONG)(0xfffe00ff)
#define RGMII_MAX_SPD_PRG_9_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_MAX_SPD_PRG_9_WR_MASK) | ((data & RGMII_MAX_SPD_PRG_9_MASK) << 8));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_MAX_SPD_PRG_9_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 8) & RGMII_MAX_SPD_PRG_9_MASK);\
} while (0)
#define RGMII_MAX_SPD_PRG_2_MASK (ULONG)(0x3)
#define RGMII_MAX_SPD_PRG_2_WR_MASK (ULONG)(0xffffff3f)
#define RGMII_MAX_SPD_PRG_2_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_MAX_SPD_PRG_2_WR_MASK) | ((data & RGMII_MAX_SPD_PRG_2_MASK) << 6));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_MAX_SPD_PRG_2_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 6) & RGMII_MAX_SPD_PRG_2_MASK);\
} while (0)
#define RGMII_INTF_SEL_MASK (ULONG)(0x3)
#define RGMII_INTF_SEL_WR_MASK (ULONG)(0xffffffcf)
#define RGMII_INTF_SEL_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_INTF_SEL_WR_MASK) | ((data & RGMII_INTF_SEL_MASK) << 4));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_INTF_SEL_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 4) & RGMII_INTF_SEL_MASK);\
} while (0)
#define RGMII_POS_NEG_DATA_SEL_MASK (ULONG)(0x1)
#define RGMII_POS_NEG_DATA_SEL_WR_MASK (ULONG)(0xff7fffff)
#define RGMII_POS_NEG_DATA_SEL_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_POS_NEG_DATA_SEL_WR_MASK) | ((data & RGMII_POS_NEG_DATA_SEL_MASK) << 23));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_POS_NEG_DATA_SEL_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 23) & RGMII_POS_NEG_DATA_SEL_MASK);\
} while (0)
#define RGMII_BYPASS_TX_ID_EN_MASK (ULONG)(0x1)
#define RGMII_BYPASS_TX_ID_EN_WR_MASK (ULONG)(0xfffffff7)
#define RGMII_BYPASS_TX_ID_EN_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_BYPASS_TX_ID_EN_WR_MASK) | ((data & RGMII_BYPASS_TX_ID_EN_MASK) << 3));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_BYPASS_TX_ID_EN_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 3) & RGMII_BYPASS_TX_ID_EN_MASK);\
} while (0)
#define RGMII_LOOPBACK_EN_MASK (ULONG)(0x1)
#define RGMII_LOOPBACK_EN_WR_MASK (ULONG)(0xfffffffb)
#define RGMII_LOOPBACK_EN_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_LOOPBACK_EN_WR_MASK) | ((data & RGMII_LOOPBACK_EN_MASK) << 2));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_LOOPBACK_EN_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 2) & RGMII_LOOPBACK_EN_MASK);\
} while (0)
#define RGMII_PROG_SWAP_MASK (ULONG)(0x1)
#define RGMII_PROG_SWAP_WR_MASK (ULONG)(0xfffffffd)
#define RGMII_PROG_SWAP_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_PROG_SWAP_WR_MASK) | ((data & RGMII_PROG_SWAP_MASK) << 1));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_PROG_SWAP_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 1) & RGMII_PROG_SWAP_MASK);\
} while (0)
#define RGMII_DDR_MODE_MASK (ULONG)(0x1)
#define RGMII_DDR_MODE_WR_MASK (ULONG)(0xfffffffe)
#define RGMII_DDR_MODE_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_RGRD(v);\
v = ((v & RGMII_DDR_MODE_WR_MASK) | ((data & RGMII_DDR_MODE_MASK) << 0));\
RGMII_IO_MACRO_CONFIG_RGWR(v);\
} while (0)
#define RGMII_DDR_MODE_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_RGRD(data);\
data = ((data >> 0) & RGMII_DDR_MODE_MASK);\
} while (0)
/* Read Write register operations for EMAC_SDCC_HC_REG_DLL_CONFIG */
#define SDCC_HC_REG_DLL_CONFIG_RGOFFADDR_OFFSET (0x00000004)
#define SDCC_HC_REG_DLL_CONFIG_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + SDCC_HC_REG_DLL_CONFIG_RGOFFADDR_OFFSET))
#define SDCC_HC_REG_DLL_CONFIG_RGWR(data) do {\
iowrite32(data, (void *)SDCC_HC_REG_DLL_CONFIG_RGOFFADDR);\
} while (0)
#define SDCC_HC_REG_DLL_CONFIG_RGRD(data) do {\
(data) = ioread32((void *)SDCC_HC_REG_DLL_CONFIG_RGOFFADDR);\
} while (0)
#define SDCC_HC_DLL_RST_MASK (ULONG)(0x1)
#define SDCC_HC_DLL_RST_WR_MASK (ULONG)(0xbfffffff)
#define SDCC_HC_DLL_RST_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_DLL_RST_WR_MASK) | ((data & SDCC_HC_DLL_RST_MASK) << 30));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_DLL_RST_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 30) & SDCC_HC_DLL_RST_MASK);\
} while (0)
#define SDCC_HC_PDN_MASK (ULONG)(0x1)
#define SDCC_HC_PDN_WR_MASK (ULONG)(0xdfffffff)
#define SDCC_HC_PDN_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_PDN_WR_MASK) | ((data & SDCC_HC_PDN_MASK) << 29));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_PDN_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 29) & SDCC_HC_PDN_MASK);\
} while (0)
#define SDCC_HC_MCLK_FREQ_MASK (ULONG)(0x7)
#define SDCC_HC_MCLK_FREQ_WR_MASK (ULONG)(0xf8ffffff)
#define SDCC_HC_MCLK_FREQ_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_MCLK_FREQ_WR_MASK) | ((data & SDCC_HC_MCLK_FREQ_MASK) << 24));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_MCLK_FREQ_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 24) & SDCC_HC_MCLK_FREQ_MASK);\
} while (0)
#define SDCC_HC_CDR_SELEXT_MASK (ULONG)(0xf)
#define SDCC_HC_CDR_SELEXT_WR_MASK (ULONG)(0xff0fffff)
#define SDCC_HC_CDR_SELEXT_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_CDR_SELEXT_WR_MASK) | ((data & SDCC_HC_CDR_SELEXT_MASK) << 20));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_CDR_SELEXT_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 20) & SDCC_HC_CDR_SELEXT_MASK);\
} while (0)
#define SDCC_HC_CDR_EXT_EN_MASK (ULONG)(0x1)
#define SDCC_HC_CDR_EXT_EN_WR_MASK (ULONG)(0xfff7ffff)
#define SDCC_HC_CDR_EXT_EN_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_CDR_EXT_EN_WR_MASK) | ((data & SDCC_HC_CDR_EXT_EN_MASK) << 19));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_CDR_EXT_EN_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 19) & SDCC_HC_CDR_EXT_EN_MASK);\
} while (0)
#define SDCC_HC_CK_OUT_EN_MASK (ULONG)(0x1)
#define SDCC_HC_CK_OUT_EN_WR_MASK (ULONG)(0xfffbffff)
#define SDCC_HC_CK_OUT_EN_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_CK_OUT_EN_WR_MASK) | ((data & SDCC_HC_CK_OUT_EN_MASK) << 18));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_CK_OUT_EN_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 18) & SDCC_HC_CK_OUT_EN_MASK);\
} while (0)
#define SDCC_HC_CDR_EN_MASK (ULONG)(0x1)
#define SDCC_HC_CDR_EN_WR_MASK (ULONG)(0xfffdffff)
#define SDCC_HC_CDR_EN_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_CDR_EN_WR_MASK) | ((data & SDCC_HC_CDR_EN_MASK) << 17));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_CDR_EN_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 17) & SDCC_HC_CDR_EN_MASK);\
} while (0)
#define SDCC_HC_MCLK_GATING_ENABLE_MASK (ULONG)(0x1)
#define SDCC_HC_MCLK_GATING_ENABLE_WR_MASK (ULONG)(0xffffffdf)
#define SDCC_HC_MCLK_GATING_ENABLE_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_MCLK_GATING_ENABLE_WR_MASK) | ((data & SDCC_HC_MCLK_GATING_ENABLE_MASK) << 5));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_MCLK_GATING_ENABLE_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 5) & SDCC_HC_MCLK_GATING_ENABLE_MASK);\
} while (0)
#define SDCC_HC_CDR_FINE_PHASE_MASK (ULONG)(0x1)
#define SDCC_HC_CDR_FINE_PHASE_WR_MASK (ULONG)(0xfffffff3)
#define SDCC_HC_CDR_FINE_PHASE_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_CDR_FINE_PHASE_WR_MASK) | ((data & SDCC_HC_CDR_FINE_PHASE_MASK) << 2));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_CDR_FINE_PHASE_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 2) & SDCC_HC_CDR_FINE_PHASE_MASK);\
} while (0)
#define SDCC_HC_DLL_EN_MASK (ULONG)(0x1)
#define SDCC_HC_DLL_EN_WR_MASK (ULONG)(0xfffeffff)
#define SDCC_HC_DLL_EN_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_DLL_EN_WR_MASK) | ((data & SDCC_HC_DLL_EN_MASK) << 16));\
SDCC_HC_REG_DLL_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_DLL_EN_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_RGRD(data);\
data = ((data >> 16) & SDCC_HC_DLL_EN_MASK);\
} while (0)
/* Read Write register operations for EMAC_SDCC_HC_REG_DDR_CONFIG */
#define SDCC_HC_REG_DDR_CONFIG_RGOFFADDR_OFFSET (0x0000000C)
#define SDCC_HC_REG_DDR_CONFIG_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + SDCC_HC_REG_DDR_CONFIG_RGOFFADDR_OFFSET))
#define SDCC_HC_REG_DDR_CONFIG_RGWR(data) do {\
iowrite32(data, (void *)SDCC_HC_REG_DDR_CONFIG_RGOFFADDR);\
} while (0)
#define SDCC_HC_REG_DDR_CONFIG_RGRD(data) do {\
(data) = ioread32((void *)SDCC_HC_REG_DDR_CONFIG_RGOFFADDR);\
} while (0)
#define SDCC_HC_PRG_RCLK_DLY_MASK (ULONG)(0x1ff)
#define SDCC_HC_PRG_RCLK_DLY_WR_MASK (ULONG)(0xfffffe00)
#define SDCC_HC_PRG_RCLK_DLY_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DDR_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_PRG_RCLK_DLY_WR_MASK) | ((data & SDCC_HC_PRG_RCLK_DLY_MASK) << 0));\
SDCC_HC_REG_DDR_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_PRG_RCLK_DLY_UDFRD(data) do {\
SDCC_HC_REG_DDR_CONFIG_RGRD(data);\
data = ((data >> 0) & SDCC_HC_PRG_RCLK_DLY_MASK);\
} while (0)
#define SDCC_HC_EXT_PRG_RCLK_DLY_MASK (ULONG)(0x3f)
#define SDCC_HC_EXT_PRG_RCLK_DLY_WR_MASK (ULONG)(0xf81fffff)
#define SDCC_HC_EXT_PRG_RCLK_DLY_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DDR_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_EXT_PRG_RCLK_DLY_WR_MASK) | ((data & SDCC_HC_EXT_PRG_RCLK_DLY_MASK) << 21));\
SDCC_HC_REG_DDR_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_EXT_PRG_RCLK_DLY_UDFRD(data) do {\
SDCC_HC_REG_DDR_CONFIG_RGRD(data);\
data = ((data >> 0) & SDCC_HC_EXT_PRG_RCLK_DLY_MASK);\
} while (0)
#define SDCC_HC_EXT_PRG_RCLK_DLY_CODE_MASK (ULONG)(0x7)
#define SDCC_HC_EXT_PRG_RCLK_DLY_CODE_WR_MASK (ULONG)(0xc7ffffff)
#define SDCC_HC_EXT_PRG_RCLK_DLY_CODE_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DDR_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_EXT_PRG_RCLK_DLY_CODE_WR_MASK) | ((data & SDCC_HC_EXT_PRG_RCLK_DLY_CODE_MASK) << 27));\
SDCC_HC_REG_DDR_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_EXT_PRG_RCLK_DLY_CODE_UDFRD(data) do {\
SDCC_HC_REG_DDR_CONFIG_RGRD(data);\
data = ((data >> 0) & SDCC_HC_EXT_PRG_RCLK_DLY_CODE_MASK);\
} while (0)
#define SDCC_HC_EXT_PRG_RCLK_DLY_EN_MASK (ULONG)(0x1)
#define SDCC_HC_EXT_PRG_RCLK_DLY_EN_WR_MASK (ULONG)(0xbfffffff)
#define SDCC_HC_EXT_PRG_RCLK_DLY_EN_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DDR_CONFIG_RGRD(v);\
v = ((v & SDCC_HC_EXT_PRG_RCLK_DLY_EN_WR_MASK) | ((data & SDCC_HC_EXT_PRG_RCLK_DLY_EN_MASK) << 30));\
SDCC_HC_REG_DDR_CONFIG_RGWR(v);\
} while (0)
#define SDCC_HC_EXT_PRG_RCLK_DLY_EN_UDFRD(data) do {\
SDCC_HC_REG_DDR_CONFIG_RGRD(data);\
data = ((data >> 0) & SDCC_HC_EXT_PRG_RCLK_DLY_EN_MASK);\
} while (0)
/* Read Write register operations for EMAC_SDCC_HC_REG_DLL_CONFIG_2 */
#define SDCC_HC_REG_DLL_CONFIG_2_RGOFFADDR_OFFSET (0x00000010)
#define SDCC_HC_REG_DLL_CONFIG_2_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + SDCC_HC_REG_DLL_CONFIG_2_RGOFFADDR_OFFSET))
#define SDCC_HC_REG_DLL_CONFIG_2_RGWR(data) do {\
iowrite32(data, (void *)SDCC_HC_REG_DLL_CONFIG_2_RGOFFADDR);\
} while (0)
#define SDCC_HC_REG_DLL_CONFIG_2_RGRD(data) do {\
(data) = ioread32((void *)SDCC_HC_REG_DLL_CONFIG_2_RGOFFADDR);\
} while (0)
#define SDCC_HC_CFG_2_MCLK_FREQ_CALC_MASK (ULONG)(0xff)
#define SDCC_HC_CFG_2_MCLK_FREQ_CALC_WR_MASK (ULONG)(0xfffc03ff)
#define SDCC_HC_CFG_2_MCLK_FREQ_CALC_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(v);\
v = ((v & SDCC_HC_CFG_2_MCLK_FREQ_CALC_WR_MASK) | ((data & SDCC_HC_CFG_2_MCLK_FREQ_CALC_MASK) << 10));\
SDCC_HC_REG_DLL_CONFIG_2_RGWR(v);\
} while (0)
#define SDCC_HC_CFG_2_MCLK_FREQ_CALC_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(data);\
data = ((data >> 10) & SDCC_HC_CFG_2_MCLK_FREQ_CALC_MASK);\
} while (0)
#define SDCC_HC_CFG_2_DLL_CLOCK_DISABLE_MASK (ULONG)(0x1)
#define SDCC_HC_CFG_2_DLL_CLOCK_DISABLE_WR_MASK (ULONG)(0xffdfffff)
#define SDCC_HC_CFG_2_DLL_CLOCK_DISABLE_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(v);\
v = ((v & SDCC_HC_CFG_2_DLL_CLOCK_DISABLE_WR_MASK) | ((data & SDCC_HC_CFG_2_DLL_CLOCK_DISABLE_MASK) << 21));\
SDCC_HC_REG_DLL_CONFIG_2_RGWR(v);\
} while (0)
#define SDCC_HC_CFG_2_DLL_CLOCK_DISABLE_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(data);\
data = ((data >> 21) & SDCC_HC_CFG_2_DLL_CLOCK_DISABLE_MASK);\
} while (0)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SEL_MASK (ULONG)(0x1)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SEL_WR_MASK (ULONG)(0xfffffff3)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SEL_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(v);\
v = ((v & SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SEL_WR_MASK) | ((data & SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SEL_MASK) << 2));\
SDCC_HC_REG_DLL_CONFIG_2_RGWR(v);\
} while (0)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SEL_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(data);\
data = ((data >> 2) & SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SEL_MASK);\
} while (0)
#define SDCC_HC_CFG_2_DDR_CAL_EN_MASK (ULONG)(0x1)
#define SDCC_HC_CFG_2_DDR_CAL_EN_WR_MASK (ULONG)(0xfffffffe)
#define SDCC_HC_CFG_2_DDR_CAL_EN_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(v);\
v = ((v & SDCC_HC_CFG_2_DDR_CAL_EN_WR_MASK) | ((data & SDCC_HC_CFG_2_DDR_CAL_EN_MASK) << 0));\
SDCC_HC_REG_DLL_CONFIG_2_RGWR(v);\
} while (0)
#define SDCC_HC_CFG_2_DDR_CAL_EN_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(data);\
data = ((data >> 0) & SDCC_HC_CFG_2_DDR_CAL_EN_MASK);\
} while (0)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SW_MASK (ULONG)(0x1)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SW_WR_MASK (ULONG)(0xfffffffd)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SW_UDFWR(data) do {\
ULONG v;\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(v);\
v = ((v & SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SW_WR_MASK) | ((data & SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SW_MASK) << 1));\
SDCC_HC_REG_DLL_CONFIG_2_RGWR(v);\
} while (0)
#define SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SW_UDFRD(data) do {\
SDCC_HC_REG_DLL_CONFIG_2_RGRD(data);\
data = ((data >> 0) & SDCC_HC_CFG_2_DDR_TRAFFIC_INIT_SW_MASK);\
} while (0)
/* Read register operations for EMAC_SDC4_STATUS */
#define SDC4_STATUS_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + 0x00000014))
#define SDC4_STATUS_RGRD(data) do {\
(data) = ioread32((void *)SDC4_STATUS_RGOFFADDR);\
} while (0)
#define SDC4_STATUS_DLL_LOCK_STS_MASK (ULONG)(0x1)
#define SDC4_STATUS_DLL_LOCK_STS_UDFRD(data) do {\
SDC4_STATUS_RGRD(data);\
data = ((data >> 7) & SDC4_STATUS_DLL_LOCK_STS_MASK);\
} while (0)
/* Read register operations for EMAC_SDCC_USR_CTL */
#define SDCC_USR_CTL_RGOFFADDR_OFFSET (0x00000018)
#define SDCC_USR_CTL_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + SDCC_USR_CTL_RGOFFADDR_OFFSET))
#define SDCC_USR_CTL_BYPASS_MODE_MASK (ULONG)(0x1)
#define SDCC_USR_CTL_BYPASS_MODE_WR_MASK (ULONG)(0xbfffffff)
#define SDCC_USR_CTL_RGRD(data) do {\
(data) = ioread32((void *)SDCC_USR_CTL_RGOFFADDR);\
} while (0)
#define SDCC_USR_CTL_RGWR(data) do {\
iowrite32(data, (void *)SDCC_USR_CTL_RGOFFADDR);\
} while (0)
#define SDCC_USR_CTL_BYPASS_MODE_UDFRD(data) do {\
SDCC_USR_CTL_RGRD(data);\
data = ((data >> 30) & SDCC_USR_CTL_BYPASS_MODE_MASK);\
} while (0)
#define SDCC_USR_CTL_BYPASS_MODE_UDFWR(data) do {\
ULONG v;\
SDCC_USR_CTL_RGRD(v);\
v = ((v & SDCC_USR_CTL_BYPASS_MODE_WR_MASK) | ((data & SDCC_USR_CTL_BYPASS_MODE_MASK) << 30));\
SDCC_USR_CTL_RGWR(v);\
} while (0)
/* Read Write register operations for
* EMAC_RGMII_IO_MACRO_CONFIG_2
*/
#define RGMII_IO_MACRO_CONFIG_2_RGOFFADDR_OFFSET (0x0000001C)
#define RGMII_IO_MACRO_CONFIG_2_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + RGMII_IO_MACRO_CONFIG_2_RGOFFADDR_OFFSET))
#define RGMII_IO_MACRO_CONFIG_2_RGWR(data) do {\
iowrite32(data, (void *)RGMII_IO_MACRO_CONFIG_2_RGOFFADDR);\
} while (0)
#define RGMII_IO_MACRO_CONFIG_2_RGRD(data) do {\
(data) = ioread32((void *)RGMII_IO_MACRO_CONFIG_2_RGOFFADDR);\
} while (0)
#define RGMII_DATA_DIVIDE_CLK_SEL_MASK (ULONG)(0x1)
#define RGMII_DATA_DIVIDE_CLK_SEL_WR_MASK (ULONG)(0xffffffbf)
#define RGMII_CONFIG_2_DATA_DIVIDE_CLK_SEL_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_2_RGRD(v);\
v = ((v & RGMII_DATA_DIVIDE_CLK_SEL_WR_MASK) | ((data & RGMII_DATA_DIVIDE_CLK_SEL_MASK) << 6));\
RGMII_IO_MACRO_CONFIG_2_RGWR(v);\
} while (0)
#define RGMII_CONFIG_2_DATA_DIVIDE_CLK_SEL_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_2_RGRD(data);\
data = ((data >> 6) & RGMII_DATA_DIVIDE_CLK_SEL_MASK);\
} while (0)
#define RGMII_TX_CLK_PHASE_SHIFT_EN_MASK (ULONG)(0x1)
#define RGMII_TX_CLK_PHASE_SHIFT_EN_WR_MASK (ULONG)(0xffffffdf)
#define RGMII_CONFIG_2_TX_CLK_PHASE_SHIFT_EN_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_2_RGRD(v);\
v = ((v & RGMII_TX_CLK_PHASE_SHIFT_EN_WR_MASK) | ((data & RGMII_TX_CLK_PHASE_SHIFT_EN_MASK) << 5));\
RGMII_IO_MACRO_CONFIG_2_RGWR(v);\
} while (0)
#define RGMII_CONFIG_2_TX_CLK_PHASE_SHIFT_EN_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_2_RGRD(data);\
data = ((data >> 5) & RGMII_TX_CLK_PHASE_SHIFT_EN_MASK);\
} while (0)
#define RGMII_TX_TO_RX_LOOPBACK_EN_MASK (ULONG)(0x1)
#define RGMII_TX_TO_RX_LOOPBACK_EN_WR_MASK (ULONG)(0xffffdfff)
#define RGMII_CONFIG_2_TX_TO_RX_LOOPBACK_EN_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_2_RGRD(v);\
v = ((v & RGMII_TX_TO_RX_LOOPBACK_EN_WR_MASK) | ((data & RGMII_TX_TO_RX_LOOPBACK_EN_MASK) << 13));\
RGMII_IO_MACRO_CONFIG_2_RGWR(v);\
} while (0)
#define RGMII_CONFIG_2_TX_TO_RX_LOOPBACK_EN_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_2_RGRD(data);\
data = ((data >> 13) & RGMII_TX_TO_RX_LOOPBACK_EN_MASK);\
} while (0)
#define RGMII_RX_PROG_SWAP_MASK (ULONG)(0x1)
#define RGMII_RX_PROG_SWAP_WR_MASK (ULONG)(0xffffff7f)
#define RGMII_CONFIG_2_RX_PROG_SWAP_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_2_RGRD(v);\
v = ((v & RGMII_RX_PROG_SWAP_WR_MASK) | ((data & RGMII_RX_PROG_SWAP_MASK) << 7));\
RGMII_IO_MACRO_CONFIG_2_RGWR(v);\
} while (0)
#define RGMII_CONFIG_2_RX_PROG_SWAP_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_2_RGRD(data);\
data = ((data >> 7) & RGMII_RX_PROG_SWAP_MASK);\
} while (0)
#define RGMII_CLK_DIVIDE_SEL_MASK (ULONG)(0x1)
#define RGMII_CLK_DIVIDE_SEL_WR_MASK (ULONG)(0xffffefff)
#define RGMII_CONFIG_2_CLK_DIVIDE_SEL_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_2_RGRD(v);\
v = ((v & RGMII_CLK_DIVIDE_SEL_WR_MASK) | ((data & RGMII_CLK_DIVIDE_SEL_MASK) << 12));\
RGMII_IO_MACRO_CONFIG_2_RGWR(v);\
} while (0)
#define RGMII_CONFIG_2_CLK_DIVIDE_SEL_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_2_RGRD(data);\
data = ((data >> 7) & RGMII_CLK_DIVIDE_SEL_MASK);\
} while (0)
#define RGMII_RERVED_CONFIG_16_EN_MASK (ULONG)(0xffff)
#define RGMII_RERVED_CONFIG_16_EN_WR_MASK (ULONG)(0x0000ffff)
#define RGMII_CONFIG_2_RERVED_CONFIG_16_EN_UDFWR(data) do {\
ULONG v;\
RGMII_IO_MACRO_CONFIG_2_RGRD(v);\
v = ((v & RGMII_RERVED_CONFIG_16_EN_WR_MASK) | ((data & RGMII_RERVED_CONFIG_16_EN_MASK) << 16));\
RGMII_IO_MACRO_CONFIG_2_RGWR(v);\
} while (0)
#define RGMII_CONFIG_2_RERVED_CONFIG_16_EN_UDFRD(data) do {\
RGMII_IO_MACRO_CONFIG_2_RGRD(data);\
data = ((data >> 16) & RGMII_RERVED_CONFIG_16_EN_MASK);\
} while (0)
/* EMAC_RGMII_IO_MACRO_DEBUG_1 */
#define RGMII_IO_MACRO_DEBUG_1_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + 0x00000020))
#define RGMII_IO_MACRO_DEBUG_1_RGRD(data) do {\
(data) = ioread32((void *)RGMII_IO_MACRO_DEBUG_1_RGOFFADDR);\
} while (0)
/* EMAC_SYSTEM_LOW_POWER_DEBUG */
#define EMAC_SYSTEM_LOW_POWER_DEBUG_RGOFFADDR ((volatile ULONG *)(RGMII_IO_BASE_ADDRESS + 0x00000028))
#define EMAC_SYSTEM_LOW_POWER_DEBUG_RGRD(data) do {\
(data) = ioread32((void *)EMAC_SYSTEM_LOW_POWER_DEBUG_RGOFFADDR);\
} while (0)
void dump_rgmii_io_macro_registers(void);
#endif