diff options
Diffstat (limited to 'drivers/usb/common/common.c')
-rw-r--r-- | drivers/usb/common/common.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c index 50a2362ed3ea..48277bbc15e4 100644 --- a/drivers/usb/common/common.c +++ b/drivers/usb/common/common.c | |||
@@ -246,6 +246,31 @@ int of_usb_update_otg_caps(struct device_node *np, | |||
246 | } | 246 | } |
247 | EXPORT_SYMBOL_GPL(of_usb_update_otg_caps); | 247 | EXPORT_SYMBOL_GPL(of_usb_update_otg_caps); |
248 | 248 | ||
249 | /** | ||
250 | * usb_of_get_companion_dev - Find the companion device | ||
251 | * @dev: the device pointer to find a companion | ||
252 | * | ||
253 | * Find the companion device from platform bus. | ||
254 | * | ||
255 | * Takes a reference to the returned struct device which needs to be dropped | ||
256 | * after use. | ||
257 | * | ||
258 | * Return: On success, a pointer to the companion device, %NULL on failure. | ||
259 | */ | ||
260 | struct device *usb_of_get_companion_dev(struct device *dev) | ||
261 | { | ||
262 | struct device_node *node; | ||
263 | struct platform_device *pdev = NULL; | ||
264 | |||
265 | node = of_parse_phandle(dev->of_node, "companion", 0); | ||
266 | if (node) | ||
267 | pdev = of_find_device_by_node(node); | ||
268 | |||
269 | of_node_put(node); | ||
270 | |||
271 | return pdev ? &pdev->dev : NULL; | ||
272 | } | ||
273 | EXPORT_SYMBOL_GPL(usb_of_get_companion_dev); | ||
249 | #endif | 274 | #endif |
250 | 275 | ||
251 | MODULE_LICENSE("GPL"); | 276 | MODULE_LICENSE("GPL"); |