All of lore.kernel.org
 help / color / mirror / Atom feed
From: kishon@ti.com (Kishon Vijay Abraham I)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv2 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
Date: Tue, 21 Apr 2015 11:07:56 +0530	[thread overview]
Message-ID: <5535E234.8010905@ti.com> (raw)
In-Reply-To: <55355F5B.6060504@broadcom.com>

Hi,

On Tuesday 21 April 2015 01:49 AM, Arun Ramamurthy wrote:
>
>
> On 15-04-15 02:59 AM, Kishon Vijay Abraham I wrote:
>> Hi,
>>
>> On Tuesday 14 April 2015 03:40 AM, Arun Ramamurthy wrote:
>>> Some generic drivers, such as ehci, may use multiple phys and for such
>>> drivers referencing phy(s) by name(s) does not make sense. Instead of
>>> inventing new naming schemes and using custom code to iterate through
>>> them,
>>> such drivers are better of using nameless phy bindings and using this
>>> newly
>>> introduced API to iterate through them.
>>>
>>> Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>> ---
>>>    drivers/phy/phy-core.c  | 32 ++++++++++++++++++++++++++++++++
>>>    include/linux/phy/phy.h |  2 ++
>>>    2 files changed, 34 insertions(+)
>>>
>>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>>> index 3791838..964a84d 100644
>>> --- a/drivers/phy/phy-core.c
>>> +++ b/drivers/phy/phy-core.c
>>> @@ -623,6 +623,38 @@ struct phy *devm_of_phy_get(struct device *dev,
>>> struct device_node *np,
>>>    EXPORT_SYMBOL_GPL(devm_of_phy_get);
>>>
>>>    /**
>>> + * devm_of_phy_get_by_index() - lookup and obtain a reference to a
>>> phy by index.
>>> + * @dev: device that requests this phy
>>> + * @np: node containing the phy
>>> + * @index: index of the phy
>>> + *
>>> + * Gets the phy using _of_phy_get(), and associates a device with it
>>> using
>>> + * devres. On driver detach, release function is invoked on the
>>> devres data,
>>> + * then, devres data is freed.
>>> + *
>>> + */
>>> +struct phy *devm_of_phy_get_by_index(struct device *dev, struct
>>> device_node *np,
>>> +                     int index)
>>> +{
>>> +    struct phy **ptr, *phy;
>>> +
>>> +    ptr = devres_alloc(devm_phy_release, sizeof(*ptr), GFP_KERNEL);
>>> +    if (!ptr)
>>> +        return ERR_PTR(-ENOMEM);
>>> +
>>> +    phy = _of_phy_get(np, index);
>>> +    if (!IS_ERR(phy)) {
>>> +        *ptr = phy;
>>> +        devres_add(dev, ptr);
>>> +    } else {
>>> +        devres_free(ptr);
>>> +    }
>>> +
>>> +    return phy;
>>> +}
>>> +EXPORT_SYMBOL_GPL(devm_of_phy_get_by_index);
>>> +
>>> +/**
>>>     * phy_create() - create a new phy
>>>     * @dev: device that is creating the new phy
>>>     * @node: device node of the phy
>>> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
>>> index a0197fa..ae2ffaf 100644
>>> --- a/include/linux/phy/phy.h
>>> +++ b/include/linux/phy/phy.h
>>> @@ -133,6 +133,8 @@ struct phy *devm_phy_get(struct device *dev, const
>>> char *string);
>>>    struct phy *devm_phy_optional_get(struct device *dev, const char
>>> *string);
>>>    struct phy *devm_of_phy_get(struct device *dev, struct device_node *np,
>>>                    const char *con_id);
>>> +struct phy *devm_of_phy_get_by_index(struct device *dev, struct
>>> device_node *np,
>>> +                     int index);
>>
>> Add stubs for this function too. Also update the Documentation/phy.txt.
>>
> Kishon, I have added stubs for this function in my next patch set.
> However I am still unclear on whether I need to make GENERIC_PHY an
> invisible option or change my "select" to "depend" ? It seems like there
> was no consensus on this? Do you have any final thoughts before i send
> out the next patch set? Thanks

You can follow Arnd's suggestion. You can have a separate patch to change the 
GENERIC_PHY to invisible option and change existing PHY drivers to select 
GENERIC_PHY.

Non-PHY drivers can either use depends on or have no explicit dependency if the 
PHY is optional for that controller.

Thanks
Kishon

WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Arun Ramamurthy <arun.ramamurthy@broadcom.com>,
	Tony Prisk <linux@prisktech.co.nz>,
	Alan Stern <stern@rowland.harvard.edu>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Felipe Balbi <balbi@ti.com>,
	Mathias Nyman <mathias.nyman@linux.intel.com>,
	Paul Bolle <pebolle@tiscali.nl>,
	Thomas Pugliese <thomas.pugliese@gmail.com>,
	Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
	David Mosberger <davidm@egauge.net>,
	Peter Griffin <peter.griffin@linaro.org>,
	Gregory CLEMENT <gregory.clement@free-electrons.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Kevin Hao <haokexin@gmail.com>
Cc: <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-usb@vger.kernel.org>, Dmitry Torokhov <dtor@google.com>,
	Anatol Pomazau <anatol@google.com>,
	Jonathan Richardson <jonathar@broadcom.com>,
	Scott Branden <sbranden@broadcom.com>,
	Ray Jui <rjui@broadcom.com>,
	<bcm-kernel-feedback-list@broadcom.com>
Subject: Re: [PATCHv2 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
Date: Tue, 21 Apr 2015 11:07:56 +0530	[thread overview]
Message-ID: <5535E234.8010905@ti.com> (raw)
In-Reply-To: <55355F5B.6060504@broadcom.com>

Hi,

On Tuesday 21 April 2015 01:49 AM, Arun Ramamurthy wrote:
>
>
> On 15-04-15 02:59 AM, Kishon Vijay Abraham I wrote:
>> Hi,
>>
>> On Tuesday 14 April 2015 03:40 AM, Arun Ramamurthy wrote:
>>> Some generic drivers, such as ehci, may use multiple phys and for such
>>> drivers referencing phy(s) by name(s) does not make sense. Instead of
>>> inventing new naming schemes and using custom code to iterate through
>>> them,
>>> such drivers are better of using nameless phy bindings and using this
>>> newly
>>> introduced API to iterate through them.
>>>
>>> Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>> ---
>>>    drivers/phy/phy-core.c  | 32 ++++++++++++++++++++++++++++++++
>>>    include/linux/phy/phy.h |  2 ++
>>>    2 files changed, 34 insertions(+)
>>>
>>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>>> index 3791838..964a84d 100644
>>> --- a/drivers/phy/phy-core.c
>>> +++ b/drivers/phy/phy-core.c
>>> @@ -623,6 +623,38 @@ struct phy *devm_of_phy_get(struct device *dev,
>>> struct device_node *np,
>>>    EXPORT_SYMBOL_GPL(devm_of_phy_get);
>>>
>>>    /**
>>> + * devm_of_phy_get_by_index() - lookup and obtain a reference to a
>>> phy by index.
>>> + * @dev: device that requests this phy
>>> + * @np: node containing the phy
>>> + * @index: index of the phy
>>> + *
>>> + * Gets the phy using _of_phy_get(), and associates a device with it
>>> using
>>> + * devres. On driver detach, release function is invoked on the
>>> devres data,
>>> + * then, devres data is freed.
>>> + *
>>> + */
>>> +struct phy *devm_of_phy_get_by_index(struct device *dev, struct
>>> device_node *np,
>>> +                     int index)
>>> +{
>>> +    struct phy **ptr, *phy;
>>> +
>>> +    ptr = devres_alloc(devm_phy_release, sizeof(*ptr), GFP_KERNEL);
>>> +    if (!ptr)
>>> +        return ERR_PTR(-ENOMEM);
>>> +
>>> +    phy = _of_phy_get(np, index);
>>> +    if (!IS_ERR(phy)) {
>>> +        *ptr = phy;
>>> +        devres_add(dev, ptr);
>>> +    } else {
>>> +        devres_free(ptr);
>>> +    }
>>> +
>>> +    return phy;
>>> +}
>>> +EXPORT_SYMBOL_GPL(devm_of_phy_get_by_index);
>>> +
>>> +/**
>>>     * phy_create() - create a new phy
>>>     * @dev: device that is creating the new phy
>>>     * @node: device node of the phy
>>> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
>>> index a0197fa..ae2ffaf 100644
>>> --- a/include/linux/phy/phy.h
>>> +++ b/include/linux/phy/phy.h
>>> @@ -133,6 +133,8 @@ struct phy *devm_phy_get(struct device *dev, const
>>> char *string);
>>>    struct phy *devm_phy_optional_get(struct device *dev, const char
>>> *string);
>>>    struct phy *devm_of_phy_get(struct device *dev, struct device_node *np,
>>>                    const char *con_id);
>>> +struct phy *devm_of_phy_get_by_index(struct device *dev, struct
>>> device_node *np,
>>> +                     int index);
>>
>> Add stubs for this function too. Also update the Documentation/phy.txt.
>>
> Kishon, I have added stubs for this function in my next patch set.
> However I am still unclear on whether I need to make GENERIC_PHY an
> invisible option or change my "select" to "depend" ? It seems like there
> was no consensus on this? Do you have any final thoughts before i send
> out the next patch set? Thanks

You can follow Arnd's suggestion. You can have a separate patch to change the 
GENERIC_PHY to invisible option and change existing PHY drivers to select 
GENERIC_PHY.

Non-PHY drivers can either use depends on or have no explicit dependency if the 
PHY is optional for that controller.

Thanks
Kishon

  reply	other threads:[~2015-04-21  5:37 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-13 22:10 [PATCHv2 0/3] Add devm_of_phy_get_by_index and update platform drivers Arun Ramamurthy
2015-04-13 22:10 ` Arun Ramamurthy
2015-04-13 22:10 ` [PATCHv2 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core Arun Ramamurthy
2015-04-13 22:10   ` Arun Ramamurthy
2015-04-15  9:59   ` Kishon Vijay Abraham I
2015-04-15  9:59     ` Kishon Vijay Abraham I
2015-04-20 20:19     ` Arun Ramamurthy
2015-04-20 20:19       ` Arun Ramamurthy
2015-04-21  5:37       ` Kishon Vijay Abraham I [this message]
2015-04-21  5:37         ` Kishon Vijay Abraham I
2015-04-16  7:08   ` Peter Chen
2015-04-16  7:08     ` Peter Chen
2015-04-13 22:10 ` [PATCHv2 2/3] usb: ehci-platform: Use devm_of_phy_get_by_index Arun Ramamurthy
2015-04-13 22:10   ` Arun Ramamurthy
2015-04-14 11:19   ` Greg Kroah-Hartman
2015-04-14 11:19     ` Greg Kroah-Hartman
2015-04-14 11:33     ` Arnd Bergmann
2015-04-14 11:33       ` Arnd Bergmann
2015-04-14 12:37       ` Greg Kroah-Hartman
2015-04-14 12:37         ` Greg Kroah-Hartman
2015-04-14 13:17         ` Arnd Bergmann
2015-04-14 13:17           ` Arnd Bergmann
2015-04-14 13:27           ` Greg Kroah-Hartman
2015-04-14 13:27             ` Greg Kroah-Hartman
2015-04-14 14:21             ` Kishon Vijay Abraham I
2015-04-14 14:21               ` Kishon Vijay Abraham I
2015-04-14 18:05               ` Arun Ramamurthy
2015-04-14 18:05                 ` Arun Ramamurthy
2015-04-14 21:47                 ` Arnd Bergmann
2015-04-14 21:47                   ` Arnd Bergmann
2015-04-21  5:32                   ` Kishon Vijay Abraham I
2015-04-21  5:32                     ` Kishon Vijay Abraham I
2015-04-14 14:23           ` Kishon Vijay Abraham I
2015-04-14 14:23             ` Kishon Vijay Abraham I
2015-04-14 14:41   ` Alan Stern
2015-04-14 14:41     ` Alan Stern
2015-04-14 17:54     ` Arun Ramamurthy
2015-04-14 17:54       ` Arun Ramamurthy
2015-04-15  9:57   ` rajeev kumar
2015-04-15  9:57     ` rajeev kumar
2015-04-15 14:36     ` Alan Stern
2015-04-15 14:36       ` Alan Stern
2015-04-16  4:55       ` rajeev kumar
2015-04-16  4:55         ` rajeev kumar
2015-04-13 22:10 ` [PATCHv2 3/3] usb: ohci-platform: " Arun Ramamurthy
2015-04-13 22:10   ` Arun Ramamurthy

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=5535E234.8010905@ti.com \
    --to=kishon@ti.com \
    --cc=linux-arm-kernel@lists.infradead.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.