From 1b5b6af788ae59ee73e3f3230dbfa4f0e31d8d18 Mon Sep 17 00:00:00 2001 From: Bastian Krause Date: Thu, 17 Sep 2020 20:32:43 +0200 Subject: rtc: ds1307: introduce requires_trickle_resistor per chip Make trickle-resistor-ohms optional for charging setups that do not require specifying ROUT bits (specifying the resistor value between Vcc and Vbackup). In order to allow specifying that, introduce requires_trickle_resistor per chip. Signed-off-by: Bastian Krause Signed-off-by: Alexandre Belloni Link: https://lore.kernel.org/r/20200917183246.19446-6-bst@pengutronix.de --- drivers/rtc/rtc-ds1307.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'drivers/rtc/rtc-ds1307.c') diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c index 82f75a798705..64fa1318817c 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c @@ -191,6 +191,10 @@ struct chip_desc { u16 trickle_charger_reg; u8 (*do_trickle_setup)(struct ds1307 *, u32, bool); + /* Does the RTC require trickle-resistor-ohms to select the value of + * the resistor between Vcc and Vbackup? + */ + bool requires_trickle_resistor; }; static const struct chip_desc chips[last_ds_type]; @@ -986,6 +990,7 @@ static const struct chip_desc chips[last_ds_type] = { .bbsqi_bit = DS1339_BIT_BBSQI, .trickle_charger_reg = 0x10, .do_trickle_setup = &do_trickle_setup_ds1339, + .requires_trickle_resistor = true, }, [ds_1340] = { .century_reg = DS1307_REG_HOUR, @@ -993,6 +998,7 @@ static const struct chip_desc chips[last_ds_type] = { .century_bit = DS1340_BIT_CENTURY, .do_trickle_setup = &do_trickle_setup_ds1339, .trickle_charger_reg = 0x08, + .requires_trickle_resistor = true, }, [ds_1341] = { .century_reg = DS1307_REG_MONTH, @@ -1307,7 +1313,7 @@ static u8 ds1307_trickle_init(struct ds1307 *ds1307, return 0; if (device_property_read_u32(ds1307->dev, "trickle-resistor-ohms", - &ohms)) + &ohms) && chip->requires_trickle_resistor) return 0; if (device_property_read_bool(ds1307->dev, "trickle-diode-disable")) -- cgit