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