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 AXP805_CHIP_ID = 0x40, 17 }; 18 19 struct axp_regulator { 20 const char *dt_name; 21 uint16_t min_volt; 22 uint16_t max_volt; 23 uint16_t step; 24 unsigned char split; 25 unsigned char volt_reg; 26 unsigned char switch_reg; 27 unsigned char switch_bit; 28 }; 29 30 extern const uint8_t axp_chip_id; 31 extern const char *const axp_compatible; 32 extern const struct axp_regulator axp_regulators[]; 33 34 /* 35 * Since the PMIC can be connected to multiple bus types, 36 * low-level read/write functions must be provided by the platform 37 */ 38 int axp_read(uint8_t reg); 39 int axp_write(uint8_t reg, uint8_t val); 40 int axp_clrsetbits(uint8_t reg, uint8_t clr_mask, uint8_t set_mask); 41 #define axp_clrbits(reg, clr_mask) axp_clrsetbits(reg, clr_mask, 0) 42 #define axp_setbits(reg, set_mask) axp_clrsetbits(reg, 0, set_mask) 43 44 int axp_check_id(void); 45 void axp_power_off(void); 46 void axp_setup_regulators(const void *fdt); 47 48 #endif /* AXP_H */ 49