blob: 0ed86ffeff3b59accd299a3d3e6ae7a238fd5122 [file] [log] [blame]
Werner Zeh5fb66ad2022-08-26 13:40:47 +02001/* SPDX-License-Identifier: GPL-2.0-only */
2
3#ifndef __DRIVERS_I2C_RV3028C7_CHIP_H__
4#define __DRIVERS_I2C_RV3028C7_CHIP_H__
5
6#include "rv3028c7.h"
7
8/*
9 * The RTC has three different modes in how the backup voltage is used:
10 * - OFF: Backup voltage not used
11 * - DIRECT: Switch to backup voltage if it is higher than VDD
12 * - LEVEL: Switch to backup voltage if VDD is < 2 V and VBACKUP > 2 V
13 */
14enum sw_mode {
15 BACKUP_SW_DIRECT = 1,
16 BACKUP_SW_OFF,
17 BACKUP_SW_LEVEL
18};
19
20/*
21 * The RTC can be used to charge a capacitor on VBACKUP.
22 * There are the following modes:
23 * - OFF: Do not charge the backup capacitor via VDD
24 * - VIA_3K: Connect the backup capacitor via 3 k resistor with VDD
25 * - VIA_5K: Connect the backup capacitor via 5 k resistor with VDD
26 * - VIA_9K: Connect the backup capacitor via 9 k resistor with VDD
27 * - VIA_15K: Connect the backup capacitor via 15 k resistor with VDD
28 */
29enum charge_mode {
30 CHARGE_OFF = 0,
31 CHARGE_VIA_3K,
32 CHARGE_VIA_5K,
33 CHARGE_VIA_9K,
34 CHARGE_VIA_15K
35};
36
37struct drivers_i2c_rv3028c7_config {
Jan Samek15606482022-11-11 15:59:05 +010038 unsigned int bus_speed; /* Bus clock in Hz */
Werner Zeh5fb66ad2022-08-26 13:40:47 +020039 unsigned char user_weekday; /* User day of the week to set */
40 unsigned char user_day; /* User day to set */
41 unsigned char user_month; /* User month to set */
42 unsigned char user_year; /* User year to set (2-digit) */
43 unsigned char set_user_date; /* Use user date from devicetree */
44 enum sw_mode bckup_sw_mode; /* Mode for switching between VDD and VBACKUP */
45 enum charge_mode cap_charge; /* Mode for capacitor charging */
46};
47
48#endif /* __DRIVERS_I2C_RV3028C7_CHIP_H__ */