Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp1206973pxy; Thu, 29 Apr 2021 01:54:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwfY9h36ExjVzqQNI/K122UBWj+nEPt34nMPzULNo8DchIrEQyyB3EwcPqYr2/mgmZy+kW2 X-Received: by 2002:a17:906:9342:: with SMTP id p2mr26163757ejw.311.1619686478451; Thu, 29 Apr 2021 01:54:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619686478; cv=none; d=google.com; s=arc-20160816; b=Zzy1BwW3hM7mBWZpZm0i9rGdMZ4Th5rGOQc+/o6NbKag2Cr6W1lIQiCkI8sbPXb6I4 EAilYlY32CxjaMsGVzjWIJ7I93Oybndi11cDLoZ77nvBQnGA4i0X51WPVpiicLwc5eQd 2mF5mhOgm/mQ6CWDZtm0doorI+bZLQTE9UvKCZo2K15jr4ur0EZmGbVuXjHs84tgFReR O0flvt3rBCXF4cgUZsxoc1jyzJAl+cJmXEsNr++3am22++LYAVVZhzrg1XwfvyAsoeAW Z7ekeuJZ6kSwckE/zb33xG+M88jz6aqXgqOfYwY02NG5LL9hSEF+thob4dOSbCoxYJK9 BkOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :to:from:ironport-sdr:ironport-sdr; bh=5ONtV8cHoGQ1C/oAcLaYP4DeiXAmwZA0/jDi12/Yepk=; b=fHYd2VnRrKdMqY8nF6OMxGt7mxTAgnfPi6CPrjkegtiOb/X+0I/VGxY+f7vAGBR4qO X8xcP6WcfhaHL4JROQehyaB8c4T1dkSRw5S1SABDbghjdgC8EGYjTlbVANUd5lJUTycT 86vqF9EOZWJ66wFgI/G3r0z/nzXDogUfZuu3Hi/IA26a/RRar9JcP3L2alUkURADdjLj +ke+7jM/NoA4QEbPiMEQPEpGtENDCJ5BMy7CSPyTpJ5o4O8+qBf1oSKv8f2Q9FVzX7YL aXQpl45YUXaJC+lwLx+yt71eoSRe9ovTlrXdpVxBDXU1YGd8S7edRK0RFh8sbZ1scN4P +fHQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dt17si2681351ejc.330.2021.04.29.01.54.15; Thu, 29 Apr 2021 01:54:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240039AbhD2Iwc (ORCPT + 99 others); Thu, 29 Apr 2021 04:52:32 -0400 Received: from mga01.intel.com ([192.55.52.88]:11275 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239885AbhD2Iwb (ORCPT ); Thu, 29 Apr 2021 04:52:31 -0400 IronPort-SDR: brQXJnHKxWJDqO0GCnJmVrfTDI3lKxIa2YEszbmPRkwV6fyPomsM1a02JVxiS4BRTbnZCYrC3A T9ui2Rve6/Ug== X-IronPort-AV: E=McAfee;i="6200,9189,9968"; a="217684140" X-IronPort-AV: E=Sophos;i="5.82,258,1613462400"; d="scan'208";a="217684140" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Apr 2021 01:51:45 -0700 IronPort-SDR: SuZ9tfMNP5EQbtl+AkYk/IewFy3ZsHwjdPYuhr8U9Hnpbw0u4o9gNtZxoMFpCIsXjqSY1Loj12 FxXGcocZnoew== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,258,1613462400"; d="scan'208";a="605198520" Received: from mike-ilbpg1.png.intel.com ([10.88.227.76]) by orsmga005.jf.intel.com with ESMTP; 29 Apr 2021 01:51:40 -0700 From: Michael Sit Wei Hong To: Jose.Abreu@synopsys.com, andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, kuba@kernel.org, netdev@vger.kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, davem@davemloft.net, mcoquelin.stm32@gmail.com, weifeng.voon@intel.com, boon.leong.ong@intel.com, tee.min.tan@intel.com, vee.khee.wong@linux.intel.com, vee.khee.wong@intel.com, michael.wei.hong.sit@intel.com, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/2] net: stmmac: Add callbacks for DWC xpcs Energy Efficient Ethernet Date: Thu, 29 Apr 2021 16:46:36 +0800 Message-Id: <20210429084636.24752-3-michael.wei.hong.sit@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210429084636.24752-1-michael.wei.hong.sit@intel.com> References: <20210429084636.24752-1-michael.wei.hong.sit@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 11 +++++++++++ drivers/net/ethernet/stmicro/stmmac/hwif.h | 2 ++ drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 6 ++++++ include/linux/stmmac.h | 1 + 4 files changed, 20 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c index 80728a4c0e3f..e36a8cc59ad0 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c @@ -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++) { diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.h b/drivers/net/ethernet/stmicro/stmmac/hwif.h index 2cc91759b91f..c678d7b826a3 100644 --- a/drivers/net/ethernet/stmicro/stmmac/hwif.h +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.h @@ -624,6 +624,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; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c index 61b11639ee0c..1f6d749fd9a3 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c @@ -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); diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index 0db36360ef21..e14a12df381b 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -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; -- 2.17.1