diff mbox

[RESEND,v10,1/4] PHY: Add function set_speed to generic PHY framework

Message ID 1393308882-3964-2-git-send-email-lho@apm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Loc Ho Feb. 25, 2014, 6:14 a.m. UTC
This patch adds function set_speed to the generic PHY framework operation
structure. This function can be called to instruct the PHY underlying layer
at specified lane to configure for specified speed in hertz.

Signed-off-by: Loc Ho <lho@apm.com>
---
 drivers/phy/phy-core.c  |   21 +++++++++++++++++++++
 include/linux/phy/phy.h |    8 ++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

Comments

Kishon Vijay Abraham I Feb. 25, 2014, 12:05 p.m. UTC | #1
Hi,

On Tuesday 25 February 2014 11:44 AM, Loc Ho wrote:
> This patch adds function set_speed to the generic PHY framework operation
> structure. This function can be called to instruct the PHY underlying layer
> at specified lane to configure for specified speed in hertz.
> 
> Signed-off-by: Loc Ho <lho@apm.com>
> ---
>  drivers/phy/phy-core.c  |   21 +++++++++++++++++++++
>  include/linux/phy/phy.h |    8 ++++++++
>  2 files changed, 29 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index 645c867..44f2f63 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -257,6 +257,27 @@ int phy_power_off(struct phy *phy)
>  }
>  EXPORT_SYMBOL_GPL(phy_power_off);
>  

missing function comment :-s

> +int phy_set_speed(struct phy *phy, int lane, u64 speed)
> +{

Thanks
Kishon
Tejun Heo Feb. 25, 2014, 1:45 p.m. UTC | #2
On Tue, Feb 25, 2014 at 05:35:37PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Tuesday 25 February 2014 11:44 AM, Loc Ho wrote:
> > This patch adds function set_speed to the generic PHY framework operation
> > structure. This function can be called to instruct the PHY underlying layer
> > at specified lane to configure for specified speed in hertz.
> > 
> > Signed-off-by: Loc Ho <lho@apm.com>
> > ---
> >  drivers/phy/phy-core.c  |   21 +++++++++++++++++++++
> >  include/linux/phy/phy.h |    8 ++++++++
> >  2 files changed, 29 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> > index 645c867..44f2f63 100644
> > --- a/drivers/phy/phy-core.c
> > +++ b/drivers/phy/phy-core.c
> > @@ -257,6 +257,27 @@ int phy_power_off(struct phy *phy)
> >  }
> >  EXPORT_SYMBOL_GPL(phy_power_off);
> >  
> 
> missing function comment :-s

Can you please let me know when this series goes in?  I'll pull in the
phy tree into libata and then apply the ata patches on top.

Thanks.
Kishon Vijay Abraham I Feb. 25, 2014, 1:50 p.m. UTC | #3
On Tuesday 25 February 2014 07:15 PM, Tejun Heo wrote:
> On Tue, Feb 25, 2014 at 05:35:37PM +0530, Kishon Vijay Abraham I wrote:
>> Hi,
>>
>> On Tuesday 25 February 2014 11:44 AM, Loc Ho wrote:
>>> This patch adds function set_speed to the generic PHY framework operation
>>> structure. This function can be called to instruct the PHY underlying layer
>>> at specified lane to configure for specified speed in hertz.
>>>
>>> Signed-off-by: Loc Ho <lho@apm.com>
>>> ---
>>>  drivers/phy/phy-core.c  |   21 +++++++++++++++++++++
>>>  include/linux/phy/phy.h |    8 ++++++++
>>>  2 files changed, 29 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>>> index 645c867..44f2f63 100644
>>> --- a/drivers/phy/phy-core.c
>>> +++ b/drivers/phy/phy-core.c
>>> @@ -257,6 +257,27 @@ int phy_power_off(struct phy *phy)
>>>  }
>>>  EXPORT_SYMBOL_GPL(phy_power_off);
>>>  
>>
>> missing function comment :-s
> 
> Can you please let me know when this series goes in?  I'll pull in the
> phy tree into libata and then apply the ata patches on top.

I'll send the final pull request for 3.15 merge window by next weekend to Greg
kh. Before that I'd like to have my comments addressed in this patch series.

Thanks
Kishon
diff mbox

Patch

diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
index 645c867..44f2f63 100644
--- a/drivers/phy/phy-core.c
+++ b/drivers/phy/phy-core.c
@@ -257,6 +257,27 @@  int phy_power_off(struct phy *phy)
 }
 EXPORT_SYMBOL_GPL(phy_power_off);
 
+int phy_set_speed(struct phy *phy, int lane, u64 speed)
+{
+        int ret = -ENOTSUPP;
+
+        mutex_lock(&phy->mutex);
+        if (phy->ops->set_speed) {
+                ret =  phy->ops->set_speed(phy, lane, speed);
+                if (ret < 0) {
+                        dev_err(&phy->dev, "phy set speed failed --> %d\n",
+                                ret);
+                        goto out;
+                }
+        }
+
+out:
+        mutex_unlock(&phy->mutex);
+
+        return ret;
+}
+EXPORT_SYMBOL_GPL(phy_set_speed);
+
 /**
  * of_phy_get() - lookup and obtain a reference to a phy by phandle
  * @dev: device that requests this phy
diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
index e273e5a..4eb589c 100644
--- a/include/linux/phy/phy.h
+++ b/include/linux/phy/phy.h
@@ -27,6 +27,7 @@  struct phy;
  * @exit: operation to be performed while exiting
  * @power_on: powering on the phy
  * @power_off: powering off the phy
+ * @set_speed: set operation speed in hz
  * @owner: the module owner containing the ops
  */
 struct phy_ops {
@@ -34,6 +35,7 @@  struct phy_ops {
 	int	(*exit)(struct phy *phy);
 	int	(*power_on)(struct phy *phy);
 	int	(*power_off)(struct phy *phy);
+	int	(*set_speed)(struct phy *phy, int lane, u64 speed);
 	struct module *owner;
 };
 
@@ -145,6 +147,7 @@  static inline void phy_set_bus_width(struct phy *phy, int bus_width)
 {
 	phy->attrs.bus_width = bus_width;
 }
+int phy_set_speed(struct phy *phy, int lane, u64 speed);
 struct phy *phy_get(struct device *dev, const char *string);
 struct phy *devm_phy_get(struct device *dev, const char *string);
 void phy_put(struct phy *phy);
@@ -227,6 +230,11 @@  static inline void phy_set_bus_width(struct phy *phy, int bus_width)
 	return;
 }
 
+static inline int phy_set_speed(struct phy *phy, int lane, u64 speed)
+{
+	return -ENOSYS;
+}
+
 static inline struct phy *phy_get(struct device *dev, const char *string)
 {
 	return ERR_PTR(-ENOSYS);