All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Roger Quadros <rogerq-l0cyMroinI0@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
Cc: tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	sergei.shtylyov-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org,
	b.zolnierkie-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	linux-ide-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Balaji T K <balajitk-l0cyMroinI0@public.gmane.org>
Subject: Re: [PATCH v3 2/3] ata: ahci_platform: Manage SATA PHY
Date: Wed, 08 Jan 2014 16:55:04 +0100	[thread overview]
Message-ID: <52CD74D8.4080808@redhat.com> (raw)
In-Reply-To: <52CD4F2A.9080301-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

Hi,

On 01/08/2014 02:14 PM, Hans de Goede wrote:
> Hi,
>
> On 01/08/2014 12:28 PM, Roger Quadros wrote:
>> On 01/08/2014 03:35 PM, Arnd Bergmann wrote:
>>> On Wednesday 08 January 2014 15:29:18 Kishon Vijay Abraham I wrote:
>>>>> +     hpriv->phy = devm_phy_get(dev, "sata-phy");
>>>>> +     if (IS_ERR(hpriv->phy)) {
>>>>> +             dev_dbg(dev, "can't get sata-phy\n");
>>>>> +             /* return only if -EPROBE_DEFER */
>>>>> +             if (PTR_ERR(hpriv->phy) == -EPROBE_DEFER) {
>>>>> +                     rc = -EPROBE_DEFER;
>>>>> +                     goto disable_unprepare_clk;
>>>>> +             }
>>>>> +     }
>>>
>>> This should probably check for all errors except "not present"
>>> rather than checking for -EPROBE_DEFER. We want to abort the
>>> probe function for deferred probe as well as the case where we
>>> a PHY was listed but isn't working properly.
>>
>> OK.
>>
>>>
>>>>> +     if (!IS_ERR(hpriv->phy)) {
>>>>> +             phy_init(hpriv->phy);
>>>>
>>>> Don't we have to check the return values of phy_init and phy_power_on? Is it
>>>> not needed because it is an optional phy?
>>>
>>> Right. I think we should set hpriv->phy to NULL if it's not there and
>>> then call the functions only if it's actually present but bail out on
>>> an error.
>>
>> OK. How does this look?
>>
>> hpriv->phy = devm_phy_get(dev, "sata-phy");
>> if (IS_ERR(hpriv->phy)) {
>>     if (PTR_ERR(hpriv->phy) == -ENODEV)
>>         goto continue;
>
> -ENODEV is not the right errno to check for,
> if there is no phy specified in the dt then
> you will get -EINVAL (no phy-names property) or
> -ENODATA (phy-names property is there but name
> not found).
>
> Also you don't want to log an error on
> PROBE_DEFERRAL.
>
> Here is what I've for similar code I'm working on
> for ehci-platform.c and ohci-platform.c :
>
>                  priv->phy = devm_phy_get(&dev->dev, "phy0");
>                  if (IS_ERR(priv->phy)) {
>                          err = PTR_ERR(priv->phy);
>                          if (err != -EINVAL && err != -ENODATA) {
>                                  if (err != -EPROBE_DEFER)
>                                          dev_err(&dev->dev,
>                                                  "Error getting phy\n");
>                                  goto err_put_hcd;
>                          }
>                          priv->phy = NULL;
>                  }

Scrap that I was reading the code wrong. Indeed if there is no
devicetree phy info it will return -ENODEV. Actually it will only ever
return one of -ENOPROBE or -ENODEV, so only checking for -ENOPROBE and
then fail silently be enough. This also has the advantage of being
future proof, if the error code for no phy found ever changes,
things won't break.

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Hans de Goede <hdegoede@redhat.com>
To: Roger Quadros <rogerq@ti.com>, Arnd Bergmann <arnd@arndb.de>,
	Kishon Vijay Abraham I <kishon@ti.com>
Cc: tj@kernel.org, sergei.shtylyov@cogentembedded.com,
	b.zolnierkie@samsung.com, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	Balaji T K <balajitk@ti.com>
Subject: Re: [PATCH v3 2/3] ata: ahci_platform: Manage SATA PHY
Date: Wed, 08 Jan 2014 16:55:04 +0100	[thread overview]
Message-ID: <52CD74D8.4080808@redhat.com> (raw)
In-Reply-To: <52CD4F2A.9080301@redhat.com>

Hi,

On 01/08/2014 02:14 PM, Hans de Goede wrote:
> Hi,
>
> On 01/08/2014 12:28 PM, Roger Quadros wrote:
>> On 01/08/2014 03:35 PM, Arnd Bergmann wrote:
>>> On Wednesday 08 January 2014 15:29:18 Kishon Vijay Abraham I wrote:
>>>>> +     hpriv->phy = devm_phy_get(dev, "sata-phy");
>>>>> +     if (IS_ERR(hpriv->phy)) {
>>>>> +             dev_dbg(dev, "can't get sata-phy\n");
>>>>> +             /* return only if -EPROBE_DEFER */
>>>>> +             if (PTR_ERR(hpriv->phy) == -EPROBE_DEFER) {
>>>>> +                     rc = -EPROBE_DEFER;
>>>>> +                     goto disable_unprepare_clk;
>>>>> +             }
>>>>> +     }
>>>
>>> This should probably check for all errors except "not present"
>>> rather than checking for -EPROBE_DEFER. We want to abort the
>>> probe function for deferred probe as well as the case where we
>>> a PHY was listed but isn't working properly.
>>
>> OK.
>>
>>>
>>>>> +     if (!IS_ERR(hpriv->phy)) {
>>>>> +             phy_init(hpriv->phy);
>>>>
>>>> Don't we have to check the return values of phy_init and phy_power_on? Is it
>>>> not needed because it is an optional phy?
>>>
>>> Right. I think we should set hpriv->phy to NULL if it's not there and
>>> then call the functions only if it's actually present but bail out on
>>> an error.
>>
>> OK. How does this look?
>>
>> hpriv->phy = devm_phy_get(dev, "sata-phy");
>> if (IS_ERR(hpriv->phy)) {
>>     if (PTR_ERR(hpriv->phy) == -ENODEV)
>>         goto continue;
>
> -ENODEV is not the right errno to check for,
> if there is no phy specified in the dt then
> you will get -EINVAL (no phy-names property) or
> -ENODATA (phy-names property is there but name
> not found).
>
> Also you don't want to log an error on
> PROBE_DEFERRAL.
>
> Here is what I've for similar code I'm working on
> for ehci-platform.c and ohci-platform.c :
>
>                  priv->phy = devm_phy_get(&dev->dev, "phy0");
>                  if (IS_ERR(priv->phy)) {
>                          err = PTR_ERR(priv->phy);
>                          if (err != -EINVAL && err != -ENODATA) {
>                                  if (err != -EPROBE_DEFER)
>                                          dev_err(&dev->dev,
>                                                  "Error getting phy\n");
>                                  goto err_put_hcd;
>                          }
>                          priv->phy = NULL;
>                  }

Scrap that I was reading the code wrong. Indeed if there is no
devicetree phy info it will return -ENODEV. Actually it will only ever
return one of -ENOPROBE or -ENODEV, so only checking for -ENOPROBE and
then fail silently be enough. This also has the advantage of being
future proof, if the error code for no phy found ever changes,
things won't break.

Regards,

Hans

  parent reply	other threads:[~2014-01-08 15:55 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-08  9:47 [PATCH v3 0/3] ata: ahci_platform: Add PHY support and OMAP support Roger Quadros
2014-01-08  9:47 ` Roger Quadros
2014-01-08  9:47 ` [PATCH v3 1/3] ata: ahci_platform: Update DT compatible list Roger Quadros
2014-01-08  9:47   ` Roger Quadros
2014-01-08  9:47 ` [PATCH v3 2/3] ata: ahci_platform: Manage SATA PHY Roger Quadros
2014-01-08  9:47   ` Roger Quadros
     [not found]   ` <1389174428-31414-3-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2014-01-08  9:59     ` Kishon Vijay Abraham I
2014-01-08  9:59       ` Kishon Vijay Abraham I
     [not found]       ` <52CD2176.6050102-l0cyMroinI0@public.gmane.org>
2014-01-08 10:05         ` Arnd Bergmann
2014-01-08 10:05           ` Arnd Bergmann
2014-01-08 11:28           ` Roger Quadros
2014-01-08 11:28             ` Roger Quadros
2014-01-08 11:33             ` Roger Quadros
2014-01-08 11:33               ` Roger Quadros
2014-01-08 11:46             ` Arnd Bergmann
2014-01-09  6:26               ` Roger Quadros
2014-01-09  6:26                 ` Roger Quadros
2014-01-09 10:05                 ` Arnd Bergmann
2014-01-08 13:14             ` Hans de Goede
     [not found]               ` <52CD4F2A.9080301-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-08 15:55                 ` Hans de Goede [this message]
2014-01-08 15:55                   ` Hans de Goede
2014-01-08  9:47 ` [PATCH v3 3/3] ata: ahci_platform: runtime resume the device before use Roger Quadros
2014-01-08  9:47   ` Roger Quadros

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=52CD74D8.4080808@redhat.com \
    --to=hdegoede-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=b.zolnierkie-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=balajitk-l0cyMroinI0@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=kishon-l0cyMroinI0@public.gmane.org \
    --cc=linux-ide-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=rogerq-l0cyMroinI0@public.gmane.org \
    --cc=sergei.shtylyov-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org \
    --cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.