| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- /*
- * Functions and registers to access AXP20X power management chip.
- *
- * Copyright (C) 2013, Carlo Caione <carlo@caione.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
- #ifndef __LINUX_MFD_AXP20X_H
- #define __LINUX_MFD_AXP20X_H
- enum {
- AXP202_ID = 0,
- AXP209_ID,
- };
- #define AXP20X_DATACACHE(m) (0x04 + (m))
- /* Power supply */
- #define AXP20X_PWR_INPUT_STATUS 0x00
- #define AXP20X_PWR_OP_MODE 0x01
- #define AXP20X_USB_OTG_STATUS 0x02
- #define AXP20X_PWR_OUT_CTRL 0x12
- #define AXP20X_DCDC2_V_OUT 0x23
- #define AXP20X_DCDC2_LDO3_V_SCAL 0x25
- #define AXP20X_DCDC3_V_OUT 0x27
- #define AXP20X_LDO24_V_OUT 0x28
- #define AXP20X_LDO3_V_OUT 0x29
- #define AXP20X_VBUS_IPSOUT_MGMT 0x30
- #define AXP20X_V_OFF 0x31
- #define AXP20X_OFF_CTRL 0x32
- #define AXP20X_CHRG_CTRL1 0x33
- #define AXP20X_CHRG_CTRL2 0x34
- #define AXP20X_CHRG_BAK_CTRL 0x35
- #define AXP20X_PEK_KEY 0x36
- #define AXP20X_DCDC_FREQ 0x37
- #define AXP20X_V_LTF_CHRG 0x38
- #define AXP20X_V_HTF_CHRG 0x39
- #define AXP20X_APS_WARN_L1 0x3a
- #define AXP20X_APS_WARN_L2 0x3b
- #define AXP20X_V_LTF_DISCHRG 0x3c
- #define AXP20X_V_HTF_DISCHRG 0x3d
- /* Interrupt */
- #define AXP20X_IRQ1_EN 0x40
- #define AXP20X_IRQ2_EN 0x41
- #define AXP20X_IRQ3_EN 0x42
- #define AXP20X_IRQ4_EN 0x43
- #define AXP20X_IRQ5_EN 0x44
- #define AXP20X_IRQ1_STATE 0x48
- #define AXP20X_IRQ2_STATE 0x49
- #define AXP20X_IRQ3_STATE 0x4a
- #define AXP20X_IRQ4_STATE 0x4b
- #define AXP20X_IRQ5_STATE 0x4c
- /* ADC */
- #define AXP20X_ACIN_V_ADC_H 0x56
- #define AXP20X_ACIN_V_ADC_L 0x57
- #define AXP20X_ACIN_I_ADC_H 0x58
- #define AXP20X_ACIN_I_ADC_L 0x59
- #define AXP20X_VBUS_V_ADC_H 0x5a
- #define AXP20X_VBUS_V_ADC_L 0x5b
- #define AXP20X_VBUS_I_ADC_H 0x5c
- #define AXP20X_VBUS_I_ADC_L 0x5d
- #define AXP20X_TEMP_ADC_H 0x5e
- #define AXP20X_TEMP_ADC_L 0x5f
- #define AXP20X_TS_IN_H 0x62
- #define AXP20X_TS_IN_L 0x63
- #define AXP20X_GPIO0_V_ADC_H 0x64
- #define AXP20X_GPIO0_V_ADC_L 0x65
- #define AXP20X_GPIO1_V_ADC_H 0x66
- #define AXP20X_GPIO1_V_ADC_L 0x67
- #define AXP20X_PWR_BATT_H 0x70
- #define AXP20X_PWR_BATT_M 0x71
- #define AXP20X_PWR_BATT_L 0x72
- #define AXP20X_BATT_V_H 0x78
- #define AXP20X_BATT_V_L 0x79
- #define AXP20X_BATT_CHRG_I_H 0x7a
- #define AXP20X_BATT_CHRG_I_L 0x7b
- #define AXP20X_BATT_DISCHRG_I_H 0x7c
- #define AXP20X_BATT_DISCHRG_I_L 0x7d
- #define AXP20X_IPSOUT_V_HIGH_H 0x7e
- #define AXP20X_IPSOUT_V_HIGH_L 0x7f
- /* Power supply */
- #define AXP20X_DCDC_MODE 0x80
- #define AXP20X_ADC_EN1 0x82
- #define AXP20X_ADC_EN2 0x83
- #define AXP20X_ADC_RATE 0x84
- #define AXP20X_GPIO10_IN_RANGE 0x85
- #define AXP20X_GPIO1_ADC_IRQ_RIS 0x86
- #define AXP20X_GPIO1_ADC_IRQ_FAL 0x87
- #define AXP20X_TIMER_CTRL 0x8a
- #define AXP20X_VBUS_MON 0x8b
- #define AXP20X_OVER_TMP 0x8f
- /* GPIO */
- #define AXP20X_GPIO0_CTRL 0x90
- #define AXP20X_LDO5_V_OUT 0x91
- #define AXP20X_GPIO1_CTRL 0x92
- #define AXP20X_GPIO2_CTRL 0x93
- #define AXP20X_GPIO20_SS 0x94
- #define AXP20X_GPIO3_CTRL 0x95
- /* Battery */
- #define AXP20X_CHRG_CC_31_24 0xb0
- #define AXP20X_CHRG_CC_23_16 0xb1
- #define AXP20X_CHRG_CC_15_8 0xb2
- #define AXP20X_CHRG_CC_7_0 0xb3
- #define AXP20X_DISCHRG_CC_31_24 0xb4
- #define AXP20X_DISCHRG_CC_23_16 0xb5
- #define AXP20X_DISCHRG_CC_15_8 0xb6
- #define AXP20X_DISCHRG_CC_7_0 0xb7
- #define AXP20X_CC_CTRL 0xb8
- #define AXP20X_FG_RES 0xb9
- /* Regulators IDs */
- enum {
- AXP20X_LDO1 = 0,
- AXP20X_LDO2,
- AXP20X_LDO3,
- AXP20X_LDO4,
- AXP20X_LDO5,
- AXP20X_DCDC2,
- AXP20X_DCDC3,
- AXP20X_REG_ID_MAX,
- };
- /* IRQs */
- enum {
- AXP20X_IRQ_ACIN_OVER_V = 1,
- AXP20X_IRQ_ACIN_PLUGIN,
- AXP20X_IRQ_ACIN_REMOVAL,
- AXP20X_IRQ_VBUS_OVER_V,
- AXP20X_IRQ_VBUS_PLUGIN,
- AXP20X_IRQ_VBUS_REMOVAL,
- AXP20X_IRQ_VBUS_V_LOW,
- AXP20X_IRQ_BATT_PLUGIN,
- AXP20X_IRQ_BATT_REMOVAL,
- AXP20X_IRQ_BATT_ENT_ACT_MODE,
- AXP20X_IRQ_BATT_EXIT_ACT_MODE,
- AXP20X_IRQ_CHARG,
- AXP20X_IRQ_CHARG_DONE,
- AXP20X_IRQ_BATT_TEMP_HIGH,
- AXP20X_IRQ_BATT_TEMP_LOW,
- AXP20X_IRQ_DIE_TEMP_HIGH,
- AXP20X_IRQ_CHARG_I_LOW,
- AXP20X_IRQ_DCDC1_V_LONG,
- AXP20X_IRQ_DCDC2_V_LONG,
- AXP20X_IRQ_DCDC3_V_LONG,
- AXP20X_IRQ_PEK_SHORT = 22,
- AXP20X_IRQ_PEK_LONG,
- AXP20X_IRQ_N_OE_PWR_ON,
- AXP20X_IRQ_N_OE_PWR_OFF,
- AXP20X_IRQ_VBUS_VALID,
- AXP20X_IRQ_VBUS_NOT_VALID,
- AXP20X_IRQ_VBUS_SESS_VALID,
- AXP20X_IRQ_VBUS_SESS_END,
- AXP20X_IRQ_LOW_PWR_LVL1,
- AXP20X_IRQ_LOW_PWR_LVL2,
- AXP20X_IRQ_TIMER,
- AXP20X_IRQ_PEK_RIS_EDGE,
- AXP20X_IRQ_PEK_FAL_EDGE,
- AXP20X_IRQ_GPIO3_INPUT,
- AXP20X_IRQ_GPIO2_INPUT,
- AXP20X_IRQ_GPIO1_INPUT,
- AXP20X_IRQ_GPIO0_INPUT,
- };
- struct axp20x_dev {
- struct device *dev;
- struct i2c_client *i2c_client;
- struct regmap *regmap;
- struct regmap_irq_chip_data *regmap_irqc;
- long variant;
- };
- #endif /* __LINUX_MFD_AXP20X_H */
|