Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 072e78b1 authored by Javier Martinez Canillas's avatar Javier Martinez Canillas Committed by Mark Brown
Browse files

regulator: of: Add regulator desc param to of_get_regulator_init_data()



The of_get_regulator_init_data() function is used to extract the regulator
init_data but information on how to extract certain data is defined in the
static regulator descriptor (e.g: how to map the hardware operating modes).

Add a const struct regulator_desc * parameter to the function signature so
the parsing logic could use the information in the struct regulator_desc.

of_get_regulator_init_data() relies on of_get_regulation_constraints() to
actually extract the init_data so it has to pass the struct regulator_desc
but that is modified on a later patch.

Signed-off-by: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 87e1e0f2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -330,7 +330,8 @@ static int pm8607_regulator_dt_init(struct platform_device *pdev,
	for_each_child_of_node(nproot, np) {
		if (!of_node_cmp(np->name, info->desc.name)) {
			config->init_data =
				of_get_regulator_init_data(&pdev->dev, np);
				of_get_regulator_init_data(&pdev->dev, np,
							   &info->desc);
			config->of_node = np;
			break;
		}
+3 −2
Original line number Diff line number Diff line
@@ -189,17 +189,18 @@ static int anatop_regulator_probe(struct platform_device *pdev)
	int ret = 0;
	u32 val;

	initdata = of_get_regulator_init_data(dev, np);
	sreg = devm_kzalloc(dev, sizeof(*sreg), GFP_KERNEL);
	if (!sreg)
		return -ENOMEM;
	sreg->initdata = initdata;
	sreg->name = of_get_property(np, "regulator-name", NULL);
	rdesc = &sreg->rdesc;
	rdesc->name = sreg->name;
	rdesc->type = REGULATOR_VOLTAGE;
	rdesc->owner = THIS_MODULE;

	initdata = of_get_regulator_init_data(dev, np, rdesc);
	sreg->initdata = initdata;

	anatop_np = of_get_parent(np);
	if (!anatop_np)
		return -ENODEV;
+5 −3
Original line number Diff line number Diff line
@@ -179,7 +179,8 @@ static const struct regulator_init_data arizona_ldo1_default = {
};

static int arizona_ldo1_of_get_pdata(struct arizona *arizona,
				     struct regulator_config *config)
				     struct regulator_config *config,
				     const struct regulator_desc *desc)
{
	struct arizona_pdata *pdata = &arizona->pdata;
	struct arizona_ldo1 *ldo1 = config->driver_data;
@@ -194,7 +195,8 @@ static int arizona_ldo1_of_get_pdata(struct arizona *arizona,
	if (init_node) {
		config->of_node = init_node;

		init_data = of_get_regulator_init_data(arizona->dev, init_node);
		init_data = of_get_regulator_init_data(arizona->dev, init_node,
						       desc);

		if (init_data) {
			init_data->consumer_supplies = &ldo1->supply;
@@ -257,7 +259,7 @@ static int arizona_ldo1_probe(struct platform_device *pdev)

	if (IS_ENABLED(CONFIG_OF)) {
		if (!dev_get_platdata(arizona->dev)) {
			ret = arizona_ldo1_of_get_pdata(arizona, &config);
			ret = arizona_ldo1_of_get_pdata(arizona, &config, desc);
			if (ret < 0)
				return ret;
		}
+5 −3
Original line number Diff line number Diff line
@@ -198,7 +198,8 @@ static const struct regulator_init_data arizona_micsupp_ext_default = {
};

static int arizona_micsupp_of_get_pdata(struct arizona *arizona,
					struct regulator_config *config)
					struct regulator_config *config,
					const struct regulator_desc *desc)
{
	struct arizona_pdata *pdata = &arizona->pdata;
	struct arizona_micsupp *micsupp = config->driver_data;
@@ -210,7 +211,7 @@ static int arizona_micsupp_of_get_pdata(struct arizona *arizona,
	if (np) {
		config->of_node = np;

		init_data = of_get_regulator_init_data(arizona->dev, np);
		init_data = of_get_regulator_init_data(arizona->dev, np, desc);

		if (init_data) {
			init_data->consumer_supplies = &micsupp->supply;
@@ -264,7 +265,8 @@ static int arizona_micsupp_probe(struct platform_device *pdev)

	if (IS_ENABLED(CONFIG_OF)) {
		if (!dev_get_platdata(arizona->dev)) {
			ret = arizona_micsupp_of_get_pdata(arizona, &config);
			ret = arizona_micsupp_of_get_pdata(arizona, &config,
							   desc);
			if (ret < 0)
				return ret;
		}
+2 −1
Original line number Diff line number Diff line
@@ -436,7 +436,8 @@ static int da9052_regulator_probe(struct platform_device *pdev)
			if (!of_node_cmp(np->name,
					 regulator->info->reg_desc.name)) {
				config.init_data = of_get_regulator_init_data(
					&pdev->dev, np);
					&pdev->dev, np,
					&regulator->info->reg_desc);
				config.of_node = np;
				break;
			}
Loading