1 /*
2  * Copyright (c) 2024 Jianxiong Gu <jianxiong.gu@outlook.com>
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 
6 #ifndef ZEPHYR_DRIVERS_USBC_TCPC_RT1715_H_
7 #define ZEPHYR_DRIVERS_USBC_TCPC_RT1715_H_
8 
9 #define RT1715_REG_SYS_CTRL_1                    0x90
10 /** VCONN OVP occurs and discharge path turn-on */
11 #define RT1715_REG_SYS_CTRL_1_VCONN_DISCHARGE_EN BIT(5)
12 /** Low power mode Rd or Rp */
13 #define RT1715_REG_SYS_CTRL_1_BMCIO_LPR_PRD      BIT(4)
14 /** Low power mode enable */
15 #define RT1715_REG_SYS_CTRL_1_BMCIO_LP_EN        BIT(3)
16 /** BMCIO BandGap enable */
17 #define RT1715_REG_SYS_CTRL_1_BMCIO_BG_EN        BIT(2)
18 /** VBUS detection enable */
19 #define RT1715_REG_SYS_CTRL_1_VBUS_DETECT_EN     BIT(1)
20 /** 24M oscillator for BMC communication */
21 #define RT1715_REG_SYS_CTRL_1_BMCIO_OSC_EN       BIT(0)
22 
23 #define RT1715_REG_OCP                0x93
24 /** VCONN over-current control selection */
25 #define RT1715_REG_OCP_BMCIO_VCON_OCP GENMASK(7, 5)
26 #define RT1715_VCON_OCP_200MA         (0 << 5)
27 #define RT1715_VCON_OCP_300MA         (1 << 5)
28 #define RT1715_VCON_OCP_400MA         (2 << 5)
29 #define RT1715_VCON_OCP_500MA         (3 << 5)
30 #define RT1715_VCON_OCP_600MA         (4 << 5)
31 
32 #define RT1715_REG_RT_ST         0x97
33 /** If VBUS under 0.8V */
34 #define RT1715_REG_RT_ST_VBUS_80 BIT(1)
35 
36 #define RT1715_REG_RT_INT           0x98
37 /** Ra detach */
38 #define RT1715_REG_RT_INT_RA_DETACH BIT(5)
39 /** VBUS under 0.8V */
40 #define RT1715_REG_RT_INT_VBUS_80   BIT(1)
41 /** Low power mode exited */
42 #define RT1715_REG_RT_INT_WAKEUP    BIT(0)
43 
44 #define RT1715_REG_RT_INT_MASK 0x99
45 
46 #define RT1715_REG_LP_CTRL                  0x9B
47 /** Clock_300K divided from Clock_24M */
48 #define RT1715_REG_LP_CTRL_CK_300K_SEL      BIT(7)
49 /** Non-Shutdown mode */
50 #define RT1715_REG_LP_CTRL_SHUTDOWN_OFF     BIT(5)
51 /** Enable PD3.0 Extended message */
52 #define RT1715_REG_LP_CTRL_ENEXTMSG         BIT(4)
53 /** Auto enter idle mode enable */
54 #define RT1715_REG_LP_CTRL_AUTOIDLE_EN      BIT(3)
55 /** Enter idle mode timeout time */
56 #define RT1715_REG_LP_CTRL_AUTOIDLE_TIMEOUT GENMASK(2, 0)
57 #define RT1715_AUTOIDLE_TIMEOUT_96P0_MS     7
58 #define RT1715_AUTOIDLE_TIMEOUT_83P2_MS     6
59 #define RT1715_AUTOIDLE_TIMEOUT_70P4_MS     5
60 #define RT1715_AUTOIDLE_TIMEOUT_57P6_MS     4
61 #define RT1715_AUTOIDLE_TIMEOUT_44P8_MS     3
62 #define RT1715_AUTOIDLE_TIMEOUT_32P0_MS     2
63 #define RT1715_AUTOIDLE_TIMEOUT_19P2_MS     1
64 #define RT1715_AUTOIDLE_TIMEOUT_6P4_MS      0
65 
66 #define RT1715_REG_SYS_WAKEUP    0x9F
67 /** Wakeup function enable */
68 #define RT1715_REG_SYS_WAKEUP_EN BIT(7)
69 
70 #define RT1715_REG_SW_RST    0xA0
71 /** Write 1 to trigger software reset */
72 #define RT1715_REG_SW_RST_EN BIT(0)
73 
74 #define RT1715_REG_DRP_CTRL_1      0xA2
75 /**
76  * The period a DRP will complete a Source to Sink and back advertisement.
77  * (Period = TDRP * 6.4 + 51.2ms)
78  */
79 #define RT1715_REG_DRP_CTRL_1_TDRP GENMASK(3, 0)
80 
81 #define RT1715_REG_DRP_CTRL_2          0xA3
82 /**
83  * The percent of time that a DRP will advertise Source during tDRP.
84  * (DUTY = (DCSRCDRP[9:0] + 1) / 1024)
85  */
86 #define RT1715_REG_DRP_CTRL_2_DCSRCDRP GENMASK(9, 0)
87 
88 #endif /* ZEPHYR_DRIVERS_USBC_TCPC_UCPD_NUMAKER_H_ */
89