Skip to content

Commit

Permalink
regmap: Add support for 10/14 register formating
Browse files Browse the repository at this point in the history
This patch adds support for 10 bits register, 14 bits value type register
formating. This is for example used by the Analog Devices AD5380.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Lars-Peter Clausen authored and Mark Brown committed Nov 16, 2011
1 parent 1925441 commit 7e5ec63
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions drivers/base/regmap/regmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,16 @@ static void regmap_format_7_9_write(struct regmap *map,
*out = cpu_to_be16((reg << 9) | val);
}

static void regmap_format_10_14_write(struct regmap *map,
unsigned int reg, unsigned int val)
{
u8 *out = map->work_buf;

out[2] = val;
out[1] = (val >> 8) | (reg << 6);
out[0] = reg >> 2;
}

static void regmap_format_8(void *buf, unsigned int val)
{
u8 *b = buf;
Expand Down Expand Up @@ -188,6 +198,16 @@ struct regmap *regmap_init(struct device *dev,
}
break;

case 10:
switch (config->val_bits) {
case 14:
map->format.format_write = regmap_format_10_14_write;
break;
default:
goto err_map;
}
break;

case 8:
map->format.format_reg = regmap_format_8;
break;
Expand Down

0 comments on commit 7e5ec63

Please sign in to comment.