static int xenon_sdhci_ofdata_to_platdata(struct udevice *dev) { struct sdhci_host *host = dev_get_priv(dev); struct xenon_sdhci_priv *priv = dev_get_priv(dev); const char *name; host->name = dev->name; host->ioaddr = (void *)dev_get_addr(dev); if (of_device_is_compatible(dev, "marvell,armada-3700-sdhci")) priv->pad_ctrl_reg = (void *)dev_get_addr_index(dev, 1); name = fdt_getprop(gd->fdt_blob, dev_of_offset(dev), "marvell,pad-type", NULL); if (name) { if (0 == strncmp(name, "sd", 2)) { priv->pad_type = SOC_PAD_SD; } else if (0 == strncmp(name, "fixed-1-8v", 10)) { priv->pad_type = SOC_PAD_FIXED_1_8V; } else { printf("Unsupported SOC PHY PAD ctrl type %s\n", name); return -EINVAL; } } return 0; }
static int ti_musb_ofdata_to_platdata(struct udevice *dev) { struct ti_musb_platdata *platdata = dev_get_platdata(dev); const void *fdt = gd->fdt_blob; int node = dev->of_offset; int phys; int ctrl_mod; int usb_index; platdata->base = (void *)dev_get_addr_index(dev, 1); phys = fdtdec_lookup_phandle(fdt, node, "phys"); ctrl_mod = fdtdec_lookup_phandle(fdt, phys, "ti,ctrl_mod"); platdata->ctrl_mod_base = (void *)fdtdec_get_addr(fdt, ctrl_mod, "reg"); usb_index = ti_musb_get_usb_index(node); switch (usb_index) { case 1: platdata->ctrl_mod_base += AM335X_USB1_CTRL; case 0: default: break; } platdata->musb_config.multipoint = fdtdec_get_int(fdt, node, "mentor,multipoint", -1); if (platdata->musb_config.multipoint < 0) { error("MUSB multipoint DT entry missing\n"); return -ENOENT; } platdata->musb_config.dyn_fifo = 1; platdata->musb_config.num_eps = fdtdec_get_int(fdt, node, "mentor,num-eps", -1); if (platdata->musb_config.num_eps < 0) { error("MUSB num-eps DT entry missing\n"); return -ENOENT; } platdata->musb_config.ram_bits = fdtdec_get_int(fdt, node, "mentor,ram-bits", -1); if (platdata->musb_config.ram_bits < 0) { error("MUSB ram-bits DT entry missing\n"); return -ENOENT; } platdata->otg_board_data.set_phy_power = ti_musb_set_phy_power; platdata->otg_board_data.dev = dev; platdata->plat.config = &platdata->musb_config; platdata->plat.power = fdtdec_get_int(fdt, node, "mentor,power", -1); if (platdata->plat.power < 0) { error("MUSB mentor,power DT entry missing\n"); return -ENOENT; } platdata->plat.platform_ops = &musb_dsps_ops; platdata->plat.board_data = &platdata->otg_board_data; return 0; }