From a857e47263df7257a892a28924ce867ffe391397 Mon Sep 17 00:00:00 2001 From: Joy Zou Date: Mon, 23 Sep 2024 21:11:32 +0800 Subject: [PATCH] power: pmic/regulator: Support pca9452 Add PCA9452 PMIC/Regulator support. Signed-off-by: Joy Zou Reviewed-by: Ye Li Signed-off-by: Peng Fan --- drivers/power/pmic/pca9450.c | 1 + drivers/power/regulator/pca9450.c | 11 +++++++++-- include/power/pca9450.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/power/pmic/pca9450.c b/drivers/power/pmic/pca9450.c index 07af6273d8..5025e2d338 100644 --- a/drivers/power/pmic/pca9450.c +++ b/drivers/power/pmic/pca9450.c @@ -121,6 +121,7 @@ static const struct udevice_id pca9450_ids[] = { { .compatible = "nxp,pca9450b", .data = NXP_CHIP_TYPE_PCA9450BC, }, { .compatible = "nxp,pca9450c", .data = NXP_CHIP_TYPE_PCA9450BC, }, { .compatible = "nxp,pca9451a", .data = NXP_CHIP_TYPE_PCA9451A, }, + { .compatible = "nxp,pca9452", .data = NXP_CHIP_TYPE_PCA9452, }, { } }; diff --git a/drivers/power/regulator/pca9450.c b/drivers/power/regulator/pca9450.c index 86b22ead62..a2a3424472 100644 --- a/drivers/power/regulator/pca9450.c +++ b/drivers/power/regulator/pca9450.c @@ -288,7 +288,7 @@ static int pca9450_regulator_probe(struct udevice *dev) type = dev_get_driver_data(dev_get_parent(dev)); if (type != NXP_CHIP_TYPE_PCA9450A && type != NXP_CHIP_TYPE_PCA9450BC && - type != NXP_CHIP_TYPE_PCA9451A) { + type != NXP_CHIP_TYPE_PCA9451A && type != NXP_CHIP_TYPE_PCA9452) { debug("Unknown PMIC type\n"); return -EINVAL; } @@ -299,7 +299,8 @@ static int pca9450_regulator_probe(struct udevice *dev) val = ret; - if (type == NXP_CHIP_TYPE_PCA9451A && (val & PCA9450_REG_PWRCTRL_TOFF_DEB)) + if ((type == NXP_CHIP_TYPE_PCA9451A || type == NXP_CHIP_TYPE_PCA9452) && + (val & PCA9450_REG_PWRCTRL_TOFF_DEB)) pmic_trim = true; for (i = 0; i < ARRAY_SIZE(pca9450_reg_data); i++) { @@ -326,6 +327,12 @@ static int pca9450_regulator_probe(struct udevice *dev) continue; } + if (type == NXP_CHIP_TYPE_PCA9452 && + (!strcmp(pca9450_reg_data[i].name, "BUCK3") || + !strcmp(pca9450_reg_data[i].name, "LDO2"))) { + continue; + } + *plat = pca9450_reg_data[i]; return 0; diff --git a/include/power/pca9450.h b/include/power/pca9450.h index f896d829d3..e5ab09fb8c 100644 --- a/include/power/pca9450.h +++ b/include/power/pca9450.h @@ -62,6 +62,7 @@ enum { NXP_CHIP_TYPE_PCA9450A = 0, NXP_CHIP_TYPE_PCA9450BC, NXP_CHIP_TYPE_PCA9451A, + NXP_CHIP_TYPE_PCA9452, NXP_CHIP_TYPE_AMOUNT }; -- 2.39.5