diff options
author | Xiubo Li <Li.Xiubo@freescale.com> | 2014-03-28 13:12:56 +0800 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-03-28 11:12:05 +0000 |
commit | 451485ba6bfbed36220b9e710fca0525f62e771d (patch) | |
tree | aab504ba27ca65b06fba3cb5cb70d7498b30ea9e /drivers/base | |
parent | 932580409a9dacbf42215fa737bf06ae2c0aa624 (diff) |
regmap: mmio: Add regmap_mmio_regbits_check.
Fix the support for 1/2/8 bytes wide register address checking.
Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/regmap/regmap-mmio.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/base/regmap/regmap-mmio.c b/drivers/base/regmap/regmap-mmio.c index ed080a47b1f..de45a1e1548 100644 --- a/drivers/base/regmap/regmap-mmio.c +++ b/drivers/base/regmap/regmap-mmio.c @@ -47,6 +47,21 @@ static inline void regmap_mmio_regsize_check(size_t reg_size) } } +static int regmap_mmio_regbits_check(size_t reg_bits) +{ + switch (reg_bits) { + case 8: + case 16: + case 32: +#ifdef CONFIG_64BIT + case 64: +#endif + return 0; + default: + return -EINVAL; + } +} + static inline void regmap_mmio_count_check(size_t count) { BUG_ON(count % 2 != 0); @@ -191,8 +206,9 @@ static struct regmap_mmio_context *regmap_mmio_gen_context(struct device *dev, int min_stride; int ret; - if (config->reg_bits != 32) - return ERR_PTR(-EINVAL); + ret = regmap_mmio_regbits_check(config->reg_bits); + if (ret) + return ERR_PTR(ret); if (config->pad_bits) return ERR_PTR(-EINVAL); |