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