mbox series

[net-next,v2,0/7] Add an MDIO sub-node under MACB

Message ID 20200721171316.1427582-1-codrin.ciubotariu@microchip.com
Headers show
Series Add an MDIO sub-node under MACB | expand

Message

Codrin Ciubotariu July 21, 2020, 5:13 p.m. UTC
Adding the PHY nodes directly under the Ethernet node became deprecated,
so the aim of this patch series is to make MACB use an MDIO node as
container for MDIO devices.
This patch series starts with a small patch to use the device-managed
devm_mdiobus_alloc(). In the next two patches we update the bindings and
adapt macb driver to parse the device-tree PHY nodes from under an MDIO
node. The last patches add the MDIO node in the device-trees of sama5d2,
sama5d3, samad4 and sam9x60 boards.

Changes in v2:
 - renamed patch 2/7 from "macb: bindings doc: use an MDIO node as a
   container for PHY nodes" to "dt-bindings: net: macb: use an MDIO
   node as a container for PHY nodes"
 - added back a newline removed by mistake in patch 3/7

Codrin Ciubotariu (7):
  net: macb: use device-managed devm_mdiobus_alloc()
  dt-bindings: net: macb: use an MDIO node as a container for PHY nodes
  net: macb: parse PHY nodes found under an MDIO node
  ARM: dts: at91: sama5d2: add an mdio sub-node to macb
  ARM: dts: at91: sama5d3: add an mdio sub-node to macb
  ARM: dts: at91: sama5d4: add an mdio sub-node to macb
  ARM: dts: at91: sam9x60: add an mdio sub-node to macb

 Documentation/devicetree/bindings/net/macb.txt | 15 ++++++++++++---
 arch/arm/boot/dts/at91-sam9x60ek.dts           |  8 ++++++--
 arch/arm/boot/dts/at91-sama5d27_som1.dtsi      | 16 ++++++++++------
 arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi    | 17 ++++++++++-------
 arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts      | 13 ++++++++-----
 arch/arm/boot/dts/at91-sama5d2_xplained.dts    | 12 ++++++++----
 arch/arm/boot/dts/at91-sama5d3_xplained.dts    | 16 ++++++++++++----
 arch/arm/boot/dts/at91-sama5d4_xplained.dts    | 12 ++++++++----
 drivers/net/ethernet/cadence/macb_main.c       | 18 ++++++++++++------
 9 files changed, 86 insertions(+), 41 deletions(-)

Comments

Claudiu Beznea July 22, 2020, 10:32 a.m. UTC | #1
On 21.07.2020 20:13, Codrin Ciubotariu wrote:
> Adding the PHY nodes directly under the Ethernet node became deprecated,
> so the aim of this patch series is to make MACB use an MDIO node as
> container for MDIO devices.
> This patch series starts with a small patch to use the device-managed
> devm_mdiobus_alloc(). In the next two patches we update the bindings and
> adapt macb driver to parse the device-tree PHY nodes from under an MDIO
> node. The last patches add the MDIO node in the device-trees of sama5d2,
> sama5d3, samad4 and sam9x60 boards.
> 

Tested this series on sama5d2_xplained in the following scenarios:

