* [PATCH v3 1/3] dt-bindings: net: add reset property for aspeed, ast2600-mdio binding
2022-03-25 4:14 [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO Dylan Hung
@ 2022-03-25 4:14 ` Dylan Hung
2022-03-25 12:19 ` Krzysztof Kozlowski
2022-03-25 4:14 ` [PATCH v3 2/3] net: mdio: add reset control for Aspeed MDIO Dylan Hung
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Dylan Hung @ 2022-03-25 4:14 UTC (permalink / raw)
To: robh+dt, joel, andrew, andrew, hkallweit1, linux, davem, kuba,
pabeni, p.zabel, devicetree, linux-arm-kernel, linux-aspeed,
linux-kernel, netdev
Cc: BMC-SW
The AST2600 MDIO bus controller has a reset control bit and must be
deasserted before manipulating the MDIO controller. By default, the
hardware asserts the reset so the driver only need to deassert it.
Regarding to the old DT blobs which don't have reset property in them,
the reset deassertion is usually done by the bootloader so the reset
property is optional to work with them.
Signed-off-by: Dylan Hung <dylan_hung@aspeedtech.com>
---
.../devicetree/bindings/net/aspeed,ast2600-mdio.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/aspeed,ast2600-mdio.yaml b/Documentation/devicetree/bindings/net/aspeed,ast2600-mdio.yaml
index 1c88820cbcdf..7f43b4fe86a3 100644
--- a/Documentation/devicetree/bindings/net/aspeed,ast2600-mdio.yaml
+++ b/Documentation/devicetree/bindings/net/aspeed,ast2600-mdio.yaml
@@ -20,10 +20,14 @@ allOf:
properties:
compatible:
const: aspeed,ast2600-mdio
+
reg:
maxItems: 1
description: The register range of the MDIO controller instance
+ resets:
+ maxItems: 1
+
required:
- compatible
- reg
@@ -39,6 +43,7 @@ examples:
reg = <0x1e650000 0x8>;
#address-cells = <1>;
#size-cells = <0>;
+ resets = <&syscon 35>;
ethphy0: ethernet-phy@0 {
compatible = "ethernet-phy-ieee802.3-c22";
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/3] dt-bindings: net: add reset property for aspeed, ast2600-mdio binding
2022-03-25 4:14 ` [PATCH v3 1/3] dt-bindings: net: add reset property for aspeed, ast2600-mdio binding Dylan Hung
@ 2022-03-25 12:19 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2022-03-25 12:19 UTC (permalink / raw)
To: Dylan Hung, robh+dt, joel, andrew, andrew, hkallweit1, linux,
davem, kuba, pabeni, p.zabel, devicetree, linux-arm-kernel,
linux-aspeed, linux-kernel, netdev
Cc: BMC-SW
On 25/03/2022 05:14, Dylan Hung wrote:
> The AST2600 MDIO bus controller has a reset control bit and must be
> deasserted before manipulating the MDIO controller. By default, the
> hardware asserts the reset so the driver only need to deassert it.
>
> Regarding to the old DT blobs which don't have reset property in them,
> the reset deassertion is usually done by the bootloader so the reset
> property is optional to work with them.
>
> Signed-off-by: Dylan Hung <dylan_hung@aspeedtech.com>
> ---
> .../devicetree/bindings/net/aspeed,ast2600-mdio.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 2/3] net: mdio: add reset control for Aspeed MDIO
2022-03-25 4:14 [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO Dylan Hung
2022-03-25 4:14 ` [PATCH v3 1/3] dt-bindings: net: add reset property for aspeed, ast2600-mdio binding Dylan Hung
@ 2022-03-25 4:14 ` Dylan Hung
2022-03-31 7:12 ` Russell King (Oracle)
2022-03-25 4:14 ` [PATCH v3 3/3] ARM: dts: aspeed: add reset properties into MDIO nodes Dylan Hung
2022-03-29 4:45 ` [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO Jakub Kicinski
3 siblings, 1 reply; 8+ messages in thread
From: Dylan Hung @ 2022-03-25 4:14 UTC (permalink / raw)
To: robh+dt, joel, andrew, andrew, hkallweit1, linux, davem, kuba,
pabeni, p.zabel, devicetree, linux-arm-kernel, linux-aspeed,
linux-kernel, netdev
Cc: BMC-SW
Add reset assertion/deassertion for Aspeed MDIO. There are 4 MDIO
controllers embedded in Aspeed AST2600 SOC and share one reset control
register SCU50[3]. To work with old DT blobs which don't have the reset
property, devm_reset_control_get_optional_shared is used in this change.
Signed-off-by: Dylan Hung <dylan_hung@aspeedtech.com>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
---
drivers/net/mdio/mdio-aspeed.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mdio/mdio-aspeed.c b/drivers/net/mdio/mdio-aspeed.c
index e2273588c75b..1afb58ccc524 100644
--- a/drivers/net/mdio/mdio-aspeed.c
+++ b/drivers/net/mdio/mdio-aspeed.c
@@ -3,6 +3,7 @@
#include <linux/bitfield.h>
#include <linux/delay.h>
+#include <linux/reset.h>
#include <linux/iopoll.h>
#include <linux/mdio.h>
#include <linux/module.h>
@@ -37,6 +38,7 @@
struct aspeed_mdio {
void __iomem *base;
+ struct reset_control *reset;
};
static int aspeed_mdio_read(struct mii_bus *bus, int addr, int regnum)
@@ -120,6 +122,12 @@ static int aspeed_mdio_probe(struct platform_device *pdev)
if (IS_ERR(ctx->base))
return PTR_ERR(ctx->base);
+ ctx->reset = devm_reset_control_get_optional_shared(&pdev->dev, NULL);
+ if (IS_ERR(ctx->reset))
+ return PTR_ERR(ctx->reset);
+
+ reset_control_deassert(ctx->reset);
+
bus->name = DRV_NAME;
snprintf(bus->id, MII_BUS_ID_SIZE, "%s%d", pdev->name, pdev->id);
bus->parent = &pdev->dev;
@@ -129,6 +137,7 @@ static int aspeed_mdio_probe(struct platform_device *pdev)
rc = of_mdiobus_register(bus, pdev->dev.of_node);
if (rc) {
dev_err(&pdev->dev, "Cannot register MDIO bus!\n");
+ reset_control_assert(ctx->reset);
return rc;
}
@@ -139,7 +148,11 @@ static int aspeed_mdio_probe(struct platform_device *pdev)
static int aspeed_mdio_remove(struct platform_device *pdev)
{
- mdiobus_unregister(platform_get_drvdata(pdev));
+ struct mii_bus *bus = (struct mii_bus *)platform_get_drvdata(pdev);
+ struct aspeed_mdio *ctx = bus->priv;
+
+ reset_control_assert(ctx->reset);
+ mdiobus_unregister(bus);
return 0;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/3] net: mdio: add reset control for Aspeed MDIO
2022-03-25 4:14 ` [PATCH v3 2/3] net: mdio: add reset control for Aspeed MDIO Dylan Hung
@ 2022-03-31 7:12 ` Russell King (Oracle)
2022-04-07 6:29 ` Dylan Hung
0 siblings, 1 reply; 8+ messages in thread
From: Russell King (Oracle) @ 2022-03-31 7:12 UTC (permalink / raw)
To: Dylan Hung
Cc: robh+dt, joel, andrew, andrew, hkallweit1, davem, kuba, pabeni,
p.zabel, devicetree, linux-arm-kernel, linux-aspeed,
linux-kernel, netdev, BMC-SW
Hi,
On Fri, Mar 25, 2022 at 12:14:50PM +0800, Dylan Hung wrote:
> Add reset assertion/deassertion for Aspeed MDIO. There are 4 MDIO
> controllers embedded in Aspeed AST2600 SOC and share one reset control
> register SCU50[3]. To work with old DT blobs which don't have the reset
> property, devm_reset_control_get_optional_shared is used in this change.
>
> Signed-off-by: Dylan Hung <dylan_hung@aspeedtech.com>
> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Should this really be specific to one driver rather than being handled
in the core mdio code?
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH v3 2/3] net: mdio: add reset control for Aspeed MDIO
2022-03-31 7:12 ` Russell King (Oracle)
@ 2022-04-07 6:29 ` Dylan Hung
0 siblings, 0 replies; 8+ messages in thread
From: Dylan Hung @ 2022-04-07 6:29 UTC (permalink / raw)
To: Russell King
Cc: robh+dt, joel, andrew, andrew, hkallweit1, davem, kuba, pabeni,
p.zabel, devicetree, linux-arm-kernel, linux-aspeed,
linux-kernel, netdev, BMC-SW
Hi Russell,
> -----Original Message-----
> From: Russell King [mailto:linux@armlinux.org.uk]
> Sent: 2022年3月31日 3:12 PM
> To: Dylan Hung <dylan_hung@aspeedtech.com>
> Cc: robh+dt@kernel.org; joel@jms.id.au; andrew@aj.id.au; andrew@lunn.ch;
> hkallweit1@gmail.com; davem@davemloft.net; kuba@kernel.org;
> pabeni@redhat.com; p.zabel@pengutronix.de; devicetree@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org; linux-aspeed@lists.ozlabs.org;
> linux-kernel@vger.kernel.org; netdev@vger.kernel.org; BMC-SW
> <BMC-SW@aspeedtech.com>
> Subject: Re: [PATCH v3 2/3] net: mdio: add reset control for Aspeed MDIO
>
> Hi,
>
> On Fri, Mar 25, 2022 at 12:14:50PM +0800, Dylan Hung wrote:
> > Add reset assertion/deassertion for Aspeed MDIO. There are 4 MDIO
> > controllers embedded in Aspeed AST2600 SOC and share one reset control
> > register SCU50[3]. To work with old DT blobs which don't have the
> > reset property, devm_reset_control_get_optional_shared is used in this
> change.
> >
> > Signed-off-by: Dylan Hung <dylan_hung@aspeedtech.com>
> > Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
>
> Should this really be specific to one driver rather than being handled in the
> core mdio code?
>
Is the core mdio code able to know the reset is shared or exclusive? I supposed that
the reset property is hardware dependent. Did I get that right?
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 3/3] ARM: dts: aspeed: add reset properties into MDIO nodes
2022-03-25 4:14 [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO Dylan Hung
2022-03-25 4:14 ` [PATCH v3 1/3] dt-bindings: net: add reset property for aspeed, ast2600-mdio binding Dylan Hung
2022-03-25 4:14 ` [PATCH v3 2/3] net: mdio: add reset control for Aspeed MDIO Dylan Hung
@ 2022-03-25 4:14 ` Dylan Hung
2022-03-29 4:45 ` [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO Jakub Kicinski
3 siblings, 0 replies; 8+ messages in thread
From: Dylan Hung @ 2022-03-25 4:14 UTC (permalink / raw)
To: robh+dt, joel, andrew, andrew, hkallweit1, linux, davem, kuba,
pabeni, p.zabel, devicetree, linux-arm-kernel, linux-aspeed,
linux-kernel, netdev
Cc: BMC-SW
Add reset control properties into MDIO nodes. The 4 MDIO controllers in
AST2600 SOC share one reset control bit SCU50[3].
Signed-off-by: Dylan Hung <dylan_hung@aspeedtech.com>
---
arch/arm/boot/dts/aspeed-g6.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/boot/dts/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed-g6.dtsi
index c32e87fad4dc..ab20ea8d829d 100644
--- a/arch/arm/boot/dts/aspeed-g6.dtsi
+++ b/arch/arm/boot/dts/aspeed-g6.dtsi
@@ -181,6 +181,7 @@ mdio0: mdio@1e650000 {
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mdio1_default>;
+ resets = <&syscon ASPEED_RESET_MII>;
};
mdio1: mdio@1e650008 {
@@ -191,6 +192,7 @@ mdio1: mdio@1e650008 {
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mdio2_default>;
+ resets = <&syscon ASPEED_RESET_MII>;
};
mdio2: mdio@1e650010 {
@@ -201,6 +203,7 @@ mdio2: mdio@1e650010 {
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mdio3_default>;
+ resets = <&syscon ASPEED_RESET_MII>;
};
mdio3: mdio@1e650018 {
@@ -211,6 +214,7 @@ mdio3: mdio@1e650018 {
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mdio4_default>;
+ resets = <&syscon ASPEED_RESET_MII>;
};
mac0: ftgmac@1e660000 {
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO
2022-03-25 4:14 [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO Dylan Hung
` (2 preceding siblings ...)
2022-03-25 4:14 ` [PATCH v3 3/3] ARM: dts: aspeed: add reset properties into MDIO nodes Dylan Hung
@ 2022-03-29 4:45 ` Jakub Kicinski
3 siblings, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2022-03-29 4:45 UTC (permalink / raw)
To: Dylan Hung
Cc: robh+dt, joel, andrew, andrew, hkallweit1, linux, davem, pabeni,
p.zabel, devicetree, linux-arm-kernel, linux-aspeed,
linux-kernel, netdev, BMC-SW
On Fri, 25 Mar 2022 12:14:48 +0800 Dylan Hung wrote:
> Add missing reset deassertion for Aspeed MDIO bus controller. The reset
> is asserted by the hardware when power-on so the driver only needs to
> deassert it. To be able to work with the old DT blobs, the reset is
> optional since it may be deasserted by the bootloader or the previous
> kernel.
# Form letter - net-next is closed
We have already sent the networking pull request for 5.18
and therefore net-next is closed for new drivers, features,
code refactoring and optimizations. We are currently accepting
bug fixes only.
Please repost when net-next reopens after 5.18-rc1 is cut, in ~1 week.
RFC patches sent for review only are obviously welcome at any time.
^ permalink raw reply [flat|nested] 8+ messages in thread