2022-04-07 20:32:36

by Dylan Hung

[permalink] [raw]
Subject: [PATCH v3 0/3] Add reset deassertion for Aspeed MDIO

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.

V3:
- remove reset property from the required list of the device tree
bindings
- remove "Cc: [email protected]" from the commit messages
- add more description in the commit message of the dt-binding

V2:
- add reset property in the device tree bindings
- add reset assertion in the error path and driver remove

Dylan Hung (3):
dt-bindings: net: add reset property for aspeed, ast2600-mdio binding
net: mdio: add reset control for Aspeed MDIO
ARM: dts: aspeed: add reset properties into MDIO nodes

.../bindings/net/aspeed,ast2600-mdio.yaml | 5 +++++
arch/arm/boot/dts/aspeed-g6.dtsi | 4 ++++
drivers/net/mdio/mdio-aspeed.c | 15 ++++++++++++++-
3 files changed, 23 insertions(+), 1 deletion(-)

--
2.25.1


2022-04-07 20:56:10

by Dylan Hung

[permalink] [raw]
Subject: [PATCH RESEND v3 1/3] dt-bindings: net: add reset property for aspeed, ast2600-mdio binding

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 <[email protected]>
Reviewed-by: Krzysztof Kozlowski <[email protected]>
---
.../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

2022-04-12 22:45:29

by Andrew Jeffery

[permalink] [raw]
Subject: Re: [PATCH RESEND v3 1/3] dt-bindings: net: add reset property for aspeed, ast2600-mdio binding

Hi Dylan,

On Thu, 7 Apr 2022, at 17:27, 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 <[email protected]>
> Reviewed-by: Krzysztof Kozlowski <[email protected]>
> ---
> .../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>;

This is just the example but we should probably have it do the
canonical thing and use ASPEED_RESET_MII from
include/dt-bindings/clock/ast2600-clock.h

Andrew