You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.2 KiB
53 lines
1.2 KiB
/*
|
|
* Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef AXP_H
|
|
#define AXP_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define AXP20X_MODE_REG 0x3e
|
|
#define AXP20X_MODE_I2C 0x00
|
|
#define AXP20X_MODE_RSB 0x7c
|
|
|
|
#define NA 0xff
|
|
|
|
enum {
|
|
AXP803_CHIP_ID = 0x41,
|
|
AXP805_CHIP_ID = 0x40,
|
|
};
|
|
|
|
struct axp_regulator {
|
|
const char *dt_name;
|
|
uint16_t min_volt;
|
|
uint16_t max_volt;
|
|
uint16_t step;
|
|
unsigned char split;
|
|
unsigned char volt_reg;
|
|
unsigned char switch_reg;
|
|
unsigned char switch_bit;
|
|
};
|
|
|
|
extern const uint8_t axp_chip_id;
|
|
extern const char *const axp_compatible;
|
|
extern const struct axp_regulator axp_regulators[];
|
|
|
|
/*
|
|
* Since the PMIC can be connected to multiple bus types,
|
|
* low-level read/write functions must be provided by the platform
|
|
*/
|
|
int axp_read(uint8_t reg);
|
|
int axp_write(uint8_t reg, uint8_t val);
|
|
int axp_clrsetbits(uint8_t reg, uint8_t clr_mask, uint8_t set_mask);
|
|
#define axp_clrbits(reg, clr_mask) axp_clrsetbits(reg, clr_mask, 0)
|
|
#define axp_setbits(reg, set_mask) axp_clrsetbits(reg, 0, set_mask)
|
|
|
|
int axp_check_id(void);
|
|
void axp_power_off(void);
|
|
void axp_setup_regulators(const void *fdt);
|
|
|
|
#endif /* AXP_H */
|