diff options
Diffstat (limited to 'firmware/export/axp192.h')
-rw-r--r-- | firmware/export/axp192.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/firmware/export/axp192.h b/firmware/export/axp192.h new file mode 100644 index 0000000000..6ed278d086 --- /dev/null +++ b/firmware/export/axp192.h | |||
@@ -0,0 +1,131 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2021 Aidan MacDonald | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #ifndef __AXP192_H__ | ||
23 | #define __AXP192_H__ | ||
24 | |||
25 | #include <stdint.h> | ||
26 | #include <stdbool.h> | ||
27 | |||
28 | enum { | ||
29 | #define DEFREG(regname, addr) AXP_REG_##regname = addr, | ||
30 | #include "axp192-defs.h" | ||
31 | }; | ||
32 | |||
33 | enum { | ||
34 | #define DEFFLD(regname, fldname, msb, lsb, ...) \ | ||
35 | BM_AXP_##regname##_##fldname = ((1 << ((msb) - (lsb) + 1)) - 1) << lsb, \ | ||
36 | BP_AXP_##regname##_##fldname = lsb, | ||
37 | #include "axp192-defs.h" | ||
38 | }; | ||
39 | |||
40 | enum { | ||
41 | AXP_SUPPLY_EXTEN, | ||
42 | AXP_SUPPLY_DCDC1, | ||
43 | AXP_SUPPLY_DCDC2, | ||
44 | AXP_SUPPLY_DCDC3, | ||
45 | AXP_SUPPLY_LDO2, | ||
46 | AXP_SUPPLY_LDO3, | ||
47 | AXP_SUPPLY_LDOIO0, | ||
48 | AXP_NUM_SUPPLIES, | ||
49 | }; | ||
50 | |||
51 | enum { | ||
52 | AXP_ADC_ACIN_VOLTAGE, | ||
53 | AXP_ADC_ACIN_CURRENT, | ||
54 | AXP_ADC_VBUS_VOLTAGE, | ||
55 | AXP_ADC_VBUS_CURRENT, | ||
56 | AXP_ADC_INTERNAL_TEMP, | ||
57 | AXP_ADC_TS_INPUT, | ||
58 | AXP_ADC_GPIO0, | ||
59 | AXP_ADC_GPIO1, | ||
60 | AXP_ADC_GPIO2, | ||
61 | AXP_ADC_GPIO3, | ||
62 | AXP_ADC_BATTERY_VOLTAGE, | ||
63 | AXP_ADC_CHARGE_CURRENT, | ||
64 | AXP_ADC_DISCHARGE_CURRENT, | ||
65 | AXP_ADC_APS_VOLTAGE, | ||
66 | AXP_NUM_ADCS, | ||
67 | }; | ||
68 | |||
69 | enum { | ||
70 | AXP_GPIO_OPEN_DRAIN_OUTPUT = 0x0, | ||
71 | AXP_GPIO_INPUT = 0x1, | ||
72 | AXP_GPIO_SPECIAL = 0x2, | ||
73 | AXP_GPIO_ADC_IN = 0x4, | ||
74 | AXP_GPIO_LOW_OUTPUT = 0x5, | ||
75 | AXP_GPIO_FLOATING = 0x7, | ||
76 | }; | ||
77 | |||
78 | enum { | ||
79 | /* Limit USB current consumption to 100 mA. */ | ||
80 | AXP_VBUS_LIMIT_100mA = (1 << BP_AXP_VBUSIPSOUT_VHOLD_LIM) | | ||
81 | (1 << BP_AXP_VBUSIPSOUT_VBUS_LIM) | | ||
82 | (1 << BP_AXP_VBUSIPSOUT_LIM_100mA), | ||
83 | |||
84 | /* Limit USB current consumption to 500 mA. */ | ||
85 | AXP_VBUS_LIMIT_500mA = (1 << BP_AXP_VBUSIPSOUT_VHOLD_LIM) | | ||
86 | (1 << BP_AXP_VBUSIPSOUT_VBUS_LIM) | | ||
87 | (0 << BP_AXP_VBUSIPSOUT_LIM_100mA), | ||
88 | |||
89 | /* No upper bound on USB current, but the current will still | ||
90 | * be reduced to maintain the bus voltage above V_hold. */ | ||
91 | AXP_VBUS_UNLIMITED = (1 << BP_AXP_VBUSIPSOUT_VHOLD_LIM) | | ||
92 | (0 << BP_AXP_VBUSIPSOUT_VBUS_LIM) | | ||
93 | (0 << BP_AXP_VBUSIPSOUT_LIM_100mA), | ||
94 | |||
95 | /* Unlimited USB current consumption. Voltage is allowed to drop | ||
96 | * below V_hold, which may interfere with normal USB operation. | ||
97 | * This mode is really only useful with AC charging adapters. */ | ||
98 | AXP_VBUS_FULLY_UNLIMITED = (0 << BP_AXP_VBUSIPSOUT_VHOLD_LIM) | | ||
99 | (0 << BP_AXP_VBUSIPSOUT_VBUS_LIM) | | ||
100 | (0 << BP_AXP_VBUSIPSOUT_LIM_100mA), | ||
101 | }; | ||
102 | |||
103 | extern int axp_read(uint8_t reg); | ||
104 | extern int axp_write(uint8_t reg, uint8_t value); | ||
105 | extern int axp_modify(uint8_t reg, uint8_t clr, uint8_t set); | ||
106 | |||
107 | extern void axp_enable_supply(int supply, bool enable); | ||
108 | extern void axp_set_enabled_supplies(unsigned int supply_mask); | ||
109 | extern void axp_set_supply_voltage(int supply, int output_mV); | ||
110 | |||
111 | extern void axp_enable_adc(int adc, bool enable); | ||
112 | extern void axp_set_enabled_adcs(unsigned int adc_mask); | ||
113 | extern int axp_read_adc_raw(int adc); | ||
114 | extern int axp_conv_adc(int adc, int value); | ||
115 | extern int axp_read_adc(int adc); | ||
116 | |||
117 | extern void axp_set_gpio_function(int gpio, int function); | ||
118 | extern void axp_set_gpio_pulldown(int gpio, bool enable); | ||
119 | extern int axp_get_gpio(int gpio); | ||
120 | extern void axp_set_gpio(int gpio, bool enable); | ||
121 | |||
122 | extern void axp_set_charge_current(int current_mA); | ||
123 | extern int axp_get_charge_current(void); | ||
124 | extern void axp_set_vbus_limit(int vbus_limit); | ||
125 | extern void axp_set_vhold_level(int vhold_mV); | ||
126 | extern bool axp_is_charging(void); | ||
127 | extern unsigned int axp_power_input_status(void); | ||
128 | |||
129 | extern void axp_power_off(void); | ||
130 | |||
131 | #endif /* __AXP192_H__ */ | ||