aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd
diff options
context:
space:
mode:
authorChen-Yu Tsai <wens@csie.org>2016-08-27 03:55:38 -0400
committerLee Jones <lee.jones@linaro.org>2016-09-13 09:10:04 -0400
commit8824ee8573483e1c91691b5be3d3730e75551dce (patch)
tree7a3b45b900a1432d5a433d7d8158dacf071afec7 /include/linux/mfd
parent204ae2963e101344e50e3a679912f795e6b852c5 (diff)
mfd: axp20x: Add support for AXP806 PMIC
The X-Powers AXP806 is a new PMIC that is paired with Allwinner's A80 SoC, along with a master AXP809 PMIC. This PMIC has a new register layout, and supports some functions not seen in other X-Powers PMICs, such as master-slave mode, or having multiple AXP806 PMICs on the same bus with address space extension, or supporting both I2C and RSB mode. I2C has not been tested. This patch adds support for the interrupts of the PMIC. A regulator sub-device is enabled, but actual regulator support will come in a later patch. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'include/linux/mfd')
-rw-r--r--include/linux/mfd/axp20x.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
index 0be4982f08fe..fec597fb34cb 100644
--- a/include/linux/mfd/axp20x.h
+++ b/include/linux/mfd/axp20x.h
@@ -20,6 +20,7 @@ enum {
20 AXP221_ID, 20 AXP221_ID,
21 AXP223_ID, 21 AXP223_ID,
22 AXP288_ID, 22 AXP288_ID,
23 AXP806_ID,
23 AXP809_ID, 24 AXP809_ID,
24 NR_AXP20X_VARIANTS, 25 NR_AXP20X_VARIANTS,
25}; 26};
@@ -91,6 +92,30 @@ enum {
91#define AXP22X_ALDO3_V_OUT 0x2a 92#define AXP22X_ALDO3_V_OUT 0x2a
92#define AXP22X_CHRG_CTRL3 0x35 93#define AXP22X_CHRG_CTRL3 0x35
93 94
95#define AXP806_STARTUP_SRC 0x00
96#define AXP806_CHIP_ID 0x03
97#define AXP806_PWR_OUT_CTRL1 0x10
98#define AXP806_PWR_OUT_CTRL2 0x11
99#define AXP806_DCDCA_V_CTRL 0x12
100#define AXP806_DCDCB_V_CTRL 0x13
101#define AXP806_DCDCC_V_CTRL 0x14
102#define AXP806_DCDCD_V_CTRL 0x15
103#define AXP806_DCDCE_V_CTRL 0x16
104#define AXP806_ALDO1_V_CTRL 0x17
105#define AXP806_ALDO2_V_CTRL 0x18
106#define AXP806_ALDO3_V_CTRL 0x19
107#define AXP806_DCDC_MODE_CTRL1 0x1a
108#define AXP806_DCDC_MODE_CTRL2 0x1b
109#define AXP806_DCDC_FREQ_CTRL 0x1c
110#define AXP806_BLDO1_V_CTRL 0x20
111#define AXP806_BLDO2_V_CTRL 0x21
112#define AXP806_BLDO3_V_CTRL 0x22
113#define AXP806_BLDO4_V_CTRL 0x23
114#define AXP806_CLDO1_V_CTRL 0x24
115#define AXP806_CLDO2_V_CTRL 0x25
116#define AXP806_CLDO3_V_CTRL 0x26
117#define AXP806_VREF_TEMP_WARN_L 0xf3
118
94/* Interrupt */ 119/* Interrupt */
95#define AXP152_IRQ1_EN 0x40 120#define AXP152_IRQ1_EN 0x40
96#define AXP152_IRQ2_EN 0x41 121#define AXP152_IRQ2_EN 0x41
@@ -266,6 +291,26 @@ enum {
266}; 291};
267 292
268enum { 293enum {
294 AXP806_DCDCA = 0,
295 AXP806_DCDCB,
296 AXP806_DCDCC,
297 AXP806_DCDCD,
298 AXP806_DCDCE,
299 AXP806_ALDO1,
300 AXP806_ALDO2,
301 AXP806_ALDO3,
302 AXP806_BLDO1,
303 AXP806_BLDO2,
304 AXP806_BLDO3,
305 AXP806_BLDO4,
306 AXP806_CLDO1,
307 AXP806_CLDO2,
308 AXP806_CLDO3,
309 AXP806_SW,
310 AXP806_REG_ID_MAX,
311};
312
313enum {
269 AXP809_DCDC1 = 0, 314 AXP809_DCDC1 = 0,
270 AXP809_DCDC2, 315 AXP809_DCDC2,
271 AXP809_DCDC3, 316 AXP809_DCDC3,
@@ -414,6 +459,21 @@ enum axp288_irqs {
414 AXP288_IRQ_BC_USB_CHNG, 459 AXP288_IRQ_BC_USB_CHNG,
415}; 460};
416 461
462enum axp806_irqs {
463 AXP806_IRQ_DIE_TEMP_HIGH_LV1,
464 AXP806_IRQ_DIE_TEMP_HIGH_LV2,
465 AXP806_IRQ_DCDCA_V_LOW,
466 AXP806_IRQ_DCDCB_V_LOW,
467 AXP806_IRQ_DCDCC_V_LOW,
468 AXP806_IRQ_DCDCD_V_LOW,
469 AXP806_IRQ_DCDCE_V_LOW,
470 AXP806_IRQ_PWROK_LONG,
471 AXP806_IRQ_PWROK_SHORT,
472 AXP806_IRQ_WAKEUP,
473 AXP806_IRQ_PWROK_FALL,
474 AXP806_IRQ_PWROK_RISE,
475};
476
417enum axp809_irqs { 477enum axp809_irqs {
418 AXP809_IRQ_ACIN_OVER_V = 1, 478 AXP809_IRQ_ACIN_OVER_V = 1,
419 AXP809_IRQ_ACIN_PLUGIN, 479 AXP809_IRQ_ACIN_PLUGIN,