aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/sunxi/patches-4.1/103-mfd-axp20x-add-missing-registers.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/sunxi/patches-4.1/103-mfd-axp20x-add-missing-registers.patch')
-rw-r--r--target/linux/sunxi/patches-4.1/103-mfd-axp20x-add-missing-registers.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/target/linux/sunxi/patches-4.1/103-mfd-axp20x-add-missing-registers.patch b/target/linux/sunxi/patches-4.1/103-mfd-axp20x-add-missing-registers.patch
new file mode 100644
index 0000000..a458579
--- /dev/null
+++ b/target/linux/sunxi/patches-4.1/103-mfd-axp20x-add-missing-registers.patch
@@ -0,0 +1,71 @@
+From 5469e15c9a0025e8822762ab9acfc3ee50e55c2c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bruno=20Pr=C3=A9mont?= <bonbons@linux-vserver.org>
+Date: Tue, 9 Jun 2015 08:30:48 +0200
+Subject: [PATCH] mfd: axp20x: Add missing registers, and mark more registers
+ volatile
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+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.
+
+Cc: Bruno Prémont <bonbons@linux-vserver.org>
+Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Acked-by: Lee Jones <lee.jones@linaro.org>
+Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
+---
+Changes in v2:
+-Add a AXP20X_OCV_MAX define
+Changes in v3:
+-Add Bruno's S-o-b
+---
+ drivers/mfd/axp20x.c | 8 +++++++-
+ include/linux/mfd/axp20x.h | 6 ++++++
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+--- a/drivers/mfd/axp20x.c
++++ b/drivers/mfd/axp20x.c
+@@ -39,10 +39,16 @@ static const char * const axp20x_model_n
+ static const struct regmap_range axp20x_writeable_ranges[] = {
+ regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
+ regmap_reg_range(AXP20X_DCDC_MODE, AXP20X_FG_RES),
++ regmap_reg_range(AXP20X_RDC_H, AXP20X_OCV(15)),
+ };
+
+ static const struct regmap_range axp20x_volatile_ranges[] = {
++ regmap_reg_range(AXP20X_PWR_INPUT_STATUS, AXP20X_USB_OTG_STATUS),
++ regmap_reg_range(AXP20X_CHRG_CTRL1, AXP20X_CHRG_CTRL2),
+ regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IRQ5_STATE),
++ regmap_reg_range(AXP20X_ACIN_V_ADC_H, AXP20X_IPSOUT_V_HIGH_L),
++ regmap_reg_range(AXP20X_GPIO20_SS, AXP20X_GPIO3_CTRL),
++ regmap_reg_range(AXP20X_FG_RES, AXP20X_RDC_L),
+ };
+
+ static const struct regmap_access_table axp20x_writeable_table = {
+@@ -159,7 +165,7 @@ static const struct regmap_config axp20x
+ .val_bits = 8,
+ .wr_table = &axp20x_writeable_table,
+ .volatile_table = &axp20x_volatile_table,
+- .max_register = AXP20X_FG_RES,
++ .max_register = AXP20X_OCV(AXP20X_OCV_MAX),
+ .cache_type = REGCACHE_RBTREE,
+ };
+
+--- a/include/linux/mfd/axp20x.h
++++ b/include/linux/mfd/axp20x.h
+@@ -151,6 +151,12 @@ enum {
+ #define AXP20X_CC_CTRL 0xb8
+ #define AXP20X_FG_RES 0xb9
+
++/* OCV */
++#define AXP20X_RDC_H 0xba
++#define AXP20X_RDC_L 0xbb
++#define AXP20X_OCV(m) (0xc0 + (m))
++#define AXP20X_OCV_MAX 0xf
++
+ /* AXP22X specific registers */
+ #define AXP22X_BATLOW_THRES1 0xe6
+