Lines Matching +full:trickle +full:- +full:resistor +full:- +full:ohms

1 // SPDX-License-Identifier: GPL-2.0+
5 * Based on a the Linux rtc-rv3029c2.c driver written by:
6 * Gregory Hermant <gregory.hermant@calao-systems.com>
83 return -EIO; in rv3029_rtc_get()
86 tm->tm_sec = bcd2bin(regs[RV3029_W_SEC - RV3029_W_SEC]); in rv3029_rtc_get()
87 tm->tm_min = bcd2bin(regs[RV3029_W_MINUTES - RV3029_W_SEC]); in rv3029_rtc_get()
91 const u8 _hr = regs[RV3029_W_HOURS - RV3029_W_SEC]; in rv3029_rtc_get()
95 tm->tm_hour = bcd2bin(_hr & 0x1f); in rv3029_rtc_get()
97 tm->tm_hour += 12; in rv3029_rtc_get()
100 tm->tm_hour = bcd2bin(_hr & 0x3f); in rv3029_rtc_get()
104 tm->tm_mday = bcd2bin(regs[RV3029_W_DATE - RV3029_W_SEC]); in rv3029_rtc_get()
105 tm->tm_mon = bcd2bin(regs[RV3029_W_MONTHS - RV3029_W_SEC]) - 1; in rv3029_rtc_get()
107 tm->tm_year = bcd2bin(regs[RV3029_W_YEARS - RV3029_W_SEC]) + 2000; in rv3029_rtc_get()
108 tm->tm_wday = bcd2bin(regs[RV3029_W_DAYS - RV3029_W_SEC]) - 1; in rv3029_rtc_get()
110 tm->tm_yday = 0; in rv3029_rtc_get()
111 tm->tm_isdst = 0; in rv3029_rtc_get()
113 debug("%s: %4d-%02d-%02d (wday=%d) %2d:%02d:%02d\n", in rv3029_rtc_get()
114 __func__, tm->tm_year, tm->tm_mon, tm->tm_mday, in rv3029_rtc_get()
115 tm->tm_wday, tm->tm_hour, tm->tm_min, tm->tm_sec); in rv3029_rtc_get()
124 debug("%s: %4d-%02d-%02d (wday=%d( %2d:%02d:%02d\n", in rv3029_rtc_set()
125 __func__, tm->tm_year, tm->tm_mon, tm->tm_mday, in rv3029_rtc_set()
126 tm->tm_wday, tm->tm_hour, tm->tm_min, tm->tm_sec); in rv3029_rtc_set()
129 if (tm->tm_year < 2000) { in rv3029_rtc_set()
131 __func__, tm->tm_year); in rv3029_rtc_set()
132 return -EINVAL; in rv3029_rtc_set()
135 regs[RV3029_W_SEC - RV3029_W_SEC] = bin2bcd(tm->tm_sec); in rv3029_rtc_set()
136 regs[RV3029_W_MINUTES - RV3029_W_SEC] = bin2bcd(tm->tm_min); in rv3029_rtc_set()
137 regs[RV3029_W_HOURS - RV3029_W_SEC] = bin2bcd(tm->tm_hour); in rv3029_rtc_set()
138 regs[RV3029_W_DATE - RV3029_W_SEC] = bin2bcd(tm->tm_mday); in rv3029_rtc_set()
139 regs[RV3029_W_MONTHS - RV3029_W_SEC] = bin2bcd(tm->tm_mon + 1); in rv3029_rtc_set()
140 regs[RV3029_W_DAYS - RV3029_W_SEC] = bin2bcd(tm->tm_wday + 1) & 0x7; in rv3029_rtc_set()
141 regs[RV3029_W_YEARS - RV3029_W_SEC] = bin2bcd(tm->tm_year - 2000); in rv3029_rtc_set()
153 /* trigger the system-reset */ in rv3029_rtc_reset()
156 return -EIO; in rv3029_rtc_reset()
158 /* wait for the system-reset to complete */ in rv3029_rtc_reset()
162 return -ETIMEDOUT; in rv3029_rtc_reset()
166 return -EIO; in rv3029_rtc_reset()
194 return -EIO; in rv3029_get_sr()
206 return -EIO; in rv3029_set_sr()
217 for (i = 100; i > 0; i--) { in rv3029_eeprom_busywait()
227 return -ETIMEDOUT; in rv3029_eeprom_busywait()
255 /* Re-enable eeprom refresh */ in rv3029_eeprom_exit()
285 return -ENODEV; in rv3029_eeprom_enter()
381 u32 r; /* resistance in ohms */ in rv3029_trickle_config()
382 u8 conf; /* trickle config bits */ in rv3029_trickle_config()
437 u32 ohms; in rv3029_trickle_config() local
440 /* Configure the trickle charger. */ in rv3029_trickle_config()
441 err = dev_read_u32(dev, "trickle-resistor-ohms", &ohms); in rv3029_trickle_config()
444 /* Find trickle-charger config */ in rv3029_trickle_config()
446 if (rv3029_trickle_tab[i].r >= ohms) { in rv3029_trickle_config()
447 dev_dbg(dev, "trickle charger at %d ohms\n", in rv3029_trickle_config()
454 dev_dbg(dev, "trickle charger config 0x%x\n", trickle_set_bits); in rv3029_trickle_config()
459 dev_dbg(dev, "failed to update trickle charger\n"); in rv3029_trickle_config()
491 .name = "rtc-rv3029",