From patchwork Thu Feb 22 10:31:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsOpbWllIERhdXRoZXJpYmVz?= X-Patchwork-Id: 13567024 X-Patchwork-Delegate: kuba@kernel.org Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B71A01E53A; Thu, 22 Feb 2024 10:31:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708597889; cv=none; b=jvlomQVbJzZwxpwMwP5/BKNSHWP/0PXFtkVmrg9AoLelEgU4mKkTNroU66iQSIPO07Dr9ZC9q/SgOqTnpFpS/ARFpNoKjT+pK+/u28UKYMLgtwdOZuaBn6yFAR6Y2eX/yz1eEWa6bIUGXQcTZKwuDIpXljyPK6f3XSdGyMHgGoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708597889; c=relaxed/simple; bh=Z8S1pm3sZXOEcha/HzGW8TfXPCgUETag5hRGfbJIfdM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=LaC+YB8r0bOz4BDi6oEnIRErUCh2i9/pbb4kMuDYpTmMrHXDhRCuOB7EQSK3thDZauvjg9AdZdyhEaU7XVpxlIcUhiMWsoXzmGDeHN9MJ7yMShJHihgXenb5RyLnmEMhtwdvkEGwzshvT0n0o+lXBHV4nJXiaKwOHE+QKqx/zVM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=Y4WfRmy9; arc=none smtp.client-ip=217.70.183.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="Y4WfRmy9" Received: by mail.gandi.net (Postfix) with ESMTPSA id 3C12BFF816; Thu, 22 Feb 2024 10:31:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1708597886; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TZ0cUDvYq4R1bU50dHJq2WkbKtaTugSYh0eL5IQfQUI=; b=Y4WfRmy9vBrtrQp2BWz0JcEKr4TgGLE8PZOZ9WcbX+h0FH+mND7t6Ab528pxfQx5M9zXfP PV+dqhWBuU6VzUo0E5NH4Dea3Itz47NNig+6jnL0a+FONsJmLh7JKjXrr9jZaSfZ/ouLgH MDLzfmOJzceQgG/hdXVVReh6pUuSrxK77hVeLtsJFN/2NGLJIMmeeV1oByhcupb3jGifQB ZW9MuEmJEBMF/HrbDBM85PN4vVSZWxigX2dLUTgrGkHUbOEea4+mPBYIUqdeZ5e9RGMNo6 sFCGh1YNNwOZUEwaytp/p/g2TOfgXb8R3hBxz5qIo+vPooqqgB/2Nts/HW24Kw== From: =?utf-8?b?SsOpcsOpbWllIERhdXRoZXJpYmVz?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , Heiner Kallweit , Russell King , Andrew Davis Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni , =?utf-8?q?Miqu=C3=A8l_Rayn?= =?utf-8?q?al?= , Yen-Mei Goh , Maxime Chevallier , =?utf-8?b?SsOpcsOpbWll?= =?utf-8?b?IERhdXRoZXJpYmVz?= Subject: [PATCH net-next 1/3] dt-bindings: net: dp83822: support configuring RMII master/slave mode Date: Thu, 22 Feb 2024 11:31:15 +0100 Message-Id: <20240222103117.526955-2-jeremie.dautheribes@bootlin.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240222103117.526955-1-jeremie.dautheribes@bootlin.com> References: <20240222103117.526955-1-jeremie.dautheribes@bootlin.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-GND-Sasl: jeremie.dautheribes@bootlin.com X-Patchwork-Delegate: kuba@kernel.org Add property ti,rmii-mode to support selecting the RMII operation mode between: - master mode (PHY operates from a 25MHz clock reference) - slave mode (PHY operates from a 50MHz clock reference) If not set, the operation mode is configured by hardware straps. Signed-off-by: Jérémie Dautheribes Acked-by: Krzysztof Kozlowski --- .../devicetree/bindings/net/ti,dp83822.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/devicetree/bindings/net/ti,dp83822.yaml b/Documentation/devicetree/bindings/net/ti,dp83822.yaml index 8f4350be689c..8f23254c0458 100644 --- a/Documentation/devicetree/bindings/net/ti,dp83822.yaml +++ b/Documentation/devicetree/bindings/net/ti,dp83822.yaml @@ -80,6 +80,22 @@ properties: 10625, 11250, 11875, 12500, 13125, 13750, 14375, 15000] default: 10000 + ti,rmii-mode: + description: | + If present, select the RMII operation mode. Two modes are + available: + - RMII master, where the PHY operates from a 25MHz clock reference, + provided by a crystal or a CMOS-level oscillator + - RMII slave, where the PHY operates from a 50MHz clock reference, + provided by a CMOS-level oscillator + The RMII operation mode can also be configured by its straps. + If the strap pin is not set correctly or not set at all, then this can be + used to configure it. + $ref: /schemas/types.yaml#/definitions/string + enum: + - master + - slave + required: - reg From patchwork Thu Feb 22 10:31:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsOpbWllIERhdXRoZXJpYmVz?= X-Patchwork-Id: 13567025 X-Patchwork-Delegate: kuba@kernel.org Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D2B592B9BF; Thu, 22 Feb 2024 10:31:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708597890; cv=none; b=KyLF2jsPxO1dit6QWOakN2Rw/nGSXloo2bUhHZNQKGmrpmCHidG/z6UGsDVtLIW3kkD0WcMzk1+s+H3LsfRV5B1VZ2bSY7AD2VfF1GeeErbKVAm1Kk38WIdXv//mDc6vEXDGNT4y5PmmmbCvadUoW/9P6Ze1i+OuRWxR+91hJNY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708597890; c=relaxed/simple; bh=nuuL7hB4TcvbbVbRfMlIGQCum1S/wpqfTGXfKwhC6NM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=ODeyZRUK2zewiZhBtu2yg0cvX/YhVhRkeZP5DZNf3OIm5UeeJkjwRsO1iXCvUxr1mvXsJsIbSS+TNOwy5jIOrFn49wjsBYb827XKkTDvHdQhbcg+xsFOSVyguyxRG3YGUfJBOT8q+CAKBKdgs26CjI1bkvWePGiGUpzEJAaPmCg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=EIckSPvn; arc=none smtp.client-ip=217.70.183.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="EIckSPvn" Received: by mail.gandi.net (Postfix) with ESMTPSA id 3EB47FF80C; Thu, 22 Feb 2024 10:31:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1708597887; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vMIMzbe/1Q31wGmkXkbGHU+gqkl0OYYUD/vdMXzfwlI=; b=EIckSPvnAF4apzAGi9zM1Xd1plUv4izqVFK4ay2waJmIsy7JiybyQEevYh+kNZgkv72wty wzG+1z+7WOdLXVQ5B/r1ouTZI7hJ9BYL2+5gE12NFB9uzpQj+XMA+4Op5PfdokhrKc8s/X PuHQ11N4IcKU86KeCnVIyAckE0cSf7nZngWC4ySUDFeVKx05E0bH46xkA4p2WWtmmaR3Ef nOmTOIxtz1hI4f26PVlGZPARiMbXEF7pHdDV0jifUC/h0Fzur+wLHF+QHsrwGn3/+ygRYK 3TcKhdF9PVALPSCi0nuPXZqsHUHOzR6rHrRpWeARNdPCrbfT+eAOb6MlG3xyJA== From: =?utf-8?b?SsOpcsOpbWllIERhdXRoZXJpYmVz?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , Heiner Kallweit , Russell King , Andrew Davis Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni , =?utf-8?q?Miqu=C3=A8l_Rayn?= =?utf-8?q?al?= , Yen-Mei Goh , Maxime Chevallier , =?utf-8?b?SsOpcsOpbWll?= =?utf-8?b?IERhdXRoZXJpYmVz?= Subject: [PATCH net-next 2/3] net: phy: dp83826: Add support for phy-mode configuration Date: Thu, 22 Feb 2024 11:31:16 +0100 Message-Id: <20240222103117.526955-3-jeremie.dautheribes@bootlin.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240222103117.526955-1-jeremie.dautheribes@bootlin.com> References: <20240222103117.526955-1-jeremie.dautheribes@bootlin.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-GND-Sasl: jeremie.dautheribes@bootlin.com X-Patchwork-Delegate: kuba@kernel.org The TI DP83826 PHY can operate in either MII mode or RMII mode. By default, it is configured by straps. It can also be configured by writing to the bit 5 of register 0x17 - RMII and Status Register (RCSR). When phydev->interface is rmii, rmii mode must be enabled, otherwise mii mode must be set. This prevents misconfiguration of hw straps. Signed-off-by: Jérémie Dautheribes Reviewed-by: Maxime Chevallier --- drivers/net/phy/dp83822.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c index 30f2616ab1c2..2d8275e59dcc 100644 --- a/drivers/net/phy/dp83822.c +++ b/drivers/net/phy/dp83822.c @@ -100,6 +100,7 @@ #define DP83822_WOL_CLR_INDICATION BIT(11) /* RCSR bits */ +#define DP83822_RMII_MODE_EN BIT(5) #define DP83822_RGMII_MODE_EN BIT(9) #define DP83822_RX_CLK_SHIFT BIT(12) #define DP83822_TX_CLK_SHIFT BIT(11) @@ -500,6 +501,16 @@ static int dp83826_config_init(struct phy_device *phydev) u16 val, mask; int ret; + if (phydev->interface == PHY_INTERFACE_MODE_RMII) + ret = phy_set_bits_mmd(phydev, DP83822_DEVADDR, MII_DP83822_RCSR, + DP83822_RMII_MODE_EN); + else + ret = phy_clear_bits_mmd(phydev, DP83822_DEVADDR, MII_DP83822_RCSR, + DP83822_RMII_MODE_EN); + + if (ret) + return ret; + if (dp83822->cfg_dac_minus != DP83826_CFG_DAC_MINUS_DEFAULT) { val = FIELD_PREP(DP83826_VOD_CFG1_MINUS_MDI_MASK, dp83822->cfg_dac_minus) | FIELD_PREP(DP83826_VOD_CFG1_MINUS_MDIX_MASK, From patchwork Thu Feb 22 10:31:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsOpbWllIERhdXRoZXJpYmVz?= X-Patchwork-Id: 13567026 X-Patchwork-Delegate: kuba@kernel.org Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4E803F9EF; Thu, 22 Feb 2024 10:31:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708597891; cv=none; b=olKKAmiex/ga8/KRODBj1uDVQ3FfKEEuwCFZedyP78TU7R4UHDL/izP7vovlzf8vuD0z5D1R31UEWSAUKq1Xmpl2XNRRzurTTYgL34d+zIiEPEZ54/0UcCDAsTGWEdYw8TbY/ADOGVGdiLFDYJ0+d1ztjeo88mxyB7hIGGnqkLc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708597891; c=relaxed/simple; bh=6e8t3ifHPLtPmBHbfdKNgpyW1ydO5nrnXft3+pBt3j8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=kp1nFbr6ZoBb2Wznun1Hl3Nv35Gf4Fb+zAaqDuf4J+jOpl9O5uQxGwcNPKYaU6zYIb1Y3j3l5iN39FArGiJU2KbTJfwEJjMi559yWWjX5ADSObwwYwg4JxVMLdJ53s5E6cOu/bplBDw+GmL2fQ+8kA58O9zyElBuFE03YTVkAL8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=N8pQdRn/; arc=none smtp.client-ip=217.70.183.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="N8pQdRn/" Received: by mail.gandi.net (Postfix) with ESMTPSA id 4A74BFF802; Thu, 22 Feb 2024 10:31:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1708597888; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7j152Eq5lSDHkvM0B06uWbtq1OGz2o/iHiAPq8//XBw=; b=N8pQdRn/TolXDmnev8WosBnFCkiIHNQwA8OhF5TnqmBlQ4BMTSIEghWdSNjMe8LwWQLEdu sqNTehKHDa4mq/pFhWf5IOTO0JlaL2AgAZebPk/9UYettCMLur9OSkvWEo2ehN7EnKvAsn 4BIqwMMoS/aoYJQFTaPPIJ1ofgpq+7aZ0E0GsQIppVyberN98r/FUxfN9lbsRKcj0YBDCF fEYEu7+oqEZsfU5KxtD64AyMzJEDiNRYWGs0ugdiPegFf4FkSDEfh7ylaBle8F4DiXdMx9 j4nlYmt1FCWVXQCOdMLYuQuTxCL3Fd+jrjMVgkoMkX4g0ocJ8jg2gJbE0N8w5A== From: =?utf-8?b?SsOpcsOpbWllIERhdXRoZXJpYmVz?= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , Heiner Kallweit , Russell King , Andrew Davis Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni , =?utf-8?q?Miqu=C3=A8l_Rayn?= =?utf-8?q?al?= , Yen-Mei Goh , Maxime Chevallier , =?utf-8?b?SsOpcsOpbWll?= =?utf-8?b?IERhdXRoZXJpYmVz?= Subject: [PATCH net-next 3/3] net: phy: dp83826: support configuring RMII master/slave operation mode Date: Thu, 22 Feb 2024 11:31:17 +0100 Message-Id: <20240222103117.526955-4-jeremie.dautheribes@bootlin.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240222103117.526955-1-jeremie.dautheribes@bootlin.com> References: <20240222103117.526955-1-jeremie.dautheribes@bootlin.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-GND-Sasl: jeremie.dautheribes@bootlin.com X-Patchwork-Delegate: kuba@kernel.org The TI DP83826 PHY can operate between two RMII modes: - master mode (PHY operates from a 25MHz clock reference) - slave mode (PHY operates from a 50MHz clock reference) By default, the operation mode is configured by hardware straps. Add support to configure the operation mode from within the driver. Signed-off-by: Jérémie Dautheribes --- drivers/net/phy/dp83822.c | 43 ++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c index 2d8275e59dcc..edc39ae4c241 100644 --- a/drivers/net/phy/dp83822.c +++ b/drivers/net/phy/dp83822.c @@ -101,6 +101,7 @@ /* RCSR bits */ #define DP83822_RMII_MODE_EN BIT(5) +#define DP83822_RMII_MODE_SEL BIT(7) #define DP83822_RGMII_MODE_EN BIT(9) #define DP83822_RX_CLK_SHIFT BIT(12) #define DP83822_TX_CLK_SHIFT BIT(11) @@ -495,21 +496,53 @@ static int dp83822_config_init(struct phy_device *phydev) return dp8382x_disable_wol(phydev); } +static int dp83826_config_rmii_mode(struct phy_device *phydev) +{ + struct device *dev = &phydev->mdio.dev; + const char *of_val; + int ret; + + if (!device_property_read_string(dev, "ti,rmii-mode", &of_val)) { + if (strcmp(of_val, "master") == 0) { + ret = phy_clear_bits_mmd(phydev, DP83822_DEVADDR, MII_DP83822_RCSR, + DP83822_RMII_MODE_SEL); + } else if (strcmp(of_val, "slave") == 0) { + ret = phy_set_bits_mmd(phydev, DP83822_DEVADDR, MII_DP83822_RCSR, + DP83822_RMII_MODE_SEL); + } else { + phydev_err(phydev, "Invalid value for ti,rmii-mode property (%s)\n", + of_val); + ret = -EINVAL; + } + + if (ret) + return ret; + } + + return 0; +} + static int dp83826_config_init(struct phy_device *phydev) { struct dp83822_private *dp83822 = phydev->priv; u16 val, mask; int ret; - if (phydev->interface == PHY_INTERFACE_MODE_RMII) + if (phydev->interface == PHY_INTERFACE_MODE_RMII) { ret = phy_set_bits_mmd(phydev, DP83822_DEVADDR, MII_DP83822_RCSR, DP83822_RMII_MODE_EN); - else + if (ret) + return ret; + + ret = dp83826_config_rmii_mode(phydev); + if (ret) + return ret; + } else { ret = phy_clear_bits_mmd(phydev, DP83822_DEVADDR, MII_DP83822_RCSR, DP83822_RMII_MODE_EN); - - if (ret) - return ret; + if (ret) + return ret; + } if (dp83822->cfg_dac_minus != DP83826_CFG_DAC_MINUS_DEFAULT) { val = FIELD_PREP(DP83826_VOD_CFG1_MINUS_MDI_MASK, dp83822->cfg_dac_minus) |