• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <linux/phy/phy.h>
2 
3 /**
4  * Helper that registers PHY for a ULPI device and adds a lookup for binding it
5  * and it's controller, which is always the parent.
6  */
7 static inline struct phy
ulpi_phy_create(struct ulpi * ulpi,const struct phy_ops * ops)8 *ulpi_phy_create(struct ulpi *ulpi, const struct phy_ops *ops)
9 {
10 	struct phy *phy;
11 	int ret;
12 
13 	phy = phy_create(&ulpi->dev, NULL, ops);
14 	if (IS_ERR(phy))
15 		return phy;
16 
17 	ret = phy_create_lookup(phy, "usb2-phy", dev_name(ulpi->dev.parent));
18 	if (ret) {
19 		phy_destroy(phy);
20 		return ERR_PTR(ret);
21 	}
22 
23 	return phy;
24 }
25 
26 /* Remove a PHY that was created with ulpi_phy_create() and it's lookup. */
ulpi_phy_destroy(struct ulpi * ulpi,struct phy * phy)27 static inline void ulpi_phy_destroy(struct ulpi *ulpi, struct phy *phy)
28 {
29 	phy_remove_lookup(phy, "usb2-phy", dev_name(ulpi->dev.parent));
30 	phy_destroy(phy);
31 }
32