diff options
author | Sunil Paidimarri <hisunil@codeaurora.org> | 2019-04-19 13:21:10 -0700 |
---|---|---|
committer | Sunil Paidimarri <hisunil@codeaurora.org> | 2019-11-26 22:01:01 -0800 |
commit | 7f36751352721ee10a919b61c7480b0299645856 (patch) | |
tree | b5815100f3bf07188feb545e5c0b073448d605e2 | |
parent | 892e07957bf97be6afcedb560886999e007727b3 (diff) | |
download | data-kernel-7f36751352721ee10a919b61c7480b0299645856.tar.gz |
data-kernel: Add io macro settings for emac core version 2.1.1
Change-Id: I7d661f7bb23e812783d61c63061e19f8e743efff
Acked-by: Nisha Menon <nmenon@qti.qualcomm.com>
Signed-off-by: Sunil Paidimarri <hisunil@codeaurora.org>
-rw-r--r-- | drivers/emac-dwc-eqos/DWC_ETH_QOS_mdio.c | 19 | ||||
-rw-r--r-- | drivers/emac-dwc-eqos/DWC_ETH_QOS_platform.c | 10 | ||||
-rw-r--r-- | drivers/emac-dwc-eqos/DWC_ETH_QOS_rgmii_io_macro.c | 23 |
3 files changed, 34 insertions, 18 deletions
diff --git a/drivers/emac-dwc-eqos/DWC_ETH_QOS_mdio.c b/drivers/emac-dwc-eqos/DWC_ETH_QOS_mdio.c index 57c9383..faac49e 100644 --- a/drivers/emac-dwc-eqos/DWC_ETH_QOS_mdio.c +++ b/drivers/emac-dwc-eqos/DWC_ETH_QOS_mdio.c @@ -543,7 +543,8 @@ static void set_phy_rx_tx_delay(struct DWC_ETH_QOS_prv_data *pdata, EMACDBG("Read 0x%x from offset 0x8\n",phydata); phydata = 0; - if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2) { + if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2 + || pdata->emac_hw_version_type == EMAC_HW_v2_1_1) { u16 tx_clk = 0xE; /* Provide TX_CLK delay of -0.06nsec */ DWC_ETH_QOS_mdio_mmd_register_read_direct(pdata, pdata->phyaddr, @@ -562,7 +563,8 @@ static void set_phy_rx_tx_delay(struct DWC_ETH_QOS_prv_data *pdata, DWC_ETH_QOS_mdio_mmd_register_read_direct(pdata, pdata->phyaddr, DWC_ETH_QOS_MICREL_PHY_DEBUG_MMD_DEV_ADDR,0x5,&phydata); phydata &= ~(0xFF); - if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2) + if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) phydata |= ((0x2 << 12) | (0x2 << 8) | (0x2 << 4) | 0x2); else /* Default settings for EMAC_HW_v2_1_0 */ @@ -579,7 +581,8 @@ static void set_phy_rx_tx_delay(struct DWC_ETH_QOS_prv_data *pdata, DWC_ETH_QOS_mdio_mmd_register_read_direct(pdata, pdata->phyaddr, DWC_ETH_QOS_MICREL_PHY_DEBUG_MMD_DEV_ADDR,0x4,&phydata); phydata &= ~(0xF << 4); - if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2) + if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) phydata |= (0x2 << 4); else /* Default settings for EMAC_HW_v2_1_0 */ @@ -654,9 +657,10 @@ static void configure_phy_rx_tx_delay(struct DWC_ETH_QOS_prv_data *pdata) set_phy_rx_tx_delay(pdata, ENABLE_RX_DELAY, ENABLE_TX_DELAY); } else { /* Settings for RGMII ID mode. - Not applicable for EMAC core version 2.1.0 and 2.1.2 */ + Not applicable for EMAC core version 2.1.0, 2.1.2 and 2.1.1 */ if (pdata->emac_hw_version_type != EMAC_HW_v2_1_0 && - pdata->emac_hw_version_type != EMAC_HW_v2_1_2) + pdata->emac_hw_version_type != EMAC_HW_v2_1_2 && + pdata->emac_hw_version_type != EMAC_HW_v2_1_1) set_phy_rx_tx_delay(pdata, DISABLE_RX_DELAY, DISABLE_TX_DELAY); } break; @@ -675,9 +679,10 @@ static void configure_phy_rx_tx_delay(struct DWC_ETH_QOS_prv_data *pdata) set_phy_rx_tx_delay(pdata, DISABLE_RX_DELAY, ENABLE_TX_DELAY); } else { /* Settings for RGMII ID mode */ - /* Not applicable for EMAC core version 2.1.0 and 2.1.2 */ + /* Not applicable for EMAC core version 2.1.0, 2.1.2 and 2.1.1 */ if (pdata->emac_hw_version_type != EMAC_HW_v2_1_0 && - pdata->emac_hw_version_type != EMAC_HW_v2_1_2) + pdata->emac_hw_version_type != EMAC_HW_v2_1_2 && + pdata->emac_hw_version_type != EMAC_HW_v2_1_1) set_phy_rx_tx_delay(pdata, DISABLE_RX_DELAY, DISABLE_TX_DELAY); } } diff --git a/drivers/emac-dwc-eqos/DWC_ETH_QOS_platform.c b/drivers/emac-dwc-eqos/DWC_ETH_QOS_platform.c index 4d57d7a..2a7e11a 100644 --- a/drivers/emac-dwc-eqos/DWC_ETH_QOS_platform.c +++ b/drivers/emac-dwc-eqos/DWC_ETH_QOS_platform.c @@ -1037,8 +1037,9 @@ int DWC_ETH_QOS_enable_ptp_clk(struct device *dev) int ret; const char* ptp_clock_name; - if (dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_0 || - dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_2) + if (dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_0 + || dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_2 + || dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_1) ptp_clock_name = "emac_ptp_clk"; else ptp_clock_name = "eth_ptp_clk"; @@ -1186,8 +1187,9 @@ static int DWC_ETH_QOS_get_clks(struct device *dev) dwc_eth_qos_res_data.rgmii_clk = NULL; dwc_eth_qos_res_data.ptp_clk = NULL; - if (dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_0 || - (dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_2)) { + if (dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_0 + || dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_2 + || dwc_eth_qos_res_data.emac_hw_version_type == EMAC_HW_v2_1_1) { /* EMAC core version 2.1.0 clocks */ axi_clock_name = "emac_axi_clk"; ahb_clock_name = "emac_slv_ahb_clk"; diff --git a/drivers/emac-dwc-eqos/DWC_ETH_QOS_rgmii_io_macro.c b/drivers/emac-dwc-eqos/DWC_ETH_QOS_rgmii_io_macro.c index ad6736f..ebd302c 100644 --- a/drivers/emac-dwc-eqos/DWC_ETH_QOS_rgmii_io_macro.c +++ b/drivers/emac-dwc-eqos/DWC_ETH_QOS_rgmii_io_macro.c @@ -364,7 +364,8 @@ int DWC_ETH_QOS_rgmii_io_macro_init(struct DWC_ETH_QOS_prv_data *pdata) uint rgmii_data_divide_clk; ULONG data; - if (pdata->emac_hw_version_type == EMAC_HW_v2_3_0 || (pdata->emac_hw_version_type == EMAC_HW_v2_3_1)) { + if (pdata->emac_hw_version_type == EMAC_HW_v2_3_0 || (pdata->emac_hw_version_type == EMAC_HW_v2_3_1) + || (pdata->emac_hw_version_type == EMAC_HW_v2_1_1)) { if(pdata->io_macro_phy_intf == RGMII_MODE) loopback_mode_en = 0x1; rgmii_data_divide_clk = 0x0; @@ -403,7 +404,8 @@ int DWC_ETH_QOS_rgmii_io_macro_init(struct DWC_ETH_QOS_prv_data *pdata) RGMII_LOOPBACK_EN_UDFWR(loopback_mode_en); if (pdata->emac_hw_version_type == EMAC_HW_v2_1_0 || pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || - (pdata->emac_hw_version_type == EMAC_HW_v2_3_1)) + (pdata->emac_hw_version_type == EMAC_HW_v2_3_1) || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) RGMII_CONFIG_2_TX_CLK_PHASE_SHIFT_EN_UDFWR(0x1); } else { /* Enable DDR mode*/ @@ -429,6 +431,8 @@ int DWC_ETH_QOS_rgmii_io_macro_init(struct DWC_ETH_QOS_prv_data *pdata) SDCC_HC_PRG_RCLK_DLY_UDFWR(52); else if (pdata->emac_hw_version_type == EMAC_HW_v2_3_1) SDCC_HC_PRG_RCLK_DLY_UDFWR(104); + else if (pdata->emac_hw_version_type == EMAC_HW_v2_1_1) + SDCC_HC_PRG_RCLK_DLY_UDFWR(130); else { /* Program PRG_RCLK_DLY to 57 for a required delay of 1.8 ns */ SDCC_HC_PRG_RCLK_DLY_UDFWR(57); } @@ -459,9 +463,11 @@ int DWC_ETH_QOS_rgmii_io_macro_init(struct DWC_ETH_QOS_prv_data *pdata) RGMII_LOOPBACK_EN_UDFWR(loopback_mode_en); if (pdata->emac_hw_version_type == EMAC_HW_v2_1_0 || pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || - (pdata->emac_hw_version_type == EMAC_HW_v2_3_1)) + (pdata->emac_hw_version_type == EMAC_HW_v2_3_1) || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) RGMII_CONFIG_2_RX_PROG_SWAP_UDFWR(0x1); - if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2) + if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) RGMII_CONFIG_2_TX_CLK_PHASE_SHIFT_EN_UDFWR(0x1); } else{ RGMII_DDR_MODE_UDFWR(0x1); @@ -506,9 +512,11 @@ int DWC_ETH_QOS_rgmii_io_macro_init(struct DWC_ETH_QOS_prv_data *pdata) RGMII_LOOPBACK_EN_UDFWR(loopback_mode_en); if (pdata->emac_hw_version_type == EMAC_HW_v2_1_0 || pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || - (pdata->emac_hw_version_type == EMAC_HW_v2_3_1)) + (pdata->emac_hw_version_type == EMAC_HW_v2_3_1) || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) RGMII_CONFIG_2_RX_PROG_SWAP_UDFWR(0x1); - if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2) + if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) RGMII_CONFIG_2_TX_CLK_PHASE_SHIFT_EN_UDFWR(0x1); } else{ RGMII_DDR_MODE_UDFWR(0x1); @@ -570,7 +578,8 @@ int DWC_ETH_QOS_rgmii_io_macro_init(struct DWC_ETH_QOS_prv_data *pdata) RGMII_CONFIG_2_DATA_DIVIDE_CLK_SEL_UDFWR(0x1); RGMII_CONFIG_2_TX_CLK_PHASE_SHIFT_EN_UDFWR(0x0); RGMII_CONFIG_2_RERVED_CONFIG_16_EN_UDFWR(0x1); - if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2) + if (pdata->emac_hw_version_type == EMAC_HW_v2_1_2 || + pdata->emac_hw_version_type == EMAC_HW_v2_1_1) RGMII_CONFIG_2_TX_CLK_PHASE_SHIFT_EN_UDFWR(0x1); if (pdata->emac_hw_version_type == EMAC_HW_v2_3_1) RGMII_LOOPBACK_EN_UDFWR(0x1); |