From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>,
Samuel Ortiz <sameo@linux.intel.com>,
Lee Jones <lee.jones@linaro.org>
Cc: <alsa-devel@alsa-project.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH 02/11] MFD: twl-core: API to set the regcache bypass for a given regmap in twl
Date: Fri, 3 Jan 2014 15:27:47 +0200 [thread overview]
Message-ID: <1388755676-16036-3-git-send-email-peter.ujfalusi@ti.com> (raw)
In-Reply-To: <1388755676-16036-1-git-send-email-peter.ujfalusi@ti.com>
If the regcache is enabled on the regmap module drivers might need to access
to HW register(s) in certain cases in cache bypass mode.
As an example of this is the audio block's ANAMICL register. In normal
operation the content can be cached but during initialization one bit from
the register need to be monitored. With the twl_set_regcache_bypass() the
client driver can switch regcache bypass on and off when it is needed so
we can utilize the regcache for more registers.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
drivers/mfd/twl-core.c | 21 +++++++++++++++++++++
include/linux/i2c/twl.h | 3 +++
2 files changed, 24 insertions(+)
diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c
index c91cb4367b9b..f0abca79ff34 100644
--- a/drivers/mfd/twl-core.c
+++ b/drivers/mfd/twl-core.c
@@ -383,6 +383,27 @@ int twl_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes)
}
EXPORT_SYMBOL(twl_i2c_read);
+/**
+ * twl_regcache_bypass - Configure the regcache bypass for the regmap associated
+ * with the module
+ * @mod_no: module number
+ * @enable: Regcache bypass state
+ *
+ * Returns 0 else failure.
+ */
+int twl_set_regcache_bypass(u8 mod_no, bool enable)
+{
+ struct regmap *regmap = twl_get_regmap(mod_no);
+
+ if (!regmap)
+ return -EPERM;
+
+ regcache_cache_bypass(regmap, enable);
+
+ return 0;
+}
+EXPORT_SYMBOL(twl_set_regcache_bypass);
+
/*----------------------------------------------------------------------*/
/**
diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h
index 673a3ce67f31..a09da0910339 100644
--- a/include/linux/i2c/twl.h
+++ b/include/linux/i2c/twl.h
@@ -175,6 +175,9 @@ static inline int twl_class_is_ ##class(void) \
TWL_CLASS_IS(4030, TWL4030_CLASS_ID)
TWL_CLASS_IS(6030, TWL6030_CLASS_ID)
+/* Set the regcache bypass for the regmap associated with the nodule */
+int twl_set_regcache_bypass(u8 mod_no, bool enable);
+
/*
* Read and write several 8-bit registers at once.
*/
--
1.8.5.2
next prev parent reply other threads:[~2014-01-03 13:28 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-03 13:27 [PATCH 00/11] ASoC/MFD: twl4030 codec local register cache removal Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 01/11] MFD: twl-core: Simplify IO wrapper functions by moving common code out Peter Ujfalusi
2014-01-03 13:27 ` Peter Ujfalusi [this message]
2014-01-03 13:27 ` [PATCH 03/11] MFD: twl-core: Enable regcache for audio registers Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 04/11] ASoC: twl4030: Separate write condition checking from I/O function Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 05/11] ASoC: twl4030: Remove check defaults functionality Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 06/11] ASoC: twl4030: Remove reset registers functionality Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 07/11] ASoC: twl4030: Introduce local ctl register cache Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 08/11] ASoC: twl4030: Remove local reg cache Peter Ujfalusi
2014-01-08 8:05 ` Lee Jones
2014-01-08 11:07 ` Peter Ujfalusi
2014-01-08 11:18 ` Lee Jones
2014-01-03 13:27 ` [PATCH 09/11] ASoC: twl4030: Parameter alignment fixes (for code consistency) Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 10/11] ASoC: twl4030: Move the ctl cache update local to twl4030_write() function Peter Ujfalusi
2014-01-03 13:27 ` [PATCH 11/11] ASoC: twl4030: Pass the twl4030_priv directly to twl4030_can_write_to_chip() Peter Ujfalusi
2014-01-06 13:19 ` [PATCH 00/11] ASoC/MFD: twl4030 codec local register cache removal Mark Brown
2014-01-06 16:10 ` Lee Jones
2014-01-06 16:31 ` Mark Brown
2014-01-08 11:42 ` Lee Jones
2014-01-08 12:48 ` Mark Brown
2014-01-08 13:29 ` Lee Jones
2014-01-08 12:49 ` Mark Brown
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=1388755676-16036-3-git-send-email-peter.ujfalusi@ti.com \
--to=peter.ujfalusi@ti.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=lee.jones@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sameo@linux.intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®