|
Takashi Iwai |
77a87f |
From 31a6297b89aabc81b274c093a308a7f5b55081a7 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
77a87f |
From: Andreas Kemnade <andreas@kemnade.info>
|
|
Takashi Iwai |
77a87f |
Date: Sun, 20 Nov 2022 23:12:08 +0100
|
|
Takashi Iwai |
77a87f |
Subject: [PATCH] regulator: twl6030: fix get status of twl6032 regulators
|
|
Takashi Iwai |
77a87f |
Git-commit: 31a6297b89aabc81b274c093a308a7f5b55081a7
|
|
Takashi Iwai |
77a87f |
Patch-mainline: v6.1-rc7
|
|
Takashi Iwai |
77a87f |
References: git-fixes
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
Status is reported as always off in the 6032 case. Status
|
|
Takashi Iwai |
77a87f |
reporting now matches the logic in the setters. Once of
|
|
Takashi Iwai |
77a87f |
the differences to the 6030 is that there are no groups,
|
|
Takashi Iwai |
77a87f |
therefore the state needs to be read out in the lower bits.
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
|
|
Takashi Iwai |
77a87f |
Link: https://lore.kernel.org/r/20221120221208.3093727-3-andreas@kemnade.info
|
|
Takashi Iwai |
77a87f |
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Takashi Iwai |
77a87f |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
---
|
|
Takashi Iwai |
77a87f |
drivers/regulator/twl6030-regulator.c | 15 +++++++++++----
|
|
Takashi Iwai |
77a87f |
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
diff --git a/drivers/regulator/twl6030-regulator.c b/drivers/regulator/twl6030-regulator.c
|
|
Takashi Iwai |
77a87f |
index 7c7e3648ea4b..f3856750944f 100644
|
|
Takashi Iwai |
77a87f |
--- a/drivers/regulator/twl6030-regulator.c
|
|
Takashi Iwai |
77a87f |
+++ b/drivers/regulator/twl6030-regulator.c
|
|
Takashi Iwai |
77a87f |
@@ -67,6 +67,7 @@ struct twlreg_info {
|
|
Takashi Iwai |
77a87f |
#define TWL6030_CFG_STATE_SLEEP 0x03
|
|
Takashi Iwai |
77a87f |
#define TWL6030_CFG_STATE_GRP_SHIFT 5
|
|
Takashi Iwai |
77a87f |
#define TWL6030_CFG_STATE_APP_SHIFT 2
|
|
Takashi Iwai |
77a87f |
+#define TWL6030_CFG_STATE_MASK 0x03
|
|
Takashi Iwai |
77a87f |
#define TWL6030_CFG_STATE_APP_MASK (0x03 << TWL6030_CFG_STATE_APP_SHIFT)
|
|
Takashi Iwai |
77a87f |
#define TWL6030_CFG_STATE_APP(v) (((v) & TWL6030_CFG_STATE_APP_MASK) >>\
|
|
Takashi Iwai |
77a87f |
TWL6030_CFG_STATE_APP_SHIFT)
|
|
Takashi Iwai |
77a87f |
@@ -128,13 +129,14 @@ static int twl6030reg_is_enabled(struct regulator_dev *rdev)
|
|
Takashi Iwai |
77a87f |
if (grp < 0)
|
|
Takashi Iwai |
77a87f |
return grp;
|
|
Takashi Iwai |
77a87f |
grp &= P1_GRP_6030;
|
|
Takashi Iwai |
77a87f |
+ val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE);
|
|
Takashi Iwai |
77a87f |
+ val = TWL6030_CFG_STATE_APP(val);
|
|
Takashi Iwai |
77a87f |
} else {
|
|
Takashi Iwai |
77a87f |
+ val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE);
|
|
Takashi Iwai |
77a87f |
+ val &= TWL6030_CFG_STATE_MASK;
|
|
Takashi Iwai |
77a87f |
grp = 1;
|
|
Takashi Iwai |
77a87f |
}
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
- val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE);
|
|
Takashi Iwai |
77a87f |
- val = TWL6030_CFG_STATE_APP(val);
|
|
Takashi Iwai |
77a87f |
-
|
|
Takashi Iwai |
77a87f |
return grp && (val == TWL6030_CFG_STATE_ON);
|
|
Takashi Iwai |
77a87f |
}
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
@@ -187,7 +189,12 @@ static int twl6030reg_get_status(struct regulator_dev *rdev)
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE);
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
- switch (TWL6030_CFG_STATE_APP(val)) {
|
|
Takashi Iwai |
77a87f |
+ if (info->features & TWL6032_SUBCLASS)
|
|
Takashi Iwai |
77a87f |
+ val &= TWL6030_CFG_STATE_MASK;
|
|
Takashi Iwai |
77a87f |
+ else
|
|
Takashi Iwai |
77a87f |
+ val = TWL6030_CFG_STATE_APP(val);
|
|
Takashi Iwai |
77a87f |
+
|
|
Takashi Iwai |
77a87f |
+ switch (val) {
|
|
Takashi Iwai |
77a87f |
case TWL6030_CFG_STATE_ON:
|
|
Takashi Iwai |
77a87f |
return REGULATOR_STATUS_NORMAL;
|
|
Takashi Iwai |
77a87f |
|
|
Takashi Iwai |
77a87f |
--
|
|
Takashi Iwai |
77a87f |
2.35.3
|
|
Takashi Iwai |
77a87f |
|