* [PATCH 0/3] Add devm_of_phy_get_by_index and update platform drivers
@ 2015-03-20 21:07 Arun Ramamurthy
2015-03-20 21:07 ` [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core Arun Ramamurthy
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Arun Ramamurthy @ 2015-03-20 21:07 UTC (permalink / raw)
To: linux-arm-kernel
This patch set adds a new API to get phy by index when multiple
phys are present. This patch is based on discussion with Arnd Bergmann
about dt bindings for multiple phys.
Arun Ramamurthy (3):
phy: core: Add devm_of_phy_get_by_index to phy-core
usb: ehci-platform: Use devm_of_phy_get_by_index
usb: ohci-platform: Use devm_of_phy_get_by_index
drivers/phy/phy-core.c | 30 ++++++++++++++++++++++++++++++
drivers/usb/host/ehci-platform.c | 20 ++++----------------
drivers/usb/host/ohci-platform.c | 20 ++++----------------
include/linux/phy/phy.h | 2 ++
4 files changed, 40 insertions(+), 32 deletions(-)
--
2.3.2
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
2015-03-20 21:07 [PATCH 0/3] Add devm_of_phy_get_by_index and update platform drivers Arun Ramamurthy
@ 2015-03-20 21:07 ` Arun Ramamurthy
2015-03-20 21:26 ` Dmitry Torokhov
2015-03-20 21:07 ` [PATCH 2/3] usb: ehci-platform: Use devm_of_phy_get_by_index Arun Ramamurthy
2015-03-20 21:07 ` [PATCH 3/3] usb: ohci-platform: " Arun Ramamurthy
2 siblings, 1 reply; 11+ messages in thread
From: Arun Ramamurthy @ 2015-03-20 21:07 UTC (permalink / raw)
To: linux-arm-kernel
Adding devm_of_phy_get_by_index to get phys by supplying an index
and not a phy name when multiple phys are declared
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
---
drivers/phy/phy-core.c | 30 ++++++++++++++++++++++++++++++
include/linux/phy/phy.h | 2 ++
2 files changed, 32 insertions(+)
diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
index a12d353..0c03876 100644
--- a/drivers/phy/phy-core.c
+++ b/drivers/phy/phy-core.c
@@ -622,6 +622,36 @@ 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;
+}
+/**
* 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);
void phy_put(struct phy *phy);
void devm_phy_put(struct device *dev, struct phy *phy);
struct phy *of_phy_get(struct device_node *np, const char *con_id);
--
2.3.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/3] usb: ehci-platform: Use devm_of_phy_get_by_index
2015-03-20 21:07 [PATCH 0/3] Add devm_of_phy_get_by_index and update platform drivers Arun Ramamurthy
2015-03-20 21:07 ` [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core Arun Ramamurthy
@ 2015-03-20 21:07 ` Arun Ramamurthy
2015-03-20 21:40 ` Dmitry Torokhov
2015-03-20 21:07 ` [PATCH 3/3] usb: ohci-platform: " Arun Ramamurthy
2 siblings, 1 reply; 11+ messages in thread
From: Arun Ramamurthy @ 2015-03-20 21:07 UTC (permalink / raw)
To: linux-arm-kernel
Getting phys by index instead of phy names so that the dt
bindings phy-names remain consistent when multiple phys are present
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
---
drivers/usb/host/ehci-platform.c | 20 ++++----------------
1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
index d8a75a5..8b0c7ae 100644
--- a/drivers/usb/host/ehci-platform.c
+++ b/drivers/usb/host/ehci-platform.c
@@ -154,7 +154,6 @@ static int ehci_platform_probe(struct platform_device *dev)
struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev);
struct ehci_platform_priv *priv;
struct ehci_hcd *ehci;
- const char *phy_name;
int err, irq, phy_num, clk = 0;
if (usb_disabled())
@@ -212,21 +211,10 @@ static int ehci_platform_probe(struct platform_device *dev)
return -ENOMEM;
for (phy_num = 0; phy_num < priv->num_phys; phy_num++) {
- err = of_property_read_string_index(
- dev->dev.of_node,
- "phy-names", phy_num,
- &phy_name);
-
- if (err < 0) {
- if (priv->num_phys > 1) {
- dev_err(&dev->dev, "phy-names not provided");
- goto err_put_hcd;
- } else
- phy_name = "usb";
- }
-
- priv->phys[phy_num] = devm_phy_get(&dev->dev,
- phy_name);
+ priv->phys[phy_num] =
+ devm_of_phy_get_by_index(&dev->dev,
+ dev->dev.of_node,
+ phy_num);
if (IS_ERR(priv->phys[phy_num])) {
err = PTR_ERR(priv->phys[phy_num]);
if ((priv->num_phys > 1) ||
--
2.3.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/3] usb: ohci-platform: Use devm_of_phy_get_by_index
2015-03-20 21:07 [PATCH 0/3] Add devm_of_phy_get_by_index and update platform drivers Arun Ramamurthy
2015-03-20 21:07 ` [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core Arun Ramamurthy
2015-03-20 21:07 ` [PATCH 2/3] usb: ehci-platform: Use devm_of_phy_get_by_index Arun Ramamurthy
@ 2015-03-20 21:07 ` Arun Ramamurthy
2 siblings, 0 replies; 11+ messages in thread
From: Arun Ramamurthy @ 2015-03-20 21:07 UTC (permalink / raw)
To: linux-arm-kernel
Getting phys by index instead of phy names so that the dt
bindings phy-names remain consistent when multiple phys are present
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
---
drivers/usb/host/ohci-platform.c | 20 ++++----------------
1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
index 185ceee..8b2ec4e 100644
--- a/drivers/usb/host/ohci-platform.c
+++ b/drivers/usb/host/ohci-platform.c
@@ -123,7 +123,6 @@ static int ohci_platform_probe(struct platform_device *dev)
struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev);
struct ohci_platform_priv *priv;
struct ohci_hcd *ohci;
- const char *phy_name;
int err, irq, phy_num, clk = 0;
if (usb_disabled())
@@ -182,21 +181,10 @@ static int ohci_platform_probe(struct platform_device *dev)
return -ENOMEM;
for (phy_num = 0; phy_num < priv->num_phys; phy_num++) {
- err = of_property_read_string_index(
- dev->dev.of_node,
- "phy-names", phy_num,
- &phy_name);
-
- if (err < 0) {
- if (priv->num_phys > 1) {
- dev_err(&dev->dev, "phy-names not provided");
- goto err_put_hcd;
- } else
- phy_name = "usb";
- }
-
- priv->phys[phy_num] = devm_phy_get(&dev->dev,
- phy_name);
+ priv->phys[phy_num] =
+ devm_of_phy_get_by_index(&dev->dev,
+ dev->dev.of_node,
+ phy_num);
if (IS_ERR(priv->phys[phy_num])) {
err = PTR_ERR(priv->phys[phy_num]);
if ((priv->num_phys > 1) ||
--
2.3.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
2015-03-20 21:07 ` [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core Arun Ramamurthy
@ 2015-03-20 21:26 ` Dmitry Torokhov
2015-03-20 21:29 ` Arun Ramamurthy
0 siblings, 1 reply; 11+ messages in thread
From: Dmitry Torokhov @ 2015-03-20 21:26 UTC (permalink / raw)
To: linux-arm-kernel
Hi Arun,
On Fri, Mar 20, 2015 at 02:07:08PM -0700, Arun Ramamurthy wrote:
> Adding devm_of_phy_get_by_index to get phys by supplying an index
> and not a phy name when multiple phys are declared
>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
> ---
> drivers/phy/phy-core.c | 30 ++++++++++++++++++++++++++++++
> include/linux/phy/phy.h | 2 ++
> 2 files changed, 32 insertions(+)
>
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index a12d353..0c03876 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -622,6 +622,36 @@ 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;
> +}
You want EXPORT_SYMBOL_GPL(devm_of_phy_get_by_index); here.
> +/**
> * 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);
> void phy_put(struct phy *phy);
> void devm_phy_put(struct device *dev, struct phy *phy);
> struct phy *of_phy_get(struct device_node *np, const char *con_id);
> --
> 2.3.2
>
--
Dmitry
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
2015-03-20 21:26 ` Dmitry Torokhov
@ 2015-03-20 21:29 ` Arun Ramamurthy
2015-03-25 22:03 ` Kishon Vijay Abraham I
0 siblings, 1 reply; 11+ messages in thread
From: Arun Ramamurthy @ 2015-03-20 21:29 UTC (permalink / raw)
To: linux-arm-kernel
On 15-03-20 02:26 PM, Dmitry Torokhov wrote:
> Hi Arun,
>
> On Fri, Mar 20, 2015 at 02:07:08PM -0700, Arun Ramamurthy wrote:
>> Adding devm_of_phy_get_by_index to get phys by supplying an index
>> and not a phy name when multiple phys are declared
>>
>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>> Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
>> ---
>> drivers/phy/phy-core.c | 30 ++++++++++++++++++++++++++++++
>> include/linux/phy/phy.h | 2 ++
>> 2 files changed, 32 insertions(+)
>>
>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>> index a12d353..0c03876 100644
>> --- a/drivers/phy/phy-core.c
>> +++ b/drivers/phy/phy-core.c
>> @@ -622,6 +622,36 @@ 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;
>> +}
>
> You want EXPORT_SYMBOL_GPL(devm_of_phy_get_by_index); here.
>
Ah, I missed that! Thanks Dmitry, Will update in next patch after any
other comments.
>> +/**
>> * 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);
>> void phy_put(struct phy *phy);
>> void devm_phy_put(struct device *dev, struct phy *phy);
>> struct phy *of_phy_get(struct device_node *np, const char *con_id);
>> --
>> 2.3.2
>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/3] usb: ehci-platform: Use devm_of_phy_get_by_index
2015-03-20 21:07 ` [PATCH 2/3] usb: ehci-platform: Use devm_of_phy_get_by_index Arun Ramamurthy
@ 2015-03-20 21:40 ` Dmitry Torokhov
0 siblings, 0 replies; 11+ messages in thread
From: Dmitry Torokhov @ 2015-03-20 21:40 UTC (permalink / raw)
To: linux-arm-kernel
Hi Arun,
On Fri, Mar 20, 2015 at 02:07:09PM -0700, Arun Ramamurthy wrote:
> Getting phys by index instead of phy names so that the dt
> bindings phy-names remain consistent when multiple phys are present
>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
> ---
> drivers/usb/host/ehci-platform.c | 20 ++++----------------
> 1 file changed, 4 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
> index d8a75a5..8b0c7ae 100644
> --- a/drivers/usb/host/ehci-platform.c
> +++ b/drivers/usb/host/ehci-platform.c
> @@ -154,7 +154,6 @@ static int ehci_platform_probe(struct platform_device *dev)
> struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev);
> struct ehci_platform_priv *priv;
> struct ehci_hcd *ehci;
> - const char *phy_name;
> int err, irq, phy_num, clk = 0;
>
> if (usb_disabled())
> @@ -212,21 +211,10 @@ static int ehci_platform_probe(struct platform_device *dev)
> return -ENOMEM;
>
> for (phy_num = 0; phy_num < priv->num_phys; phy_num++) {
> - err = of_property_read_string_index(
> - dev->dev.of_node,
> - "phy-names", phy_num,
> - &phy_name);
> -
> - if (err < 0) {
> - if (priv->num_phys > 1) {
> - dev_err(&dev->dev, "phy-names not provided");
> - goto err_put_hcd;
> - } else
> - phy_name = "usb";
> - }
> -
> - priv->phys[phy_num] = devm_phy_get(&dev->dev,
> - phy_name);
> + priv->phys[phy_num] =
> + devm_of_phy_get_by_index(&dev->dev,
> + dev->dev.of_node,
> + phy_num);
> if (IS_ERR(priv->phys[phy_num])) {
> err = PTR_ERR(priv->phys[phy_num]);
> if ((priv->num_phys > 1) ||
While you are fixing this can you please correct the wrong indentation
level and clean up that whole weird business of treating "phy" not
present in DT in a special way and, stuffing NULL pointer in priv->phys,
and checking it for NULL elsewhere?
Thanks!
--
Dmitry
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
2015-03-20 21:29 ` Arun Ramamurthy
@ 2015-03-25 22:03 ` Kishon Vijay Abraham I
2015-03-26 0:04 ` Arun Ramamurthy
0 siblings, 1 reply; 11+ messages in thread
From: Kishon Vijay Abraham I @ 2015-03-25 22:03 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
On Saturday 21 March 2015 02:59 AM, Arun Ramamurthy wrote:
>
>
> On 15-03-20 02:26 PM, Dmitry Torokhov wrote:
>> Hi Arun,
>>
>> On Fri, Mar 20, 2015 at 02:07:08PM -0700, Arun Ramamurthy wrote:
>>> Adding devm_of_phy_get_by_index to get phys by supplying an index
>>> and not a phy name when multiple phys are declared
I think a bit more explanation on why get_by_index is needed here.
>>>
>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>> Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
>>> ---
>>> drivers/phy/phy-core.c | 30 ++++++++++++++++++++++++++++++
>>> include/linux/phy/phy.h | 2 ++
>>> 2 files changed, 32 insertions(+)
>>>
>>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>>> index a12d353..0c03876 100644
>>> --- a/drivers/phy/phy-core.c
>>> +++ b/drivers/phy/phy-core.c
>>> @@ -622,6 +622,36 @@ 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;
>>> +}
>>
>> You want EXPORT_SYMBOL_GPL(devm_of_phy_get_by_index); here.
Also update the Documentation/phy.txt.
-Kishon
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
2015-03-25 22:03 ` Kishon Vijay Abraham I
@ 2015-03-26 0:04 ` Arun Ramamurthy
2015-03-26 23:07 ` Dmitry Torokhov
0 siblings, 1 reply; 11+ messages in thread
From: Arun Ramamurthy @ 2015-03-26 0:04 UTC (permalink / raw)
To: linux-arm-kernel
On 15-03-25 03:03 PM, Kishon Vijay Abraham I wrote:
> Hi,
>
> On Saturday 21 March 2015 02:59 AM, Arun Ramamurthy wrote:
>>
>>
>> On 15-03-20 02:26 PM, Dmitry Torokhov wrote:
>>> Hi Arun,
>>>
>>> On Fri, Mar 20, 2015 at 02:07:08PM -0700, Arun Ramamurthy wrote:
>>>> Adding devm_of_phy_get_by_index to get phys by supplying an index
>>>> and not a phy name when multiple phys are declared
>
> I think a bit more explanation on why get_by_index is needed here.
Thanks Kison. Can you be more specific? I am unsure of what more I can
explain here.
>>>>
>>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>>> Signed-off-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
>>>> ---
>>>> drivers/phy/phy-core.c | 30 ++++++++++++++++++++++++++++++
>>>> include/linux/phy/phy.h | 2 ++
>>>> 2 files changed, 32 insertions(+)
>>>>
>>>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>>>> index a12d353..0c03876 100644
>>>> --- a/drivers/phy/phy-core.c
>>>> +++ b/drivers/phy/phy-core.c
>>>> @@ -622,6 +622,36 @@ 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;
>>>> +}
>>>
>>> You want EXPORT_SYMBOL_GPL(devm_of_phy_get_by_index); here.
>
> Also update the Documentation/phy.txt.
>
Ok will do.
> -Kishon
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
2015-03-26 0:04 ` Arun Ramamurthy
@ 2015-03-26 23:07 ` Dmitry Torokhov
2015-03-31 16:00 ` Kishon Vijay Abraham I
0 siblings, 1 reply; 11+ messages in thread
From: Dmitry Torokhov @ 2015-03-26 23:07 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Mar 25, 2015 at 05:04:32PM -0700, Arun Ramamurthy wrote:
>
>
> On 15-03-25 03:03 PM, Kishon Vijay Abraham I wrote:
> >Hi,
> >
> >On Saturday 21 March 2015 02:59 AM, Arun Ramamurthy wrote:
> >>
> >>
> >>On 15-03-20 02:26 PM, Dmitry Torokhov wrote:
> >>>Hi Arun,
> >>>
> >>>On Fri, Mar 20, 2015 at 02:07:08PM -0700, Arun Ramamurthy wrote:
> >>>>Adding devm_of_phy_get_by_index to get phys by supplying an index
> >>>>and not a phy name when multiple phys are declared
> >
> >I think a bit more explanation on why get_by_index is needed here.
> Thanks Kison. Can you be more specific? I am unsure of what more I
> can explain here.
We just need to mention that 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 elaborate naming schemes and
producing custom code to iterate over names, such drivers are better of
using nameless phy bindings and using this newly introduced API to
iterate through them.
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core
2015-03-26 23:07 ` Dmitry Torokhov
@ 2015-03-31 16:00 ` Kishon Vijay Abraham I
0 siblings, 0 replies; 11+ messages in thread
From: Kishon Vijay Abraham I @ 2015-03-31 16:00 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 27 March 2015 04:37 AM, Dmitry Torokhov wrote:
> On Wed, Mar 25, 2015 at 05:04:32PM -0700, Arun Ramamurthy wrote:
>>
>>
>> On 15-03-25 03:03 PM, Kishon Vijay Abraham I wrote:
>>> Hi,
>>>
>>> On Saturday 21 March 2015 02:59 AM, Arun Ramamurthy wrote:
>>>>
>>>>
>>>> On 15-03-20 02:26 PM, Dmitry Torokhov wrote:
>>>>> Hi Arun,
>>>>>
>>>>> On Fri, Mar 20, 2015 at 02:07:08PM -0700, Arun Ramamurthy wrote:
>>>>>> Adding devm_of_phy_get_by_index to get phys by supplying an index
>>>>>> and not a phy name when multiple phys are declared
>>>
>>> I think a bit more explanation on why get_by_index is needed here.
>> Thanks Kison. Can you be more specific? I am unsure of what more I
>> can explain here.
>
> We just need to mention that 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 elaborate naming schemes and
> producing custom code to iterate over names, such drivers are better of
> using nameless phy bindings and using this newly introduced API to
> iterate through them.
+1
-Kishon
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-03-31 16:00 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-20 21:07 [PATCH 0/3] Add devm_of_phy_get_by_index and update platform drivers Arun Ramamurthy
2015-03-20 21:07 ` [PATCH 1/3] phy: core: Add devm_of_phy_get_by_index to phy-core Arun Ramamurthy
2015-03-20 21:26 ` Dmitry Torokhov
2015-03-20 21:29 ` Arun Ramamurthy
2015-03-25 22:03 ` Kishon Vijay Abraham I
2015-03-26 0:04 ` Arun Ramamurthy
2015-03-26 23:07 ` Dmitry Torokhov
2015-03-31 16:00 ` Kishon Vijay Abraham I
2015-03-20 21:07 ` [PATCH 2/3] usb: ehci-platform: Use devm_of_phy_get_by_index Arun Ramamurthy
2015-03-20 21:40 ` Dmitry Torokhov
2015-03-20 21:07 ` [PATCH 3/3] usb: ohci-platform: " Arun Ramamurthy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).