aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2012-11-19 22:14:48 -0500
committerSamuel Ortiz <sameo@linux.intel.com>2012-11-21 10:07:53 -0500
commitb9c79323166530a14c1fa8c10337eeaa54e3f98d (patch)
tree02ec6901e7407d1687a0a0826e9a440ad9fa5ca1
parent3863db3e800c64e21e4effcc3de0f72cdb9b0d77 (diff)
mfd: tps65090: Move register access APIs to header
Since tps65090 register is accessed via regmap, moving the register access APIs to header and making it as inline. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r--drivers/mfd/tps65090.c34
-rw-r--r--include/linux/mfd/tps65090.h39
2 files changed, 35 insertions, 38 deletions
diff --git a/drivers/mfd/tps65090.c b/drivers/mfd/tps65090.c
index 3cfc9dcbe9dc..355a07749454 100644
--- a/drivers/mfd/tps65090.c
+++ b/drivers/mfd/tps65090.c
@@ -25,7 +25,6 @@
25#include <linux/i2c.h> 25#include <linux/i2c.h>
26#include <linux/mfd/core.h> 26#include <linux/mfd/core.h>
27#include <linux/mfd/tps65090.h> 27#include <linux/mfd/tps65090.h>
28#include <linux/regmap.h>
29#include <linux/err.h> 28#include <linux/err.h>
30 29
31#define NUM_INT_REG 2 30#define NUM_INT_REG 2
@@ -78,39 +77,6 @@ static struct mfd_cell tps65090s[] = {
78 }, 77 },
79}; 78};
80 79
81int tps65090_write(struct device *dev, int reg, uint8_t val)
82{
83 struct tps65090 *tps = dev_get_drvdata(dev);
84 return regmap_write(tps->rmap, reg, val);
85}
86EXPORT_SYMBOL_GPL(tps65090_write);
87
88int tps65090_read(struct device *dev, int reg, uint8_t *val)
89{
90 struct tps65090 *tps = dev_get_drvdata(dev);
91 unsigned int temp_val;
92 int ret;
93 ret = regmap_read(tps->rmap, reg, &temp_val);
94 if (!ret)
95 *val = temp_val;
96 return ret;
97}
98EXPORT_SYMBOL_GPL(tps65090_read);
99
100int tps65090_set_bits(struct device *dev, int reg, uint8_t bit_num)
101{
102 struct tps65090 *tps = dev_get_drvdata(dev);
103 return regmap_update_bits(tps->rmap, reg, BIT(bit_num), ~0u);
104}
105EXPORT_SYMBOL_GPL(tps65090_set_bits);
106
107int tps65090_clr_bits(struct device *dev, int reg, uint8_t bit_num)
108{
109 struct tps65090 *tps = dev_get_drvdata(dev);
110 return regmap_update_bits(tps->rmap, reg, BIT(bit_num), 0u);
111}
112EXPORT_SYMBOL_GPL(tps65090_clr_bits);
113
114static void tps65090_irq_lock(struct irq_data *data) 80static void tps65090_irq_lock(struct irq_data *data)
115{ 81{
116 struct tps65090 *tps65090 = irq_data_get_irq_chip_data(data); 82 struct tps65090 *tps65090 = irq_data_get_irq_chip_data(data);
diff --git a/include/linux/mfd/tps65090.h b/include/linux/mfd/tps65090.h
index 6c576224f637..1a5f916b7383 100644
--- a/include/linux/mfd/tps65090.h
+++ b/include/linux/mfd/tps65090.h
@@ -23,6 +23,7 @@
23#define __LINUX_MFD_TPS65090_H 23#define __LINUX_MFD_TPS65090_H
24 24
25#include <linux/irq.h> 25#include <linux/irq.h>
26#include <linux/regmap.h>
26 27
27struct tps65090 { 28struct tps65090 {
28 struct device *dev; 29 struct device *dev;
@@ -40,9 +41,39 @@ struct tps65090_platform_data {
40 * NOTE: the functions below are not intended for use outside 41 * NOTE: the functions below are not intended for use outside
41 * of the TPS65090 sub-device drivers 42 * of the TPS65090 sub-device drivers
42 */ 43 */
43extern int tps65090_write(struct device *dev, int reg, uint8_t val); 44static inline int tps65090_write(struct device *dev, int reg, uint8_t val)
44extern int tps65090_read(struct device *dev, int reg, uint8_t *val); 45{
45extern int tps65090_set_bits(struct device *dev, int reg, uint8_t bit_num); 46 struct tps65090 *tps = dev_get_drvdata(dev);
46extern int tps65090_clr_bits(struct device *dev, int reg, uint8_t bit_num); 47
48 return regmap_write(tps->rmap, reg, val);
49}
50
51static inline int tps65090_read(struct device *dev, int reg, uint8_t *val)
52{
53 struct tps65090 *tps = dev_get_drvdata(dev);
54 unsigned int temp_val;
55 int ret;
56
57 ret = regmap_read(tps->rmap, reg, &temp_val);
58 if (!ret)
59 *val = temp_val;
60 return ret;
61}
62
63static inline int tps65090_set_bits(struct device *dev, int reg,
64 uint8_t bit_num)
65{
66 struct tps65090 *tps = dev_get_drvdata(dev);
67
68 return regmap_update_bits(tps->rmap, reg, BIT(bit_num), ~0u);
69}
70
71static inline int tps65090_clr_bits(struct device *dev, int reg,
72 uint8_t bit_num)
73{
74 struct tps65090 *tps = dev_get_drvdata(dev);
75
76 return regmap_update_bits(tps->rmap, reg, BIT(bit_num), 0u);
77}
47 78
48#endif /*__LINUX_MFD_TPS65090_H */ 79#endif /*__LINUX_MFD_TPS65090_H */