xref: /rk3399_ARM-atf/include/drivers/allwinner/axp.h (revision 0bc752c9adedbda4434fddf68d3bc18c5274360b)
1 /*
2  * Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef AXP_H
8 #define AXP_H
9 
10 #include <stdint.h>
11 
12 #define NA 0xff
13 
14 enum {
15 	AXP803_CHIP_ID = 0x41,
16 };
17 
18 struct axp_regulator {
19 	const char *dt_name;
20 	uint16_t min_volt;
21 	uint16_t max_volt;
22 	uint16_t step;
23 	unsigned char split;
24 	unsigned char volt_reg;
25 	unsigned char switch_reg;
26 	unsigned char switch_bit;
27 };
28 
29 extern const uint8_t axp_chip_id;
30 extern const char *const axp_compatible;
31 extern const struct axp_regulator axp_regulators[];
32 
33 /*
34  * Since the PMIC can be connected to multiple bus types,
35  * low-level read/write functions must be provided by the platform
36  */
37 int axp_read(uint8_t reg);
38 int axp_write(uint8_t reg, uint8_t val);
39 int axp_clrsetbits(uint8_t reg, uint8_t clr_mask, uint8_t set_mask);
40 #define axp_clrbits(reg, clr_mask) axp_clrsetbits(reg, clr_mask, 0)
41 #define axp_setbits(reg, set_mask) axp_clrsetbits(reg, 0, set_mask)
42 
43 int axp_check_id(void);
44 void axp_power_off(void);
45 void axp_setup_regulators(const void *fdt);
46 
47 #endif /* AXP_H */
48