aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Prémont <bonbons@linux-vserver.org>2015-08-08 11:58:40 -0400
committerLee Jones <lee.jones@linaro.org>2015-08-12 04:59:11 -0400
commit553ed4b5dff66dbb10c20599e493b72ec6af72ab (patch)
tree275e7bede68653709eb5daac41288a7556e7358f
parent3762aede11e516b7a392afdc1e070171e6f6cd00 (diff)
mfd: axp20x: Add missing registers, and mark more registers volatile
Add an extra set of registers which is necessary tu support the PMICs battery charger function, and mark registers which contain status bits, gpio status, and adc readings as volatile. Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r--drivers/mfd/axp20x.c8
-rw-r--r--include/linux/mfd/axp20x.h6
2 files changed, 13 insertions, 1 deletions
diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
index b369cfce866c..d9f2f967d653 100644
--- a/drivers/mfd/axp20x.c
+++ b/drivers/mfd/axp20x.c
@@ -61,10 +61,16 @@ static const struct regmap_access_table axp152_volatile_table = {
61static const struct regmap_range axp20x_writeable_ranges[] = { 61static const struct regmap_range axp20x_writeable_ranges[] = {
62 regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE), 62 regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
63 regmap_reg_range(AXP20X_DCDC_MODE, AXP20X_FG_RES), 63 regmap_reg_range(AXP20X_DCDC_MODE, AXP20X_FG_RES),
64 regmap_reg_range(AXP20X_RDC_H, AXP20X_OCV(AXP20X_OCV_MAX)),
64}; 65};
65 66
66static const struct regmap_range axp20x_volatile_ranges[] = { 67static const struct regmap_range axp20x_volatile_ranges[] = {
68 regmap_reg_range(AXP20X_PWR_INPUT_STATUS, AXP20X_USB_OTG_STATUS),
69 regmap_reg_range(AXP20X_CHRG_CTRL1, AXP20X_CHRG_CTRL2),
67 regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IRQ5_STATE), 70 regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IRQ5_STATE),
71 regmap_reg_range(AXP20X_ACIN_V_ADC_H, AXP20X_IPSOUT_V_HIGH_L),
72 regmap_reg_range(AXP20X_GPIO20_SS, AXP20X_GPIO3_CTRL),
73 regmap_reg_range(AXP20X_FG_RES, AXP20X_RDC_L),
68}; 74};
69 75
70static const struct regmap_access_table axp20x_writeable_table = { 76static const struct regmap_access_table axp20x_writeable_table = {
@@ -195,7 +201,7 @@ static const struct regmap_config axp20x_regmap_config = {
195 .val_bits = 8, 201 .val_bits = 8,
196 .wr_table = &axp20x_writeable_table, 202 .wr_table = &axp20x_writeable_table,
197 .volatile_table = &axp20x_volatile_table, 203 .volatile_table = &axp20x_volatile_table,
198 .max_register = AXP20X_FG_RES, 204 .max_register = AXP20X_OCV(AXP20X_OCV_MAX),
199 .cache_type = REGCACHE_RBTREE, 205 .cache_type = REGCACHE_RBTREE,
200}; 206};
201 207
diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
index 52203d5f7984..cc8ad1e1a307 100644
--- a/include/linux/mfd/axp20x.h
+++ b/include/linux/mfd/axp20x.h
@@ -190,6 +190,12 @@ enum {
190#define AXP20X_CC_CTRL 0xb8 190#define AXP20X_CC_CTRL 0xb8
191#define AXP20X_FG_RES 0xb9 191#define AXP20X_FG_RES 0xb9
192 192
193/* OCV */
194#define AXP20X_RDC_H 0xba
195#define AXP20X_RDC_L 0xbb
196#define AXP20X_OCV(m) (0xc0 + (m))
197#define AXP20X_OCV_MAX 0xf
198
193/* AXP22X specific registers */ 199/* AXP22X specific registers */
194#define AXP22X_BATLOW_THRES1 0xe6 200#define AXP22X_BATLOW_THRES1 0xe6
195 201