Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
}