From: Sylwester Nawrocki <s.nawrocki@samsung.com>
To: Kishon Vijay Abraham I <kishon@ti.com>
Cc: grant.likely@linaro.org, tony@atomide.com, balbi@ti.com,
arnd@arndb.de, swarren@nvidia.com, linux-kernel@vger.kernel.org,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-usb@vger.kernel.org, rob.herring@calxeda.com,
rob@landley.net, b-cousson@ti.com, linux@arm.linux.org.uk,
gregkh@linuxfoundation.org, benoit.cousson@linaro.org,
mchehab@redhat.com, akpm@linux-foundation.org, cesarb@cesarb.net,
davem@davemloft.net, rnayak@ti.com, shawn.guo@linaro.org,
santosh.shilimkar@ti.com, devicetree-discuss@lists.ozlabs.org,
linux-doc@vger.kernel.org, nsekhar@ti.com
Subject: Re: [PATCH v6 1/9] drivers: phy: add generic PHY framework
Date: Tue, 04 Jun 2013 15:43:18 +0200 [thread overview]
Message-ID: <51ADEEF6.1030200@samsung.com> (raw)
In-Reply-To: <51ADDCD9.8080400@ti.com>
Hi,
On 06/04/2013 02:26 PM, Kishon Vijay Abraham I wrote:
>>> +static inline int phy_init(struct phy *phy)
>>> +{
>>> + pm_runtime_get_sync(&phy->dev);
>>
>> Hmm, no need to check return value here ? Also it looks a bit unexpected to
>
> I purposely dint check the return values in order to support platforms
> that don’t enable pm_runtime.
Then I guess this should be called conditionally and any errors returned
if runtime PM is enabled ? Not sure if pm_runtime_enabled() would be
helpful such situation.
>> possibly have runtime_resume callback of a PHY device called before ops->init()
>> call ? It seems a bit unclear what the purpose of init() callback is.
>
> Not really. Anything that is used to initialize the PHY (internal
> configuration) can go in phy_init. Usually in runtime_resume callback,
> optional functional clocks are enabled and also in some cases context
> restore is done. So it really makes sense to enable clocks/module
> (pm_runtime_get_sync) before doing a PHY configuration (phy_init).
OK, that makes sense. All PHY device resources must be prepared anyway
before a PHY object is registered with the PHY core.
>>> + if (phy->ops->init)
>>> + return phy->ops->init(phy);
>>> +
>>> + return -EINVAL;
>>> +}
>>> +
>>> +static inline int phy_exit(struct phy *phy)
>>> +{
>>> + int ret = -EINVAL;
>>> +
>>> + if (phy->ops->exit)
>>> + ret = phy->ops->exit(phy);
>>> +
>>> + pm_runtime_put_sync(&phy->dev);
>>> +
>>> + return ret;
>>> +}
>>
>> Do phy_init/phy_exit need to be mandatory ? What if there is really
>
> No. phy_init/phy_exit is not mandatory at all.
>> nothing to do in those callbacks ? Perhaps -ENOIOCTLCMD should be
>> returned if a callback is not implemented, so PHY users can recognize
>> such situation and proceed ?
>
> So currently these APIs return -EINVAL if these callbacks are not
> populated which is good enough IMHO.
But -EINVAL could be well returned from the callback function. Perhaps
ENOTSUPP could be used instead ?
Thanks,
Sylwester
WARNING: multiple messages have this Message-ID (diff)
From: s.nawrocki@samsung.com (Sylwester Nawrocki)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 1/9] drivers: phy: add generic PHY framework
Date: Tue, 04 Jun 2013 15:43:18 +0200 [thread overview]
Message-ID: <51ADEEF6.1030200@samsung.com> (raw)
In-Reply-To: <51ADDCD9.8080400@ti.com>
Hi,
On 06/04/2013 02:26 PM, Kishon Vijay Abraham I wrote:
>>> +static inline int phy_init(struct phy *phy)
>>> +{
>>> + pm_runtime_get_sync(&phy->dev);
>>
>> Hmm, no need to check return value here ? Also it looks a bit unexpected to
>
> I purposely dint check the return values in order to support platforms
> that don?t enable pm_runtime.
Then I guess this should be called conditionally and any errors returned
if runtime PM is enabled ? Not sure if pm_runtime_enabled() would be
helpful such situation.
>> possibly have runtime_resume callback of a PHY device called before ops->init()
>> call ? It seems a bit unclear what the purpose of init() callback is.
>
> Not really. Anything that is used to initialize the PHY (internal
> configuration) can go in phy_init. Usually in runtime_resume callback,
> optional functional clocks are enabled and also in some cases context
> restore is done. So it really makes sense to enable clocks/module
> (pm_runtime_get_sync) before doing a PHY configuration (phy_init).
OK, that makes sense. All PHY device resources must be prepared anyway
before a PHY object is registered with the PHY core.
>>> + if (phy->ops->init)
>>> + return phy->ops->init(phy);
>>> +
>>> + return -EINVAL;
>>> +}
>>> +
>>> +static inline int phy_exit(struct phy *phy)
>>> +{
>>> + int ret = -EINVAL;
>>> +
>>> + if (phy->ops->exit)
>>> + ret = phy->ops->exit(phy);
>>> +
>>> + pm_runtime_put_sync(&phy->dev);
>>> +
>>> + return ret;
>>> +}
>>
>> Do phy_init/phy_exit need to be mandatory ? What if there is really
>
> No. phy_init/phy_exit is not mandatory at all.
>> nothing to do in those callbacks ? Perhaps -ENOIOCTLCMD should be
>> returned if a callback is not implemented, so PHY users can recognize
>> such situation and proceed ?
>
> So currently these APIs return -EINVAL if these callbacks are not
> populated which is good enough IMHO.
But -EINVAL could be well returned from the callback function. Perhaps
ENOTSUPP could be used instead ?
Thanks,
Sylwester
next prev parent reply other threads:[~2013-06-04 13:43 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-29 10:03 [PATCH v6 0/9] Generic PHY Framework Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 1/9] drivers: phy: add generic PHY framework Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
[not found] ` <1367229812-30574-2-git-send-email-kishon-l0cyMroinI0@public.gmane.org>
2013-05-28 22:37 ` Sylwester Nawrocki
2013-05-28 22:37 ` Sylwester Nawrocki
2013-05-28 22:37 ` Sylwester Nawrocki
2013-05-29 5:38 ` Kishon Vijay Abraham I
2013-05-29 5:38 ` Kishon Vijay Abraham I
2013-05-29 5:38 ` Kishon Vijay Abraham I
2013-06-04 10:19 ` Sylwester Nawrocki
2013-06-04 10:19 ` Sylwester Nawrocki
2013-06-04 10:21 ` Sylwester Nawrocki
2013-06-04 10:21 ` Sylwester Nawrocki
2013-06-04 10:21 ` Sylwester Nawrocki
[not found] ` <51ADBF9B.5060403-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-06-04 12:26 ` Kishon Vijay Abraham I
2013-06-04 12:26 ` Kishon Vijay Abraham I
2013-06-04 12:26 ` Kishon Vijay Abraham I
2013-06-04 13:43 ` Sylwester Nawrocki [this message]
2013-06-04 13:43 ` Sylwester Nawrocki
[not found] ` <51ADEEF6.1030200-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-06-05 5:25 ` Kishon Vijay Abraham I
2013-06-05 5:25 ` Kishon Vijay Abraham I
2013-06-05 5:25 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 2/9] usb: phy: omap-usb2: use the new " Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 4/9] usb: phy: twl4030: twl4030 shouldn't be subsys_initcall Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 6/9] ARM: dts: omap: update usb_otg_hs data Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 7/9] usb: musb: omap2430: use the new generic PHY framework Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
[not found] ` <1367229812-30574-1-git-send-email-kishon-l0cyMroinI0@public.gmane.org>
2013-04-29 10:03 ` [PATCH v6 3/9] usb: phy: twl4030: " Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 5/9] ARM: OMAP: USB: Add phy binding information Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 8/9] usb: phy: omap-usb2: remove *set_suspend* callback from omap-usb2 Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` [PATCH v6 9/9] usb: phy: twl4030-usb: remove *set_suspend* and *phy_init* ops Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-04-29 10:03 ` Kishon Vijay Abraham I
2013-05-21 5:01 ` [PATCH v6 0/9] Generic PHY Framework Kishon Vijay Abraham I
2013-05-21 5:01 ` Kishon Vijay Abraham I
2013-05-21 5:01 ` Kishon Vijay Abraham I
2013-05-28 6:35 ` Kishon Vijay Abraham I
2013-05-28 6:35 ` Kishon Vijay Abraham I
2013-05-28 6:35 ` Kishon Vijay Abraham I
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=51ADEEF6.1030200@samsung.com \
--to=s.nawrocki@samsung.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=b-cousson@ti.com \
--cc=balbi@ti.com \
--cc=benoit.cousson@linaro.org \
--cc=cesarb@cesarb.net \
--cc=davem@davemloft.net \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=grant.likely@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=kishon@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mchehab@redhat.com \
--cc=nsekhar@ti.com \
--cc=rnayak@ti.com \
--cc=rob.herring@calxeda.com \
--cc=rob@landley.net \
--cc=santosh.shilimkar@ti.com \
--cc=shawn.guo@linaro.org \
--cc=swarren@nvidia.com \
--cc=tony@atomide.com \
/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.