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: tps6287x: Enable REGCACHE_FLAT
Date: Tue, 30 Apr 2024 09:01:08 +0800	[thread overview]
Message-ID: <20240430010108.2004-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/tps6287x-regulator.c | 33 ++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/drivers/regulator/tps6287x-regulator.c b/drivers/regulator/tps6287x-regulator.c
index 9b7c3d77789e..d4dffb87e858 100644
--- a/drivers/regulator/tps6287x-regulator.c
+++ b/drivers/regulator/tps6287x-regulator.c
@@ -26,11 +26,44 @@
 #define TPS6287X_CTRL2_VRANGE	GENMASK(3, 2)
 #define TPS6287X_CTRL3		0x03
 #define TPS6287X_STATUS		0x04
+#define TPS6287X_MAX_REGS	(TPS6287X_STATUS + 1)
+
+static bool tps6287x_writeable_reg(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case TPS6287X_VSET ... TPS6287X_CTRL3:
+		return true;
+	default:
+		return false;
+	}
+}
+
+static bool tps6287x_readable_reg(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case TPS6287X_VSET ... TPS6287X_STATUS:
+		return true;
+	default:
+		return false;
+	}
+}
+
+static bool tps6287x_volatile_reg(struct device *dev, unsigned int reg)
+{
+	if (reg == TPS6287X_STATUS)
+		return true;
+	return false;
+}
 
 static const struct regmap_config tps6287x_regmap_config = {
 	.reg_bits = 8,
 	.val_bits = 8,
 	.max_register = TPS6287X_STATUS,
+	.num_reg_defaults_raw = TPS6287X_MAX_REGS,
+	.cache_type = REGCACHE_FLAT,
+	.writeable_reg = tps6287x_writeable_reg,
+	.readable_reg = tps6287x_readable_reg,
+	.volatile_reg = tps6287x_volatile_reg,
 };
 
 static const struct linear_range tps6287x_voltage_ranges[] = {
-- 
2.43.0


                 reply	other threads:[~2024-04-30  1:14 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=20240430010108.2004-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.