net: stmmac: Add callbacks for DWC xpcs Energy Efficient Ethernet
Link xpcs callback functions for MAC to configure the xpcs EEE feature. The clk_eee frequency is used to calculate the MULT_FACT_100NS. This is to adjust the clock tic closer to 100ns. Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
7617af3d1a
commit
e80fe71b3f
@@ -429,6 +429,17 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
|
|||||||
plat->force_sf_dma_mode = 0;
|
plat->force_sf_dma_mode = 0;
|
||||||
plat->tso_en = 1;
|
plat->tso_en = 1;
|
||||||
|
|
||||||
|
/* Multiplying factor to the clk_eee_i clock time
|
||||||
|
* period to make it closer to 100 ns. This value
|
||||||
|
* should be programmed such that the clk_eee_time_period *
|
||||||
|
* (MULT_FACT_100NS + 1) should be within 80 ns to 120 ns
|
||||||
|
* clk_eee frequency is 19.2Mhz
|
||||||
|
* clk_eee_time_period is 52ns
|
||||||
|
* 52ns * (1 + 1) = 104ns
|
||||||
|
* MULT_FACT_100NS = 1
|
||||||
|
*/
|
||||||
|
plat->mult_fact_100ns = 1;
|
||||||
|
|
||||||
plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
|
plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
|
||||||
|
|
||||||
for (i = 0; i < plat->rx_queues_to_use; i++) {
|
for (i = 0; i < plat->rx_queues_to_use; i++) {
|
||||||
|
|||||||
@@ -623,6 +623,8 @@ struct stmmac_mmc_ops {
|
|||||||
stmmac_do_callback(__priv, xpcs, link_up, __args)
|
stmmac_do_callback(__priv, xpcs, link_up, __args)
|
||||||
#define stmmac_xpcs_probe(__priv, __args...) \
|
#define stmmac_xpcs_probe(__priv, __args...) \
|
||||||
stmmac_do_callback(__priv, xpcs, probe, __args)
|
stmmac_do_callback(__priv, xpcs, probe, __args)
|
||||||
|
#define stmmac_xpcs_config_eee(__priv, __args...) \
|
||||||
|
stmmac_do_callback(__priv, xpcs, config_eee, __args)
|
||||||
|
|
||||||
struct stmmac_regs_off {
|
struct stmmac_regs_off {
|
||||||
u32 ptp_off;
|
u32 ptp_off;
|
||||||
|
|||||||
@@ -720,6 +720,12 @@ static int stmmac_ethtool_op_set_eee(struct net_device *dev,
|
|||||||
netdev_warn(priv->dev,
|
netdev_warn(priv->dev,
|
||||||
"Setting EEE tx-lpi is not supported\n");
|
"Setting EEE tx-lpi is not supported\n");
|
||||||
|
|
||||||
|
ret = stmmac_xpcs_config_eee(priv, &priv->hw->xpcs_args,
|
||||||
|
priv->plat->mult_fact_100ns,
|
||||||
|
edata->eee_enabled);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if (!edata->eee_enabled)
|
if (!edata->eee_enabled)
|
||||||
stmmac_disable_eee_mode(priv);
|
stmmac_disable_eee_mode(priv);
|
||||||
|
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ struct plat_stmmacenet_data {
|
|||||||
struct clk *clk_ptp_ref;
|
struct clk *clk_ptp_ref;
|
||||||
unsigned int clk_ptp_rate;
|
unsigned int clk_ptp_rate;
|
||||||
unsigned int clk_ref_rate;
|
unsigned int clk_ref_rate;
|
||||||
|
unsigned int mult_fact_100ns;
|
||||||
s32 ptp_max_adj;
|
s32 ptp_max_adj;
|
||||||
struct reset_control *stmmac_rst;
|
struct reset_control *stmmac_rst;
|
||||||
struct stmmac_axi *axi;
|
struct stmmac_axi *axi;
|
||||||
|
|||||||
Reference in New Issue
Block a user