regulator: Factor out functions to work with regulator_internal
Internally we only have a struct regulator_internal, so factor out regulator_enable_internal and regulator_disable_internal functions which can be called from regulator internal code. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
7dd0345b1a
commit
e47bfe803b
|
@ -43,6 +43,49 @@ struct regulator {
|
|||
struct device_d *dev;
|
||||
};
|
||||
|
||||
static int regulator_enable_internal(struct regulator_internal *ri)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (ri->enable_count) {
|
||||
ri->enable_count++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ri->rdev->ops->enable)
|
||||
return -ENOSYS;
|
||||
|
||||
ret = ri->rdev->ops->enable(ri->rdev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (ri->enable_time_us)
|
||||
udelay(ri->enable_time_us);
|
||||
|
||||
ri->enable_count++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int regulator_disable_internal(struct regulator_internal *ri)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!ri->enable_count)
|
||||
return -EINVAL;
|
||||
|
||||
if (!ri->rdev->ops->disable)
|
||||
return -ENOSYS;
|
||||
|
||||
ret = ri->rdev->ops->disable(ri->rdev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ri->enable_count--;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct regulator_internal * __regulator_register(struct regulator_dev *rd, const char *name)
|
||||
{
|
||||
struct regulator_internal *ri;
|
||||
|
@ -239,32 +282,10 @@ struct regulator *regulator_get(struct device_d *dev, const char *supply)
|
|||
*/
|
||||
int regulator_enable(struct regulator *r)
|
||||
{
|
||||
struct regulator_internal *ri;
|
||||
int ret;
|
||||
|
||||
if (!r)
|
||||
return 0;
|
||||
|
||||
ri = r->ri;
|
||||
|
||||
if (ri->enable_count) {
|
||||
ri->enable_count++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ri->rdev->ops->enable)
|
||||
return -ENOSYS;
|
||||
|
||||
ret = ri->rdev->ops->enable(ri->rdev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (ri->enable_time_us)
|
||||
udelay(ri->enable_time_us);
|
||||
|
||||
ri->enable_count++;
|
||||
|
||||
return 0;
|
||||
return regulator_enable_internal(r->ri);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -278,27 +299,10 @@ int regulator_enable(struct regulator *r)
|
|||
*/
|
||||
int regulator_disable(struct regulator *r)
|
||||
{
|
||||
struct regulator_internal *ri;
|
||||
int ret;
|
||||
|
||||
if (!r)
|
||||
return 0;
|
||||
|
||||
ri = r->ri;
|
||||
|
||||
if (!ri->enable_count)
|
||||
return -EINVAL;
|
||||
|
||||
if (!ri->rdev->ops->disable)
|
||||
return -ENOSYS;
|
||||
|
||||
ret = ri->rdev->ops->disable(ri->rdev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ri->enable_count--;
|
||||
|
||||
return 0;
|
||||
return regulator_disable_internal(r->ri);
|
||||
}
|
||||
|
||||
static void regulator_print_one(struct regulator_internal *ri)
|
||||
|
|
Loading…
Reference in New Issue