xref: /aosp_15_r20/external/coreboot/src/drivers/i2c/rv3028c7/chip.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* 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  */
14 enum 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  */
29 enum charge_mode {
30 	CHARGE_OFF = 0,
31 	CHARGE_VIA_3K,
32 	CHARGE_VIA_5K,
33 	CHARGE_VIA_9K,
34 	CHARGE_VIA_15K
35 };
36 
37 struct drivers_i2c_rv3028c7_config {
38 	unsigned int bus_speed;		/* Bus clock in Hz */
39 	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__ */
49