Skip to content

Commit 153ae5c

Browse files
andredlag-linaro
authored andcommitted
mfd: sec: Add rtc alarm IRQ as platform device resource
By adding the RTC alarm IRQ to the MFD cell as a resource, the child driver (rtc) can simply query that IRQ, instead of having a lookup table itself. This change therefore allows the child driver to be simplified with regards to determining the alarm IRQ. Signed-off-by: André Draszik <andre.draszik@linaro.org> Link: https://patch.msgid.link/20260113-s5m-alarm-v3-1-855a19db1277@linaro.org Signed-off-by: Lee Jones <lee@kernel.org>
1 parent 8f0b4cc commit 153ae5c

1 file changed

Lines changed: 29 additions & 9 deletions

File tree

drivers/mfd/sec-common.c

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,60 +23,80 @@
2323
#include <linux/regmap.h>
2424
#include "sec-core.h"
2525

26+
static const struct resource s5m8767_rtc_resources[] = {
27+
DEFINE_RES_IRQ_NAMED(S5M8767_IRQ_RTCA1, "alarm"),
28+
};
29+
2630
static const struct mfd_cell s5m8767_devs[] = {
2731
MFD_CELL_NAME("s5m8767-pmic"),
28-
MFD_CELL_NAME("s5m-rtc"),
32+
MFD_CELL_RES("s5m-rtc", s5m8767_rtc_resources),
2933
MFD_CELL_OF("s5m8767-clk", NULL, NULL, 0, 0, "samsung,s5m8767-clk"),
3034
};
3135

3236
static const struct mfd_cell s2dos05_devs[] = {
3337
MFD_CELL_NAME("s2dos05-regulator"),
3438
};
3539

40+
static const struct resource s2mpg10_rtc_resources[] = {
41+
DEFINE_RES_IRQ_NAMED(S2MPG10_IRQ_RTCA0, "alarm"),
42+
};
43+
3644
static const struct mfd_cell s2mpg10_devs[] = {
3745
MFD_CELL_NAME("s2mpg10-meter"),
3846
MFD_CELL_NAME("s2mpg10-regulator"),
39-
MFD_CELL_NAME("s2mpg10-rtc"),
47+
MFD_CELL_RES("s2mpg10-rtc", s2mpg10_rtc_resources),
4048
MFD_CELL_OF("s2mpg10-clk", NULL, NULL, 0, 0, "samsung,s2mpg10-clk"),
4149
MFD_CELL_OF("s2mpg10-gpio", NULL, NULL, 0, 0, "samsung,s2mpg10-gpio"),
4250
};
4351

52+
static const struct resource s2mps11_rtc_resources[] = {
53+
DEFINE_RES_IRQ_NAMED(S2MPS11_IRQ_RTCA0, "alarm"),
54+
};
55+
4456
static const struct mfd_cell s2mps11_devs[] = {
4557
MFD_CELL_NAME("s2mps11-regulator"),
46-
MFD_CELL_NAME("s2mps14-rtc"),
58+
MFD_CELL_RES("s2mps14-rtc", s2mps11_rtc_resources),
4759
MFD_CELL_OF("s2mps11-clk", NULL, NULL, 0, 0, "samsung,s2mps11-clk"),
4860
};
4961

62+
static const struct resource s2mps14_rtc_resources[] = {
63+
DEFINE_RES_IRQ_NAMED(S2MPS14_IRQ_RTCA0, "alarm"),
64+
};
65+
5066
static const struct mfd_cell s2mps13_devs[] = {
5167
MFD_CELL_NAME("s2mps13-regulator"),
52-
MFD_CELL_NAME("s2mps13-rtc"),
68+
MFD_CELL_RES("s2mps13-rtc", s2mps14_rtc_resources),
5369
MFD_CELL_OF("s2mps13-clk", NULL, NULL, 0, 0, "samsung,s2mps13-clk"),
5470
};
5571

5672
static const struct mfd_cell s2mps14_devs[] = {
5773
MFD_CELL_NAME("s2mps14-regulator"),
58-
MFD_CELL_NAME("s2mps14-rtc"),
74+
MFD_CELL_RES("s2mps14-rtc", s2mps14_rtc_resources),
5975
MFD_CELL_OF("s2mps14-clk", NULL, NULL, 0, 0, "samsung,s2mps14-clk"),
6076
};
6177

6278
static const struct mfd_cell s2mps15_devs[] = {
6379
MFD_CELL_NAME("s2mps15-regulator"),
64-
MFD_CELL_NAME("s2mps15-rtc"),
80+
MFD_CELL_RES("s2mps15-rtc", s2mps14_rtc_resources),
6581
MFD_CELL_OF("s2mps13-clk", NULL, NULL, 0, 0, "samsung,s2mps13-clk"),
6682
};
6783

6884
static const struct mfd_cell s2mpa01_devs[] = {
6985
MFD_CELL_NAME("s2mpa01-pmic"),
70-
MFD_CELL_NAME("s2mps14-rtc"),
86+
MFD_CELL_RES("s2mps14-rtc", s2mps14_rtc_resources),
7187
};
7288

7389
static const struct mfd_cell s2mpu02_devs[] = {
7490
MFD_CELL_NAME("s2mpu02-regulator"),
7591
};
7692

93+
static const struct resource s2mpu05_rtc_resources[] = {
94+
DEFINE_RES_IRQ_NAMED(S2MPU05_IRQ_RTCA0, "alarm"),
95+
};
96+
7797
static const struct mfd_cell s2mpu05_devs[] = {
7898
MFD_CELL_NAME("s2mpu05-regulator"),
79-
MFD_CELL_NAME("s2mps15-rtc"),
99+
MFD_CELL_RES("s2mps15-rtc", s2mpu05_rtc_resources),
80100
};
81101

82102
static void sec_pmic_dump_rev(struct sec_pmic_dev *sec_pmic)
@@ -220,7 +240,7 @@ int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
220240
sec_pmic->device_type);
221241
}
222242
ret = devm_mfd_add_devices(sec_pmic->dev, -1, sec_devs, num_sec_devs,
223-
NULL, 0, NULL);
243+
NULL, 0, regmap_irq_get_domain(sec_pmic->irq_data));
224244
if (ret)
225245
return ret;
226246

0 commit comments

Comments
 (0)