summaryrefslogtreecommitdiff
path: root/include/linux/phy/ulpi_phy.h
diff options
context:
space:
mode:
authorVivek Gautam <vivek.gautam@codeaurora.org>2017-05-11 12:17:41 +0530
committerKishon Vijay Abraham I <kishon@ti.com>2017-06-01 15:28:27 +0530
commit858edde001e14f070d0fff347fb56c6c79e15312 (patch)
tree9319757edcb76ec6db2a7a3ca19f0254b9ae7a5a /include/linux/phy/ulpi_phy.h
parent706a3b69955816bd0f3591be738db64cba74b674 (diff)
phy: Move ULPI phy header out of drivers to include path
Although ULPI phy is currently being used by tusb1210, there can be other consumers too in future. So move this to the includes path for phy. Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> Cc: Stephen Boyd <stephen.boyd@linaro.org> Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> Cc: Kishon Vijay Abraham I <kishon@ti.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Cc: linux-omap@vger.kernel.org Cc: linux-usb@vger.kernel.org Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Diffstat (limited to 'include/linux/phy/ulpi_phy.h')
-rw-r--r--include/linux/phy/ulpi_phy.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/linux/phy/ulpi_phy.h b/include/linux/phy/ulpi_phy.h
new file mode 100644
index 000000000000..f2ebe490a4bc
--- /dev/null
+++ b/include/linux/phy/ulpi_phy.h
@@ -0,0 +1,31 @@
+#include <linux/phy/phy.h>
+
+/**
+ * Helper that registers PHY for a ULPI device and adds a lookup for binding it
+ * and it's controller, which is always the parent.
+ */
+static inline struct phy
+*ulpi_phy_create(struct ulpi *ulpi, const struct phy_ops *ops)
+{
+ struct phy *phy;
+ int ret;
+
+ phy = phy_create(&ulpi->dev, NULL, ops);
+ if (IS_ERR(phy))
+ return phy;
+
+ ret = phy_create_lookup(phy, "usb2-phy", dev_name(ulpi->dev.parent));
+ if (ret) {
+ phy_destroy(phy);
+ return ERR_PTR(ret);
+ }
+
+ return phy;
+}
+
+/* Remove a PHY that was created with ulpi_phy_create() and it's lookup. */
+static inline void ulpi_phy_destroy(struct ulpi *ulpi, struct phy *phy)
+{
+ phy_remove_lookup(phy, "usb2-phy", dev_name(ulpi->dev.parent));
+ phy_destroy(phy);
+}