Lines Matching +full:0 +full:x1801
22 #define ABX8XX_REG_HTH 0x00
23 #define ABX8XX_REG_SC 0x01
24 #define ABX8XX_REG_MN 0x02
25 #define ABX8XX_REG_HR 0x03
26 #define ABX8XX_REG_DA 0x04
27 #define ABX8XX_REG_MO 0x05
28 #define ABX8XX_REG_YR 0x06
29 #define ABX8XX_REG_WD 0x07
31 #define ABX8XX_REG_AHTH 0x08
32 #define ABX8XX_REG_ASC 0x09
33 #define ABX8XX_REG_AMN 0x0a
34 #define ABX8XX_REG_AHR 0x0b
35 #define ABX8XX_REG_ADA 0x0c
36 #define ABX8XX_REG_AMO 0x0d
37 #define ABX8XX_REG_AWD 0x0e
39 #define ABX8XX_REG_STATUS 0x0f
44 #define ABX8XX_REG_CTRL1 0x10
45 #define ABX8XX_CTRL_WRITE BIT(0)
49 #define ABX8XX_REG_CTRL2 0x11
52 #define ABX8XX_REG_IRQ 0x12
54 #define ABX8XX_IRQ_IM_1_4 (0x3 << 5)
56 #define ABX8XX_REG_CD_TIMER_CTL 0x18
58 #define ABX8XX_REG_OSC 0x1c
66 #define ABX8XX_REG_OSS 0x1d
70 #define ABX8XX_REG_WDT 0x1b
72 #define ABX8XX_WDT_BMB_MASK 0x7c
75 #define ABX8XX_WDT_WRB_MASK 0x03
76 #define ABX8XX_WDT_WRB_1HZ 0x02
78 #define ABX8XX_REG_CFG_KEY 0x1f
79 #define ABX8XX_CFG_KEY_OSC 0xa1
80 #define ABX8XX_CFG_KEY_MISC 0x9d
82 #define ABX8XX_REG_ID0 0x28
84 #define ABX8XX_REG_OUT_CTRL 0x30
87 #define ABX8XX_REG_TRICKLE 0x20
88 #define ABX8XX_TRICKLE_CHARGE_ENABLE 0xa0
89 #define ABX8XX_TRICKLE_STANDARD_DIODE 0x8
90 #define ABX8XX_TRICKLE_SCHOTTKY_DIODE 0x4
92 #define ABX8XX_REG_EXTRAM 0x3f
93 #define ABX8XX_EXTRAM_XADS GENMASK(1, 0)
95 #define ABX8XX_SRAM_BASE 0x40
96 #define ABX8XX_SRAM_WIN_SIZE 0x40
99 #define NVMEM_ADDR_LOWER GENMASK(5, 0)
102 static u8 trickle_resistors[] = {0, 3, 6, 11};
114 [AB0801] = {.pn = 0x0801},
115 [AB0803] = {.pn = 0x0803},
116 [AB0804] = {.pn = 0x0804, .has_tc = true, .has_wdog = true},
117 [AB0805] = {.pn = 0x0805, .has_tc = true, .has_wdog = true},
118 [AB1801] = {.pn = 0x1801},
119 [AB1803] = {.pn = 0x1803},
120 [AB1804] = {.pn = 0x1804, .has_tc = true, .has_wdog = true},
121 [AB1805] = {.pn = 0x1805, .has_tc = true, .has_wdog = true},
122 [RV1805] = {.pn = 0x1805, .has_tc = true, .has_wdog = true},
123 [ABX80X] = {.pn = 0}
134 if (i2c_smbus_write_byte_data(client, ABX8XX_REG_CFG_KEY, key) < 0) { in abx80x_write_config_key()
139 return 0; in abx80x_write_config_key()
144 int flags = 0; in abx80x_is_rc_mode()
147 if (flags < 0) { in abx80x_is_rc_mode()
153 return (flags & ABX8XX_OSS_OMODE) ? 1 : 0; in abx80x_is_rc_mode()
165 if (abx80x_write_config_key(client, ABX8XX_CFG_KEY_MISC) < 0) in abx80x_enable_trickle_charger()
171 if (err < 0) { in abx80x_enable_trickle_charger()
176 return 0; in abx80x_enable_trickle_charger()
183 int err, flags, rc_mode = 0; in abx80x_rtc_read_time()
187 if (rc_mode < 0) in abx80x_rtc_read_time()
192 if (flags < 0) in abx80x_rtc_read_time()
203 if (err < 0) { in abx80x_rtc_read_time()
208 tm->tm_sec = bcd2bin(buf[ABX8XX_REG_SC] & 0x7F); in abx80x_rtc_read_time()
209 tm->tm_min = bcd2bin(buf[ABX8XX_REG_MN] & 0x7F); in abx80x_rtc_read_time()
210 tm->tm_hour = bcd2bin(buf[ABX8XX_REG_HR] & 0x3F); in abx80x_rtc_read_time()
211 tm->tm_wday = buf[ABX8XX_REG_WD] & 0x7; in abx80x_rtc_read_time()
212 tm->tm_mday = bcd2bin(buf[ABX8XX_REG_DA] & 0x3F); in abx80x_rtc_read_time()
213 tm->tm_mon = bcd2bin(buf[ABX8XX_REG_MO] & 0x1F) - 1; in abx80x_rtc_read_time()
216 return 0; in abx80x_rtc_read_time()
228 buf[ABX8XX_REG_HTH] = 0; in abx80x_rtc_set_time()
239 if (err < 0) { in abx80x_rtc_set_time()
246 if (flags < 0) in abx80x_rtc_set_time()
251 if (err < 0) { in abx80x_rtc_set_time()
256 return 0; in abx80x_rtc_set_time()
267 if (status < 0) in abx80x_handle_irq()
280 i2c_smbus_write_byte_data(client, ABX8XX_REG_STATUS, 0); in abx80x_handle_irq()
292 if (client->irq <= 0) in abx80x_read_alarm()
301 if (irq_mask < 0) in abx80x_read_alarm()
304 t->time.tm_sec = bcd2bin(buf[0] & 0x7F); in abx80x_read_alarm()
305 t->time.tm_min = bcd2bin(buf[1] & 0x7F); in abx80x_read_alarm()
306 t->time.tm_hour = bcd2bin(buf[2] & 0x3F); in abx80x_read_alarm()
307 t->time.tm_mday = bcd2bin(buf[3] & 0x3F); in abx80x_read_alarm()
308 t->time.tm_mon = bcd2bin(buf[4] & 0x1F) - 1; in abx80x_read_alarm()
309 t->time.tm_wday = buf[5] & 0x7; in abx80x_read_alarm()
323 if (client->irq <= 0) in abx80x_set_alarm()
326 alarm[0] = 0x0; in abx80x_set_alarm()
335 if (err < 0) { in abx80x_set_alarm()
348 return 0; in abx80x_set_alarm()
355 int retval, flags = 0; in abx80x_rtc_set_autocalibration()
357 if ((autocalibration != 0) && (autocalibration != 1024) && in abx80x_rtc_set_autocalibration()
364 if (flags < 0) in abx80x_rtc_set_autocalibration()
367 if (autocalibration == 0) { in abx80x_rtc_set_autocalibration()
370 /* 1024 autocalibration is 0x10 */ in abx80x_rtc_set_autocalibration()
374 /* 512 autocalibration is 0x11 */ in abx80x_rtc_set_autocalibration()
379 if (abx80x_write_config_key(client, ABX8XX_CFG_KEY_OSC) < 0) in abx80x_rtc_set_autocalibration()
390 int flags = 0, autocalibration; in abx80x_rtc_get_autocalibration()
393 if (flags < 0) in abx80x_rtc_get_autocalibration()
401 autocalibration = 0; in abx80x_rtc_get_autocalibration()
411 unsigned long autocalibration = 0; in autocalibration_store()
414 if (retval < 0) { in autocalibration_store()
427 int autocalibration = 0; in autocalibration_show()
430 if (autocalibration < 0) { in autocalibration_show()
432 sprintf(buf, "0\n"); in autocalibration_show()
446 int retval, flags, rc_mode = 0; in oscillator_store()
448 if (strncmp(buf, "rc", 2) == 0) { in oscillator_store()
450 } else if (strncmp(buf, "xtal", 4) == 0) { in oscillator_store()
451 rc_mode = 0; in oscillator_store()
458 if (flags < 0) in oscillator_store()
461 if (rc_mode == 0) in oscillator_store()
467 if (abx80x_write_config_key(client, ABX8XX_CFG_KEY_OSC) < 0) in oscillator_store()
471 if (retval < 0) { in oscillator_store()
482 int rc_mode = 0; in oscillator_show()
487 if (rc_mode < 0) { in oscillator_show()
534 if (status < 0) in abx80x_ioctl()
537 tmp = status & ABX8XX_STATUS_BLF ? RTC_VL_BACKUP_LOW : 0; in abx80x_ioctl()
543 if (status < 0) in abx80x_ioctl()
548 tmp = i2c_smbus_write_byte_data(client, ABX8XX_REG_STATUS, 0); in abx80x_ioctl()
549 if (tmp < 0) in abx80x_ioctl()
552 return 0; in abx80x_ioctl()
572 int trickle_cfg = 0; in abx80x_dt_trickle_cfg()
593 for (i = 0; i < sizeof(trickle_resistors); i++) in abx80x_dt_trickle_cfg()
621 * Writing 0 disables it. in __abx80x_wdog_set_timeout()
629 int err = 0; in abx80x_wdog_set_timeout()
634 if (err == 0) in abx80x_wdog_set_timeout()
652 return __abx80x_wdog_set_timeout(wdog, 0); in abx80x_wdog_stop()
684 return 0; in abx80x_setup_watchdog()
716 if (ret <= 0) in abx80x_nvmem_xfer()
726 return 0; in abx80x_nvmem_xfer()
788 if (err < 0) { in abx80x_probe()
793 partnumber = (buf[0] << 8) | buf[1]; in abx80x_probe()
795 minrev = buf[2] & 0x7; in abx80x_probe()
796 lot = ((buf[4] & 0x80) << 2) | ((buf[6] & 0x80) << 1) | buf[3]; in abx80x_probe()
797 uid = ((buf[4] & 0x7f) << 8) | buf[5]; in abx80x_probe()
798 wafer = (buf[6] & 0x7c) >> 2; in abx80x_probe()
803 if (data < 0) { in abx80x_probe()
812 if (err < 0) { in abx80x_probe()
826 if (data < 0) { in abx80x_probe()
834 if (err < 0) { in abx80x_probe()
846 if (data < 0) { in abx80x_probe()
856 if (abx80x_write_config_key(client, ABX8XX_CFG_KEY_MISC) < 0) in abx80x_probe()
861 if (err < 0) { in abx80x_probe()
870 for (i = 0; abx80x_caps[i].pn; i++) in abx80x_probe()
873 if (abx80x_caps[i].pn == 0) { in abx80x_probe()
890 if (trickle_cfg > 0) { in abx80x_probe()
924 if (client->irq > 0) { in abx80x_probe()
933 client->irq = 0; in abx80x_probe()