Skip to content

Commit fdd63f6

Browse files
bijudasalexandrebelloni
authored andcommitted
rtc: isl1208: Add support for the built-in RTC on the PMIC RAA215300
The built-in RTC found on PMIC RAA215300 is the same as ISL1208. However, the external oscillator bit is inverted on PMIC version 0x11. The PMIC driver detects PMIC version and instantiates the RTC device based on i2c_device_id. Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Link: https://lore.kernel.org/r/20230623140948.384762-11-biju.das.jz@bp.renesas.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
1 parent 262f72b commit fdd63f6

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

drivers/rtc/rtc-isl1208.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ struct isl1208_config {
7474
unsigned int nvmem_length;
7575
unsigned has_tamper:1;
7676
unsigned has_timestamp:1;
77+
unsigned has_inverted_osc_bit:1;
7778
};
7879

7980
static const struct isl1208_config config_isl1208 = {
@@ -100,11 +101,19 @@ static const struct isl1208_config config_isl1219 = {
100101
.has_timestamp = true
101102
};
102103

104+
static const struct isl1208_config config_raa215300_a0 = {
105+
.nvmem_length = 2,
106+
.has_tamper = false,
107+
.has_timestamp = false,
108+
.has_inverted_osc_bit = true
109+
};
110+
103111
static const struct i2c_device_id isl1208_id[] = {
104112
{ "isl1208", .driver_data = (kernel_ulong_t)&config_isl1208 },
105113
{ "isl1209", .driver_data = (kernel_ulong_t)&config_isl1209 },
106114
{ "isl1218", .driver_data = (kernel_ulong_t)&config_isl1218 },
107115
{ "isl1219", .driver_data = (kernel_ulong_t)&config_isl1219 },
116+
{ "raa215300_a0", .driver_data = (kernel_ulong_t)&config_raa215300_a0 },
108117
{ }
109118
};
110119
MODULE_DEVICE_TABLE(i2c, isl1208_id);
@@ -895,6 +904,9 @@ isl1208_probe(struct i2c_client *client)
895904
return sr;
896905
}
897906

907+
if (isl1208->config->has_inverted_osc_bit)
908+
xtosb_val = !xtosb_val;
909+
898910
rc = isl1208_set_xtoscb(client, sr, xtosb_val);
899911
if (rc)
900912
return rc;

0 commit comments

Comments
 (0)