static int rk3036_clk_ofdata_to_platdata(struct udevice *dev) { struct rk3036_clk_priv *priv = dev_get_priv(dev); priv->cru = dev_read_addr_ptr(dev); return 0; }
static int mtk_wdt_probe(struct udevice *dev) { struct mtk_wdt_priv *priv = dev_get_priv(dev); priv->base = dev_read_addr_ptr(dev); if (!priv->base) return -ENOENT; /* Clear status */ clrsetbits_le32(priv->base + MTK_WDT_MODE, WDT_MODE_IRQ_EN | WDT_MODE_EXTPOL, WDT_MODE_KEY); return mtk_wdt_stop(dev); }
static int mt7629_mcucfg_probe(struct udevice *dev) { void __iomem *base; base = dev_read_addr_ptr(dev); if (!base) return -ENOENT; clrsetbits_le32(base + MCU_AXI_DIV, AXI_DIV_MSK, AXI_DIV_SEL(0x12)); clrsetbits_le32(base + MCU_BUS_MUX, MCU_BUS_MSK, MCU_BUS_SEL(0x1)); return 0; }
static int rockchip_dwmmc_ofdata_to_platdata(struct udevice *dev) { #if !CONFIG_IS_ENABLED(OF_PLATDATA) struct rockchip_dwmmc_priv *priv = dev_get_priv(dev); struct dwmci_host *host = &priv->host; host->name = dev->name; host->ioaddr = dev_read_addr_ptr(dev); host->buswidth = dev_read_u32_default(dev, "bus-width", 4); host->get_mmc_clk = rockchip_dwmmc_get_mmc_clk; host->priv = dev; /* use non-removeable as sdcard and emmc as judgement */ if (dev_read_bool(dev, "non-removable")) host->dev_index = 0; else host->dev_index = 1; priv->fifo_depth = dev_read_u32_default(dev, "fifo-depth", 0); if (priv->fifo_depth < 0) return -EINVAL; priv->fifo_mode = dev_read_bool(dev, "fifo-mode"); /* * 'clock-freq-min-max' is deprecated * (see https://github.com/torvalds/linux/commit/b023030f10573de738bbe8df63d43acab64c9f7b) */ if (dev_read_u32_array(dev, "clock-freq-min-max", priv->minmax, 2)) { int val = dev_read_u32_default(dev, "max-frequency", -EINVAL); if (val < 0) return val; priv->minmax[0] = 400000; /* 400 kHz */ priv->minmax[1] = val; } else { debug("%s: 'clock-freq-min-max' property was deprecated.\n", __func__); } #endif return 0; }
static int rockchip_gpio_probe(struct udevice *dev) { struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev); struct rockchip_gpio_priv *priv = dev_get_priv(dev); char *end; int ret; priv->regs = dev_read_addr_ptr(dev); ret = uclass_first_device_err(UCLASS_PINCTRL, &priv->pinctrl); if (ret) return ret; uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK; end = strrchr(dev->name, '@'); priv->bank = trailing_strtoln(dev->name, end); priv->name[0] = 'A' + priv->bank; uc_priv->bank_name = priv->name; return 0; }
static int rockchip_i2c_probe(struct udevice *bus) { struct rk_i2c *priv = dev_get_priv(bus); struct rk_i2c_soc_data *soc_data; struct udevice *pinctrl; int bus_nr; int ret; priv->regs = dev_read_addr_ptr(bus); soc_data = (struct rk_i2c_soc_data*)dev_get_driver_data(bus); if (soc_data->controller_type == RK_I2C_LEGACY) { ret = dev_read_alias_seq(bus, &bus_nr); if (ret < 0) { debug("%s: Could not get alias for %s: %d\n", __func__, bus->name, ret); return ret; } ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl); if (ret) { debug("%s: Cannot find pinctrl device\n", __func__); return ret; } /* pinctrl will switch I2C to new type */ ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_I2C0 + bus_nr); if (ret) { debug("%s: Failed to switch I2C to new type %s: %d\n", __func__, bus->name, ret); return ret; } } return 0; }