summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Armstrong <[email protected]>2020-12-29 14:58:59 +0100
committerNeil Armstrong <[email protected]>2021-02-10 10:00:51 +0100
commitf8da8a82c5761890ec8578a19f51508f0ead4a1b (patch)
tree2b2787f1d5b801fe2fcf0b5e9231ab93fed82d8a
parentafef20585abe55c44d376f3cacf435ddde149d77 (diff)
generic-phy: add configure op
Add the PHY configure op callback to the generic PHY uclass to permit configuring the PHY. It's useful for MIPI DSI PHYs to setup the link timings. Signed-off-by:Neil Armstrong <[email protected]> Signed-off-by: Neil Armstrong <[email protected]>
-rw-r--r--drivers/phy/phy-uclass.c11
-rw-r--r--include/generic-phy.h23
2 files changed, 34 insertions, 0 deletions
diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
index ef03e3a5025..43ffbcee0f0 100644
--- a/drivers/phy/phy-uclass.c
+++ b/drivers/phy/phy-uclass.c
@@ -204,6 +204,17 @@ int generic_phy_power_off(struct phy *phy)
return ret;
}
+int generic_phy_configure(struct phy *phy, void *params)
+{
+ struct phy_ops const *ops;
+
+ if (!generic_phy_valid(phy))
+ return 0;
+ ops = phy_dev_ops(phy->dev);
+
+ return ops->configure ? ops->configure(phy, params) : 0;
+}
+
int generic_phy_get_bulk(struct udevice *dev, struct phy_bulk *bulk)
{
int i, ret, count;
diff --git a/include/generic-phy.h b/include/generic-phy.h
index 5ab34cda03d..a17d900e4bd 100644
--- a/include/generic-phy.h
+++ b/include/generic-phy.h
@@ -122,6 +122,20 @@ struct phy_ops {
* @return 0 if OK, or a negative error code
*/
int (*power_off)(struct phy *phy);
+
+ /**
+ * configure - configure a PHY device
+ *
+ * @phy: PHY port to be configured
+ * @params: PHY Parameters, underlying data is specific to the PHY function
+ *
+ * During runtime, the PHY may need to be configured for it's main function.
+ * This function configures the PHY for it's main function following
+ * power_on/off() after beeing initialized.
+ *
+ * @return 0 if OK, or a negative error code
+ */
+ int (*configure)(struct phy *phy, void *params);
};
/**
@@ -183,6 +197,15 @@ int generic_phy_power_on(struct phy *phy);
*/
int generic_phy_power_off(struct phy *phy);
+/**
+ * generic_phy_configure() - configure a PHY device
+ *
+ * @phy: PHY port to be configured
+ * @params: PHY Parameters, underlying data is specific to the PHY function
+ * @return 0 if OK, or a negative error code
+ */
+int generic_phy_configure(struct phy *phy, void *params);
+
/**
* generic_phy_get_by_index() - Get a PHY device by integer index.