All of lore.kernel.org
 help / color / mirror / Atom feed
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.