From: Jisheng Zhang <jszhang@kernel.org>
To: Liam Girdwood <lgirdwood@gmail.com>, Mark Brown <broonie@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] regulator: rt5739: Enable REGCACHE_FLAT
Date: Tue, 30 Apr 2024 09:01:40 +0800 [thread overview]
Message-ID: <20240430010140.2027-1-jszhang@kernel.org> (raw)
Enable regmap cache to reduce i2c transactions and corresponding
interrupts if regulator is accessed frequently. Since the register map
is small, we use a FLAT regmap cache.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/regulator/rt5739.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/drivers/regulator/rt5739.c b/drivers/regulator/rt5739.c
index 91412c905ce6..47172b11301c 100644
--- a/drivers/regulator/rt5739.c
+++ b/drivers/regulator/rt5739.c
@@ -24,8 +24,11 @@
#define RT5739_REG_NSEL1 0x01
#define RT5739_REG_CNTL1 0x02
#define RT5739_REG_ID1 0x03
+#define RT5739_REG_ID2 0x04
+#define RT5739_REG_MON 0x05
#define RT5739_REG_CNTL2 0x06
#define RT5739_REG_CNTL4 0x08
+#define RT5739_MAX_REGS (RT5739_REG_CNTL4 + 1)
#define RT5739_VSEL_MASK GENMASK(7, 0)
#define RT5739_MODEVSEL1_MASK BIT(1)
@@ -236,11 +239,46 @@ static void rt5739_init_regulator_desc(struct regulator_desc *desc,
}
}
+static bool rt5739_writeable_reg(struct device *dev, unsigned int reg)
+{
+ switch (reg) {
+ case RT5739_REG_NSEL0 ... RT5739_REG_CNTL1:
+ case RT5739_REG_CNTL2:
+ case RT5739_REG_CNTL4:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool rt5739_readable_reg(struct device *dev, unsigned int reg)
+{
+ switch (reg) {
+ case RT5739_REG_NSEL0 ... RT5739_REG_CNTL2:
+ case RT5739_REG_CNTL4:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool rt5739_volatile_reg(struct device *dev, unsigned int reg)
+{
+ if (reg == RT5739_REG_MON)
+ return true;
+ return false;
+}
+
static const struct regmap_config rt5739_regmap_config = {
.name = "rt5739",
.reg_bits = 8,
.val_bits = 8,
.max_register = RT5739_REG_CNTL4,
+ .num_reg_defaults_raw = RT5739_MAX_REGS,
+ .cache_type = REGCACHE_FLAT,
+ .writeable_reg = rt5739_writeable_reg,
+ .readable_reg = rt5739_readable_reg,
+ .volatile_reg = rt5739_volatile_reg,
};
static int rt5739_probe(struct i2c_client *i2c)
--
2.43.0
reply other threads:[~2024-04-30 1:15 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240430010140.2027-1-jszhang@kernel.org \
--to=jszhang@kernel.org \
--cc=broonie@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.