From patchwork Tue Feb 14 09:03:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 56781 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2854356wrn; Tue, 14 Feb 2023 01:07:05 -0800 (PST) X-Google-Smtp-Source: AK7set/wMpUWEZiTax7mTuqwpn9P1Q4cGQ+JG6qOrNSzL5ELvgNq9xXkw9uovz0xN6s8vb3ILEOz X-Received: by 2002:a17:906:c401:b0:88d:ba89:1837 with SMTP id u1-20020a170906c40100b0088dba891837mr22539680ejz.8.1676365624935; Tue, 14 Feb 2023 01:07:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676365624; cv=none; d=google.com; s=arc-20160816; b=Ps+s3hi1a4nyLXfwlYBfNTQfxLjm4Qs+/li0QzpiQhcXPnVm8lphMgcjd2+SZYPPvz fkpAVKNRhw2n2Ni0gsIfNWPl7/gMCq+zrdz46V23wk3wTiA5aYauKR80+KODim8O7p8P f3xIOtkjQVwfZUpm1nVgCr38ebQygJWumkqcHKPwB135+l+HqnkHdzcqZApewuYKw9iR gTSQAzRLcYVNBnQTyh4OJck+GiHk9gYnkndixT4Hyo/4XWBnsk1XyiJTNTWYrdob8J2n D6azmyrpSxh4O2Y3olNFUVKIg09lkyyOoVlcHvmoLuuYqH4TiMnQRL6pdeQNTPjsU9O+ lOIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=tSkKkW3ZW3lcW+dgi2QL3Qu7FY+/UF84ZKwpnMQBSwg=; b=TZVp3F5t76CR2GgShGKBT2zsrdPTO6VJEczBwXmDWB7EM6yC6jVmrs3WGuW9V11Fx5 a6QefbZUXhKybAttkDAbGSeCpQPwkRONaz71iRnh8r3NYEPvOcp0B+VGHlZQWce2GTlD UUETpXetQ8N7M4LyNq8s8Vdq78KpiSjVkHecRUQ/f4FfKKfKVUZgQBaMxtcOOM9nXEAJ zXOBSRXpC4C++Z+aZ50wuiK1Ogb1iodxNW2JxaMXvJej/HZbzC6T5pfaeaegAThZDFCI Hf+pmzSvK6xEuyAMjwNJWn+OJM9cUVuU0ndbIaA8BoRJ28OPiZtpkPRmMOSnYo/PFGBM FIYA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u20-20020a170906109400b008b12d0e083bsi2860754eju.209.2023.02.14.01.06.41; Tue, 14 Feb 2023 01:07:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231530AbjBNJD6 (ORCPT + 99 others); Tue, 14 Feb 2023 04:03:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231411AbjBNJD3 (ORCPT ); Tue, 14 Feb 2023 04:03:29 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AC41D527 for ; Tue, 14 Feb 2023 01:03:26 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRrDa-0004UF-JK; Tue, 14 Feb 2023 10:03:18 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pRrDY-004qDl-Em; Tue, 14 Feb 2023 10:03:17 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pRrDX-008V5e-G2; Tue, 14 Feb 2023 10:03:15 +0100 From: Oleksij Rempel To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Shenwei Wang , Clark Wang , NXP Linux Team Subject: [PATCH net-next v1 1/7] net: phy: add driver specific get/set_eee support Date: Tue, 14 Feb 2023 10:03:08 +0100 Message-Id: <20230214090314.2026067-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230214090314.2026067-1-o.rempel@pengutronix.de> References: <20230214090314.2026067-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757796761496496179?= X-GMAIL-MSGID: =?utf-8?q?1757796761496496179?= Not all PHYs can be handled by generic phy_ethtool_get/set_eee() functions. So, add driver specific get/set_eee support. Signed-off-by: Oleksij Rempel --- drivers/net/phy/phy.c | 6 ++++++ include/linux/phy.h | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 2f1041a7211e..c42df62df302 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1520,6 +1520,9 @@ int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_eee *data) if (!phydev->drv) return -EIO; + if (phydev->drv->get_eee) + return phydev->drv->get_eee(phydev, data); + return genphy_c45_ethtool_get_eee(phydev, data); } EXPORT_SYMBOL(phy_ethtool_get_eee); @@ -1536,6 +1539,9 @@ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data) if (!phydev->drv) return -EIO; + if (phydev->drv->set_eee) + return phydev->drv->set_eee(phydev, data); + return genphy_c45_ethtool_set_eee(phydev, data); } EXPORT_SYMBOL(phy_ethtool_set_eee); diff --git a/include/linux/phy.h b/include/linux/phy.h index 727bff531a14..6709fbd72e10 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1052,6 +1052,11 @@ struct phy_driver { /** @get_plca_status: Return the current PLCA status info */ int (*get_plca_status)(struct phy_device *dev, struct phy_plca_status *plca_st); + + /** @get_eee: Return the current EEE configuration */ + int (*get_eee)(struct phy_device *phydev, struct ethtool_eee *e); + /** @set_eee: Set the EEE configuration */ + int (*set_eee)(struct phy_device *phydev, struct ethtool_eee *e); }; #define to_phy_driver(d) container_of(to_mdio_common_driver(d), \ struct phy_driver, mdiodrv) From patchwork Tue Feb 14 09:03:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 56777 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2854179wrn; Tue, 14 Feb 2023 01:06:41 -0800 (PST) X-Google-Smtp-Source: AK7set/MlD7MbiXRKxc/EJiRkmrbJensF24Vptaq793QjlDPv8PUELyp7CEUDszQdyINPT2IfGnk X-Received: by 2002:a17:906:5ac9:b0:8af:3739:bdd7 with SMTP id x9-20020a1709065ac900b008af3739bdd7mr17618169ejs.27.1676365601669; Tue, 14 Feb 2023 01:06:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676365601; cv=none; d=google.com; s=arc-20160816; b=Q8da/tFPrM6MckvrO8nP63Wp4pJ6IiDYKhZ8OYtU28nkM1DjUG2V7OlSoSmt/8sVf4 LylfL9o9LuWmmtstARWRo/Co4EYXy/elOtzHJnfrQvC8fup1YZ5R7YNc2UglpN4tYbFm 4npalZH2nwfeiaY5RgBtRRyRgEECNvrv4AWRlplcYrkdgVxPVTv++15fQBeIhvaRbt7m tR4C0f5eikcYNuwqm1cXFoPcoM3aUwjzHRvB2Wg6apn9nwAHQc0Ocs/Nit/hR1qrVGR6 Ovvo9dQ2QYoktcVPwOZ1nvKp10Bclkyo9jqK1eHFv70ZREhZ/VJCsJLYpXEviznEn0Am s77A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Eyu7OGmS0PeH6ZMYI0PnhNjTAC4G2r5GmaoqV5VIhlA=; b=R5T2xLzPPSLVznCJg8jWjUCojS09wDYrmVX6Y7MjXGkYlNQuCEP8PTWl8qeBGvT5Te XU1wgN9iaP6lSsnaYwhWS9/Xk6GiUDq8TT4NW94WzqGiZpR/c1PhY2rwzbTm7Z4C/S0X DvLc/etZA5ISygVXQE60PfoVPqL3R64bSg1gwDz7y8hici2BOzvInT9J75SXlkkruaEH cDwfukRlkIrZrYFAN68JOqxth1ROjGxy66Xg+ViXpCAhmnc9/+G5BhcnJOdA2xDHFlr4 /NR2fkIPreeCEIc2aHOiHisdslkun3vRnC2/0pCSMRqNm1o6BUn8hyHSOoYxkyXH+BzJ wFBw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 12-20020a170906010c00b00881984b0f41si19856552eje.291.2023.02.14.01.06.18; Tue, 14 Feb 2023 01:06:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231604AbjBNJDb (ORCPT + 99 others); Tue, 14 Feb 2023 04:03:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230364AbjBNJD2 (ORCPT ); Tue, 14 Feb 2023 04:03:28 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FC46CDCD for ; Tue, 14 Feb 2023 01:03:26 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRrDa-0004U4-JS; Tue, 14 Feb 2023 10:03:18 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pRrDX-004qDW-Oe; Tue, 14 Feb 2023 10:03:16 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pRrDX-008V5n-Gq; Tue, 14 Feb 2023 10:03:15 +0100 From: Oleksij Rempel To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Shenwei Wang , Clark Wang , NXP Linux Team Subject: [PATCH net-next v1 2/7] net: phy: at803x: implement ethtool access to SmartEEE functionality Date: Tue, 14 Feb 2023 10:03:09 +0100 Message-Id: <20230214090314.2026067-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230214090314.2026067-1-o.rempel@pengutronix.de> References: <20230214090314.2026067-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757796736844941116?= X-GMAIL-MSGID: =?utf-8?q?1757796736844941116?= If AR8035 PHY is used with a MAC without EEE support (iMX6, etc), then we need to process ethtool_eee::tx_lpi_timer and tx_lpi_enabled by the PHY driver. So, add get/set_eee support for this functionality. Signed-off-by: Oleksij Rempel --- drivers/net/phy/at803x.c | 109 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 104 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index 22f4458274aa..9eb4439b0afc 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -166,8 +166,18 @@ #define AT803X_MMD3_SMARTEEE_CTL1 0x805b #define AT803X_MMD3_SMARTEEE_CTL2 0x805c +#define AT803X_MMD3_SMARTEEE_LPI_TIME_LOW GENMASK(15, 0) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_15_0 GENMASK(15, 0) #define AT803X_MMD3_SMARTEEE_CTL3 0x805d #define AT803X_MMD3_SMARTEEE_CTL3_LPI_EN BIT(8) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH GENMASK(7, 0) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_23_16 GENMASK(23, 16) +/* Tx LPI timer resolution */ +#define AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS 163840 +#define AT803X_MMD3_SMARTEEE_LPI_TIME_MAX_US \ + ((GENMASK(23, 0) * AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS) / \ + NSEC_PER_USEC) +#define AT803X_MMD3_SMARTEEE_LPI_TIME_DEF_US 335544 #define ATH9331_PHY_ID 0x004dd041 #define ATH8030_PHY_ID 0x004dd076 @@ -951,17 +961,26 @@ static int at803x_get_features(struct phy_device *phydev) return 0; } -static int at803x_smarteee_config(struct phy_device *phydev) +static int at803x_smarteee_config(struct phy_device *phydev, bool enable, + u32 tx_lpi_timer_us) { struct at803x_priv *priv = phydev->priv; + u64 tx_lpi_timer_raw; + u64 tx_lpi_timer_ns; u16 mask = 0, val = 0; int ret; - if (priv->flags & AT803X_DISABLE_SMARTEEE) + if (priv->flags & AT803X_DISABLE_SMARTEEE || !enable) return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, AT803X_MMD3_SMARTEEE_CTL3_LPI_EN, 0); + if (tx_lpi_timer_us > AT803X_MMD3_SMARTEEE_LPI_TIME_MAX_US) { + phydev_err(phydev, "Max LPI timer is %lu microsecs\n", + AT803X_MMD3_SMARTEEE_LPI_TIME_MAX_US); + return -EINVAL; + } + if (priv->smarteee_lpi_tw_1g) { mask |= 0xff00; val |= priv->smarteee_lpi_tw_1g << 8; @@ -978,9 +997,27 @@ static int at803x_smarteee_config(struct phy_device *phydev) if (ret) return ret; + tx_lpi_timer_ns = tx_lpi_timer_us * NSEC_PER_USEC; + tx_lpi_timer_raw = + DIV_ROUND_CLOSEST_ULL(tx_lpi_timer_ns, + AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS); + val = FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_LOW, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_15_0, + tx_lpi_timer_raw)); + + ret = phy_write_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL2, + val); + if (ret) + return ret; + + val = AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | + FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, + tx_lpi_timer_raw)); + return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, - AT803X_MMD3_SMARTEEE_CTL3_LPI_EN, - AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | + AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, val); } static int at803x_clk_out_config(struct phy_device *phydev) @@ -1067,7 +1104,8 @@ static int at803x_config_init(struct phy_device *phydev) if (ret < 0) return ret; - ret = at803x_smarteee_config(phydev); + ret = at803x_smarteee_config(phydev, true, + AT803X_MMD3_SMARTEEE_LPI_TIME_DEF_US); if (ret < 0) return ret; @@ -1612,6 +1650,65 @@ static int at803x_cable_test_start(struct phy_device *phydev) return 0; } +static int at803x_get_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + struct at803x_priv *priv = phydev->priv; + u32 tx_timer_raw; + u64 tx_timer_ns; + int ret; + + /* If SmartEEE is not enabled, it is expected that tx_lpi_* fields + * are processed by the MAC driver. + */ + if (priv->flags & AT803X_DISABLE_SMARTEEE) + return genphy_c45_ethtool_get_eee(phydev, data); + + ret = phy_read_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL2); + tx_timer_raw = FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_15_0, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_LOW, + ret)); + if (ret < 0) + return ret; + + ret = phy_read_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL3); + if (ret < 0) + return ret; + + tx_timer_raw |= FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, + ret)); + tx_timer_ns = tx_timer_raw * AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS; + data->tx_lpi_timer = DIV_ROUND_CLOSEST_ULL(tx_timer_ns, NSEC_PER_USEC); + + data->tx_lpi_enabled = !!(ret & AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + + return genphy_c45_ethtool_get_eee(phydev, data); +} + +static int at803x_set_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + struct at803x_priv *priv = phydev->priv; + int ret; + + /* If SmartEEE is not enabled, it is expected that tx_lpi_* fields + * are processed by the MAC driver. + */ + if (priv->flags & AT803X_DISABLE_SMARTEEE) + return genphy_c45_ethtool_set_eee(phydev, data); + + /* Changing Tx LPI on/off or Tx LPI timer settings + * do not require link reset. + */ + ret = at803x_smarteee_config(phydev, data->tx_lpi_enabled, + data->tx_lpi_timer); + if (ret) + return ret; + + return genphy_c45_ethtool_set_eee(phydev, data); +} + static int qca83xx_config_init(struct phy_device *phydev) { u8 switch_revision; @@ -2038,6 +2135,8 @@ static struct phy_driver at803x_driver[] = { .set_tunable = at803x_set_tunable, .cable_test_start = at803x_cable_test_start, .cable_test_get_status = at803x_cable_test_get_status, + .get_eee = at803x_get_eee, + .set_eee = at803x_set_eee, }, { /* Qualcomm Atheros AR8030 */ .phy_id = ATH8030_PHY_ID, From patchwork Tue Feb 14 09:03:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 56780 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2854321wrn; Tue, 14 Feb 2023 01:07:00 -0800 (PST) X-Google-Smtp-Source: AK7set9nauaBrf21uget5+LKyuuSrmfQi2GlhICHzZ/bRJ11aH1Ze68CTNRQ2w5bITlFJcAGUpdA X-Received: by 2002:a50:cd94:0:b0:4ab:4d3c:7e99 with SMTP id p20-20020a50cd94000000b004ab4d3c7e99mr1786641edi.2.1676365620254; Tue, 14 Feb 2023 01:07:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676365620; cv=none; d=google.com; s=arc-20160816; b=TglGsk6mj4rzj2n58xjED+QpWFnNh1MJ8b8Fr1rHHL8/xZ0snmwkuf4F6BD+mpmnXz L/XK6oldmzAdtnCDuD/YJuEPImMPeBKLelNwp/WLZuBnzYlHapnFBq7gTj7ex03yRO/x X0p1nmllMK+6KYIoKaKLBaiTXltnh0NOxLNcz4AwE8pngSdWtekA8f8iE6i4e/6b0zpf KNn1GFYANr1YXD1VCPuA6zGbViZKbPS3NTrG9JCykIBI+xgH6wStalKNZwaQv7jMM704 Bk7zvjiMDiT1bgD8NsMdpvOTIz1OACc3w9cSINSodziypO4/n/UPLHqpkztW0RNBYz6o 0MiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9A9q68CmeqX00HQvfonrrrALSzi0aF0dH3x0T2q/kZY=; b=lmw8pWiJfzjrnn75a5u+2CR2f21fDppIWECUorBv+o1lWASO2LzD4oI15UyEHSI0Vj +W40yTn7lFmSZqpEYb74LBzIr4egpN9lei4EizT9ekWaULQJbfWzHYfWEQJu5vXMMdRE 3XuNrnbkvpcEQo7XspyOhBIxz/4LkOzGXQqtjBacrIFaHbPwOQAyHnfwxR+4CiEYRgtM F0AAwVxoimH1VEbe0s705NWolpSp+PQ0WPLXp8iImq+mMU9D9CiZ1gdY7dkdu1bm4WDS cZ5IPiYCdoAMQbJPcVbDmW8Z4+B+A9J0LylXUgUVNpxaYxp3/PkbFN42dZMmdptMk+fN 9rcQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b10-20020aa7cd0a000000b004accf0c29c2si4535763edw.313.2023.02.14.01.06.36; Tue, 14 Feb 2023 01:07:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232192AbjBNJDr (ORCPT + 99 others); Tue, 14 Feb 2023 04:03:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230145AbjBNJD3 (ORCPT ); Tue, 14 Feb 2023 04:03:29 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F636CDDF for ; Tue, 14 Feb 2023 01:03:26 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRrDa-0004UJ-JU; Tue, 14 Feb 2023 10:03:18 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pRrDY-004qDr-Ki; Tue, 14 Feb 2023 10:03:17 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pRrDX-008V5w-HY; Tue, 14 Feb 2023 10:03:15 +0100 From: Oleksij Rempel To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Shenwei Wang , Clark Wang , NXP Linux Team Subject: [PATCH net-next v1 3/7] net: phy: at803x: ar8035: fix EEE support for half duplex links Date: Tue, 14 Feb 2023 10:03:10 +0100 Message-Id: <20230214090314.2026067-4-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230214090314.2026067-1-o.rempel@pengutronix.de> References: <20230214090314.2026067-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757796756597763010?= X-GMAIL-MSGID: =?utf-8?q?1757796756597763010?= If AR8035 is running with enabled EEE and LPI, it will not be able to establish an 100BaseTX/Half or 1000BaseT/Half link. Similar issue we will have with 100BaseTX/Full and LPI TX timer configured to less then 80msec. To avoid this issue, we need to keep LPI disabled before link is establish and enable it only we detected supported link configuration. Signed-off-by: Oleksij Rempel --- drivers/net/phy/at803x.c | 41 +++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index 9eb4439b0afc..5ab43eb63581 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -313,6 +313,7 @@ struct at803x_priv { u8 smarteee_lpi_tw_100m; bool is_fiber; bool is_1000basex; + bool tx_lpi_on; struct regulator_dev *vddio_rdev; struct regulator_dev *vddh_rdev; struct regulator *vddio; @@ -970,6 +971,8 @@ static int at803x_smarteee_config(struct phy_device *phydev, bool enable, u16 mask = 0, val = 0; int ret; + priv->tx_lpi_on = enable; + if (priv->flags & AT803X_DISABLE_SMARTEEE || !enable) return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, @@ -1010,10 +1013,15 @@ static int at803x_smarteee_config(struct phy_device *phydev, bool enable, if (ret) return ret; - val = AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | - FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, - FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, - tx_lpi_timer_raw)); + val = FIELD_PREP(AT803X_MMD3_SMARTEEE_LPI_TIME_HIGH, + FIELD_GET(AT803X_MMD3_SMARTEEE_LPI_TIME_23_16, + tx_lpi_timer_raw)); + + if (phydev->state == PHY_RUNNING && + phy_check_valid(phydev->speed, phydev->duplex, + phydev->supported_eee)) { + val |= AT803X_MMD3_SMARTEEE_CTL3_LPI_EN; + } return phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_MMD3_SMARTEEE_CTL3, AT803X_MMD3_SMARTEEE_CTL3_LPI_EN | @@ -1682,7 +1690,7 @@ static int at803x_get_eee(struct phy_device *phydev, struct ethtool_eee *data) tx_timer_ns = tx_timer_raw * AT803X_MMD3_SMARTEEE_LPI_TIME_RESOL_NS; data->tx_lpi_timer = DIV_ROUND_CLOSEST_ULL(tx_timer_ns, NSEC_PER_USEC); - data->tx_lpi_enabled = !!(ret & AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + data->tx_lpi_enabled = priv->tx_lpi_on; return genphy_c45_ethtool_get_eee(phydev, data); } @@ -1709,6 +1717,28 @@ static int at803x_set_eee(struct phy_device *phydev, struct ethtool_eee *data) return genphy_c45_ethtool_set_eee(phydev, data); } +static void at8035_link_change_notify(struct phy_device *phydev) +{ + struct at803x_priv *priv = phydev->priv; + + if (priv->flags & AT803X_DISABLE_SMARTEEE) + return; + + if (phydev->state == PHY_RUNNING) { + if (priv->tx_lpi_on && phy_check_valid(phydev->speed, + phydev->duplex, + phydev->supported_eee)) + phy_set_bits_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL3, + AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + } else { + if (priv->tx_lpi_on) + phy_clear_bits_mmd(phydev, MDIO_MMD_PCS, + AT803X_MMD3_SMARTEEE_CTL3, + AT803X_MMD3_SMARTEEE_CTL3_LPI_EN); + } +} + static int qca83xx_config_init(struct phy_device *phydev) { u8 switch_revision; @@ -2137,6 +2167,7 @@ static struct phy_driver at803x_driver[] = { .cable_test_get_status = at803x_cable_test_get_status, .get_eee = at803x_get_eee, .set_eee = at803x_set_eee, + .link_change_notify = at8035_link_change_notify, }, { /* Qualcomm Atheros AR8030 */ .phy_id = ATH8030_PHY_ID, From patchwork Tue Feb 14 09:03:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 56783 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2854675wrn; Tue, 14 Feb 2023 01:07:48 -0800 (PST) X-Google-Smtp-Source: AK7set/88Q6axWuF7TP9N1F0O7tWofjK2ajyhAgXbc541BYW7IUpCiFZk2NTF0e8jLo9r2KOX8Bg X-Received: by 2002:aa7:9695:0:b0:5a8:4c55:db6f with SMTP id f21-20020aa79695000000b005a84c55db6fmr1447667pfk.19.1676365668149; Tue, 14 Feb 2023 01:07:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676365668; cv=none; d=google.com; s=arc-20160816; b=BjNQIOGNBcrplpi+ERqUWnlj7irMUXioEgOOcWPyDEtEG6q4Ez5UdPnFY2Jve+smBz 1+aAZut7tVTEoSaM/FpGZXqN0NAIpRYcqtJXNMBplsN8b/2H5Znj2AJn5sUP2WeaiFWY YG/SFn9a+Fbf0//AiDe5VMXPpdo++dRlFItmx5gf7bFoXJ7zg6/KsuM6dOUWXdyc7/FV 9FYPawtBKPhF7QNjkrd37d5xk3fM0uOjFvo8gOqEbYdlWlS8UlgOAAlFLl4VrZYMuZCF 6dT3z3Ccq7n9QouXIBxS9PJOk5LElJSt3IQJApdr/dnGVpNAmJaDotjJzzNOF5ffSbar klaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Z+SkqRpV0nzNmM8bYgdVLWnqYhWMydAEGes8semSAqU=; b=ckhp0OvKD0r820Eo2yPcBP9zQFx1x+FwN+qJlWt3uM40Tr2tj6V9VseSzrYVklzr2A bloki31GN9DrmRkNo8EvI6LSmGHryLo09EH7LIayYYN5q/x9GjtprZF4Jso4VW3kSKLF g34PUgErTc+Mnqt3w970Ys/KtJdkvEjrPnkzhcCZVpKJ5mQfpMkqTevmLrzQVjPyGJaR e7ngm6gWSYGSmSBR+4Oq7hDXsPO3qbb9fm/hmXPm2TnN8s6NTp67YO1oMRjWOGJsrpDB aH1+RPrCQeBeNq3HMvBYRzpksa69Q+LruRl0J8UKLuLcul46pJLiqSzLTwyqLCQIC2uq 2sSg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x9-20020aa79ac9000000b005a8e5748d63si255178pfp.284.2023.02.14.01.07.35; Tue, 14 Feb 2023 01:07:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231648AbjBNJDd (ORCPT + 99 others); Tue, 14 Feb 2023 04:03:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231384AbjBNJD2 (ORCPT ); Tue, 14 Feb 2023 04:03:28 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 239B8CDDE for ; Tue, 14 Feb 2023 01:03:26 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRrDa-0004UA-JP; Tue, 14 Feb 2023 10:03:18 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pRrDY-004qDa-4d; Tue, 14 Feb 2023 10:03:17 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pRrDX-008V65-IB; Tue, 14 Feb 2023 10:03:15 +0100 From: Oleksij Rempel To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Shenwei Wang , Clark Wang , NXP Linux Team Subject: [PATCH net-next v1 4/7] net: phy: add PHY specifica flag to signal SmartEEE support Date: Tue, 14 Feb 2023 10:03:11 +0100 Message-Id: <20230214090314.2026067-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230214090314.2026067-1-o.rempel@pengutronix.de> References: <20230214090314.2026067-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757796806571341777?= X-GMAIL-MSGID: =?utf-8?q?1757796806571341777?= Typical EEE support need cooperation of MAC and PHY, so both parts should be able to do EEE. But, there also PHYs compatible with normal 802.3az standard working with legacy MAC without EEE ability, acting as a complete EEE power saving system. To identify this PHYs we need a PHY specific flag. Since the PHY specification implementing this functionality calls it SmartEEE, use the same flag name - PHY_SMART_EEE. Signed-off-by: Oleksij Rempel --- include/linux/phy.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/phy.h b/include/linux/phy.h index 6709fbd72e10..e6b12653c655 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -85,6 +85,7 @@ extern const int phy_10gbit_features_array[1]; #define PHY_IS_INTERNAL 0x00000001 #define PHY_RST_AFTER_CLK_EN 0x00000002 #define PHY_POLL_CABLE_TEST 0x00000004 +#define PHY_SMART_EEE 0x00000008 /* EEE done by PHY without MAC */ #define MDIO_DEVICE_IS_PHY 0x80000000 /** From patchwork Tue Feb 14 09:03:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 56778 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2854239wrn; Tue, 14 Feb 2023 01:06:50 -0800 (PST) X-Google-Smtp-Source: AK7set8wE2kU7iYZnVCnufLD0JM7Bx6wSUujbDzJQ9sudppAGOLNEIMMECpCRFfJgMRx9uN7Ub19 X-Received: by 2002:a17:906:860c:b0:887:8f6:c1d7 with SMTP id o12-20020a170906860c00b0088708f6c1d7mr1884086ejx.38.1676365610027; Tue, 14 Feb 2023 01:06:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676365610; cv=none; d=google.com; s=arc-20160816; b=vD3fgrQn3rRMNwM6Wcn52jicIQQ4z9WrowHI4L6d8xacB7siT+XLOY3bqpwtTWqK2Q BLGdmelCQEeUUSvioiiY/4VTxMpfpPkHvrMTry28euMrOk8xFN8bPw+czgi/Y9DW690E SROngaGME8DgYKB4K0oRhvKjpc23/w6SMAaAhyxK38Te9aKZdMfB6uMy1mlgsiVS/MuP NhQZS9eM556Svv5Q5xX0DU+TXR+R7O77uw9BiGbS7eJaAqFthrOnNPHcKAxaz6Z0LhMT Tqw6lNwHnetSlhspvtwsYVsAvOduXWfqxEiHR8oQyHu9N5UUm3ogdccg1n//qWDKAmel PqdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9XX6vKpdObgLKPYfd2Lr+kntojCtJaW0ZviMtS1zFKE=; b=TTF9Zv4+TCVUCEwW40Ppjv8UvlqYrwRwm8+V8T4pd4zbWQ2/oOdRxvtAykAr15eFEq SIGMJfugYyd8BFxYSgUh5Fd0qB+K+J7k8ww57jgjZS45LXpBpiYOETNCdFNIdU9VNyjD lriAd6kXu2KJ5c8ZE5OWoXWOXIi4T73rTlu0mosq+FHB4DC1d0Xe32f5CwUmZQb8IDqR +ZsS89gMZHfJx+OzYo+HYEsZ6Pgr/KwgF92oIOiTtDZTXrvrbPnOW6kGXXRrgTY0idyZ Gs/GFuCwl43h5gcgsjuCmll3dCDHOmAfZiuCJlF2xGq54/2/o5CsNOYkwHgGOOEJFjPY iJmA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h14-20020a170906530e00b0087fb5c5085fsi17420567ejo.18.2023.02.14.01.06.27; Tue, 14 Feb 2023 01:06:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232082AbjBNJDi (ORCPT + 99 others); Tue, 14 Feb 2023 04:03:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231443AbjBNJD3 (ORCPT ); Tue, 14 Feb 2023 04:03:29 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AB0BD50F for ; Tue, 14 Feb 2023 01:03:26 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRrDa-0004U8-JR; Tue, 14 Feb 2023 10:03:18 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pRrDY-004qDZ-3Y; Tue, 14 Feb 2023 10:03:17 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pRrDX-008V6E-Ik; Tue, 14 Feb 2023 10:03:15 +0100 From: Oleksij Rempel To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Shenwei Wang , Clark Wang , NXP Linux Team Subject: [PATCH net-next v1 5/7] net: phy: at803x: add PHY_SMART_EEE flag to AR8035 Date: Tue, 14 Feb 2023 10:03:12 +0100 Message-Id: <20230214090314.2026067-6-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230214090314.2026067-1-o.rempel@pengutronix.de> References: <20230214090314.2026067-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757796746345001319?= X-GMAIL-MSGID: =?utf-8?q?1757796746345001319?= AR8035 is one of the PHYs with SmartEEE functionality. This flag will be used by one of next patches on the i.MX FEC driver. Signed-off-by: Oleksij Rempel --- drivers/net/phy/at803x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index 5ab43eb63581..94dbec0a992c 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -2147,7 +2147,7 @@ static struct phy_driver at803x_driver[] = { /* Qualcomm Atheros AR8035 */ PHY_ID_MATCH_EXACT(ATH8035_PHY_ID), .name = "Qualcomm Atheros AR8035", - .flags = PHY_POLL_CABLE_TEST, + .flags = PHY_POLL_CABLE_TEST | PHY_SMART_EEE, .probe = at803x_probe, .remove = at803x_remove, .config_aneg = at803x_config_aneg, From patchwork Tue Feb 14 09:03:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 56779 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2854307wrn; Tue, 14 Feb 2023 01:06:58 -0800 (PST) X-Google-Smtp-Source: AK7set9p5f39y6f/LS7PlRgimGgfESXv/fQQZ6L0aeUjdzNU0WakIfrwHFlj04F0Bqa4i1KMkEwm X-Received: by 2002:a17:906:3559:b0:8ad:d366:54ca with SMTP id s25-20020a170906355900b008add36654camr1139331eja.23.1676365618464; Tue, 14 Feb 2023 01:06:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676365618; cv=none; d=google.com; s=arc-20160816; b=xWm2PHo68vveUS/+Y1UdPoWqtj9TAj0Y2PTbIsCVLMKJiK0vp998iMHicjalb4+u85 oMP6mbVY4Ncm39IEJ5joFUPDKwVSfsd27pcZk5e90aoiciQMmWkvy9uKWN5gBXBxhEWZ 1dBtkUeLshWqgjDmUnGKt4NniJBmTSkANZUvSMAU7bD01M1IFNc/fNI3B3HKzgLeHAqJ coGCNe9OiFNgZTSut74Tk5fy35ieXnlbCPoMNUXGticCsvL13X00ixLQMQNCix7Z8hrl aQkKywyLo5nLu6HA16vJz5JvOvwe6DeGvICZiAhUNsRNnmS814R4EQCIBDe754cBimGC LPgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=NF+EhQTtTaUODs5Ma4rJ/UwEqMnwuAMFPwOig+XtQsQ=; b=0E07R/81bmC55lg1O9OgerdAYDd7M0S8DXprfdmvVLOLizVJ4HSvLBBOFFTYZ7qOmj 0p9MJHZg9ORCyrrbCzWxlZrwQP69bEto/MMQj9WHCfWq0hUKPkV8uxah8SGikkDc1P/J IOtQHJPf1ucaFDLDA7YexcI0F6EnF3jcwFylkDzq9xl2OPqe9EcXm9laWsCgHc/jvq4H iGkM8f+msSsRBNJNFaXiHN5CSiQrWhjZpGo3MXsGifYucWK3K6QA7brTyf/Dp3jT1OBy GzNYw4oGM7fYloIGfT3coYmZkbDNE9YTNdO/sR024bySejamkYBJB1+tQGoipju+eEgN +Q/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s26-20020a170906221a00b008a9eeb53ecbsi23359846ejs.122.2023.02.14.01.06.34; Tue, 14 Feb 2023 01:06:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229547AbjBNJDn (ORCPT + 99 others); Tue, 14 Feb 2023 04:03:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231488AbjBNJD3 (ORCPT ); Tue, 14 Feb 2023 04:03:29 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8695DBD1 for ; Tue, 14 Feb 2023 01:03:26 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRrDa-0004UD-JO; Tue, 14 Feb 2023 10:03:18 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pRrDY-004qDh-CX; Tue, 14 Feb 2023 10:03:17 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pRrDX-008V6N-JJ; Tue, 14 Feb 2023 10:03:15 +0100 From: Oleksij Rempel To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Shenwei Wang , Clark Wang , NXP Linux Team Subject: [PATCH net-next v1 6/7] net: phy: add phy_has_smarteee() helper Date: Tue, 14 Feb 2023 10:03:13 +0100 Message-Id: <20230214090314.2026067-7-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230214090314.2026067-1-o.rempel@pengutronix.de> References: <20230214090314.2026067-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757796754679185125?= X-GMAIL-MSGID: =?utf-8?q?1757796754679185125?= Add helper to identify PHYs with SmartEEE support. Signed-off-by: Oleksij Rempel --- include/linux/phy.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/linux/phy.h b/include/linux/phy.h index e6b12653c655..2e726450d3c3 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1408,6 +1408,15 @@ static inline bool phy_polling_mode(struct phy_device *phydev) return phydev->irq == PHY_POLL; } +/** + * phy_has_smarteee - Tests whether a PHY supports SmartEEE. + * @phydev: the phy_device struct + */ +static inline bool phy_has_smarteee(struct phy_device *phydev) +{ + return phydev && phydev->drv && !!(phydev->drv->flags & PHY_SMART_EEE); +} + /** * phy_has_hwtstamp - Tests whether a PHY time stamp configuration. * @phydev: the phy_device struct From patchwork Tue Feb 14 09:03:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 56782 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2854360wrn; Tue, 14 Feb 2023 01:07:05 -0800 (PST) X-Google-Smtp-Source: AK7set/yZ0E005F/mwU5hSwfkMm2jNTNlW6wnAtNDHebdVya1o+DKovlr+3XZmVs/vm60lGk4lj1 X-Received: by 2002:a17:906:d9dd:b0:878:72f7:bd99 with SMTP id qk29-20020a170906d9dd00b0087872f7bd99mr1958795ejb.6.1676365625695; Tue, 14 Feb 2023 01:07:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676365625; cv=none; d=google.com; s=arc-20160816; b=i/YiewQu9MLjCoK2IPMHXvYrgyAYJ0HEMvpj4yG32vWfKc2c39iyHEeEMU6xrmaiXM qUGyF+c4tVHFQ8bRejxOqMj5XXTjuk09+JCSoIkh2s/mkbFJ4+shVNaov3ycel2tugh2 lUGdmJcek/mrzoGygVOWoyXCjFDWnCTdwhhen5plrcKzztui1oenStc89WxCWJqTuYKA /085kBZx0BjXt/CfZNZY8Do57QGiQk7ZnCncD9bXkwNiuv2DMgRnFpsR1BlANH59gnXu Z8T6Z745HQ6otIkbeXIldWQ40F8sE+0jaOJ3ax+B0RXjEJN62qnvLKqvvxLUnF4GQBnk PWgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=rbmh5yUNjpZV6g1TXnEwaMyJAXwP5cdXeNM56svkGzc=; b=Ca3O+sSVw+9ivANO6kCRvbl3qJmuSy4f7ZL3Mm2Pc6yY5JzMRkMMlJL6siNiqmw4vI ubT0sG7B45dYLPe/IkKPTxmJpoxyYcL9gOynJeeE7H2s2RXCKUtkVlRhTVu5jlRLDHl8 90d7Cqq5fUbCmgKaz+k+lebEDq7xN9zaArgg0IT/E8CSJAfjAPd/n8PpSW/iCmJPRWuv BaRhi+/UyAL7IEQnnC07qiqrS+m1LIWY992zTG2sPcmKOXtbphlplLynQ5orQjOAKm7b +fVEp0+8FBG9eyIRLMkxQpJuyBNEwp3rQ5P9+FBKxcPIk5SLWPO5rDF86I/Tmqqz5mhl 6MPA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 22-20020a170906025600b008777ae12842si10110936ejl.53.2023.02.14.01.06.42; Tue, 14 Feb 2023 01:07:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231899AbjBNJEB (ORCPT + 99 others); Tue, 14 Feb 2023 04:04:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231499AbjBNJD3 (ORCPT ); Tue, 14 Feb 2023 04:03:29 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4576BD505 for ; Tue, 14 Feb 2023 01:03:26 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRrDa-0004UG-JN; Tue, 14 Feb 2023 10:03:18 +0100 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pRrDY-004qDm-G1; Tue, 14 Feb 2023 10:03:17 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pRrDX-008V6W-Js; Tue, 14 Feb 2023 10:03:15 +0100 From: Oleksij Rempel To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wei Fang , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Shenwei Wang , Clark Wang , NXP Linux Team Subject: [PATCH net-next v1 7/7] net: fec: add support for PHYs with SmartEEE support Date: Tue, 14 Feb 2023 10:03:14 +0100 Message-Id: <20230214090314.2026067-8-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230214090314.2026067-1-o.rempel@pengutronix.de> References: <20230214090314.2026067-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757796762002274078?= X-GMAIL-MSGID: =?utf-8?q?1757796762002274078?= Ethernet controller in i.MX6*/i.MX7* series do not provide EEE support. But this chips are used sometimes in combinations with SmartEEE capable PHYs. So, instead of aborting get/set_eee access on MACs without EEE support, ask PHY if it is able to do the EEE job by using SmartEEE. Signed-off-by: Oleksij Rempel --- drivers/net/ethernet/freescale/fec_main.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index c73e25f8995e..00f3703db69d 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -3102,8 +3102,15 @@ fec_enet_get_eee(struct net_device *ndev, struct ethtool_eee *edata) struct fec_enet_private *fep = netdev_priv(ndev); struct ethtool_eee *p = &fep->eee; - if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) - return -EOPNOTSUPP; + if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) { + if (!netif_running(ndev)) + return -ENETDOWN; + + if (!phy_has_smarteee(ndev->phydev)) + return -EOPNOTSUPP; + + return phy_ethtool_get_eee(ndev->phydev, edata); + } if (!netif_running(ndev)) return -ENETDOWN; @@ -3123,8 +3130,15 @@ fec_enet_set_eee(struct net_device *ndev, struct ethtool_eee *edata) struct ethtool_eee *p = &fep->eee; int ret = 0; - if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) - return -EOPNOTSUPP; + if (!(fep->quirks & FEC_QUIRK_HAS_EEE)) { + if (!netif_running(ndev)) + return -ENETDOWN; + + if (!phy_has_smarteee(ndev->phydev)) + return -EOPNOTSUPP; + + return phy_ethtool_set_eee(ndev->phydev, edata); + } if (!netif_running(ndev)) return -ENETDOWN;