Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd9cc12f authored by Mark Brown's avatar Mark Brown
Browse files

regmap: Factor out debugfs register read



This will allow the use of the same code for reading register ranges.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent d058bb49
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -56,7 +56,8 @@ 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,
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;
@@ -64,7 +65,6 @@ static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf,
	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 @@ static ssize_t regmap_map_read_file(struct file *file, char __user *user_buf,
	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
/*