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

Commit f58cb407 authored by Florian Vaussard's avatar Florian Vaussard Committed by Samuel Ortiz
Browse files

mfd: twl4030-power: Simplify probing of power scripts and resources



Increase lisibility when probing power scripts and resources by
creating dedicated functions.

Signed-off-by: default avatarFlorian Vaussard <florian.vaussard@epfl.ch>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 637d6895
Loading
Loading
Loading
Loading
+40 −20
Original line number Diff line number Diff line
@@ -492,6 +492,39 @@ int twl4030_remove_script(u8 flags)
	return err;
}

int twl4030_power_configure_scripts(struct twl4030_power_data *pdata)
{
	int err;
	int i;
	u8 address = twl4030_start_script_address;

	for (i = 0; i < pdata->num; i++) {
		err = load_twl4030_script(pdata->scripts[i], address);
		if (err)
			return err;
		address += pdata->scripts[i]->size;
	}

	return 0;
}

int twl4030_power_configure_resources(struct twl4030_power_data *pdata)
{
	struct twl4030_resconfig *resconfig = pdata->resource_config;
	int err;

	if (resconfig) {
		while (resconfig->resource) {
			err = twl4030_configure_resource(resconfig);
			if (err)
				return err;
			resconfig++;
		}
	}

	return 0;
}

/*
 * In master mode, start the power off sequence.
 * After a successful execution, TWL shuts down the power to the SoC
@@ -511,9 +544,7 @@ int twl4030_power_probe(struct platform_device *pdev)
{
	struct twl4030_power_data *pdata = pdev->dev.platform_data;
	int err = 0;
	int i;
	struct twl4030_resconfig *resconfig;
	u8 val, address = twl4030_start_script_address;
	u8 val;

	err = twl_i2c_write_u8(TWL_MODULE_PM_MASTER, TWL4030_PM_MASTER_KEY_CFG1,
			       TWL4030_PM_MASTER_PROTECT_KEY);
@@ -525,23 +556,12 @@ int twl4030_power_probe(struct platform_device *pdev)
	if (err)
		goto unlock;

	for (i = 0; i < pdata->num; i++) {
		err = load_twl4030_script(pdata->scripts[i], address);
	err = twl4030_power_configure_scripts(pdata);
	if (err)
		goto load;
		address += pdata->scripts[i]->size;
	}

	resconfig = pdata->resource_config;
	if (resconfig) {
		while (resconfig->resource) {
			err = twl4030_configure_resource(resconfig);
	err = twl4030_power_configure_resources(pdata);
	if (err)
		goto resource;
			resconfig++;

		}
	}

	/* Board has to be wired properly to use this feature */
	if (pdata->use_poweroff && !pm_power_off) {