diff options
author | Rich Felker <dalias@libc.org> | 2016-03-30 00:53:03 +0300 |
---|---|---|
committer | Rich Felker <dalias@libc.org> | 2016-03-30 00:53:03 +0300 |
commit | 16b02d711f4059b8338ef967064195b47cae65ea (patch) | |
tree | 6d3e0b7629210b56f8d6cfa39184c878d8a15367 /drivers/usb/core/of.c | |
parent | b15d53d009558d14c4f394a6d1fa2039c7f45c43 (diff) | |
parent | f55532a0c0b8bb6148f4e07853b876ef73bc69ca (diff) | |
download | linux-16b02d711f4059b8338ef967064195b47cae65ea.tar.xz |
Merge tag 'v4.6-rc1'
Linux 4.6-rc1
Diffstat (limited to 'drivers/usb/core/of.c')
-rw-r--r-- | drivers/usb/core/of.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/drivers/usb/core/of.c b/drivers/usb/core/of.c new file mode 100644 index 000000000000..2289700c31d6 --- /dev/null +++ b/drivers/usb/core/of.c @@ -0,0 +1,47 @@ +/* + * of.c The helpers for hcd device tree support + * + * Copyright (C) 2016 Freescale Semiconductor, Inc. + * Author: Peter Chen <peter.chen@freescale.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 of + * the License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <linux/of.h> + +/** + * usb_of_get_child_node - Find the device node match port number + * @parent: the parent device node + * @portnum: the port number which device is connecting + * + * Find the node from device tree according to its port number. + * + * Return: On success, a pointer to the device node, %NULL on failure. + */ +struct device_node *usb_of_get_child_node(struct device_node *parent, + int portnum) +{ + struct device_node *node; + u32 port; + + for_each_child_of_node(parent, node) { + if (!of_property_read_u32(node, "reg", &port)) { + if (port == portnum) + return node; + } + } + + return NULL; +} +EXPORT_SYMBOL_GPL(usb_of_get_child_node); + |