diff options
author | Mike Rapoport <mike@compulab.co.il> | 2008-12-18 04:54:27 -0500 |
---|---|---|
committer | Samuel Ortiz <samuel@sortiz.org> | 2009-01-04 06:17:41 -0500 |
commit | 856f6fd119411d5701d5db96e1aae1dd69923887 (patch) | |
tree | 0b3307ff6ab793814909fb051b18eeca4687e98f | |
parent | b8380c1a661f1f853418ff2eb798f27a11cade57 (diff) |
mfd: Dialog DA9030 battery charger MFD driver
This patch amends DA903x MFD driver with definitions and methods
needed for battery charger driver.
Signed-off-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Samuel Ortiz <sameo@openedhand.com>
-rw-r--r-- | drivers/mfd/da903x.c | 12 | ||||
-rw-r--r-- | include/linux/mfd/da903x.h | 44 |
2 files changed, 54 insertions, 2 deletions
diff --git a/drivers/mfd/da903x.c b/drivers/mfd/da903x.c index 0b5bd85dfcec..fcaf1f6028dd 100644 --- a/drivers/mfd/da903x.c +++ b/drivers/mfd/da903x.c | |||
@@ -151,12 +151,24 @@ int da903x_write(struct device *dev, int reg, uint8_t val) | |||
151 | } | 151 | } |
152 | EXPORT_SYMBOL_GPL(da903x_write); | 152 | EXPORT_SYMBOL_GPL(da903x_write); |
153 | 153 | ||
154 | int da903x_writes(struct device *dev, int reg, int len, uint8_t *val) | ||
155 | { | ||
156 | return __da903x_writes(to_i2c_client(dev), reg, len, val); | ||
157 | } | ||
158 | EXPORT_SYMBOL_GPL(da903x_writes); | ||
159 | |||
154 | int da903x_read(struct device *dev, int reg, uint8_t *val) | 160 | int da903x_read(struct device *dev, int reg, uint8_t *val) |
155 | { | 161 | { |
156 | return __da903x_read(to_i2c_client(dev), reg, val); | 162 | return __da903x_read(to_i2c_client(dev), reg, val); |
157 | } | 163 | } |
158 | EXPORT_SYMBOL_GPL(da903x_read); | 164 | EXPORT_SYMBOL_GPL(da903x_read); |
159 | 165 | ||
166 | int da903x_reads(struct device *dev, int reg, int len, uint8_t *val) | ||
167 | { | ||
168 | return __da903x_reads(to_i2c_client(dev), reg, len, val); | ||
169 | } | ||
170 | EXPORT_SYMBOL_GPL(da903x_reads); | ||
171 | |||
160 | int da903x_set_bits(struct device *dev, int reg, uint8_t bit_mask) | 172 | int da903x_set_bits(struct device *dev, int reg, uint8_t bit_mask) |
161 | { | 173 | { |
162 | struct da903x_chip *chip = dev_get_drvdata(dev); | 174 | struct da903x_chip *chip = dev_get_drvdata(dev); |
diff --git a/include/linux/mfd/da903x.h b/include/linux/mfd/da903x.h index cad314c12439..115dbe965082 100644 --- a/include/linux/mfd/da903x.h +++ b/include/linux/mfd/da903x.h | |||
@@ -32,6 +32,7 @@ enum { | |||
32 | DA9030_ID_LDO18, | 32 | DA9030_ID_LDO18, |
33 | DA9030_ID_LDO19, | 33 | DA9030_ID_LDO19, |
34 | DA9030_ID_LDO_INT, /* LDO Internal */ | 34 | DA9030_ID_LDO_INT, /* LDO Internal */ |
35 | DA9030_ID_BAT, /* battery charger */ | ||
35 | 36 | ||
36 | DA9034_ID_LED_1, | 37 | DA9034_ID_LED_1, |
37 | DA9034_ID_LED_2, | 38 | DA9034_ID_LED_2, |
@@ -93,6 +94,43 @@ struct da9034_touch_pdata { | |||
93 | int y_inverted; | 94 | int y_inverted; |
94 | }; | 95 | }; |
95 | 96 | ||
97 | /* DA9030 battery charger data */ | ||
98 | struct power_supply_info; | ||
99 | |||
100 | struct da9030_battery_info { | ||
101 | /* battery parameters */ | ||
102 | struct power_supply_info *battery_info; | ||
103 | |||
104 | /* current and voltage to use for battery charging */ | ||
105 | unsigned int charge_milliamp; | ||
106 | unsigned int charge_millivolt; | ||
107 | |||
108 | /* voltage thresholds (in millivolts) */ | ||
109 | int vbat_low; | ||
110 | int vbat_crit; | ||
111 | int vbat_charge_start; | ||
112 | int vbat_charge_stop; | ||
113 | int vbat_charge_restart; | ||
114 | |||
115 | /* battery nominal minimal and maximal voltages in millivolts */ | ||
116 | int vcharge_min; | ||
117 | int vcharge_max; | ||
118 | |||
119 | /* Temperature thresholds. These are DA9030 register values | ||
120 | "as is" and should be measured for each battery type */ | ||
121 | int tbat_low; | ||
122 | int tbat_high; | ||
123 | int tbat_restart; | ||
124 | |||
125 | |||
126 | /* battery monitor interval (seconds) */ | ||
127 | unsigned int batmon_interval; | ||
128 | |||
129 | /* platform callbacks for battery low and critical events */ | ||
130 | void (*battery_low)(void); | ||
131 | void (*battery_critical)(void); | ||
132 | }; | ||
133 | |||
96 | struct da903x_subdev_info { | 134 | struct da903x_subdev_info { |
97 | int id; | 135 | int id; |
98 | const char *name; | 136 | const char *name; |
@@ -190,11 +228,13 @@ extern int da903x_unregister_notifier(struct device *dev, | |||
190 | extern int da903x_query_status(struct device *dev, unsigned int status); | 228 | extern int da903x_query_status(struct device *dev, unsigned int status); |
191 | 229 | ||
192 | 230 | ||
193 | /* NOTE: the two functions below are not intended for use outside | 231 | /* NOTE: the functions below are not intended for use outside |
194 | * of the DA9034 sub-device drivers | 232 | * of the DA903x sub-device drivers |
195 | */ | 233 | */ |
196 | extern int da903x_write(struct device *dev, int reg, uint8_t val); | 234 | extern int da903x_write(struct device *dev, int reg, uint8_t val); |
235 | extern int da903x_writes(struct device *dev, int reg, int len, uint8_t *val); | ||
197 | extern int da903x_read(struct device *dev, int reg, uint8_t *val); | 236 | extern int da903x_read(struct device *dev, int reg, uint8_t *val); |
237 | extern int da903x_reads(struct device *dev, int reg, int len, uint8_t *val); | ||
198 | extern int da903x_update(struct device *dev, int reg, uint8_t val, uint8_t mask); | 238 | extern int da903x_update(struct device *dev, int reg, uint8_t val, uint8_t mask); |
199 | extern int da903x_set_bits(struct device *dev, int reg, uint8_t bit_mask); | 239 | extern int da903x_set_bits(struct device *dev, int reg, uint8_t bit_mask); |
200 | extern int da903x_clr_bits(struct device *dev, int reg, uint8_t bit_mask); | 240 | extern int da903x_clr_bits(struct device *dev, int reg, uint8_t bit_mask); |