Skip to content

Commit c2ffec5

Browse files
marexLee Jones
authored andcommitted
mfd: da9063: Register RTC only on DA9063L
The DA9063L does not contain RTC block, unlike the full DA9063. Split the RTC block into separate mfd cell and register it only on DA9063. Signed-off-by: Marek Vasut <[email protected]> Signed-off-by: Lee Jones <[email protected]>
1 parent 4ad5a99 commit c2ffec5

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

drivers/mfd/da9063-core.c

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ static struct resource da9063_hwmon_resources[] = {
7676
};
7777

7878

79-
static const struct mfd_cell da9063_devs[] = {
79+
static const struct mfd_cell da9063_common_devs[] = {
8080
{
8181
.name = DA9063_DRVNAME_REGULATORS,
8282
.num_resources = ARRAY_SIZE(da9063_regulators_resources),
@@ -100,15 +100,19 @@ static const struct mfd_cell da9063_devs[] = {
100100
.resources = da9063_onkey_resources,
101101
.of_compatible = "dlg,da9063-onkey",
102102
},
103+
{
104+
.name = DA9063_DRVNAME_VIBRATION,
105+
},
106+
};
107+
108+
/* Only present on DA9063 , not on DA9063L */
109+
static const struct mfd_cell da9063_devs[] = {
103110
{
104111
.name = DA9063_DRVNAME_RTC,
105112
.num_resources = ARRAY_SIZE(da9063_rtc_resources),
106113
.resources = da9063_rtc_resources,
107114
.of_compatible = "dlg,da9063-rtc",
108115
},
109-
{
110-
.name = DA9063_DRVNAME_VIBRATION,
111-
},
112116
};
113117

114118
static int da9063_clear_fault_log(struct da9063 *da9063)
@@ -226,10 +230,23 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq)
226230
da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq);
227231

228232
ret = devm_mfd_add_devices(da9063->dev, PLATFORM_DEVID_NONE,
229-
da9063_devs, ARRAY_SIZE(da9063_devs),
233+
da9063_common_devs,
234+
ARRAY_SIZE(da9063_common_devs),
230235
NULL, da9063->irq_base, NULL);
231-
if (ret)
232-
dev_err(da9063->dev, "Cannot add MFD cells\n");
236+
if (ret) {
237+
dev_err(da9063->dev, "Failed to add child devices\n");
238+
return ret;
239+
}
240+
241+
if (da9063->type == PMIC_TYPE_DA9063) {
242+
ret = devm_mfd_add_devices(da9063->dev, PLATFORM_DEVID_NONE,
243+
da9063_devs, ARRAY_SIZE(da9063_devs),
244+
NULL, da9063->irq_base, NULL);
245+
if (ret) {
246+
dev_err(da9063->dev, "Failed to add child devices\n");
247+
return ret;
248+
}
249+
}
233250

234251
return ret;
235252
}

0 commit comments

Comments
 (0)