diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2016-02-15 00:23:01 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-02-19 11:15:56 -0500 |
commit | 30ed9cb7a49b499ebc6061e4ff38e88cb4857cad (patch) | |
tree | 3a86bd1ee5fff53eb15bcbafc8eaca19e5d1de59 | |
parent | ca7a94464b5457a8dc5add19f6fc3bea59d6193f (diff) |
regmap: merge regmap_update_bits_async() into macro
Current regmap has many similar update functions like below,
but the difference is very few.
regmap_update_bits()
regmap_update_bits_async()
regmap_update_bits_check()
regmap_update_bits_check_async()
Furthermore, we can add *force* write option too in the future.
This patch merges regmap_update_bits_async() into macro
by using regmap_update_bits_base().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | drivers/base/regmap/regmap.c | 34 | ||||
-rw-r--r-- | include/linux/regmap.h | 12 |
2 files changed, 2 insertions, 44 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index 281898a97e8f..c2255f604c03 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c | |||
@@ -2711,40 +2711,6 @@ int regmap_write_bits(struct regmap *map, unsigned int reg, | |||
2711 | EXPORT_SYMBOL_GPL(regmap_write_bits); | 2711 | EXPORT_SYMBOL_GPL(regmap_write_bits); |
2712 | 2712 | ||
2713 | /** | 2713 | /** |
2714 | * regmap_update_bits_async: Perform a read/modify/write cycle on the register | ||
2715 | * map asynchronously | ||
2716 | * | ||
2717 | * @map: Register map to update | ||
2718 | * @reg: Register to update | ||
2719 | * @mask: Bitmask to change | ||
2720 | * @val: New value for bitmask | ||
2721 | * | ||
2722 | * With most buses the read must be done synchronously so this is most | ||
2723 | * useful for devices with a cache which do not need to interact with | ||
2724 | * the hardware to determine the current register value. | ||
2725 | * | ||
2726 | * Returns zero for success, a negative number on error. | ||
2727 | */ | ||
2728 | int regmap_update_bits_async(struct regmap *map, unsigned int reg, | ||
2729 | unsigned int mask, unsigned int val) | ||
2730 | { | ||
2731 | int ret; | ||
2732 | |||
2733 | map->lock(map->lock_arg); | ||
2734 | |||
2735 | map->async = true; | ||
2736 | |||
2737 | ret = _regmap_update_bits(map, reg, mask, val, NULL, false); | ||
2738 | |||
2739 | map->async = false; | ||
2740 | |||
2741 | map->unlock(map->lock_arg); | ||
2742 | |||
2743 | return ret; | ||
2744 | } | ||
2745 | EXPORT_SYMBOL_GPL(regmap_update_bits_async); | ||
2746 | |||
2747 | /** | ||
2748 | * regmap_update_bits_check: Perform a read/modify/write cycle on the | 2714 | * regmap_update_bits_check: Perform a read/modify/write cycle on the |
2749 | * register map and report if updated | 2715 | * register map and report if updated |
2750 | * | 2716 | * |
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 500b36cbc7aa..90c8b0e99f9d 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h | |||
@@ -67,6 +67,8 @@ struct reg_sequence { | |||
67 | 67 | ||
68 | #define regmap_update_bits(map, reg, mask, val) \ | 68 | #define regmap_update_bits(map, reg, mask, val) \ |
69 | regmap_update_bits_base(map, reg, mask, val, NULL, false, false) | 69 | regmap_update_bits_base(map, reg, mask, val, NULL, false, false) |
70 | #define regmap_update_bits_async(map, reg, mask, val)\ | ||
71 | regmap_update_bits_base(map, reg, mask, val, NULL, true, false) | ||
70 | 72 | ||
71 | #ifdef CONFIG_REGMAP | 73 | #ifdef CONFIG_REGMAP |
72 | 74 | ||
@@ -699,8 +701,6 @@ int regmap_update_bits_base(struct regmap *map, unsigned int reg, | |||
699 | bool *change, bool async, bool force); | 701 | bool *change, bool async, bool force); |
700 | int regmap_write_bits(struct regmap *map, unsigned int reg, | 702 | int regmap_write_bits(struct regmap *map, unsigned int reg, |
701 | unsigned int mask, unsigned int val); | 703 | unsigned int mask, unsigned int val); |
702 | int regmap_update_bits_async(struct regmap *map, unsigned int reg, | ||
703 | unsigned int mask, unsigned int val); | ||
704 | int regmap_update_bits_check(struct regmap *map, unsigned int reg, | 704 | int regmap_update_bits_check(struct regmap *map, unsigned int reg, |
705 | unsigned int mask, unsigned int val, | 705 | unsigned int mask, unsigned int val, |
706 | bool *change); | 706 | bool *change); |
@@ -956,14 +956,6 @@ static inline int regmap_write_bits(struct regmap *map, unsigned int reg, | |||
956 | return -EINVAL; | 956 | return -EINVAL; |
957 | } | 957 | } |
958 | 958 | ||
959 | static inline int regmap_update_bits_async(struct regmap *map, | ||
960 | unsigned int reg, | ||
961 | unsigned int mask, unsigned int val) | ||
962 | { | ||
963 | WARN_ONCE(1, "regmap API is disabled"); | ||
964 | return -EINVAL; | ||
965 | } | ||
966 | |||
967 | static inline int regmap_update_bits_check(struct regmap *map, | 959 | static inline int regmap_update_bits_check(struct regmap *map, |
968 | unsigned int reg, | 960 | unsigned int reg, |
969 | unsigned int mask, unsigned int val, | 961 | unsigned int mask, unsigned int val, |