Commit e80fe71b authored by Michael Sit Wei Hong's avatar Michael Sit Wei Hong Committed by David S. Miller
Browse files

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: default avatarMichael Sit Wei Hong <michael.wei.hong.sit@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7617af3d
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -429,6 +429,17 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
	plat->force_sf_dma_mode = 0;
	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;

	for (i = 0; i < plat->rx_queues_to_use; i++) {
+2 −0
Original line number Diff line number Diff line
@@ -623,6 +623,8 @@ struct stmmac_mmc_ops {
	stmmac_do_callback(__priv, xpcs, link_up, __args)
#define stmmac_xpcs_probe(__priv, __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 {
	u32 ptp_off;
+6 −0
Original line number Diff line number Diff line
@@ -720,6 +720,12 @@ static int stmmac_ethtool_op_set_eee(struct net_device *dev,
		netdev_warn(priv->dev,
			    "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)
		stmmac_disable_eee_mode(priv);

+1 −0
Original line number Diff line number Diff line
@@ -223,6 +223,7 @@ struct plat_stmmacenet_data {
	struct clk *clk_ptp_ref;
	unsigned int clk_ptp_rate;
	unsigned int clk_ref_rate;
	unsigned int mult_fact_100ns;
	s32 ptp_max_adj;
	struct reset_control *stmmac_rst;
	struct stmmac_axi *axi;