* [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable
@ 2013-02-16 6:36 Axel Lin
2013-02-16 6:37 ` [RFT][PATCH 2/3] regulator: 88pm8607: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs Axel Lin
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Axel Lin @ 2013-02-16 6:36 UTC (permalink / raw)
To: Mark Brown; +Cc: Haojian Zhuang, Jett.Zhou, Liam Girdwood, linux-kernel
Add enable_is_inverted flag to indicate set enable_mask bits to disable
when using regulator_enable_regmap and friends APIs.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
drivers/regulator/core.c | 24 ++++++++++++++++++++----
include/linux/regulator/driver.h | 3 +++
2 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index da9782b..142205b 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1794,7 +1794,10 @@ int regulator_is_enabled_regmap(struct regulator_dev *rdev)
if (ret != 0)
return ret;
- return (val & rdev->desc->enable_mask) != 0;
+ if (rdev->desc->enable_is_inverted)
+ return (val & rdev->desc->enable_mask) == 0;
+ else
+ return (val & rdev->desc->enable_mask) != 0;
}
EXPORT_SYMBOL_GPL(regulator_is_enabled_regmap);
@@ -1809,9 +1812,15 @@ EXPORT_SYMBOL_GPL(regulator_is_enabled_regmap);
*/
int regulator_enable_regmap(struct regulator_dev *rdev)
{
+ unsigned int val;
+
+ if (rdev->desc->enable_is_inverted)
+ val = 0;
+ else
+ val = rdev->desc->enable_mask;
+
return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
- rdev->desc->enable_mask,
- rdev->desc->enable_mask);
+ rdev->desc->enable_mask, val);
}
EXPORT_SYMBOL_GPL(regulator_enable_regmap);
@@ -1826,8 +1835,15 @@ EXPORT_SYMBOL_GPL(regulator_enable_regmap);
*/
int regulator_disable_regmap(struct regulator_dev *rdev)
{
+ unsigned int val;
+
+ if (rdev->desc->enable_is_inverted)
+ val = rdev->desc->enable_mask;
+ else
+ val = 0;
+
return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
- rdev->desc->enable_mask, 0);
+ rdev->desc->enable_mask, val);
}
EXPORT_SYMBOL_GPL(regulator_disable_regmap);
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
index 23070fd..074b57e 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -199,6 +199,8 @@ enum regulator_type {
* output when using regulator_set_voltage_sel_regmap
* @enable_reg: Register for control when using regmap enable/disable ops
* @enable_mask: Mask for control when using regmap enable/disable ops
+ * @enable_is_inverted: A flag to indicate set enable_mask bits to disable
+ * when using regulator_enable_regmap and friends APIs.
*
* @enable_time: Time taken for initial enable of regulator (in uS).
*/
@@ -226,6 +228,7 @@ struct regulator_desc {
unsigned int apply_bit;
unsigned int enable_reg;
unsigned int enable_mask;
+ bool enable_is_inverted;
unsigned int bypass_reg;
unsigned int bypass_mask;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [RFT][PATCH 2/3] regulator: 88pm8607: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs
2013-02-16 6:36 [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable Axel Lin
@ 2013-02-16 6:37 ` Axel Lin
2013-02-17 1:39 ` Haojian Zhuang
2013-02-16 6:38 ` [RFT][PATCH 3/3] regulator: max8649: " Axel Lin
2013-02-17 1:38 ` [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable Haojian Zhuang
2 siblings, 1 reply; 6+ messages in thread
From: Axel Lin @ 2013-02-16 6:37 UTC (permalink / raw)
To: Mark Brown; +Cc: Haojian Zhuang, Jett.Zhou, Liam Girdwood, linux-kernel
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
drivers/regulator/88pm8607.c | 36 ++++--------------------------------
1 file changed, 4 insertions(+), 32 deletions(-)
diff --git a/drivers/regulator/88pm8607.c b/drivers/regulator/88pm8607.c
index c79ab84..493948a 100644
--- a/drivers/regulator/88pm8607.c
+++ b/drivers/regulator/88pm8607.c
@@ -220,35 +220,6 @@ static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index)
return ret;
}
-static int pm8606_preg_enable(struct regulator_dev *rdev)
-{
- struct pm8607_regulator_info *info = rdev_get_drvdata(rdev);
-
- return pm860x_set_bits(info->i2c, rdev->desc->enable_reg,
- 1 << rdev->desc->enable_mask, 0);
-}
-
-static int pm8606_preg_disable(struct regulator_dev *rdev)
-{
- struct pm8607_regulator_info *info = rdev_get_drvdata(rdev);
-
- return pm860x_set_bits(info->i2c, rdev->desc->enable_reg,
- 1 << rdev->desc->enable_mask,
- 1 << rdev->desc->enable_mask);
-}
-
-static int pm8606_preg_is_enabled(struct regulator_dev *rdev)
-{
- struct pm8607_regulator_info *info = rdev_get_drvdata(rdev);
- int ret;
-
- ret = pm860x_reg_read(info->i2c, rdev->desc->enable_reg);
- if (ret < 0)
- return ret;
-
- return !((unsigned char)ret & (1 << rdev->desc->enable_mask));
-}
-
static struct regulator_ops pm8607_regulator_ops = {
.list_voltage = pm8607_list_voltage,
.set_voltage_sel = regulator_set_voltage_sel_regmap,
@@ -259,9 +230,9 @@ static struct regulator_ops pm8607_regulator_ops = {
};
static struct regulator_ops pm8606_preg_ops = {
- .enable = pm8606_preg_enable,
- .disable = pm8606_preg_disable,
- .is_enabled = pm8606_preg_is_enabled,
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .is_enabled = regulator_is_enabled_regmap,
};
#define PM8606_PREG(ereg, ebit) \
@@ -274,6 +245,7 @@ static struct regulator_ops pm8606_preg_ops = {
.owner = THIS_MODULE, \
.enable_reg = PM8606_##ereg, \
.enable_mask = (ebit), \
+ .enable_is_inverted = true, \
}, \
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [RFT][PATCH 3/3] regulator: max8649: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs
2013-02-16 6:36 [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable Axel Lin
2013-02-16 6:37 ` [RFT][PATCH 2/3] regulator: 88pm8607: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs Axel Lin
@ 2013-02-16 6:38 ` Axel Lin
2013-02-17 1:39 ` Haojian Zhuang
2013-02-17 1:38 ` [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable Haojian Zhuang
2 siblings, 1 reply; 6+ messages in thread
From: Axel Lin @ 2013-02-16 6:38 UTC (permalink / raw)
To: Mark Brown; +Cc: Haojian Zhuang, Jett.Zhou, Liam Girdwood, linux-kernel
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
drivers/regulator/max8649.c | 39 ++++++---------------------------------
1 file changed, 6 insertions(+), 33 deletions(-)
diff --git a/drivers/regulator/max8649.c b/drivers/regulator/max8649.c
index 3ca1438..fdb67ff 100644
--- a/drivers/regulator/max8649.c
+++ b/drivers/regulator/max8649.c
@@ -60,36 +60,6 @@ struct max8649_regulator_info {
unsigned ramp_down:1;
};
-/* EN_PD means pulldown on EN input */
-static int max8649_enable(struct regulator_dev *rdev)
-{
- struct max8649_regulator_info *info = rdev_get_drvdata(rdev);
- return regmap_update_bits(info->regmap, MAX8649_CONTROL, MAX8649_EN_PD, 0);
-}
-
-/*
- * Applied internal pulldown resistor on EN input pin.
- * If pulldown EN pin outside, it would be better.
- */
-static int max8649_disable(struct regulator_dev *rdev)
-{
- struct max8649_regulator_info *info = rdev_get_drvdata(rdev);
- return regmap_update_bits(info->regmap, MAX8649_CONTROL, MAX8649_EN_PD,
- MAX8649_EN_PD);
-}
-
-static int max8649_is_enabled(struct regulator_dev *rdev)
-{
- struct max8649_regulator_info *info = rdev_get_drvdata(rdev);
- unsigned int val;
- int ret;
-
- ret = regmap_read(info->regmap, MAX8649_CONTROL, &val);
- if (ret != 0)
- return ret;
- return !((unsigned char)val & MAX8649_EN_PD);
-}
-
static int max8649_enable_time(struct regulator_dev *rdev)
{
struct max8649_regulator_info *info = rdev_get_drvdata(rdev);
@@ -151,9 +121,9 @@ static struct regulator_ops max8649_dcdc_ops = {
.get_voltage_sel = regulator_get_voltage_sel_regmap,
.list_voltage = regulator_list_voltage_linear,
.map_voltage = regulator_map_voltage_linear,
- .enable = max8649_enable,
- .disable = max8649_disable,
- .is_enabled = max8649_is_enabled,
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .is_enabled = regulator_is_enabled_regmap,
.enable_time = max8649_enable_time,
.set_mode = max8649_set_mode,
.get_mode = max8649_get_mode,
@@ -169,6 +139,9 @@ static struct regulator_desc dcdc_desc = {
.vsel_mask = MAX8649_VOL_MASK,
.min_uV = MAX8649_DCDC_VMIN,
.uV_step = MAX8649_DCDC_STEP,
+ .enable_reg = MAX8649_CONTROL,
+ .enable_mask = MAX8649_EN_PD,
+ .enable_is_inverted = true,
};
static struct regmap_config max8649_regmap_config = {
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable
2013-02-16 6:36 [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable Axel Lin
2013-02-16 6:37 ` [RFT][PATCH 2/3] regulator: 88pm8607: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs Axel Lin
2013-02-16 6:38 ` [RFT][PATCH 3/3] regulator: max8649: " Axel Lin
@ 2013-02-17 1:38 ` Haojian Zhuang
2 siblings, 0 replies; 6+ messages in thread
From: Haojian Zhuang @ 2013-02-17 1:38 UTC (permalink / raw)
To: Axel Lin; +Cc: Mark Brown, Jett.Zhou, Liam Girdwood,
linux-kernel@vger.kernel.org
On Sat, Feb 16, 2013 at 2:36 PM, Axel Lin <axel.lin@ingics.com> wrote:
> Add enable_is_inverted flag to indicate set enable_mask bits to disable
> when using regulator_enable_regmap and friends APIs.
>
> Signed-off-by: Axel Lin <axel.lin@ingics.com>
> ---
> drivers/regulator/core.c | 24 ++++++++++++++++++++----
> include/linux/regulator/driver.h | 3 +++
> 2 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
> index da9782b..142205b 100644
> --- a/drivers/regulator/core.c
> +++ b/drivers/regulator/core.c
> @@ -1794,7 +1794,10 @@ int regulator_is_enabled_regmap(struct regulator_dev *rdev)
> if (ret != 0)
> return ret;
>
> - return (val & rdev->desc->enable_mask) != 0;
> + if (rdev->desc->enable_is_inverted)
> + return (val & rdev->desc->enable_mask) == 0;
> + else
> + return (val & rdev->desc->enable_mask) != 0;
> }
> EXPORT_SYMBOL_GPL(regulator_is_enabled_regmap);
>
> @@ -1809,9 +1812,15 @@ EXPORT_SYMBOL_GPL(regulator_is_enabled_regmap);
> */
> int regulator_enable_regmap(struct regulator_dev *rdev)
> {
> + unsigned int val;
> +
> + if (rdev->desc->enable_is_inverted)
> + val = 0;
> + else
> + val = rdev->desc->enable_mask;
> +
> return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
> - rdev->desc->enable_mask,
> - rdev->desc->enable_mask);
> + rdev->desc->enable_mask, val);
> }
> EXPORT_SYMBOL_GPL(regulator_enable_regmap);
>
> @@ -1826,8 +1835,15 @@ EXPORT_SYMBOL_GPL(regulator_enable_regmap);
> */
> int regulator_disable_regmap(struct regulator_dev *rdev)
> {
> + unsigned int val;
> +
> + if (rdev->desc->enable_is_inverted)
> + val = rdev->desc->enable_mask;
> + else
> + val = 0;
> +
> return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
> - rdev->desc->enable_mask, 0);
> + rdev->desc->enable_mask, val);
> }
> EXPORT_SYMBOL_GPL(regulator_disable_regmap);
>
> diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
> index 23070fd..074b57e 100644
> --- a/include/linux/regulator/driver.h
> +++ b/include/linux/regulator/driver.h
> @@ -199,6 +199,8 @@ enum regulator_type {
> * output when using regulator_set_voltage_sel_regmap
> * @enable_reg: Register for control when using regmap enable/disable ops
> * @enable_mask: Mask for control when using regmap enable/disable ops
> + * @enable_is_inverted: A flag to indicate set enable_mask bits to disable
> + * when using regulator_enable_regmap and friends APIs.
> *
> * @enable_time: Time taken for initial enable of regulator (in uS).
> */
> @@ -226,6 +228,7 @@ struct regulator_desc {
> unsigned int apply_bit;
> unsigned int enable_reg;
> unsigned int enable_mask;
> + bool enable_is_inverted;
> unsigned int bypass_reg;
> unsigned int bypass_mask;
>
> --
> 1.7.9.5
>
>
>
Reviewed-by: Haojian Zhuang <haojian.zhuang@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFT][PATCH 2/3] regulator: 88pm8607: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs
2013-02-16 6:37 ` [RFT][PATCH 2/3] regulator: 88pm8607: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs Axel Lin
@ 2013-02-17 1:39 ` Haojian Zhuang
0 siblings, 0 replies; 6+ messages in thread
From: Haojian Zhuang @ 2013-02-17 1:39 UTC (permalink / raw)
To: Axel Lin; +Cc: Mark Brown, Jett.Zhou, Liam Girdwood,
linux-kernel@vger.kernel.org
On Sat, Feb 16, 2013 at 2:37 PM, Axel Lin <axel.lin@ingics.com> wrote:
> Signed-off-by: Axel Lin <axel.lin@ingics.com>
> ---
> drivers/regulator/88pm8607.c | 36 ++++--------------------------------
> 1 file changed, 4 insertions(+), 32 deletions(-)
>
Reviewed-by: Haojian Zhuang <haojian.zhuang@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFT][PATCH 3/3] regulator: max8649: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs
2013-02-16 6:38 ` [RFT][PATCH 3/3] regulator: max8649: " Axel Lin
@ 2013-02-17 1:39 ` Haojian Zhuang
0 siblings, 0 replies; 6+ messages in thread
From: Haojian Zhuang @ 2013-02-17 1:39 UTC (permalink / raw)
To: Axel Lin; +Cc: Mark Brown, Jett.Zhou, Liam Girdwood,
linux-kernel@vger.kernel.org
On Sat, Feb 16, 2013 at 2:38 PM, Axel Lin <axel.lin@ingics.com> wrote:
> Signed-off-by: Axel Lin <axel.lin@ingics.com>
> ---
> drivers/regulator/max8649.c | 39 ++++++---------------------------------
> 1 file changed, 6 insertions(+), 33 deletions(-)
>
Reviewed-by: Haojian Zhuang <haojian.zhuang@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-02-17 1:39 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-16 6:36 [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable Axel Lin
2013-02-16 6:37 ` [RFT][PATCH 2/3] regulator: 88pm8607: Use enable_is_inverted flag with regulator_enable_regmap and friends APIs Axel Lin
2013-02-17 1:39 ` Haojian Zhuang
2013-02-16 6:38 ` [RFT][PATCH 3/3] regulator: max8649: " Axel Lin
2013-02-17 1:39 ` Haojian Zhuang
2013-02-17 1:38 ` [RFT][PATCH 1/3] regulator: core: Add enable_is_inverted flag to indicate set enable_mask bits to disable Haojian Zhuang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.