int tegra_xusb_process_nodes(const void *fdt, int nodes[], unsigned int count, const struct tegra_xusb_padctl_soc *socdata) { unsigned int i; int err; for (i = 0; i < count; i++) { if (!fdtdec_get_is_enabled(fdt, nodes[i])) continue; padctl.socdata = socdata; err = tegra_xusb_padctl_parse_dt(&padctl, fdt, nodes[i]); if (err < 0) { error("failed to parse DT: %d", err); continue; } /* deassert XUSB padctl reset */ reset_set_enable(PERIPH_ID_XUSB_PADCTL, 0); err = tegra_xusb_padctl_config_apply(&padctl, &padctl.config); if (err < 0) { error("failed to apply pinmux: %d", err); continue; } /* only a single instance is supported */ break; } return 0; }
static int process_nodes(const void *fdt, int nodes[], unsigned int count) { unsigned int i; for (i = 0; i < count; i++) { enum fdt_compat_id id; int err; if (!fdtdec_get_is_enabled(fdt, nodes[i])) continue; id = fdtdec_lookup(fdt, nodes[i]); switch (id) { case COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL: break; default: error("tegra-xusb-padctl: unsupported compatible: %s", fdtdec_get_compatible(id)); continue; } padctl->num_lanes = ARRAY_SIZE(tegra124_lanes); padctl->lanes = tegra124_lanes; padctl->num_functions = ARRAY_SIZE(tegra124_functions); padctl->functions = tegra124_functions; err = tegra_xusb_padctl_parse_dt(padctl, fdt, nodes[i]); if (err < 0) { error("tegra-xusb-padctl: failed to parse DT: %d", err); continue; } /* deassert XUSB padctl reset */ reset_set_enable(PERIPH_ID_XUSB_PADCTL, 0); err = tegra_xusb_padctl_config_apply(padctl, &padctl->config); if (err < 0) { error("tegra-xusb-padctl: failed to apply pinmux: %d", err); continue; } /* only a single instance is supported */ break; } return 0; }