diff options
author | Tony Lindgren <tony@atomide.com> | 2016-09-15 13:56:11 -0700 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-09-16 12:06:27 +0100 |
commit | 55562449032c43b84f839e2fbb84bf1d351d6603 (patch) | |
tree | 0abc946447244b9f316e5b440bc9f3e1e6da4b89 /drivers/base | |
parent | f50e38c9966076465bc8d9dd0bc582c268a0031e (diff) | |
download | linux-stable-55562449032c43b84f839e2fbb84bf1d351d6603.tar.gz linux-stable-55562449032c43b84f839e2fbb84bf1d351d6603.tar.bz2 linux-stable-55562449032c43b84f839e2fbb84bf1d351d6603.zip |
regmap: Add missing little endian functions
This with the longer read and write masks allow supporting more
exotic devices. For example a little endian SPI device:
static const struct regmap_config foo_regmap_config = {
.reg_bits = 16,
.reg_stride = 4,
.val_bits = 16,
.write_flag_mask = 0x8000,
.reg_format_endian = REGMAP_ENDIAN_LITTLE,
.val_format_endian = REGMAP_ENDIAN_LITTLE,
...
};
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/regmap/regmap.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index a6a5236b6c8d..31cfe70e6d53 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -749,6 +749,9 @@ struct regmap *__regmap_init(struct device *dev, case REGMAP_ENDIAN_BIG: map->format.format_reg = regmap_format_16_be; break; + case REGMAP_ENDIAN_LITTLE: + map->format.format_reg = regmap_format_16_le; + break; case REGMAP_ENDIAN_NATIVE: map->format.format_reg = regmap_format_16_native; break; @@ -768,6 +771,9 @@ struct regmap *__regmap_init(struct device *dev, case REGMAP_ENDIAN_BIG: map->format.format_reg = regmap_format_32_be; break; + case REGMAP_ENDIAN_LITTLE: + map->format.format_reg = regmap_format_32_le; + break; case REGMAP_ENDIAN_NATIVE: map->format.format_reg = regmap_format_32_native; break; @@ -782,6 +788,9 @@ struct regmap *__regmap_init(struct device *dev, case REGMAP_ENDIAN_BIG: map->format.format_reg = regmap_format_64_be; break; + case REGMAP_ENDIAN_LITTLE: + map->format.format_reg = regmap_format_64_le; + break; case REGMAP_ENDIAN_NATIVE: map->format.format_reg = regmap_format_64_native; break; |