* [PATCH 1/3] regmap: Allow ranges to be named
@ 2012-10-03 12:42 Mark Brown
2012-10-03 12:43 ` [PATCH] regulator: lp8788-ldo: Staticise non-exported symbol Mark Brown
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Mark Brown @ 2012-10-03 12:42 UTC (permalink / raw)
To: linux-kernel; +Cc: Mark Brown
For more useful diagnostics.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
drivers/base/regmap/internal.h | 1 +
drivers/base/regmap/regmap.c | 1 +
include/linux/regmap.h | 4 ++++
3 files changed, 6 insertions(+)
diff --git a/drivers/base/regmap/internal.h b/drivers/base/regmap/internal.h
index 80f9ab9..27e66c3 100644
--- a/drivers/base/regmap/internal.h
+++ b/drivers/base/regmap/internal.h
@@ -120,6 +120,7 @@ int _regmap_write(struct regmap *map, unsigned int reg,
struct regmap_range_node {
struct rb_node node;
+ const char *name;
unsigned int range_min;
unsigned int range_max;
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 0544f63..ce5129d 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -579,6 +579,7 @@ struct regmap *regmap_init(struct device *dev,
goto err_range;
}
+ new->name = range_cfg->name;
new->range_min = range_cfg->range_min;
new->range_max = range_cfg->range_max;
new->selector_reg = range_cfg->selector_reg;
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index afc8e1a..9f228d7 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -142,6 +142,8 @@ struct regmap_config {
* 1. page selector register update;
* 2. access through data window registers.
*
+ * @name: Descriptive name for diagnostics
+ *
* @range_min: Address of the lowest register address in virtual range.
* @range_max: Address of the highest register in virtual range.
*
@@ -153,6 +155,8 @@ struct regmap_config {
* @window_len: Number of registers in data window.
*/
struct regmap_range_cfg {
+ const char *name;
+
/* Registers of virtual address range */
unsigned int range_min;
unsigned int range_max;
--
1.7.10.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] regulator: lp8788-ldo: Staticise non-exported symbol
2012-10-03 12:42 [PATCH 1/3] regmap: Allow ranges to be named Mark Brown
@ 2012-10-03 12:43 ` Mark Brown
2012-10-03 12:43 ` [PATCH 2/3] regmap: Factor out debugfs register read Mark Brown
2012-10-03 12:43 ` [PATCH 3/3] regmap: Provide debugfs read of register ranges Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-10-03 12:43 UTC (permalink / raw)
To: linux-kernel; +Cc: Mark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
drivers/regulator/lp8788-ldo.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/regulator/lp8788-ldo.c b/drivers/regulator/lp8788-ldo.c
index 6796eeb..e496ba0 100644
--- a/drivers/regulator/lp8788-ldo.c
+++ b/drivers/regulator/lp8788-ldo.c
@@ -126,7 +126,7 @@ struct lp8788_ldo {
};
/* DLDO 1, 2, 3, 9 voltage table */
-const int lp8788_dldo1239_vtbl[] = {
+static const int lp8788_dldo1239_vtbl[] = {
1800000, 1900000, 2000000, 2100000, 2200000, 2300000, 2400000, 2500000,
2600000, 2700000, 2800000, 2900000, 3000000, 2850000, 2850000, 2850000,
2850000, 2850000, 2850000, 2850000, 2850000, 2850000, 2850000, 2850000,
--
1.7.10.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/3] regmap: Factor out debugfs register read
2012-10-03 12:42 [PATCH 1/3] regmap: Allow ranges to be named Mark Brown
2012-10-03 12:43 ` [PATCH] regulator: lp8788-ldo: Staticise non-exported symbol Mark Brown
@ 2012-10-03 12:43 ` Mark Brown
2012-10-03 12:43 ` [PATCH 3/3] regmap: Provide debugfs read of register ranges Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-10-03 12:43 UTC (permalink / raw)
To: linux-kernel; +Cc: Mark Brown
This will allow the use of the same code for reading register ranges.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
drivers/base/regmap/regmap-debugfs.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c
index bb1ff17..25b6843 100644
--- a/drivers/base/regmap/regmap-debugfs.c
+++ b/drivers/base/regmap/regmap-debugfs.c
@@ -56,15 +56,15 @@ static const struct file_operations regmap_name_fops = {
.llseek = default_llseek,
};
-static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf,
- size_t count, loff_t *ppos)
+static ssize_t regmap_read_debugfs(struct regmap *map, unsigned int from,
+ unsigned int to, char __user *user_buf,
+ size_t count, loff_t *ppos)
{
int reg_len, val_len, tot_len;
size_t buf_pos = 0;
loff_t p = 0;
ssize_t ret;
int i;
- struct regmap *map = file->private_data;
char *buf;
unsigned int val;
@@ -80,7 +80,7 @@ static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf,
val_len = 2 * map->format.val_bytes;
tot_len = reg_len + val_len + 3; /* : \n */
- for (i = 0; i <= map->max_register; i += map->reg_stride) {
+ for (i = from; i <= to; i += map->reg_stride) {
if (!regmap_readable(map, i))
continue;
@@ -95,7 +95,7 @@ static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf,
/* Format the register */
snprintf(buf + buf_pos, count - buf_pos, "%.*x: ",
- reg_len, i);
+ reg_len, i - from);
buf_pos += reg_len + 2;
/* Format the value, write all X if we can't read */
@@ -126,6 +126,15 @@ out:
return ret;
}
+static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct regmap *map = file->private_data;
+
+ return regmap_read_debugfs(map, 0, map->max_register, user_buf,
+ count, ppos);
+}
+
#undef REGMAP_ALLOW_WRITE_DEBUGFS
#ifdef REGMAP_ALLOW_WRITE_DEBUGFS
/*
--
1.7.10.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 3/3] regmap: Provide debugfs read of register ranges
2012-10-03 12:42 [PATCH 1/3] regmap: Allow ranges to be named Mark Brown
2012-10-03 12:43 ` [PATCH] regulator: lp8788-ldo: Staticise non-exported symbol Mark Brown
2012-10-03 12:43 ` [PATCH 2/3] regmap: Factor out debugfs register read Mark Brown
@ 2012-10-03 12:43 ` Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-10-03 12:43 UTC (permalink / raw)
To: linux-kernel; +Cc: Mark Brown
If a register range is named then provide a debugfs file showing the
contents of the range separately.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
drivers/base/regmap/internal.h | 1 +
drivers/base/regmap/regmap-debugfs.c | 31 +++++++++++++++++++++++++++++++
drivers/base/regmap/regmap.c | 1 +
3 files changed, 33 insertions(+)
diff --git a/drivers/base/regmap/internal.h b/drivers/base/regmap/internal.h
index 27e66c3..ac869d2 100644
--- a/drivers/base/regmap/internal.h
+++ b/drivers/base/regmap/internal.h
@@ -121,6 +121,7 @@ int _regmap_write(struct regmap *map, unsigned int reg,
struct regmap_range_node {
struct rb_node node;
const char *name;
+ struct regmap *map;
unsigned int range_min;
unsigned int range_max;
diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c
index 25b6843..f4b9dd0 100644
--- a/drivers/base/regmap/regmap-debugfs.c
+++ b/drivers/base/regmap/regmap-debugfs.c
@@ -183,6 +183,22 @@ static const struct file_operations regmap_map_fops = {
.llseek = default_llseek,
};
+static ssize_t regmap_range_read_file(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct regmap_range_node *range = file->private_data;
+ struct regmap *map = range->map;
+
+ return regmap_read_debugfs(map, range->range_min, range->range_max,
+ user_buf, count, ppos);
+}
+
+static const struct file_operations regmap_range_fops = {
+ .open = simple_open,
+ .read = regmap_range_read_file,
+ .llseek = default_llseek,
+};
+
static ssize_t regmap_access_read_file(struct file *file,
char __user *user_buf, size_t count,
loff_t *ppos)
@@ -253,6 +269,9 @@ static const struct file_operations regmap_access_fops = {
void regmap_debugfs_init(struct regmap *map, const char *name)
{
+ struct rb_node *next;
+ struct regmap_range_node *range_node;
+
if (name) {
map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s",
dev_name(map->dev), name);
@@ -285,6 +304,18 @@ void regmap_debugfs_init(struct regmap *map, const char *name)
debugfs_create_bool("cache_bypass", 0400, map->debugfs,
&map->cache_bypass);
}
+
+ next = rb_first(&map->range_tree);
+ while (next) {
+ range_node = rb_entry(next, struct regmap_range_node, node);
+
+ if (range_node->name)
+ debugfs_create_file(range_node->name, 0400,
+ map->debugfs, range_node,
+ ®map_range_fops);
+
+ next = rb_next(&range_node->node);
+ }
}
void regmap_debugfs_exit(struct regmap *map)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index ce5129d..366b629 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -579,6 +579,7 @@ struct regmap *regmap_init(struct device *dev,
goto err_range;
}
+ new->map = map;
new->name = range_cfg->name;
new->range_min = range_cfg->range_min;
new->range_max = range_cfg->range_max;
--
1.7.10.4
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-10-03 12:43 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-03 12:42 [PATCH 1/3] regmap: Allow ranges to be named Mark Brown
2012-10-03 12:43 ` [PATCH] regulator: lp8788-ldo: Staticise non-exported symbol Mark Brown
2012-10-03 12:43 ` [PATCH 2/3] regmap: Factor out debugfs register read Mark Brown
2012-10-03 12:43 ` [PATCH 3/3] regmap: Provide debugfs read of register ranges Mark Brown
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®