static int arizona_of_get_core_pdata(struct arizona *arizona) { struct arizona_pdata *pdata = &arizona->pdata; int ret, i; pdata->reset = arizona_of_get_named_gpio(arizona, "wlf,reset", true); ret = of_property_read_u32_array(arizona->dev->of_node, "wlf,gpio-defaults", arizona->pdata.gpio_defaults, ARRAY_SIZE(arizona->pdata.gpio_defaults)); if (ret >= 0) { /* * All values are literal except out of range values * which are chip default, translate into platform * data which uses 0 as chip default and out of range * as zero. */ for (i = 0; i < ARRAY_SIZE(arizona->pdata.gpio_defaults); i++) { if (arizona->pdata.gpio_defaults[i] > 0xffff) arizona->pdata.gpio_defaults[i] = 0; else if (arizona->pdata.gpio_defaults[i] == 0) arizona->pdata.gpio_defaults[i] = 0x10000; } } else { dev_err(arizona->dev, "Failed to parse GPIO defaults: %d\n", ret); } return 0; }
static int arizona_ldo1_of_get_pdata(struct arizona *arizona, struct regulator_config *config) { struct arizona_pdata *pdata = &arizona->pdata; struct arizona_ldo1 *ldo1 = config->driver_data; struct device_node *init_node, *dcvdd_node; struct regulator_init_data *init_data; pdata->ldoena = arizona_of_get_named_gpio(arizona, "wlf,ldoena", true); init_node = of_get_child_by_name(arizona->dev->of_node, "ldo1"); dcvdd_node = of_parse_phandle(arizona->dev->of_node, "DCVDD-supply", 0); if (init_node) { config->of_node = init_node; init_data = of_get_regulator_init_data(arizona->dev, init_node); if (init_data) { init_data->consumer_supplies = &ldo1->supply; init_data->num_consumer_supplies = 1; if (dcvdd_node && dcvdd_node != init_node) arizona->external_dcvdd = true; pdata->ldo1 = init_data; } } else if (dcvdd_node) { arizona->external_dcvdd = true; } of_node_put(dcvdd_node); return 0; }
static int arizona_of_get_core_pdata(struct arizona *arizona) { struct arizona_pdata *pdata = &arizona->pdata; arizona_of_get_named_gpio(arizona, "wlf,reset", true, &pdata->reset); arizona_of_get_micd_ranges(arizona, "wlf,micd-ranges"); arizona_of_get_micd_configs(arizona, "wlf,micd-configs"); arizona_of_get_micbias(arizona, "wlf,micbias1", 0); arizona_of_get_micbias(arizona, "wlf,micbias2", 1); arizona_of_get_micbias(arizona, "wlf,micbias3", 2); arizona_of_get_gpio_defaults(arizona, "wlf,gpio-defaults"); arizona_of_read_u32_array(arizona, "wlf,max-channels-clocked", false, pdata->max_channels_clocked, ARRAY_SIZE(pdata->max_channels_clocked)); arizona_of_read_u32_array(arizona, "wlf,dmic-ref", false, pdata->dmic_ref, ARRAY_SIZE(pdata->dmic_ref)); arizona_of_read_u32_array(arizona, "wlf,inmode", false, pdata->inmode, ARRAY_SIZE(pdata->inmode)); arizona_of_read_u32(arizona, "wlf,wm5102t-output-pwr", false, &pdata->wm5102t_output_pwr); return 0; }