From: Mukund Navada <navada@ti.com>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: <linux-kernel@vger.kernel.org>, Mukund Navada <navada@ti.com>
Subject: [PATCH 1/1] regmap: Add support for continously numbered pages across regmap range
Date: Wed, 28 Nov 2012 14:52:57 +0530 [thread overview]
Message-ID: <1354094577-14967-1-git-send-email-navada@ti.com> (raw)
In-Reply-To: <n>
Page number in some devices increases across regmap ranges since the
selector register to choose the page remains the same. So in order to
write correct page number, the start_page_num is stored in
regmap_range_cfg.
Signed-off-by: Mukund Navada <navada@ti.com>
---
drivers/base/regmap/internal.h | 2 ++
drivers/base/regmap/regmap.c | 2 ++
include/linux/regmap.h | 5 +++++
3 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/drivers/base/regmap/internal.h b/drivers/base/regmap/internal.h
index 288e135..fd31f5d 100644
--- a/drivers/base/regmap/internal.h
+++ b/drivers/base/regmap/internal.h
@@ -134,6 +134,8 @@ struct regmap_range_node {
unsigned int window_start;
unsigned int window_len;
+
+ unsigned int start_page_num;
};
#ifdef CONFIG_DEBUG_FS
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 42d5cb0..39e37a4 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -645,6 +645,7 @@ struct regmap *regmap_init(struct device *dev,
new->selector_shift = range_cfg->selector_shift;
new->window_start = range_cfg->window_start;
new->window_len = range_cfg->window_len;
+ new->start_page_num = range_cfg->start_page_num;
if (_regmap_range_add(map, new) == false) {
dev_err(map->dev, "Failed to add range %d\n", i);
@@ -833,6 +834,7 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg,
win_offset = (*reg - range->range_min) % range->window_len;
win_page = (*reg - range->range_min) / range->window_len;
+ win_page += range->start_page_num;
if (val_num > 1) {
/* Bulk write shouldn't cross range boundary */
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index b7e95bf..96f029e 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -217,6 +217,8 @@ struct regmap_config {
*
* @window_start: Address of first (lowest) register in data window.
* @window_len: Number of registers in data window.
+ *
+ * @start_page_num: Start page number for the range
*/
struct regmap_range_cfg {
const char *name;
@@ -233,6 +235,9 @@ struct regmap_range_cfg {
/* Data window (per each page) */
unsigned int window_start;
unsigned int window_len;
+
+ /* Starting page number when it increases across range */
+ unsigned int start_page_num;
};
typedef int (*regmap_hw_write)(void *context, const void *data,
--
1.7.1
next reply other threads:[~2012-11-28 9:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-28 9:22 Mukund Navada [this message]
2012-11-28 9:29 ` [PATCH 1/1] regmap: Add support for continously numbered pages across regmap range Mark Brown
2012-11-28 10:11 ` Navada Kanyana, Mukund
2012-11-28 11:34 ` Mark Brown
2012-11-28 11:52 ` Navada Kanyana, Mukund
2012-11-28 11:56 ` Mark Brown
2012-11-28 12:10 ` Navada Kanyana, Mukund
2012-11-28 13:15 ` 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=1354094577-14967-1-git-send-email-navada@ti.com \
--to=navada@ti.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=gregkh@linuxfoundation.org \
--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.