Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp2707354iob; Fri, 6 May 2022 08:43:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxHuaLGNu/6YbAuSZXBfefItYexSPb+3J76z9uf3IjCEJr3JX8px/yU7T1esxPrja2aas5L X-Received: by 2002:a62:3848:0:b0:50d:376e:57ed with SMTP id f69-20020a623848000000b0050d376e57edmr4211189pfa.71.1651851823563; Fri, 06 May 2022 08:43:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651851823; cv=none; d=google.com; s=arc-20160816; b=Ii2n0Vk97GE4svfGQ9MBCA7vCV6ZwNGFjSNdSEV8WtzB/BWqRre1sOR0rMKsZdW8vM m2R0oKcYE6EEiO1ek3cHrDrcBWG96yXGnLVCzxhkBzKNl7l+vzNeT6tRizMkS673b7w2 Ze+xXD1IU2aM5f/hQCK5ecs3So1GkW5l3Eyq0VdnY84RLXaWz1QmtcMkcNSxIN3Ym3C8 JvTkaAqocEK/0GkHW9qi5uM+E8+h94OdQXnl9UNLBicyVAMZrOY0CJ0t7x2z6pBnfnVg 5w1E6hfgAZE+mnvfVFXbbsrhwWSMz5P9iUCALKi+Kx1tnK9Y2b84HFKsRqxhG4JbH2eR j+xg== 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=LTBkhqSUqC63siW8znlZ5WpvHDpC9R4JvSg1H45uAMQ=; b=REdlPPHoGrRLslwDEw2bqjVAy+Qc3sk0Au0UbDZhP490FXPqinI59CHSjt+KhE6/Wb E2c75NsbKabDwFjOB6Wr38Xim+b0IHBBjMy3gLrWEVp1VQVstDZcQX0syCQxv6k2kt4U xgbcWPSnAyNqfdbvJCnLBPJA22+IwdsaYH0J12+cMIaK5qD1ZUVJtnRHKOeCQuDX8neH fRyBItplXPnpMwgIo1Wd8NVJnxeafbT0783ZXAEdf2WbHdUpdRMl02Wl5BpZZK1tSeUt dCZwUK7swEiSVeYYmXVAfT6t0vUe2WI+N89GG217bN0Zh9dew+ov4sCTqPK6e6f0oH7c moog== 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y17-20020a17090322d100b00158205c7f9bsi2849957plg.46.2022.05.06.08.43.25; Fri, 06 May 2022 08:43:43 -0700 (PDT) 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 S1388983AbiEFE21 (ORCPT + 99 others); Fri, 6 May 2022 00:28:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1388948AbiEFE1w (ORCPT ); Fri, 6 May 2022 00:27:52 -0400 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 6C9D5606DF for ; Thu, 5 May 2022 21:24:10 -0700 (PDT) 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 1nmpVY-0001Xu-Pn; Fri, 06 May 2022 06:24:00 +0200 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 1nmpVY-000ddd-Uy; Fri, 06 May 2022 06:23:59 +0200 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1nmpVV-003s96-UE; Fri, 06 May 2022 06:23:57 +0200 From: Oleksij Rempel To: Andrew Lunn , Heiner Kallweit , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH net-next v4 4/7] net: phy: introduce genphy_c45_pma_baset1_read_master_slave() Date: Fri, 6 May 2022 06:23:54 +0200 Message-Id: <20220506042357.923026-5-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220506042357.923026-1-o.rempel@pengutronix.de> References: <20220506042357.923026-1-o.rempel@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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,T_SCC_BODY_TEXT_LINE 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 Move baset1 specific part of genphy_c45_read_pma() code to separate function to make it reusable by PHY drivers. Signed-off-by: Oleksij Rempel Reviewed-by: Andrew Lunn --- drivers/net/phy/phy-c45.c | 31 +++++++++++++++++++++++++------ include/linux/phy.h | 1 + 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c index b1f7c63f66cd..d440b76a18b4 100644 --- a/drivers/net/phy/phy-c45.c +++ b/drivers/net/phy/phy-c45.c @@ -550,6 +550,30 @@ int genphy_c45_read_lpa(struct phy_device *phydev) } EXPORT_SYMBOL_GPL(genphy_c45_read_lpa); +/** + * genphy_c45_pma_baset1_read_master_slave - read forced master/slave + * configuration + * @phydev: target phy_device struct + */ +int genphy_c45_pma_baset1_read_master_slave(struct phy_device *phydev) +{ + int val; + + phydev->master_slave_state = MASTER_SLAVE_STATE_UNKNOWN; + + val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_PMD_BT1_CTRL); + if (val < 0) + return val; + + if (val & MDIO_PMA_PMD_BT1_CTRL_CFG_MST) + phydev->master_slave_state = MASTER_SLAVE_STATE_MASTER; + else + phydev->master_slave_state = MASTER_SLAVE_STATE_SLAVE; + + return 0; +} +EXPORT_SYMBOL_GPL(genphy_c45_pma_baset1_read_master_slave); + /** * genphy_c45_read_pma - read link speed etc from PMA * @phydev: target phy_device struct @@ -591,14 +615,9 @@ int genphy_c45_read_pma(struct phy_device *phydev) phydev->duplex = DUPLEX_FULL; if (genphy_c45_baset1_able(phydev)) { - val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_PMD_BT1_CTRL); + val = genphy_c45_pma_baset1_read_master_slave(phydev); if (val < 0) return val; - - if (MDIO_PMA_PMD_BT1_CTRL_CFG_MST) - phydev->master_slave_state = MASTER_SLAVE_STATE_MASTER; - else - phydev->master_slave_state = MASTER_SLAVE_STATE_SLAVE; } return 0; diff --git a/include/linux/phy.h b/include/linux/phy.h index d3f924d3b235..4713c95d65fb 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1619,6 +1619,7 @@ int genphy_c45_an_config_aneg(struct phy_device *phydev); int genphy_c45_an_disable_aneg(struct phy_device *phydev); int genphy_c45_read_mdix(struct phy_device *phydev); int genphy_c45_pma_read_abilities(struct phy_device *phydev); +int genphy_c45_pma_baset1_read_master_slave(struct phy_device *phydev); int genphy_c45_read_status(struct phy_device *phydev); int genphy_c45_config_aneg(struct phy_device *phydev); int genphy_c45_loopback(struct phy_device *phydev, bool enable); -- 2.30.2