git: 53b80f4d41b6 - main - Add support for TCS4525 pmic.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 01 Sep 2022 07:32:00 UTC
The branch main has been updated by ganbold:
URL: https://cgit.FreeBSD.org/src/commit/?id=53b80f4d41b62baa7a6cfefa33704bc7aae36889
commit 53b80f4d41b62baa7a6cfefa33704bc7aae36889
Author: Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
AuthorDate: 2022-09-01 07:31:08 +0000
Commit: Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
CommitDate: 2022-09-01 07:31:08 +0000
Add support for TCS4525 pmic.
Reviewed by: manu
Differential Revision: https://reviews.freebsd.org/D36209
---
sys/dev/iicbus/pmic/fan53555.c | 49 ++++++++++++++++++++++++++++++++++++------
1 file changed, 43 insertions(+), 6 deletions(-)
diff --git a/sys/dev/iicbus/pmic/fan53555.c b/sys/dev/iicbus/pmic/fan53555.c
index 3d40aae9e415..c4929eee07e5 100644
--- a/sys/dev/iicbus/pmic/fan53555.c
+++ b/sys/dev/iicbus/pmic/fan53555.c
@@ -61,6 +61,9 @@ __FBSDID("$FreeBSD$");
#define FAN53555_ID2_DIE_REV(x) (((x) >> 4) & 0x0F)
#define FAN53555_MON 0x05
+#define TCS4525_VSEL0 0x11
+#define TCS4525_VSEL1 0x10
+#define TCS4525_CHIP_ID_12 12
#if 0
#define dprintf(sc, format, arg...) \
@@ -73,12 +76,14 @@ enum fan53555_pmic_type {
FAN53555 = 1,
SYR827,
SYR828,
+ TCS4525,
};
static struct ofw_compat_data compat_data[] = {
{"fcs,fan53555", FAN53555},
{"silergy,syr827", SYR827},
{"silergy,syr828", SYR828},
+ {"tcs,tcs4525", TCS4525},
{NULL, 0}
};
@@ -110,6 +115,8 @@ static struct regulator_range fan_1_range =
static struct regulator_range fan_4_range =
REG_RANGE_INIT( 0, 0x3F, 603000, 12826);
+static struct regulator_range tcs_12_range =
+ REG_RANGE_INIT( 0, 0x3F, 800000, 6250);
static int
fan53555_read(device_t dev, uint8_t reg, uint8_t *val)
@@ -308,6 +315,15 @@ fan53555_get_range(struct fan53555_softc *sc, int type, uint8_t id,
}
}
+ if (type == TCS4525) {
+ switch (id) {
+ case TCS4525_CHIP_ID_12:
+ return (&tcs_12_range);
+ default:
+ return (NULL);
+ }
+ }
+
return (NULL);
}
@@ -411,6 +427,9 @@ fan53555_probe(device_t dev)
case SYR828:
device_set_desc(dev, "SYR828 PMIC");
break;
+ case TCS4525:
+ device_set_desc(dev, "TCS4525 PMIC");
+ break;
default:
return (ENXIO);
}
@@ -434,12 +453,30 @@ fan53555_attach(device_t dev)
sizeof(susp_sel));
if (rv <= 0)
susp_sel = 1;
- if (susp_sel == 1) {
- sc->live_reg = FAN53555_VSEL0;
- sc->sleep_reg = FAN53555_VSEL1;
- } else {
- sc->live_reg = FAN53555_VSEL1;
- sc->sleep_reg = FAN53555_VSEL0;
+
+ switch (type) {
+ case FAN53555:
+ case SYR827:
+ case SYR828:
+ if (susp_sel == 1) {
+ sc->live_reg = FAN53555_VSEL0;
+ sc->sleep_reg = FAN53555_VSEL1;
+ } else {
+ sc->live_reg = FAN53555_VSEL1;
+ sc->sleep_reg = FAN53555_VSEL0;
+ }
+ break;
+ case TCS4525:
+ if (susp_sel == 1) {
+ sc->live_reg = TCS4525_VSEL0;
+ sc->sleep_reg = TCS4525_VSEL1;
+ } else {
+ sc->live_reg = TCS4525_VSEL1;
+ sc->sleep_reg = TCS4525_VSEL0;
+ }
+ break;
+ default:
+ return (ENXIO);
}
if (fan53555_reg_attach(sc, node, type) == NULL)
device_printf(dev, "cannot attach regulator.\n");