PHY: Add function set_speed to generic PHY framework

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 <[email protected]>
---
 include/linux/phy/phy.h |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
index 9351a16..df9b1d1 100644
--- a/include/linux/phy/phy.h
+++ b/include/linux/phy/phy.h
@@ -32,6 +32,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 {
@@ -39,6 +40,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;
 };
 
@@ -341,4 +343,24 @@ out:
        return ret;
 }
 
+static inline 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;
+}
+
 #endif /* __DRIVERS_PHY_H */
-- 
1.5.5

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to