From patchwork Thu Jan 19 13:18:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 45761 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp326408wrn; Thu, 19 Jan 2023 05:29:25 -0800 (PST) X-Google-Smtp-Source: AMrXdXsrgyyXnQQXIyzFdg/gQDwZggZFPBsDVx8DO8cXAU4aYrE4X4WQe2E6MgyRzomkP/LTkrEN X-Received: by 2002:a05:6402:3496:b0:48e:9c36:6c39 with SMTP id v22-20020a056402349600b0048e9c366c39mr15292179edc.0.1674134965688; Thu, 19 Jan 2023 05:29:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674134965; cv=none; d=google.com; s=arc-20160816; b=SZo2piAlSQ4ClGJKTkqTxSCpTHbYuh0eRWrUukO31+7SUMuJ9UiIGE9bEch8DdxTxH cKuYC7lnpBNgk9yCTNa4dSFfcofYUhqfuoO/qzdTVByG3FnKbzloWiVI5b/LOtIMRssS oKOq5CBiE+E+Egv6QI7/0Nzk52MepElH2wUTnQwRr+P4hWOLHLY5TCV2xSeT+lUdBwBl 39SCMHEj5r5B3CCeylgTPpT67PI4F2xlCRGAF+zlNh9Bc8dd8N90sjgIS1lDlAMeUiUi dQW0YWeVsoUqdwYcWyANw17LrpXIcuvZwAO/jKbrT8/SIsGTZ1wknQ7V99JXKHn2PC8R 8s3w== 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=fzhnUMWC2TSQqTkaSn37DY6TrKyf42Dx9cSUD2F9he4=; b=FJ6CqmjFQLVEN9zFTRd9Ffl9T7vcVQ3tfnvukbGfVPwJcavXsR0bSM0Hqy/WKNUOiJ MgGLl/sWMxXSpBmKDKDCliZ/fQTEyD7dXuE5abCFAnr0IH4wgOcRZ9GqEcn+Vn67w/ol tIUwqbCB3rnNd2uKuiB2f0wiBqy4ke/LogNqniYXXnHak9nhJNTbmnO5pc0FJQkZbj9J ZEW1qUOUaSyvLXtG8HjDfRmXC0tsWLEGX0aZwiluVObn+qa1Nx2BKlTy3oGavOxLtnUD TqAiCBPl+Cl57pWfikRZL01bhoAsMyhf8mP6kpcnsnWyO4BUGMgoxvYgI1FPZC21GAOz hTMw== 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 xb13-20020a170907070d00b007a2d966eeccsi17264063ejb.686.2023.01.19.05.29.01; Thu, 19 Jan 2023 05:29:25 -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 S231263AbjASNTM (ORCPT + 99 others); Thu, 19 Jan 2023 08:19:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230497AbjASNSg (ORCPT ); Thu, 19 Jan 2023 08:18:36 -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 7C68C6EAD for ; Thu, 19 Jan 2023 05:18:34 -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 1pIUoC-0005u6-SO; Thu, 19 Jan 2023 14:18:24 +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 1pIUoC-0079jQ-7z; Thu, 19 Jan 2023 14:18:24 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIUoB-00G50u-9V; Thu, 19 Jan 2023 14:18:23 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v1 1/4] net: phy: add driver specific get/set_eee support Date: Thu, 19 Jan 2023 14:18:18 +0100 Message-Id: <20230119131821.3832456-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230119131821.3832456-1-o.rempel@pengutronix.de> References: <20230119131821.3832456-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?1755457745430896460?= X-GMAIL-MSGID: =?utf-8?q?1755457745430896460?= 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 3378ca4f49b6..57e125a99414 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1583,6 +1583,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); + /* Get Supported EEE */ val = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); if (val < 0) @@ -1622,6 +1625,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); + /* Get Supported EEE */ cap = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE); if (cap < 0) diff --git a/include/linux/phy.h b/include/linux/phy.h index b3cf1e08e880..39ee2628643c 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1055,6 +1055,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); + /** @get_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 Thu Jan 19 13:18:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 45757 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325113wrn; Thu, 19 Jan 2023 05:26:41 -0800 (PST) X-Google-Smtp-Source: AMrXdXuXjmdM/JJUhnk6H8ma0ZwrBOYE2+fHzroeZ9C2hk9WcfEeuUiYYTbvFC+mjmd3yKzyTLN7 X-Received: by 2002:a17:902:9343:b0:194:4a2b:d7e4 with SMTP id g3-20020a170902934300b001944a2bd7e4mr11934179plp.17.1674134801009; Thu, 19 Jan 2023 05:26:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674134800; cv=none; d=google.com; s=arc-20160816; b=gWwB+XgrVM1xnKg7nEU4lhajQp2Xl+f5tISiUxFGpVCRMKbkcOLsfVxhJjUspyBte6 htzfluIrcLHtDb/wAwHE8y7WZmhXrfYYAhXvmtyXCwpr09fmSy99Y2y/lJUUENO9SpoL t8+fJ3W1e3H2Yi1cav6539r2Ayh3TlddzNcMi18ZqWrvZV83p4tKpN+7WPcDiFe/Cykb bu/wxiL+YdqSdDT1grF752JpimNL1LmZC1jiqWunpHvTtsxPt3Qe9uCspeZFhWP1kM5j 7uY2yYXEOHePnYJiYI6NOgeUWVXtRPkijeIN0EuHGLQpjPCIaJ6avchpHDiXv4YtMVFb rqfg== 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=ez37/2VDa/g90mVG7Q89bWQvddqk4OcK4Z7siwZT8Uw=; b=aWVR21gv+SJayR71PP2f6qe5MKQdKISDiKx2th8M1FGvVSbV00QbWLXMrQbQkMlk6s bjopdTPDlVwFzg1ZZm9/naFOJOjBxp1s6jOtiSg3A4y5gP7S6SBTcydPLtgn+/j6/zKh RSou1voZyB1CqTIqFKxYXQ8vxPZ8bXBwgQYauTjlIDH8+sQy9v0zKCMHWPqKvRPL1yK6 Kkt4tac/kV97t6npQHEWQQ6vgrc5bP6m3qdzBuYiHlM4waMNXHTuXVRIraeE6yMHRKKI T+XPxD6HEIbny7QIWb6veBbENjg9yS5eyUM+vWtIF7g32PgHh4VMiislc58b6XGc3etR sSug== 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 s9-20020a17090302c900b001928d16bf5csi37649961plk.21.2023.01.19.05.26.28; Thu, 19 Jan 2023 05:26:40 -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 S230122AbjASNS5 (ORCPT + 99 others); Thu, 19 Jan 2023 08:18:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230499AbjASNSg (ORCPT ); Thu, 19 Jan 2023 08:18:36 -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 2A1051BCE for ; Thu, 19 Jan 2023 05:18:35 -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 1pIUoD-0005uT-AK; Thu, 19 Jan 2023 14:18:25 +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 1pIUoC-0079jZ-N8; Thu, 19 Jan 2023 14:18:24 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIUoB-00G513-AS; Thu, 19 Jan 2023 14:18:23 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v1 2/4] net: phy: micrel: add EEE configuration support for KSZ9477 variants of PHYs Date: Thu, 19 Jan 2023 14:18:19 +0100 Message-Id: <20230119131821.3832456-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230119131821.3832456-1-o.rempel@pengutronix.de> References: <20230119131821.3832456-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?1755457573476068026?= X-GMAIL-MSGID: =?utf-8?q?1755457573476068026?= KSZ9477 variants of PHYs are not completely compatible with generic phy_ethtool_get/set_eee() handlers. For example MDIO_PCS_EEE_ABLE acts like a mirror of MDIO_AN_EEE_ADV register. If MDIO_AN_EEE_ADV set to 0, MDIO_PCS_EEE_ABLE will be 0 too. It means, if we do "ethtool --set-eee lan2 eee off", we won't be able to enable it again. With this patch, instead of reading MDIO_PCS_EEE_ABLE register, the driver will provide proper abilities. Signed-off-by: Oleksij Rempel --- drivers/net/phy/micrel.c | 92 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index d5b80c31ab91..099f1e83c08c 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1370,6 +1370,96 @@ static int ksz9131_config_aneg(struct phy_device *phydev) return genphy_config_aneg(phydev); } +static int ksz9477_get_eee_caps(struct phy_device *phydev, + struct ethtool_eee *data) +{ + int val; + + /* At least on KSZ8563 (which has same PHY_ID as KSZ9477), the + * MDIO_PCS_EEE_ABLE register is a mirror of MDIO_AN_EEE_ADV register. + * So, we need to provide this information by driver. + */ + data->supported = SUPPORTED_100baseT_Full; + + /* KSZ8563 is able to advertise not supported MDIO_EEE_1000T. + * We need to test if the PHY is 1Gbit capable. + */ + val = phy_read(phydev, MII_BMSR); + if (val < 0) + return val; + + if (val & BMSR_ERCAP) + data->supported |= SUPPORTED_1000baseT_Full; + + return 0; +} + +static int ksz9477_get_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + int val; + + val = ksz9477_get_eee_caps(phydev, data); + if (val) + return val; + + /* Get advertisement EEE */ + val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV); + if (val < 0) + return val; + data->advertised = mmd_eee_adv_to_ethtool_adv_t(val); + data->eee_enabled = !!data->advertised; + + /* Get LP advertisement EEE */ + val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE); + if (val < 0) + return val; + data->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(val); + + data->eee_active = !!(data->advertised & data->lp_advertised); + + return 0; +} + +static int ksz9477_set_eee(struct phy_device *phydev, struct ethtool_eee *data) +{ + int old_adv, adv = 0, ret; + + ret = ksz9477_get_eee_caps(phydev, data); + if (ret) + return ret; + + old_adv = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV); + if (old_adv < 0) + return old_adv; + + if (data->eee_enabled) { + if (!data->advertised) + adv = ethtool_adv_to_mmd_eee_adv_t(data->supported); + else + adv = ethtool_adv_to_mmd_eee_adv_t(data->advertised & + data->supported); + /* Mask prohibited EEE modes */ + adv &= ~phydev->eee_broken_modes; + } + + if (old_adv != adv) { + ret = phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, adv); + if (ret < 0) + return ret; + + /* Restart autonegotiation so the new modes get sent to the + * link partner. + */ + if (phydev->autoneg == AUTONEG_ENABLE) { + ret = phy_restart_aneg(phydev); + if (ret < 0) + return ret; + } + } + + return 0; +} + #define KSZ8873MLL_GLOBAL_CONTROL_4 0x06 #define KSZ8873MLL_GLOBAL_CONTROL_4_DUPLEX BIT(6) #define KSZ8873MLL_GLOBAL_CONTROL_4_SPEED BIT(4) @@ -3422,6 +3512,8 @@ static struct phy_driver ksphy_driver[] = { .handle_interrupt = kszphy_handle_interrupt, .suspend = genphy_suspend, .resume = genphy_resume, + .get_eee = ksz9477_get_eee, + .set_eee = ksz9477_set_eee, } }; module_phy_driver(ksphy_driver); From patchwork Thu Jan 19 13:18:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 45760 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325841wrn; Thu, 19 Jan 2023 05:28:21 -0800 (PST) X-Google-Smtp-Source: AMrXdXvVVj/1SYJo1osbrXcOvsL4nODr86Epex8NH0JifA3SGixLhVYzA53t0GZmRvaUz+CQ68NY X-Received: by 2002:a05:6a20:6997:b0:b8:a5a1:ed7c with SMTP id t23-20020a056a20699700b000b8a5a1ed7cmr15416207pzk.44.1674134900686; Thu, 19 Jan 2023 05:28:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674134900; cv=none; d=google.com; s=arc-20160816; b=Fsg1MuYuYLfac4E3N1c9hQZ0z7q71ewDI6akT3rlrA3PZRkyVoDHi8LBlSEbT9Vb1H 85jHTiyYxEIoHQnKV50oQ2Za4SpLu+QC2hptcFAqHfeyW4yH8SzHeV2RmoGJcZBRSnRo h6X3Y22vV1Eeia3JYN3S/D4IqoxpIX9o2oZY62HeLvdVSOyIGQdBWFHpz39AG0YjID4+ +G8g0IgPwMyV2MDXP/3JdEarmGZF3idPg3dh3KyvRYGiPgspr6rrifwDdEpbfZHsX8vD NXVIVcaFCVR6NmMDCH9hD7/cMn724J6sKspurxCrwt9Kr+Ehe385pBhyuxPpiWJDQ83L exkA== 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=du3xkK5btrmcqmg/zH7urTWUAhx9Tn3cHOhl9l2MW/0=; b=lN3NBESNvzzsRqc2izkXwM86I15tjmSBkbQ08MXxqk7KNlUAhPWUlQ7rdh+tOr+cHI ArJXZF6VMw+goyIRfjyqfQzMxA6Q16gdMT66QUTkNqNiXNGyo3xepMnilH1icW5Lyipk HyuRwY0RsN5arsnH7REfFrYKv+nmeicap/w0PJ6ALvDoqNPrFNiXpfiCarPPehyk7TyZ KCAi0oZyxjR3GtmXj8l7YK46snZqTkIo21f3n82Si3Cvii7xFz0EIMUshUXNpfgfRuWX sEQMIZQ9SI30aB9asbf5Gl6VuS44Nw/s3GqEQJAoSW9OMw+n+xCXrH2v9OxhBi8S0CMu 1BdA== 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 s28-20020a63525c000000b0047895cb2289si38092024pgl.644.2023.01.19.05.28.08; Thu, 19 Jan 2023 05:28:20 -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 S231290AbjASNTT (ORCPT + 99 others); Thu, 19 Jan 2023 08:19:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230314AbjASNSf (ORCPT ); Thu, 19 Jan 2023 08:18:35 -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 6A8C846A2 for ; Thu, 19 Jan 2023 05:18:34 -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 1pIUoC-0005u5-Rn; Thu, 19 Jan 2023 14:18:24 +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 1pIUoC-0079jN-5o; Thu, 19 Jan 2023 14:18:24 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIUoB-00G51C-B9; Thu, 19 Jan 2023 14:18:23 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v1 3/4] net: phy: micrel: disable 1000Mbit EEE support if 1000Mbit is not supported Date: Thu, 19 Jan 2023 14:18:20 +0100 Message-Id: <20230119131821.3832456-4-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230119131821.3832456-1-o.rempel@pengutronix.de> References: <20230119131821.3832456-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?1755457677248285255?= X-GMAIL-MSGID: =?utf-8?q?1755457677248285255?= KSZ8563 is announcing by default 1000Mbit EEE support, but at same time do not supporting 1000Mbit speed. This patch will disable 1000Mbit EEE advertisement if the PHY is not 1000Mbit capable. Signed-off-by: Oleksij Rempel --- drivers/net/phy/micrel.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index 099f1e83c08c..11bef217b45a 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1460,6 +1460,27 @@ static int ksz9477_set_eee(struct phy_device *phydev, struct ethtool_eee *data) return 0; } +static int ksz9477_config_init(struct phy_device *phydev) +{ + int ret; + + /* KSZ8563 is able to advertise not supported MDIO_EEE_1000T. + * We need to test if the PHY is 1Gbit capable. + */ + ret = phy_read(phydev, MII_BMSR); + if (ret < 0) + return ret; + + if (!(ret & BMSR_ERCAP)) { + ret = phy_clear_bits_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, + MDIO_EEE_1000T); + if (ret) + return ret; + } + + return kszphy_config_init(phydev); +} + #define KSZ8873MLL_GLOBAL_CONTROL_4 0x06 #define KSZ8873MLL_GLOBAL_CONTROL_4_DUPLEX BIT(6) #define KSZ8873MLL_GLOBAL_CONTROL_4_SPEED BIT(4) @@ -3507,7 +3528,7 @@ static struct phy_driver ksphy_driver[] = { .phy_id_mask = MICREL_PHY_ID_MASK, .name = "Microchip KSZ9477", /* PHY_GBIT_FEATURES */ - .config_init = kszphy_config_init, + .config_init = ksz9477_config_init, .config_intr = kszphy_config_intr, .handle_interrupt = kszphy_handle_interrupt, .suspend = genphy_suspend, From patchwork Thu Jan 19 13:18:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 45758 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp325269wrn; Thu, 19 Jan 2023 05:27:04 -0800 (PST) X-Google-Smtp-Source: AMrXdXv2A38jJKsf3+M9SvqVgHMk8qWvXTcDBWGz22B9iTAyUjH12Gv8lzZk7sGpbOUPCan/3GKm X-Received: by 2002:a05:6a21:6d9e:b0:b3:bf50:9168 with SMTP id wl30-20020a056a216d9e00b000b3bf509168mr14577776pzb.38.1674134824298; Thu, 19 Jan 2023 05:27:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674134824; cv=none; d=google.com; s=arc-20160816; b=oKZ49M3xMuJ2EfcDznca6o4PDWyF5TY88PEbvQM+ISQRLLj0QC/Irf6ZhvJ9zcnjYS Z6C8qhM8GApxZQ02cGbI3GgYx4NstzxHTcwpErKT1n43SU3qfv9rNsQ0KUImLmcC++Fl gKqrU/nLWltG6arrP/9vuiFeq99GzOt+crGZyRgfIaI8KYgy0Punajb6fd8Zapi/2S7f 73AYBlBVW0KIIAGnTyTUx/jk3yrHk4X+Bh1KlH7ujKTAmHmIZ2TCNjf8E03cveTCB6LZ IhLHbXTQXr5dewJLnBh+TKjig3PpfAx6YXk5tqjttSKknpxb4LjR7NfsECErSoBiWQp5 CpBQ== 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=sRewExaJYO5J9rPtU6PAS30GDIB1ngdlxtahlS4Y4rY=; b=XbSjAE5H2KIJRwhALPxkh8coe7vxmKRvneM2u5NchBNxDisHoiphuF3STxI25v6XDL 3ka/albjpXLFXovlnmT96Qfp4E/yL0AnY6WP8ENMDjNxK0QoohDkKrssGT05J5NS/OXp 4ovl1q4EY4n6zdyGBfYvelwBJ4f1HbZoo7eUystYxBU8C9tLs+hkU1T9jeVT9N2KQPwV IUuxe7+hY+EBnTDe5XB4kk7f86HXgWHrdbLZSQEozT8ssMuW5L51uCwo0CxAdnzirNgx bGHne6Stz+mPqx3d9ikZtbBUtUT5Kwa0M2DuOnDW5lpTk2zAcy7AAH6AmHtMfYQTWhG+ CvTQ== 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 y3-20020aa79423000000b0058bb748aec7si20017752pfo.316.2023.01.19.05.26.52; Thu, 19 Jan 2023 05:27: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 S231168AbjASNTB (ORCPT + 99 others); Thu, 19 Jan 2023 08:19:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230266AbjASNSf (ORCPT ); Thu, 19 Jan 2023 08:18:35 -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 558BC3ABD for ; Thu, 19 Jan 2023 05:18:34 -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 1pIUoD-0005uJ-4J; Thu, 19 Jan 2023 14:18:25 +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 1pIUoC-0079jT-G6; Thu, 19 Jan 2023 14:18:24 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pIUoB-00G51L-Bm; Thu, 19 Jan 2023 14:18:23 +0100 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Arun.Ramadoss@microchip.com Subject: [PATCH net-next v1 4/4] net: dsa: microchip: enable EEE support Date: Thu, 19 Jan 2023 14:18:21 +0100 Message-Id: <20230119131821.3832456-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230119131821.3832456-1-o.rempel@pengutronix.de> References: <20230119131821.3832456-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?1755457597471564321?= X-GMAIL-MSGID: =?utf-8?q?1755457597471564321?= Some of KSZ9477 family switches provides EEE support. To enable it, we just need to register set_mac_eee/set_mac_eee handlers and validate supported chip version and port. Signed-off-by: Oleksij Rempel --- drivers/net/dsa/microchip/ksz_common.c | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 5e1e5bd555d2..2f1f71b3be86 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -2645,6 +2645,39 @@ static int ksz_max_mtu(struct dsa_switch *ds, int port) return -EOPNOTSUPP; } +static int ksz_validate_eee(struct dsa_switch *ds, int port) +{ + struct ksz_device *dev = ds->priv; + + if (!dev->info->internal_phy[port]) + return -EOPNOTSUPP; + + switch (dev->chip_id) { + case KSZ8563_CHIP_ID: + case KSZ9477_CHIP_ID: + case KSZ9563_CHIP_ID: + case KSZ9567_CHIP_ID: + case KSZ9893_CHIP_ID: + case KSZ9896_CHIP_ID: + case KSZ9897_CHIP_ID: + return 0; + } + + return -EOPNOTSUPP; +} + +static int ksz_get_mac_eee(struct dsa_switch *ds, int port, + struct ethtool_eee *e) +{ + return ksz_validate_eee(ds, port); +} + +static int ksz_set_mac_eee(struct dsa_switch *ds, int port, + struct ethtool_eee *e) +{ + return ksz_validate_eee(ds, port); +} + static void ksz_set_xmii(struct ksz_device *dev, int port, phy_interface_t interface) { @@ -3006,6 +3039,8 @@ static const struct dsa_switch_ops ksz_switch_ops = { .port_hwtstamp_set = ksz_hwtstamp_set, .port_txtstamp = ksz_port_txtstamp, .port_rxtstamp = ksz_port_rxtstamp, + .get_mac_eee = ksz_get_mac_eee, + .set_mac_eee = ksz_set_mac_eee, }; struct ksz_device *ksz_switch_alloc(struct device *base, void *priv)