static int pic32_pinctrl_probe(struct udevice *dev) { struct pic32_pinctrl_priv *priv = dev_get_priv(dev); struct fdt_resource res; void *fdt = (void *)gd->fdt_blob; int node = dev->of_offset; int ret; ret = fdt_get_named_resource(fdt, node, "reg", "reg-names", "ppsin", &res); if (ret < 0) { printf("pinctrl: resource \"ppsin\" not found\n"); return ret; } priv->mux_in = ioremap(res.start, fdt_resource_size(&res)); ret = fdt_get_named_resource(fdt, node, "reg", "reg-names", "ppsout", &res); if (ret < 0) { printf("pinctrl: resource \"ppsout\" not found\n"); return ret; } priv->mux_out = ioremap(res.start, fdt_resource_size(&res)); ret = fdt_get_named_resource(fdt, node, "reg", "reg-names", "port", &res); if (ret < 0) { printf("pinctrl: resource \"port\" not found\n"); return ret; } priv->pinconf = ioremap(res.start, fdt_resource_size(&res)); return 0; }
static int pcie_intel_fpga_ofdata_to_platdata(struct udevice *dev) { struct intel_fpga_pcie *pcie = dev_get_priv(dev); struct fdt_resource reg_res; int node = dev_of_offset(dev); int ret; DECLARE_GLOBAL_DATA_PTR; ret = fdt_get_named_resource(gd->fdt_blob, node, "reg", "reg-names", "Cra", ®_res); if (ret) { dev_err(dev, "resource \"Cra\" not found\n"); return ret; } pcie->cra_base = map_physmem(reg_res.start, fdt_resource_size(®_res), MAP_NOCACHE); ret = fdt_get_named_resource(gd->fdt_blob, node, "reg", "reg-names", "Hip", ®_res); if (ret) { dev_err(dev, "resource \"Hip\" not found\n"); return ret; } pcie->hip_base = map_physmem(reg_res.start, fdt_resource_size(®_res), MAP_NOCACHE); return 0; }
static int musb_usb_probe(struct udevice *dev) { struct usb_bus_priv *priv = dev_get_uclass_priv(dev); struct pic32_musb_data *pdata = dev_get_priv(dev); struct musb_host_data *mdata = &pdata->mdata; struct fdt_resource mc, glue; void *fdt = (void *)gd->fdt_blob; int node = dev->of_offset; void __iomem *mregs; int ret; priv->desc_before_addr = true; ret = fdt_get_named_resource(fdt, node, "reg", "reg-names", "mc", &mc); if (ret < 0) { printf("pic32-musb: resource \"mc\" not found\n"); return ret; } ret = fdt_get_named_resource(fdt, node, "reg", "reg-names", "control", &glue); if (ret < 0) { printf("pic32-musb: resource \"control\" not found\n"); return ret; } mregs = ioremap(mc.start, fdt_resource_size(&mc)); pdata->musb_glue = ioremap(glue.start, fdt_resource_size(&glue)); /* init controller */ #ifdef CONFIG_USB_MUSB_HOST mdata->host = musb_init_controller(&pic32_musb_plat, &pdata->dev, mregs); if (!mdata->host) return -EIO; ret = musb_lowlevel_init(mdata); #else pic32_musb_plat.mode = MUSB_PERIPHERAL; ret = musb_register(&pic32_musb_plat, &pdata->dev, mregs); #endif if (ret == 0) printf("PIC32 MUSB OTG\n"); return ret; }
static int stm32_qspi_ofdata_to_platdata(struct udevice *bus) { struct fdt_resource res_regs, res_mem; struct stm32_qspi_platdata *plat = bus->platdata; const void *blob = gd->fdt_blob; int node = dev_of_offset(bus); int ret; ret = fdt_get_named_resource(blob, node, "reg", "reg-names", "QuadSPI", &res_regs); if (ret) { debug("Error: can't get regs base addresses(ret = %d)!\n", ret); return -ENOMEM; } ret = fdt_get_named_resource(blob, node, "reg", "reg-names", "QuadSPI-memory", &res_mem); if (ret) { debug("Error: can't get mmap base address(ret = %d)!\n", ret); return -ENOMEM; } plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency", STM32_QSPI_DEFAULT_SCK_FREQ); plat->base = res_regs.start; plat->memory_map = res_mem.start; debug("%s: regs=<0x%x> mapped=<0x%x>, max-frequency=%d\n", __func__, plat->base, plat->memory_map, plat->max_hz ); return 0; }