mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
910c7a881f
The default configuration of the PMIC behavior makes the PMIC power cycle most regulators on WDOG_B assertion. This power cycling causes the memory contents of OCRAM to be lost. Some systems neeeds some memory that survives reset and reboot, therefore this patch is created. The implementation is taken almost verbatim from Linux commit 2364a64d0673f ("regulator: pca9450: Make warm reset on WDOG_B assertion") Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Fabio Estevam <festevam@denx.de> Reviewed-by: Peng Fan <peng.fan@nxp.com>
74 lines
2 KiB
C
74 lines
2 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright 2019 NXP
|
|
*/
|
|
|
|
#ifndef PCA9450_H_
|
|
#define PCA9450_H_
|
|
|
|
#define PCA9450_REGULATOR_DRIVER "pca9450_regulator"
|
|
|
|
enum {
|
|
PCA9450_REG_DEV_ID = 0x00,
|
|
PCA9450_INT1 = 0x01,
|
|
PCA9450_INT1_MSK = 0x02,
|
|
PCA9450_STATUS1 = 0x03,
|
|
PCA9450_STATUS2 = 0x04,
|
|
PCA9450_PWRON_STAT = 0x05,
|
|
PCA9450_SW_RST = 0x06,
|
|
PCA9450_PWR_CTRL = 0x07,
|
|
PCA9450_RESET_CTRL = 0x08,
|
|
PCA9450_CONFIG1 = 0x09,
|
|
PCA9450_CONFIG2 = 0x0A,
|
|
PCA9450_BUCK123_DVS = 0x0C,
|
|
PCA9450_BUCK1OUT_LIMIT = 0x0D,
|
|
PCA9450_BUCK2OUT_LIMIT = 0x0E,
|
|
PCA9450_BUCK3OUT_LIMIT = 0x0F,
|
|
PCA9450_BUCK1CTRL = 0x10,
|
|
PCA9450_BUCK1OUT_DVS0 = 0x11,
|
|
PCA9450_BUCK1OUT_DVS1 = 0x12,
|
|
PCA9450_BUCK2CTRL = 0x13,
|
|
PCA9450_BUCK2OUT_DVS0 = 0x14,
|
|
PCA9450_BUCK2OUT_DVS1 = 0x15,
|
|
PCA9450_BUCK3CTRL = 0x16,
|
|
PCA9450_BUCK3OUT_DVS0 = 0x17,
|
|
PCA9450_BUCK3OUT_DVS1 = 0x18,
|
|
PCA9450_BUCK4CTRL = 0x19,
|
|
PCA9450_BUCK4OUT = 0x1A,
|
|
PCA9450_BUCK5CTRL = 0x1B,
|
|
PCA9450_BUCK5OUT = 0x1C,
|
|
PCA9450_BUCK6CTRL = 0x1D,
|
|
PCA9450_BUCK6OUT = 0x1E,
|
|
PCA9450_LDO_AD_CTRL = 0x20,
|
|
PCA9450_LDO1CTRL = 0x21,
|
|
PCA9450_LDO2CTRL = 0x22,
|
|
PCA9450_LDO3CTRL = 0x23,
|
|
PCA9450_LDO4CTRL = 0x24,
|
|
PCA9450_LDO5CTRL_L = 0x25,
|
|
PCA9450_LDO5CTRL_H = 0x26,
|
|
PCA9450_LOADSW_CTRL = 0x2A,
|
|
PCA9450_VRFLT1_STS = 0x2B,
|
|
PCA9450_VRFLT2_STS = 0x2C,
|
|
PCA9450_VRFLT1_MASK = 0x2D,
|
|
PCA9450_VRFLT2_MASK = 0x2E,
|
|
PCA9450_REG_NUM,
|
|
};
|
|
|
|
int power_pca9450_init(unsigned char bus, unsigned char addr);
|
|
|
|
enum {
|
|
NXP_CHIP_TYPE_PCA9450A = 0,
|
|
NXP_CHIP_TYPE_PCA9450BC,
|
|
NXP_CHIP_TYPE_AMOUNT
|
|
};
|
|
|
|
#define PCA9450_DVS_BUCK_RUN_MASK 0x7f
|
|
#define PCA9450_LDO12_MASK 0x07
|
|
#define PCA9450_LDO34_MASK 0x1f
|
|
#define PCA9450_LDO5_MASK 0x0f
|
|
|
|
#define PCA9450_PMIC_RESET_WDOG_B_CFG_MASK 0xc0
|
|
#define PCA9450_PMIC_RESET_WDOG_B_CFG_WARM 0x40
|
|
#define PCA9450_PMIC_RESET_WDOG_B_CFG_COLD_LDO12 0x80
|
|
|
|
#endif
|