arm-trusted-firmware/plat/mediatek/include/drivers/pmic/pmic_psc.h
Hope Wang d4e6f98d7f feat(mt8196): add PMIC driver
1. Add PMIC shutdown API
2. Add PMIC low power settings

Change-Id: I634a60fa3e2a74a6031df9fe59e2f52956ef7114
Signed-off-by: Hope Wang <hope.wang@mediatek.corp-partner.google.com>
2025-01-22 11:50:47 +08:00

45 lines
982 B
C

/*
* Copyright (c) 2025, Mediatek Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef PMIC_PSC_H
#define PMIC_PSC_H
#include <stdint.h>
enum pmic_psc_reg_name {
RG_PWRHOLD,
RG_CRST,
RG_SMART_RST_SDN_EN,
RG_SMART_RST_MODE,
};
struct pmic_psc_reg {
uint16_t reg_addr;
uint16_t reg_mask;
uint16_t reg_shift;
};
struct pmic_psc_config {
int (*read_field)(uint32_t reg, uint32_t *val, uint32_t mask, uint32_t shift);
int (*write_field)(uint32_t reg, uint32_t val, uint32_t mask, uint32_t shift);
const struct pmic_psc_reg *regs;
const uint32_t reg_size;
};
#define PMIC_PSC_REG(_reg_name, addr, shift) \
[_reg_name] = { \
.reg_addr = addr, \
.reg_mask = 0x1, \
.reg_shift = shift, \
}
int enable_pmic_smart_reset(bool enable);
int enable_pmic_smart_reset_shutdown(bool enable);
int platform_cold_reset(void);
int platform_power_hold(bool hold);
int pmic_psc_register(const struct pmic_psc_config *psc);
#endif /* PMIC_PSC_H */