1/ PHY bindings from patch 4/7:
mdio {
	#address-cells = <1>;
	#size-cells = <0>;
	ethernet-phy@1 {
		reg = <0x1>;
		interrupt-parent = <&pioA>;
		interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
};

2/ PHY bindings before this series:
ethernet-phy@1 {
	reg = <0x1>;
	interrupt-parent = <&pioA>;
	interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
};

3/ No PHY bindings at all.

All 3 cases went OK.

You can add:
Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Claudiu Beznea <claudiu.beznea@microchip.com>

Thank you,
Claudiu Beznea

> Changes in v2:
>  - renamed patch 2/7 from "macb: bindings doc: use an MDIO node as a
>    container for PHY nodes" to "dt-bindings: net: macb: use an MDIO
>    node as a container for PHY nodes"
>  - added back a newline removed by mistake in patch 3/7
> 
> Codrin Ciubotariu (7):
>   net: macb: use device-managed devm_mdiobus_alloc()
>   dt-bindings: net: macb: use an MDIO node as a container for PHY nodes
>   net: macb: parse PHY nodes found under an MDIO node
>   ARM: dts: at91: sama5d2: add an mdio sub-node to macb
>   ARM: dts: at91: sama5d3: add an mdio sub-node to macb
>   ARM: dts: at91: sama5d4: add an mdio sub-node to macb
>   ARM: dts: at91: sam9x60: add an mdio sub-node to macb
> 
>  Documentation/devicetree/bindings/net/macb.txt | 15 ++++++++++++---
>  arch/arm/boot/dts/at91-sam9x60ek.dts           |  8 ++++++--
>  arch/arm/boot/dts/at91-sama5d27_som1.dtsi      | 16 ++++++++++------
>  arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi    | 17 ++++++++++-------
>  arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts      | 13 ++++++++-----
>  arch/arm/boot/dts/at91-sama5d2_xplained.dts    | 12 ++++++++----
>  arch/arm/boot/dts/at91-sama5d3_xplained.dts    | 16 ++++++++++++----
>  arch/arm/boot/dts/at91-sama5d4_xplained.dts    | 12 ++++++++----
>  drivers/net/ethernet/cadence/macb_main.c       | 18 ++++++++++++------
>  9 files changed, 86 insertions(+), 41 deletions(-)
>
Codrin Ciubotariu July 22, 2020, 11:38 a.m. UTC | #2
On 22.07.2020 13:32, Claudiu Beznea - M18063 wrote:
> 
> 
> On 21.07.2020 20:13, Codrin Ciubotariu wrote:
>> Adding the PHY nodes directly under the Ethernet node became deprecated,
>> so the aim of this patch series is to make MACB use an MDIO node as
>> container for MDIO devices.
>> This patch series starts with a small patch to use the device-managed
>> devm_mdiobus_alloc(). In the next two patches we update the bindings and
>> adapt macb driver to parse the device-tree PHY nodes from under an MDIO
>> node. The last patches add the MDIO node in the device-trees of sama5d2,
>> sama5d3, samad4 and sam9x60 boards.
>>
> 
> Tested this series on sama5d2_xplained in the following scenarios:
> 
> 1/ PHY bindings from patch 4/7:
> mdio {
> 	#address-cells = <1>;
> 	#size-cells = <0>;
> 	ethernet-phy@1 {
> 		reg = <0x1>;
> 		interrupt-parent = <&pioA>;
> 		interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
> };
> 
> 2/ PHY bindings before this series:
> ethernet-phy@1 {
> 	reg = <0x1>;
> 	interrupt-parent = <&pioA>;
> 	interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
> };
> 
> 3/ No PHY bindings at all.
> 
> All 3 cases went OK.
> 
> You can add:
> Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> Acked-by: Claudiu Beznea <claudiu.beznea@microchip.com>

Thank you very much Claudiu!
There is still one more case in my mind. macb could be a fixed-link with 
an MDIO DSA switch. While the macb would have a fixed connection with a 
port from the DSA switch, the switch could be configured using macb's 
MDIO. The dt would be something like:

macb {
	fixed-link {
		...
	};
	mdio {
		switch@0 {
			...
		};
	};
};

To support this, in patch 3/7 I should first check for the mdio node to 
return of_mdiobus_register() and then check if it's a fixed-link to 
return simple mdiobus_register(). I will address this in v3...

Thanks and best regards,
Codrin

> 
> Thank you,
> Claudiu Beznea
> 
>> Changes in v2:
>>   - renamed patch 2/7 from "macb: bindings doc: use an MDIO node as a
>>     container for PHY nodes" to "dt-bindings: net: macb: use an MDIO
>>     node as a container for PHY nodes"
>>   - added back a newline removed by mistake in patch 3/7
>>
>> Codrin Ciubotariu (7):
>>    net: macb: use device-managed devm_mdiobus_alloc()
>>    dt-bindings: net: macb: use an MDIO node as a container for PHY nodes
>>    net: macb: parse PHY nodes found under an MDIO node
>>    ARM: dts: at91: sama5d2: add an mdio sub-node to macb
>>    ARM: dts: at91: sama5d3: add an mdio sub-node to macb
>>    ARM: dts: at91: sama5d4: add an mdio sub-node to macb
>>    ARM: dts: at91: sam9x60: add an mdio sub-node to macb
>>
>>   Documentation/devicetree/bindings/net/macb.txt | 15 ++++++++++++---
>>   arch/arm/boot/dts/at91-sam9x60ek.dts           |  8 ++++++--
>>   arch/arm/boot/dts/at91-sama5d27_som1.dtsi      | 16 ++++++++++------
>>   arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi    | 17 ++++++++++-------
>>   arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts      | 13 ++++++++-----
>>   arch/arm/boot/dts/at91-sama5d2_xplained.dts    | 12 ++++++++----
>>   arch/arm/boot/dts/at91-sama5d3_xplained.dts    | 16 ++++++++++++----
>>   arch/arm/boot/dts/at91-sama5d4_xplained.dts    | 12 ++++++++----
>>   drivers/net/ethernet/cadence/macb_main.c       | 18 ++++++++++++------
>>   9 files changed, 86 insertions(+), 41 deletions(-)
Claudiu Beznea July 23, 2020, 7:51 a.m. UTC | #3
On 22.07.2020 14:38, Codrin Ciubotariu - M19940 wrote:
> On 22.07.2020 13:32, Claudiu Beznea - M18063 wrote:
>>
>>
>> On 21.07.2020 20:13, Codrin Ciubotariu wrote:
>>> Adding the PHY nodes directly under the Ethernet node became deprecated,
>>> so the aim of this patch series is to make MACB use an MDIO node as
>>> container for MDIO devices.
>>> This patch series starts with a small patch to use the device-managed
>>> devm_mdiobus_alloc(). In the next two patches we update the bindings and
>>> adapt macb driver to parse the device-tree PHY nodes from under an MDIO
>>> node. The last patches add the MDIO node in the device-trees of sama5d2,
>>> sama5d3, samad4 and sam9x60 boards.
>>>
>>
>> Tested this series on sama5d2_xplained in the following scenarios:
>>
>> 1/ PHY bindings from patch 4/7:
>> mdio {
>> 	#address-cells = <1>;
>> 	#size-cells = <0>;
>> 	ethernet-phy@1 {
>> 		reg = <0x1>;
>> 		interrupt-parent = <&pioA>;
>> 		interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
>> };
>>
>> 2/ PHY bindings before this series:
>> ethernet-phy@1 {
>> 	reg = <0x1>;
>> 	interrupt-parent = <&pioA>;
>> 	interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
>> };
>>
>> 3/ No PHY bindings at all.
>>
>> All 3 cases went OK.
>>
>> You can add:
>> Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>> Acked-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> 
> Thank you very much Claudiu!
> There is still one more case in my mind. macb could be a fixed-link with 
> an MDIO DSA switch. While the macb would have a fixed connection with a 
> port from the DSA switch, the switch could be configured using macb's 
> MDIO. The dt would be something like:
> 
> macb {
> 	fixed-link {
> 		...
> 	};
> 	mdio {
> 		switch@0 {
> 			...
> 		};
> 	};
> };

Do you have a setup for testing this? At the moment I don't know a
configuration like this that macb is working with.

> 
> To support this, in patch 3/7 I should first check for the mdio node to 
> return of_mdiobus_register() and then check if it's a fixed-link to 
> return simple mdiobus_register(). I will address this in v3...> 
> Thanks and best regards,
> Codrin
> 
>>
>> Thank you,
>> Claudiu Beznea
>>
>>> Changes in v2:
>>>   - renamed patch 2/7 from "macb: bindings doc: use an MDIO node as a
>>>     container for PHY nodes" to "dt-bindings: net: macb: use an MDIO
>>>     node as a container for PHY nodes"
>>>   - added back a newline removed by mistake in patch 3/7
>>>
>>> Codrin Ciubotariu (7):
>>>    net: macb: use device-managed devm_mdiobus_alloc()
>>>    dt-bindings: net: macb: use an MDIO node as a container for PHY nodes
>>>    net: macb: parse PHY nodes found under an MDIO node
>>>    ARM: dts: at91: sama5d2: add an mdio sub-node to macb
>>>    ARM: dts: at91: sama5d3: add an mdio sub-node to macb
>>>    ARM: dts: at91: sama5d4: add an mdio sub-node to macb
>>>    ARM: dts: at91: sam9x60: add an mdio sub-node to macb
>>>
>>>   Documentation/devicetree/bindings/net/macb.txt | 15 ++++++++++++---
>>>   arch/arm/boot/dts/at91-sam9x60ek.dts           |  8 ++++++--
>>>   arch/arm/boot/dts/at91-sama5d27_som1.dtsi      | 16 ++++++++++------
>>>   arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi    | 17 ++++++++++-------
>>>   arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts      | 13 ++++++++-----
>>>   arch/arm/boot/dts/at91-sama5d2_xplained.dts    | 12 ++++++++----
>>>   arch/arm/boot/dts/at91-sama5d3_xplained.dts    | 16 ++++++++++++----
>>>   arch/arm/boot/dts/at91-sama5d4_xplained.dts    | 12 ++++++++----
>>>   drivers/net/ethernet/cadence/macb_main.c       | 18 ++++++++++++------
>>>   9 files changed, 86 insertions(+), 41 deletions(-)
>
Codrin Ciubotariu July 23, 2020, 1:18 p.m. UTC | #4
On 23.07.2020 10:51, Claudiu Beznea - M18063 wrote:
> 
> 
> On 22.07.2020 14:38, Codrin Ciubotariu - M19940 wrote:
>> On 22.07.2020 13:32, Claudiu Beznea - M18063 wrote:
>>>
>>>
>>> On 21.07.2020 20:13, Codrin Ciubotariu wrote:
>>>> Adding the PHY nodes directly under the Ethernet node became deprecated,
>>>> so the aim of this patch series is to make MACB use an MDIO node as
>>>> container for MDIO devices.
>>>> This patch series starts with a small patch to use the device-managed
>>>> devm_mdiobus_alloc(). In the next two patches we update the bindings and
>>>> adapt macb driver to parse the device-tree PHY nodes from under an MDIO
>>>> node. The last patches add the MDIO node in the device-trees of sama5d2,
>>>> sama5d3, samad4 and sam9x60 boards.
>>>>
>>>
>>> Tested this series on sama5d2_xplained in the following scenarios:
>>>
>>> 1/ PHY bindings from patch 4/7:
>>> mdio {
>>> 	#address-cells = <1>;
>>> 	#size-cells = <0>;
>>> 	ethernet-phy@1 {
>>> 		reg = <0x1>;
>>> 		interrupt-parent = <&pioA>;
>>> 		interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
>>> };
>>>
>>> 2/ PHY bindings before this series:
>>> ethernet-phy@1 {
>>> 	reg = <0x1>;
>>> 	interrupt-parent = <&pioA>;
>>> 	interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>;
>>> };
>>>
>>> 3/ No PHY bindings at all.
>>>
>>> All 3 cases went OK.
>>>
>>> You can add:
>>> Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>>> Acked-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>>
>> Thank you very much Claudiu!
>> There is still one more case in my mind. macb could be a fixed-link with
>> an MDIO DSA switch. While the macb would have a fixed connection with a
>> port from the DSA switch, the switch could be configured using macb's
>> MDIO. The dt would be something like:
>>
>> macb {
>> 	fixed-link {
>> 		...
>> 	};
>> 	mdio {
>> 		switch@0 {
>> 			...
>> 		};
>> 	};
>> };
> 
> Do you have a setup for testing this? At the moment I don't know a
> configuration like this that macb is working with.

There isn't one that I am aware of, but we should address it.

> 
>>
>> To support this, in patch 3/7 I should first check for the mdio node to
>> return of_mdiobus_register() and then check if it's a fixed-link to
>> return simple mdiobus_register(). I will address this in v3...>
>> Thanks and best regards,
>> Codrin
>>
>>>
>>> Thank you,
>>> Claudiu Beznea
>>>
>>>> Changes in v2:
>>>>    - renamed patch 2/7 from "macb: bindings doc: use an MDIO node as a
>>>>      container for PHY nodes" to "dt-bindings: net: macb: use an MDIO
>>>>      node as a container for PHY nodes"
>>>>    - added back a newline removed by mistake in patch 3/7
>>>>
>>>> Codrin Ciubotariu (7):
>>>>     net: macb: use device-managed devm_mdiobus_alloc()
>>>>     dt-bindings: net: macb: use an MDIO node as a container for PHY nodes
>>>>     net: macb: parse PHY nodes found under an MDIO node
>>>>     ARM: dts: at91: sama5d2: add an mdio sub-node to macb
>>>>     ARM: dts: at91: sama5d3: add an mdio sub-node to macb
>>>>     ARM: dts: at91: sama5d4: add an mdio sub-node to macb
>>>>     ARM: dts: at91: sam9x60: add an mdio sub-node to macb
>>>>
>>>>    Documentation/devicetree/bindings/net/macb.txt | 15 ++++++++++++---
>>>>    arch/arm/boot/dts/at91-sam9x60ek.dts           |  8 ++++++--
>>>>    arch/arm/boot/dts/at91-sama5d27_som1.dtsi      | 16 ++++++++++------
>>>>    arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi    | 17 ++++++++++-------
>>>>    arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts      | 13 ++++++++-----
>>>>    arch/arm/boot/dts/at91-sama5d2_xplained.dts    | 12 ++++++++----
>>>>    arch/arm/boot/dts/at91-sama5d3_xplained.dts    | 16 ++++++++++++----
>>>>    arch/arm/boot/dts/at91-sama5d4_xplained.dts    | 12 ++++++++----
>>>>    drivers/net/ethernet/cadence/macb_main.c       | 18 ++++++++++++------
>>>>    9 files changed, 86 insertions(+), 41 deletions(-)
Florian Fainelli July 23, 2020, 6:55 p.m. UTC | #5
On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
> Use the device-managed variant for the allocating the MDIO bus. This
> cleans-up the code a little on the remove and error paths.
> 
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Florian Fainelli July 23, 2020, 6:59 p.m. UTC | #6
On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
> The MACB embeds an MDIO bus controller. For this reason, the PHY nodes
> were represented as sub-nodes in the MACB node. Generally, the
> Ethernet controller is different than the MDIO controller, so the PHYs
> are probed by a separate MDIO driver. Since adding the PHY nodes directly
> under the ETH node became deprecated, we adjust the MACB driver to look
> for an MDIO node and register the subnode MDIO devices.
> 
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
> ---
> 
> Changes in v2:
>  - readded newline removed by mistake;
> 
>  drivers/net/ethernet/cadence/macb_main.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
> index 89fe7af5e408..b25c64b45148 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c
> @@ -740,10 +740,20 @@ static int macb_mii_probe(struct net_device *dev)
>  static int macb_mdiobus_register(struct macb *bp)
>  {
>  	struct device_node *child, *np = bp->pdev->dev.of_node;
> +	struct device_node *mdio_node;
> +	int ret;
>  
>  	if (of_phy_is_fixed_link(np))
>  		return mdiobus_register(bp->mii_bus);

Does not this need changing as well? Consider the use case of having
your MACB Ethernet node have a fixed-link property to describe how it
connects to a switch, and your MACB MDIO controller, expressed as a
sub-node, describing the MDIO attached switch it connects to.

>  
> +	/* if an MDIO node is present, it should contain the PHY nodes */
> +	mdio_node = of_get_child_by_name(np, "mdio");
> +	if (mdio_node) {
> +		ret = of_mdiobus_register(bp->mii_bus, mdio_node);
> +		of_node_put(mdio_node);
> +		return ret;
> +	}
> +
>  	/* Only create the PHY from the device tree if at least one PHY is
>  	 * described. Otherwise scan the entire MDIO bus. We do this to support
>  	 * old device tree that did not follow the best practices and did not
>
Florian Fainelli July 23, 2020, 6:59 p.m. UTC | #7
On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
> Use the new macb bindings and add an mdio sub-node to contain all the
> phy nodes.
> 
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Florian Fainelli July 23, 2020, 7 p.m. UTC | #8
On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
> Use the new macb bindings and add an mdio sub-node to contain all the
> phy nodes.
> 
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Florian Fainelli July 23, 2020, 7 p.m. UTC | #9
On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
> Use the new macb bindings and add an mdio sub-node to contain all the
> phy nodes.
> 
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Florian Fainelli July 23, 2020, 7 p.m. UTC | #10
On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
> Use the new macb bindings and add an mdio sub-node to contain all the
> phy nodes.
> 
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Codrin Ciubotariu July 23, 2020, 10:08 p.m. UTC | #11
On 23.07.2020 21:59, Florian Fainelli wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
>> The MACB embeds an MDIO bus controller. For this reason, the PHY nodes
>> were represented as sub-nodes in the MACB node. Generally, the
>> Ethernet controller is different than the MDIO controller, so the PHYs
>> are probed by a separate MDIO driver. Since adding the PHY nodes directly
>> under the ETH node became deprecated, we adjust the MACB driver to look
>> for an MDIO node and register the subnode MDIO devices.
>>
>> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
>> ---
>>
>> Changes in v2:
>>   - readded newline removed by mistake;
>>
>>   drivers/net/ethernet/cadence/macb_main.c | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
>> index 89fe7af5e408..b25c64b45148 100644
>> --- a/drivers/net/ethernet/cadence/macb_main.c
>> +++ b/drivers/net/ethernet/cadence/macb_main.c
>> @@ -740,10 +740,20 @@ static int macb_mii_probe(struct net_device *dev)
>>   static int macb_mdiobus_register(struct macb *bp)
>>   {
>>        struct device_node *child, *np = bp->pdev->dev.of_node;
>> +     struct device_node *mdio_node;
>> +     int ret;
>>
>>        if (of_phy_is_fixed_link(np))
>>                return mdiobus_register(bp->mii_bus);
> 
> Does not this need changing as well? Consider the use case of having
> your MACB Ethernet node have a fixed-link property to describe how it
> connects to a switch, and your MACB MDIO controller, expressed as a
> sub-node, describing the MDIO attached switch it connects to.

Right, this is what I was discussing with Claudiu on the other thread. I 
am thinking to just move the look for mdio before checking for 
fixed-link. This will probe the MDIO devices and simple mdiobus_register 
will be called only if the mdio node is missing.

Thank you for your review(s)!

Best regards,
Codrin

> 
>>
>> +     /* if an MDIO node is present, it should contain the PHY nodes */
>> +     mdio_node = of_get_child_by_name(np, "mdio");
>> +     if (mdio_node) {
>> +             ret = of_mdiobus_register(bp->mii_bus, mdio_node);
>> +             of_node_put(mdio_node);
>> +             return ret;
>> +     }
>> +
>>        /* Only create the PHY from the device tree if at least one PHY is
>>         * described. Otherwise scan the entire MDIO bus. We do this to support
>>         * old device tree that did not follow the best practices and did not
>>
> 
> 
> --
> Florian
>
Florian Fainelli July 23, 2020, 10:33 p.m. UTC | #12
On 7/23/20 3:08 PM, Codrin.Ciubotariu@microchip.com wrote:
> On 23.07.2020 21:59, Florian Fainelli wrote:
>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>
>> On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
>>> The MACB embeds an MDIO bus controller. For this reason, the PHY nodes
>>> were represented as sub-nodes in the MACB node. Generally, the
>>> Ethernet controller is different than the MDIO controller, so the PHYs
>>> are probed by a separate MDIO driver. Since adding the PHY nodes directly
>>> under the ETH node became deprecated, we adjust the MACB driver to look
>>> for an MDIO node and register the subnode MDIO devices.
>>>
>>> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
>>> ---
>>>
>>> Changes in v2:
>>>   - readded newline removed by mistake;
>>>
>>>   drivers/net/ethernet/cadence/macb_main.c | 10 ++++++++++
>>>   1 file changed, 10 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
>>> index 89fe7af5e408..b25c64b45148 100644
>>> --- a/drivers/net/ethernet/cadence/macb_main.c
>>> +++ b/drivers/net/ethernet/cadence/macb_main.c
>>> @@ -740,10 +740,20 @@ static int macb_mii_probe(struct net_device *dev)
>>>   static int macb_mdiobus_register(struct macb *bp)
>>>   {
>>>        struct device_node *child, *np = bp->pdev->dev.of_node;
>>> +     struct device_node *mdio_node;
>>> +     int ret;
>>>
>>>        if (of_phy_is_fixed_link(np))
>>>                return mdiobus_register(bp->mii_bus);
>>
>> Does not this need changing as well? Consider the use case of having
>> your MACB Ethernet node have a fixed-link property to describe how it
>> connects to a switch, and your MACB MDIO controller, expressed as a
>> sub-node, describing the MDIO attached switch it connects to.
> 
> Right, this is what I was discussing with Claudiu on the other thread. I 
> am thinking to just move the look for mdio before checking for 
> fixed-link. This will probe the MDIO devices and simple mdiobus_register 
> will be called only if the mdio node is missing.

Found it after I had sent this email. What you propose sounds
reasonable, looking forward to v3.

> 
> Thank you for your review(s)!

Of course.
Claudiu Beznea July 24, 2020, 7:28 a.m. UTC | #13
On 23.07.2020 21:59, Florian Fainelli wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On 7/21/20 10:13 AM, Codrin Ciubotariu wrote:
>> The MACB embeds an MDIO bus controller. For this reason, the PHY nodes
>> were represented as sub-nodes in the MACB node. Generally, the
>> Ethernet controller is different than the MDIO controller, so the PHYs
>> are probed by a separate MDIO driver. Since adding the PHY nodes directly
>> under the ETH node became deprecated, we adjust the MACB driver to look
>> for an MDIO node and register the subnode MDIO devices.
>>
>> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
>> ---
>>
>> Changes in v2:
>>  - readded newline removed by mistake;
>>
>>  drivers/net/ethernet/cadence/macb_main.c | 10 ++++++++++
>>  1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
>> index 89fe7af5e408..b25c64b45148 100644
>> --- a/drivers/net/ethernet/cadence/macb_main.c
>> +++ b/drivers/net/ethernet/cadence/macb_main.c
>> @@ -740,10 +740,20 @@ static int macb_mii_probe(struct net_device *dev)
>>  static int macb_mdiobus_register(struct macb *bp)
>>  {
>>       struct device_node *child, *np = bp->pdev->dev.of_node;
>> +     struct device_node *mdio_node;
>> +     int ret;
>>
>>       if (of_phy_is_fixed_link(np))
>>               return mdiobus_register(bp->mii_bus);
> 
> Does not this need changing as well? Consider the use case of having
> your MACB Ethernet node have a fixed-link property to describe how it
> connects to a switch, and your MACB MDIO controller, expressed as a
> sub-node, describing the MDIO attached switch it connects to.

Just asking, does this worth having/changing it as long as there is no in
kernel board/configuration that could benefit off?

Thank you,
Claudiu Beznea

> 
>>
>> +     /* if an MDIO node is present, it should contain the PHY nodes */
>> +     mdio_node = of_get_child_by_name(np, "mdio");
>> +     if (mdio_node) {
>> +             ret = of_mdiobus_register(bp->mii_bus, mdio_node);
>> +             of_node_put(mdio_node);
>> +             return ret;
>> +     }
>> +
>>       /* Only create the PHY from the device tree if at least one PHY is
>>        * described. Otherwise scan the entire MDIO bus. We do this to support
>>        * old device tree that did not follow the best practices and did not
>>
> 
> 
> --
> Florian
>