[PATCH 5/6] regmap: add runtime PM calls to debugfs file IO

From: Stephen Warren
Date: Wed Apr 04 2012 - 17:48:58 EST


From: Stephen Warren <swarren@xxxxxxxxxx>

It's quite probably that devices need to be active in order for their
registers to be read/written. In normal regmap usage by drivers, it's the
responsibility of the driver to assure this if needed. However, regmap
debugfs file handling is outside the driver's control, so we need to
explicitly ensure this.

Signed-off-by: Stephen Warren <swarren@xxxxxxxxxx>
---
drivers/base/regmap/regmap-debugfs.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c
index df97c93..7a18fdb 100644
--- a/drivers/base/regmap/regmap-debugfs.c
+++ b/drivers/base/regmap/regmap-debugfs.c
@@ -15,6 +15,7 @@
#include <linux/debugfs.h>
#include <linux/uaccess.h>
#include <linux/device.h>
+#include <linux/pm_runtime.h>

#include "internal.h"

@@ -80,6 +81,8 @@ 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 */

+ pm_runtime_get(map->dev);
+
for (i = 0; i < map->max_register + 1; i++) {
if (!regmap_readable(map, i))
continue;
@@ -112,6 +115,8 @@ static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf,
p += tot_len;
}

+ pm_runtime_put(map->dev);
+
ret = buf_pos;

if (copy_to_user(user_buf, buf, buf_pos)) {
@@ -160,7 +165,9 @@ static ssize_t regmap_map_write_file(struct file *file,
/* Userspace has been fiddling around behind the kernel's back */
add_taint(TAINT_USER);

+ pm_runtime_get(map->dev);
regmap_write(map, reg, value);
+ pm_runtime_put(map->dev);
return buf_size;
}
#else
--
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/