
Use the new fdtdec_find_aliases() function instead of fdtdec_next_alias() to locate our USB nodes.
As this example shows, the impact on drivers should be minimal.
Signed-off-by: Simon Glass sjg@chromium.org --- arch/arm/cpu/armv7/tegra2/usb.c | 17 ++++++++--------- 1 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/arch/arm/cpu/armv7/tegra2/usb.c b/arch/arm/cpu/armv7/tegra2/usb.c index 215d0d3..5b2bd7e 100644 --- a/arch/arm/cpu/armv7/tegra2/usb.c +++ b/arch/arm/cpu/armv7/tegra2/usb.c @@ -395,21 +395,20 @@ int fdt_decode_usb(const void *blob, int node, unsigned osc_frequency_mhz, int board_usb_init(const void *blob) { struct fdt_usb config; - int node, upto = 0; unsigned osc_freq = clock_get_rate(CLOCK_ID_OSC); enum clock_osc_freq freq; + int node_list[USB_PORTS_MAX]; + int node, count, i;
/* Set up the USB clocks correctly based on our oscillator frequency */ freq = clock_get_osc_freq(); config_clock(usb_pll[freq]);
- do { - node = fdtdec_next_alias(blob, "usb", - COMPAT_NVIDIA_TEGRA20_USB, &upto); - if (node < 0) { - debug("Cannot find usb%d alias in fdt\n", upto); - break; - } + /* count may return <0 on error */ + count = fdtdec_find_aliases(blob, "usb", COMPAT_NVIDIA_TEGRA20_USB, + node_list, USB_PORTS_MAX); + for (i = 0; i < count; i++) { + node = node_list[i]; if (fdt_decode_usb(blob, node, osc_freq, &config)) { debug("Cannot decode USB node %s\n", fdt_get_name(blob, node, NULL)); @@ -423,7 +422,7 @@ int board_usb_init(const void *blob)
if (add_port(&config, usb_pll[freq])) return -1; - } while (node); + } usb_set_host_mode(); port_current = -1; return 0;