Skip to content

Commit

Permalink
stmmac: intel: Adding ref clock 1us tic for LPI cntr
Browse files Browse the repository at this point in the history
Adding reference clock (1us tic) for all LPI timer on Intel platforms.
The reference clock is derived from ptp clk. This also enables all LPI
counter.

Signed-off-by: Rusaimi Amira Ruslan <rusaimi.amira.rusaimi@intel.com>
Signed-off-by: Voon Weifeng <weifeng.voon@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Rusaimi Amira Ruslan authored and David S. Miller committed Sep 29, 2020
1 parent 3f53094 commit b4c5f83
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
9 changes: 9 additions & 0 deletions drivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <linux/platform_device.h>
#include <linux/stmmac.h>

#include "dwmac4.h"
#include "stmmac.h"
#include "stmmac_platform.h"

Expand Down Expand Up @@ -146,6 +147,14 @@ static int intel_eth_plat_probe(struct platform_device *pdev)
}

plat_dat->bsp_priv = dwmac;
plat_dat->eee_usecs_rate = plat_dat->clk_ptp_rate;

if (plat_dat->eee_usecs_rate > 0) {
u32 tx_lpi_usec;

tx_lpi_usec = (plat_dat->eee_usecs_rate / 1000000) - 1;
writel(tx_lpi_usec, stmmac_res.addr + GMAC_1US_TIC_COUNTER);
}

ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
if (ret) {
Expand Down
9 changes: 9 additions & 0 deletions drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <linux/pci.h>
#include <linux/dmi.h>
#include "dwmac-intel.h"
#include "dwmac4.h"
#include "stmmac.h"

struct intel_priv_data {
Expand Down Expand Up @@ -295,6 +296,7 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
plat->axi->axi_blen[2] = 16;

plat->ptp_max_adj = plat->clk_ptp_rate;
plat->eee_usecs_rate = plat->clk_ptp_rate;

/* Set system clock */
plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev,
Expand Down Expand Up @@ -623,6 +625,13 @@ static int intel_eth_pci_probe(struct pci_dev *pdev,
if (ret)
return ret;

if (plat->eee_usecs_rate > 0) {
u32 tx_lpi_usec;

tx_lpi_usec = (plat->eee_usecs_rate / 1000000) - 1;
writel(tx_lpi_usec, res.addr + GMAC_1US_TIC_COUNTER);
}

ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
if (ret < 0)
return ret;
Expand Down
1 change: 1 addition & 0 deletions include/linux/stmmac.h
Original file line number Diff line number Diff line change
Expand Up @@ -200,5 +200,6 @@ struct plat_stmmacenet_data {
int has_xgmac;
bool vlan_fail_q_en;
u8 vlan_fail_q;
unsigned int eee_usecs_rate;
};
#endif

0 comments on commit b4c5f83

Please sign in to comment.