lkml.org 
[lkml]   [2012]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 5/6] regmap: add runtime PM calls to debugfs file IO
Date
From: Stephen Warren <swarren@nvidia.com>

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@nvidia.com>
---
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


\
 
 \ /
  Last update: 2012-04-04 23:51    [W:0.066 / U:1.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site