Commit c2ffec5e authored by Marek Vasut's avatar Marek Vasut Committed by Lee Jones

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: default avatarMarek Vasut <marek.vasut+renesas@gmail.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 4ad5a999
...@@ -76,7 +76,7 @@ static struct resource da9063_hwmon_resources[] = { ...@@ -76,7 +76,7 @@ static struct resource da9063_hwmon_resources[] = {
}; };
static const struct mfd_cell da9063_devs[] = { static const struct mfd_cell da9063_common_devs[] = {
{ {
.name = DA9063_DRVNAME_REGULATORS, .name = DA9063_DRVNAME_REGULATORS,
.num_resources = ARRAY_SIZE(da9063_regulators_resources), .num_resources = ARRAY_SIZE(da9063_regulators_resources),
...@@ -100,15 +100,19 @@ static const struct mfd_cell da9063_devs[] = { ...@@ -100,15 +100,19 @@ static const struct mfd_cell da9063_devs[] = {
.resources = da9063_onkey_resources, .resources = da9063_onkey_resources,
.of_compatible = "dlg,da9063-onkey", .of_compatible = "dlg,da9063-onkey",
}, },
{
.name = DA9063_DRVNAME_VIBRATION,
},
};
/* Only present on DA9063 , not on DA9063L */
static const struct mfd_cell da9063_devs[] = {
{ {
.name = DA9063_DRVNAME_RTC, .name = DA9063_DRVNAME_RTC,
.num_resources = ARRAY_SIZE(da9063_rtc_resources), .num_resources = ARRAY_SIZE(da9063_rtc_resources),
.resources = da9063_rtc_resources, .resources = da9063_rtc_resources,
.of_compatible = "dlg,da9063-rtc", .of_compatible = "dlg,da9063-rtc",
}, },
{
.name = DA9063_DRVNAME_VIBRATION,
},
}; };
static int da9063_clear_fault_log(struct da9063 *da9063) static int da9063_clear_fault_log(struct da9063 *da9063)
...@@ -226,10 +230,23 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq) ...@@ -226,10 +230,23 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq)
da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq); da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq);
ret = devm_mfd_add_devices(da9063->dev, PLATFORM_DEVID_NONE, ret = devm_mfd_add_devices(da9063->dev, PLATFORM_DEVID_NONE,
da9063_devs, ARRAY_SIZE(da9063_devs), da9063_common_devs,
ARRAY_SIZE(da9063_common_devs),
NULL, da9063->irq_base, NULL); NULL, da9063->irq_base, NULL);
if (ret) if (ret) {
dev_err(da9063->dev, "Cannot add MFD cells\n"); dev_err(da9063->dev, "Failed to add child devices\n");
return ret;
}
if (da9063->type == PMIC_TYPE_DA9063) {
ret = devm_mfd_add_devices(da9063->dev, PLATFORM_DEVID_NONE,
da9063_devs, ARRAY_SIZE(da9063_devs),
NULL, da9063->irq_base, NULL);
if (ret) {
dev_err(da9063->dev, "Failed to add child devices\n");
return ret;
}
}
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment