dm: power: Add regulator flags to centralise auto-set logic
Decide when the regulator is set up whether we want to auto-set the voltage or current. This avoids the complex logic spilling into the processing code. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Przemyslaw Marczak <p.marczak@samsung.com> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
This commit is contained in:
parent
23ec2b570d
commit
7837ceab1e
|
@ -319,6 +319,18 @@ static int regulator_pre_probe(struct udevice *dev)
|
|||
uc_pdata->boot_on = fdtdec_get_bool(gd->fdt_blob, offset,
|
||||
"regulator-boot-on");
|
||||
|
||||
/* Those values are optional (-ENODATA if unset) */
|
||||
if ((uc_pdata->min_uV != -ENODATA) &&
|
||||
(uc_pdata->max_uV != -ENODATA) &&
|
||||
(uc_pdata->min_uV == uc_pdata->max_uV))
|
||||
uc_pdata->flags |= REGULATOR_FLAG_AUTOSET_UV;
|
||||
|
||||
/* Those values are optional (-ENODATA if unset) */
|
||||
if ((uc_pdata->min_uA != -ENODATA) &&
|
||||
(uc_pdata->max_uA != -ENODATA) &&
|
||||
(uc_pdata->min_uA == uc_pdata->max_uA))
|
||||
uc_pdata->flags |= REGULATOR_FLAG_AUTOSET_UA;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -128,6 +128,11 @@ struct dm_regulator_mode {
|
|||
const char *name;
|
||||
};
|
||||
|
||||
enum regulator_flag {
|
||||
REGULATOR_FLAG_AUTOSET_UV = 1 << 0,
|
||||
REGULATOR_FLAG_AUTOSET_UA = 1 << 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dm_regulator_uclass_platdata - pointed by dev->uclass_platdata, and
|
||||
* allocated on each regulator bind. This structure holds an information
|
||||
|
@ -143,6 +148,8 @@ struct dm_regulator_mode {
|
|||
* @max_uA* - maximum amperage (micro Amps)
|
||||
* @always_on* - bool type, true or false
|
||||
* @boot_on* - bool type, true or false
|
||||
* TODO(sjg@chromium.org): Consider putting the above two into @flags
|
||||
* @flags: - flags value (see REGULATOR_FLAG_...)
|
||||
* @name** - fdt regulator name - should be taken from the device tree
|
||||
*
|
||||
* Note:
|
||||
|
@ -162,6 +169,7 @@ struct dm_regulator_uclass_platdata {
|
|||
bool always_on;
|
||||
bool boot_on;
|
||||
const char *name;
|
||||
int flags;
|
||||
};
|
||||
|
||||
/* Regulator device operations */
|
||||
|
|
Loading…
Reference in New Issue