Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1619697

Re: [PATCH] net: davinci_mdio: add GPIO reset logic

From Roger Quadros <rogerq@ti.com>
Newsgroups linux.kernel
Subject Re: [PATCH] net: davinci_mdio: add GPIO reset logic
Date 2017-04-10 10:00 +0200
Message-ID <tuCoV-6gF-13@gated-at.bofh.it> (permalink)
References <tsODU-f3-17@gated-at.bofh.it> <ttZ4d-5ZB-1@gated-at.bofh.it> <tu0jD-6UX-3@gated-at.bofh.it> <tu0jE-6UX-15@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On 08/04/17 18:18, Florian Fainelli wrote:
> 
> 
> On 04/08/2017 08:10 AM, Andrew Lunn wrote:
>> On Sat, Apr 08, 2017 at 06:55:45AM -0700, David Miller wrote:
>>> From: Roger Quadros <rogerq@ti.com>
>>> Date: Wed, 5 Apr 2017 11:33:57 +0300
>>>
>>>> Some boards [1] leave the PHYs at an invalid state
>>>> during system power-up or reset thus causing unreliability
>>>> issues with the PHY like not being detected by the mdio bus
>>>> or link not functional. To work around these boards have
>>>> a GPIO connected to the PHY's reset pin.
>>>>
>>>> Implement GPIO reset handling for such cases.
>>>>
>>>> [1] - am572x-idk, am571x-idk, a437x-idk.
>>>>
>>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>>>> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
>>>
>>> I have not seen a resolution in this discussion.
>>>
>>> My understanding is that there are several cases (single MDIO bus whose
>>> reset does a reset on all that MDIO bus's PHYs, etc.) and it's unclear
>>> how to handle all such cases cleanly.
>>
>> I see it falling into two cases.
>>
>> 1) We have a GPIO which resets one PHY. In this case, the GPIO is a
>> PHY property, it should be documented in
>> Documentation/devicetree/bindings/net/phy.txt. Hopefully there is
>> nothing PHY driver specific here, so all the handling can be placed in
>> the core PHY code.
> 
> I suspect we would have to release the PHY GPIO reset line within a
> mii_bus::reset callback, which occurs before the PHY registers are read.
> There is this chicken and egg problem where you can't probe for a PHY
> unless you can successfully read from it, and you can't do the PHY reset
> in the PHY drivers' probe function unless you were able to find a PHY
> device.

+1
This is the exact problem we were facing so the reset has to be done at
MDIO bus level, before PHY probe.

> 
> NB: you can work around that by using an Ethernet PHY device compatible
> string in Device Tree that already has the PHY OUI specified, although
> that usually does not scale to many different boards/designs.
> 
>>
>> 2) We have one or more GPIOs which reset more than one PHY. In this
>> case, the GPIOs are MDIO bus properties. Again, there should not be
>> anything which is MDIO bus driver specific, so all the handling can be
>> placed in the core MDIO bus code.
> 
> Agreed.
> 
> I would do something like:
> 
> - if the MDIO bus node has a "gpio" reset property, use it and release
> the device from reset
> - for each available child node:
> 	- if the PHY/MDIO device's node have a "gpio" reset property use it and
> release the PHYs from reset.
> 
> All of this should probably be placed somewhere in drivers/of/of_mdio.c
> and deal with conditional GPIO/RESET controller support.
> 

I agree with this proposal. Just need to spend some time to rework this patch.

cheers,
-roger

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] net: davinci_mdio: add GPIO reset logic Roger Quadros <rogerq@ti.com> - 2017-04-05 10:40 +0200
  Re: [PATCH] net: davinci_mdio: add GPIO reset logic Andrew Lunn <andrew@lunn.ch> - 2017-04-05 17:10 +0200
    Re: [PATCH] net: davinci_mdio: add GPIO reset logic Roger Quadros <rogerq@ti.com> - 2017-04-06 11:30 +0200
      Re: [PATCH] net: davinci_mdio: add GPIO reset logic Andrew Lunn <andrew@lunn.ch> - 2017-04-06 14:10 +0200
        Re: [PATCH] net: davinci_mdio: add GPIO reset logic Roger Quadros <rogerq@ti.com> - 2017-04-06 18:50 +0200
  Re: [PATCH] net: davinci_mdio: add GPIO reset logic David Miller <davem@davemloft.net> - 2017-04-08 16:00 +0200
    Re: [PATCH] net: davinci_mdio: add GPIO reset logic Andrew Lunn <andrew@lunn.ch> - 2017-04-08 17:20 +0200
      Re: [PATCH] net: davinci_mdio: add GPIO reset logic Florian Fainelli <f.fainelli@gmail.com> - 2017-04-08 17:20 +0200
        Re: [PATCH] net: davinci_mdio: add GPIO reset logic Roger Quadros <rogerq@ti.com> - 2017-04-10 10:00 +0200
  [PATCH] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-19 11:30 +0200
    Re: [PATCH] mdio_bus: Issue GPIO RESET to PHYs. Andrew Lunn <andrew@lunn.ch> - 2017-04-19 13:50 +0200
      Re: [PATCH] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-19 14:00 +0200
        Re: [PATCH] mdio_bus: Issue GPIO RESET to PHYs. Andrew Lunn <andrew@lunn.ch> - 2017-04-19 15:40 +0200
          Re: [PATCH] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-20 10:00 +0200
    [PATCH v2] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-20 10:40 +0200
      Re: [PATCH v2] mdio_bus: Issue GPIO RESET to PHYs. Andrew Lunn <andrew@lunn.ch> - 2017-04-20 15:20 +0200
        Re: [PATCH v2] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-20 16:00 +0200
      [PATCH v3 net-next] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-20 16:20 +0200
        Re: [PATCH v3 net-next] mdio_bus: Issue GPIO RESET to PHYs. Andrew Lunn <andrew@lunn.ch> - 2017-04-21 03:20 +0200
        Re: [PATCH v3 net-next] mdio_bus: Issue GPIO RESET to PHYs. Florian Fainelli <f.fainelli@gmail.com> - 2017-04-21 03:30 +0200
          Re: [PATCH v3 net-next] mdio_bus: Issue GPIO RESET to PHYs. Andrew Lunn <andrew@lunn.ch> - 2017-04-21 03:40 +0200
          Re: [PATCH v3 net-next] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-21 10:10 +0200
        [PATCH v4 net-next] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-21 15:20 +0200
          Re: [PATCH v4 net-next] mdio_bus: Issue GPIO RESET to PHYs. Lars-Peter Clausen <lars@metafoo.de> - 2017-04-21 15:40 +0200
            Re: [PATCH v4 net-next] mdio_bus: Issue GPIO RESET to PHYs. Andrew Lunn <andrew@lunn.ch> - 2017-04-24 01:40 +0200
              Re: [PATCH v4 net-next] mdio_bus: Issue GPIO RESET to PHYs. Roger Quadros <rogerq@ti.com> - 2017-04-24 11:10 +0200
                Re: [PATCH v4 net-next] mdio_bus: Issue GPIO RESET to PHYs. Florian Fainelli <f.fainelli@gmail.com> - 2017-04-24 18:40 +0200
          Re: [PATCH v4 net-next] mdio_bus: Issue GPIO RESET to PHYs. David Miller <davem@davemloft.net> - 2017-04-24 18:50 +0200

csiph-web