aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut@gmail.com>2018-06-11 07:58:49 -0400
committerLee Jones <lee.jones@linaro.org>2018-07-04 02:17:02 -0400
commitc2ffec5e4bb6091bfd7b8dbe835df5059ef5b3f2 (patch)
tree7e478787f410cbed8af802c0bf509628a5bf0206
parent4ad5a999c46003e26356104e7e5ae5a656a2dae5 (diff)
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 <marek.vasut+renesas@gmail.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r--drivers/mfd/da9063-core.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/drivers/mfd/da9063-core.c b/drivers/mfd/da9063-core.c
index ded59990f18c..6e4ce49b4405 100644
--- a/drivers/mfd/da9063-core.c
+++ b/drivers/mfd/da9063-core.c
@@ -76,7 +76,7 @@ static struct resource da9063_hwmon_resources[] = {
76}; 76};
77 77
78 78
79static const struct mfd_cell da9063_devs[] = { 79static const struct mfd_cell da9063_common_devs[] = {
80 { 80 {
81 .name = DA9063_DRVNAME_REGULATORS, 81 .name = DA9063_DRVNAME_REGULATORS,
82 .num_resources = ARRAY_SIZE(da9063_regulators_resources), 82 .num_resources = ARRAY_SIZE(da9063_regulators_resources),
@@ -101,14 +101,18 @@ static const struct mfd_cell da9063_devs[] = {
101 .of_compatible = "dlg,da9063-onkey", 101 .of_compatible = "dlg,da9063-onkey",
102 }, 102 },
103 { 103 {
104 .name = DA9063_DRVNAME_VIBRATION,
105 },
106};
107
108/* Only present on DA9063 , not on DA9063L */
109static const struct mfd_cell da9063_devs[] = {
110 {
104 .name = DA9063_DRVNAME_RTC, 111 .name = DA9063_DRVNAME_RTC,
105 .num_resources = ARRAY_SIZE(da9063_rtc_resources), 112 .num_resources = ARRAY_SIZE(da9063_rtc_resources),
106 .resources = da9063_rtc_resources, 113 .resources = da9063_rtc_resources,
107 .of_compatible = "dlg,da9063-rtc", 114 .of_compatible = "dlg,da9063-rtc",
108 }, 115 },
109 {
110 .name = DA9063_DRVNAME_VIBRATION,
111 },
112}; 116};
113 117
114static int da9063_clear_fault_log(struct da9063 *da9063) 118static int da9063_clear_fault_log(struct da9063 *da9063)
@@ -226,10 +230,23 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq)
226 da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq); 230 da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq);
227 231
228 ret = devm_mfd_add_devices(da9063->dev, PLATFORM_DEVID_NONE, 232 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),
230 NULL, da9063->irq_base, NULL); 235 NULL, da9063->irq_base, NULL);
231 if (ret) 236 if (ret) {
232 dev_err(da9063->dev, "Cannot add MFD cells\n"); 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 }
233 250
234 return ret; 251 return ret;
235} 252}