From: Sebastian Frias <sf84@laposte.net>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Daniel Mack" <daniel@zonque.org>
Cc: "David S. Miller" <davem@davemloft.net>,
netdev@vger.kernel.org, lkml <linux-kernel@vger.kernel.org>,
mason <slash.tmp@free.fr>,
Florian Fainelli <f.fainelli@gmail.com>,
Mans Rullgard <mans@mansr.com>,
Fabio Estevam <festevam@gmail.com>,
Martin Blumenstingl <martin.blumenstingl@gmail.com>,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH] net: phy: at803x: don't depend on GPIOLIB
Date: Fri, 18 Mar 2016 16:56:21 +0100 [thread overview]
Message-ID: <56EC2525.8000706@laposte.net> (raw)
In-Reply-To: <20160318125455.GN4292@pengutronix.de>
Hi Uwe, Daniel,
On 03/18/2016 01:54 PM, Uwe Kleine-König wrote:
> [expand cc a bit more]
>
> Hello,
>
> On Wed, Mar 16, 2016 at 06:25:59PM +0100, Sebastian Frias wrote:
>> Commit 687908c2b649 ("net: phy: at803x: simplify using
>> devm_gpiod_get_optional and its 4th argument") introduced a dependency
>> on GPIOLIB that was not there before.
>>
>> This commit removes such dependency by checking the return code and
>> comparing it against ENOSYS which is returned when GPIOLIB is not
>> selected.
>>
>> Fixes: 687908c2b649 ("net: phy: at803x: simplify using devm_gpiod_get_optional and its 4th argument")
>>
>> Signed-off-by: Sebastian Frias <sf84@laposte.net>
>> ---
>> drivers/net/phy/at803x.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
>> index 2174ec9..88b7ff3 100644
>> --- a/drivers/net/phy/at803x.c
>> +++ b/drivers/net/phy/at803x.c
>> @@ -252,7 +252,9 @@ static int at803x_probe(struct phy_device *phydev)
>> return -ENOMEM;
>>
>> gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
>> - if (IS_ERR(gpiod_reset))
>> + if (PTR_ERR(gpiod_reset) == -ENOSYS)
>> + gpiod_reset = NULL;
>> + else if (IS_ERR(gpiod_reset))
>
> this isn't better either (IMHO it's worse, but maybe this is debatable
> and also depends on your POV).
Well, from the code, the reset hack is only required when the PHY is
ATH8030_PHY_ID, right?
However, such change was introduced by Daniel Mack on commit 13a56b449325.
Hopefully he can chime in and give his opinion on this.
Daniel, while on the subject, I have a question for you:
Change 2b8f2a28eac1 introduced "link_status_notify" callback which is
called systematically on the PHY state machine.
Any reason to make the call systematic as opposed to let say:
if (phydev->state != old_state) {
if (phydev->drv->link_change_notify)
phydev->drv->link_change_notify(phydev);
}
(it does means that the callback would be called after the state machine
processing though)
>
> With 687908c2b649 I made kernels without GPIOLIB fail to bind this
> device. I admit this is not maximally nice.
I see, that was not clear from the commit message, sorry.
>
> Your change makes the driver bind in this case again and then the reset
> gpio isn't handled at all which might result in a later and harder to
> debug error.
>
> The better approach to fix your problem is: make the driver depend (or
> force) on GPIOLIB.
It was one of the solutions I had in mind, but:
- since the dependency on GPIOLIB was not included on the patch
- and given that the previous code had provision to work without GPIO
I thought it was an overlook.
>Or alternatively, drop reset-handling from the
> driver.
>
> From a driver perspecitive, it would be nice if devm_gpiod_get_optional
> returned NULL iff the respective gpio isn't specified even with
> GPIOLIB=n, but this isn't sensible either because it would result in
> quite some gpiolib code to not being conditionally compiled on
> CONFIG_GPIOLIB any more.
Let's say that was the case, what would the PHY code do?
I mean, it did not get a GPIO, whether it was because GPIOLIB=n or
because there's no 'reset' GPIO attached
Shall it fail? Shall it continue in a sort of degraded mode? Shall it warn?
Because that's the real question here.
What would you think of making at803x_link_change_notify() print a
message every time it should do a reset but does not has a way to do it?
I can make such change to my patch if everybody agrees on it.
By the way, in that case, can somebody suggest a way to print such warning?
Would printk() be ok or should I use dev_dbg() ?
Best regards,
Sebastian
>
> Best regards
> Uwe
>
next prev parent reply other threads:[~2016-03-18 16:19 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-16 17:25 [PATCH] net: phy: at803x: don't depend on GPIOLIB Sebastian Frias
2016-03-18 12:12 ` Mason
2016-03-18 12:54 ` Uwe Kleine-König
2016-03-18 15:56 ` Sebastian Frias [this message]
2016-03-18 19:12 ` Uwe Kleine-König
2016-03-18 19:31 ` Mason
2016-03-18 20:11 ` Uwe Kleine-König
2016-03-18 20:44 ` Mason
2016-03-19 10:01 ` Måns Rullgård
2016-03-21 12:48 ` Sebastian Frias
2016-03-21 13:54 ` Uwe Kleine-König
2016-03-21 15:36 ` Sebastian Frias
2016-03-21 20:12 ` Uwe Kleine-König
2016-03-22 14:34 ` Sebastian Frias
2016-03-22 19:42 ` Uwe Kleine-König
2016-03-23 10:12 ` Sebastian Frias
2016-03-23 10:49 ` [PATCH] net: phy: at803x: Request 'reset' GPIO only for AT8030 PHY Sebastian Frias
2016-03-23 17:40 ` David Miller
2016-03-23 19:42 ` Sergei Shtylyov
2016-03-24 9:55 ` Sebastian Frias
2016-03-24 10:10 ` Sebastian Frias
2016-03-24 13:40 ` Sergei Shtylyov
2016-03-23 10:17 ` [PATCH] net: phy: at803x: don't depend on GPIOLIB Mason
2016-03-23 10:39 ` Sergei Shtylyov
2016-03-23 10:55 ` Sebastian Frias
2016-03-22 14:34 ` Sebastian Frias
2016-03-21 20:15 ` Sergei Shtylyov
2016-03-21 20:41 ` Uwe Kleine-König
2016-03-21 21:56 ` Sergei Shtylyov
2016-03-22 14:53 ` Sebastian Frias
2016-03-22 14:39 ` Sebastian Frias
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56EC2525.8000706@laposte.net \
--to=sf84@laposte.net \
--cc=daniel@zonque.org \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=festevam@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mans@mansr.com \
--cc=martin.blumenstingl@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=slash.tmp@free.fr \
--cc=u.kleine-koenig@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox