1 /****************************************************************************//**
2  * @file     utcpd.h
3  * @version  V1.00
4  * @brief    NPD48 series UTCPD driver header file
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  * @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved.
8 *****************************************************************************/
9 #ifndef __UTCPD_H__
10 #define __UTCPD_H__
11 
12 #include "NuMicro.h"
13 
14 #ifdef __cplusplus
15 extern "C"
16 {
17 #endif
18 
19 /** @addtogroup Standard_Driver Standard Driver
20   @{
21 */
22 
23 /** @addtogroup UTCPD_Driver UTCPD Driver
24   @{
25 */
26 
27 /** @addtogroup UTCPD_EXPORTED_CONSTANTS UTCPD Exported Constants
28   @{
29 */
30 
31 /*---------------------------------------------------------------------------------------------------------*/
32 /*  ALERT constant definitions.                                                                            */
33 /*---------------------------------------------------------------------------------------------------------*/
34 #define UTCPD_ALERT_CCSCHIS          UTCPD_IS_CCSCHIS_Msk                             /*!< UTCPD_T::ALERT: CCSCHIS Mask          */
35 #define UTCPD_ALERT_PWRSCHIS         UTCPD_IS_PWRSCHIS_Msk                            /*!< UTCPD_T::ALERT: PWRSCHIS Mask         */
36 #define UTCPD_ALERT_RXSOPIS          UTCPD_IS_RXSOPIS_Msk                             /*!< UTCPD_T::ALERT: RXSOPIS Mask          */
37 #define UTCPD_ALERT_RXHRSTIS         UTCPD_IS_RXHRSTIS_Msk                            /*!< UTCPD_T::ALERT: RXHRSTIS Mask         */
38 #define UTCPD_ALERT_TXFAILIS         UTCPD_IS_TXFALIS_Msk                             /*!< UTCPD_T::ALERT: TXFAILIS Mask         */
39 #define UTCPD_ALERT_TXDCUIS          UTCPD_IS_TXDCUDIS_Msk                            /*!< UTCPD_T::ALERT: TXDCUIS Mask          */
40 #define UTCPD_ALERT_TXOKIS           UTCPD_IS_TXOKIS_Msk                              /*!< UTCPD_T::ALERT: TXOKIS Mask           */
41 #define UTCPD_ALERT_VBAMHIS          UTCPD_IS_VBAMHIS_Msk                             /*!< UTCPD_T::ALERT: VBAMHIS Mask          */
42 #define UTCPD_ALERT_VBAMLIS          UTCPD_IS_VBAMLIS_Msk                             /*!< UTCPD_T::ALERT: VBAMLIS Mask          */
43 #define UTCPD_ALERT_FUTIS            UTCPD_IS_FUTIS_Msk                               /*!< UTCPD_T::ALERT: FUTIS Mask            */
44 #define UTCPD_ALERT_RXOFIS           UTCPD_IS_RXOFIS_Msk                              /*!< UTCPD_T::ALERT: RXOFIS Mask           */
45 #define UTCPD_ALERT_SKDCDTIS         UTCPD_IS_SKDCDTIS_Msk                            /*!< UTCPD_T::ALERT: SKDCDTIS Mask         */
46 #define UTCPD_ALERT_VNDIS            UTCPD_IS_VNDIS_Msk                               /*!< UTCPD_T::ALERT: VNDIS Mask            */
47 
48 
49 /*---------------------------------------------------------------------------------------------------------*/
50 /*  ALERT Mask constant definitions.                                                                       */
51 /*---------------------------------------------------------------------------------------------------------*/
52 #define UTCPD_ALERTM_CCSCHIE         UTCPD_IE_CCSCHIE_Msk                             /*!< UTCPD_T::ALERTM: CCSCHIE Mask         */
53 #define UTCPD_ALERTM_PWRSCHIE        UTCPD_IE_PWRSCHIE_Msk                            /*!< UTCPD_T::ALERTM: PWRSCHIE Mask        */
54 #define UTCPD_ALERTM_RXSOPIE         UTCPD_IE_RXSOPIE_Msk                             /*!< UTCPD_T::ALERTM: RXSOPIE Mask         */
55 #define UTCPD_ALERTM_RXHRSTIE        UTCPD_IE_RXHRSTIE_Msk                            /*!< UTCPD_T::ALERTM: RXHRSTIE Mask        */
56 #define UTCPD_ALERTM_TXFAILIE        UTCPD_IE_TXFAILIE_Msk                            /*!< UTCPD_T::ALERTM: TXFAILIE Mask        */
57 #define UTCPD_ALERTM_TXDCUIE         UTCPD_IE_TXDCUDIE_Msk                            /*!< UTCPD_T::ALERTM: TXDCUIE Mask         */
58 #define UTCPD_ALERTM_TXOKIE          UTCPD_IE_TXOKIE_Msk                              /*!< UTCPD_T::ALERTM: TXOKIE Mask          */
59 #define UTCPD_ALERTM_VBAMHIE         UTCPD_IE_VBAMHIE_Msk                             /*!< UTCPD_T::ALERTM: VBAMHIE Mask         */
60 #define UTCPD_ALERTM_VBAMLIE         UTCPD_IE_VBAMLIE_Msk                             /*!< UTCPD_T::ALERTM: VBAMLIE Mask         */
61 #define UTCPD_ALERTM_FUTIE           UTCPD_IE_FUTIE_Msk                               /*!< UTCPD_T::ALERTM: FUTIE Mask           */
62 #define UTCPD_ALERTM_RXOFIE          UTCPD_IE_RXOFIE_Msk                              /*!< UTCPD_T::ALERTM: RXOFIE Mask          */
63 #define UTCPD_ALERTM_SKDCDTIE        UTCPD_IE_SKDCDTIE_Msk                            /*!< UTCPD_T::ALERTM: SKDCDTIE Mask        */
64 #define UTCPD_ALERTM_VNDIE           UTCPD_IE_VNDIE_Msk                               /*!< UTCPD_T::ALERTM: VNDIE Mask           */
65 
66 /*---------------------------------------------------------------------------------------------------------*/
67 /* PWRSM Power Status Mask constant definitions.                                                           */
68 /*---------------------------------------------------------------------------------------------------------*/
69 #define UTCPD_PWRSM_SKVBIE           UTCPD_PWRSTSIE_SKVBIE_Msk                        /*!< UTCPD_T::PWRSM: SKVBIE Mask            */
70 #define UTCPD_PWRSM_VCPSIE           UTCPD_PWRSTSIE_VCPSIE_Msk                        /*!< UTCPD_T::PWRSM: VCPSIE Mask            */
71 #define UTCPD_PWRSM_VBPSIE           UTCPD_PWRSTSIE_VBPSIE_Msk                        /*!< UTCPD_T::PWRSM: VBPSIE Mask            */
72 #define UTCPD_PWRSM_VBDTDGIE         UTCPD_PWRSTSIE_VBDTDGIE_Msk                      /*!< UTCPD_T::PWRSM: VBDTDGIE Mask          */
73 #define UTCPD_PWRSM_SRVBIE           UTCPD_PWRSTSIE_SRVBIE_Msk                        /*!< UTCPD_T::PWRSM: SRVBIE Mask            */
74 #define UTCPD_PWRSM_SRHVIE           UTCPD_PWRSTSIE_SRHVIE_Msk                        /*!< UTCPD_T::PWRSM: SRHVIE Mask            */
75 #define UTCPD_PWRSM_DACONIE          UTCPD_PWRSTSIE_DACONIE_Msk                       /*!< UTCPD_T::PWRSM: DACONIE Mask           */
76 
77 
78 /*---------------------------------------------------------------------------------------------------------*/
79 /*  FAULTSM Fault Status Mask constant definitions.                                                        */
80 /*---------------------------------------------------------------------------------------------------------*/
81 #define UTCPD_FAULTSM_VCOCIE         UTCPD_FUTSTSIE_VCOCIE_Msk                        /*!< UTCPD_T::FAULTSM: VCOCIE Mask          */
82 #define UTCPD_FAULTSM_VBOVIE         UTCPD_FUTSTSIE_VBOVIE_Msk                        /*!< UTCPD_T::FAULTSM: VBOVIE Mask          */
83 #define UTCPD_FAULTSM_VBOCIE         UTCPD_FUTSTSIE_VBOCIE_Msk                        /*!< UTCPD_T::FAULTSM: VBOCIE Mask          */
84 #define UTCPD_FAULTSM_FDGFALIE       UTCPD_FUTSTSIE_FDGFALIE_Msk                      /*!< UTCPD_T::FAULTSM: FDGFALIE Mask        */
85 #define UTCPD_FAULTSM_ADGFALIE       UTCPD_FUTSTSIE_ADGFALIE_Msk                      /*!< UTCPD_T::FAULTSM: ADGFALIE Mask        */
86 #define UTCPD_FAULTSM_FOFFVBIE       UTCPD_FUTSTSIE_FOFFVBIE_Msk                      /*!< UTCPD_T::FAULTSM: FOFFVBIE Mask        */
87 
88 /*---------------------------------------------------------------------------------------------------------*/
89 /*  FAULTCTL constant definitions.                                                                         */
90 /*---------------------------------------------------------------------------------------------------------*/
91 #define UTCPD_FAULTCTL_VCOCDTDS      UTCPD_FUTCTL_VCOCDTDS_Msk                        /*!< UTCPD_T::FAULTCTL: VCOCDTDS Mask       */
92 #define UTCPD_FAULTCTL_VBOVDTDS      UTCPD_FUTCTL_VBOVDTDS_Msk                        /*!< UTCPD_T::FAULTCTL: VBOVDTDS Mask       */
93 #define UTCPD_FAULTCTL_VBOCDTDS      UTCPD_FUTCTL_VBOCDTDS_Msk                        /*!< UTCPD_T::FAULTCTL: VBOCDTDS Position   */
94 #define UTCPD_FAULTCTL_VBDGTMDS      UTCPD_FUTCTL_VBDGTMDS_Msk                        /*!< UTCPD_T::FAULTCTL: VBDGTMDS Mask       */
95 #define UTCPD_FAULTCTL_FOFFVBDS      UTCPD_FUTCTL_FOFFVBDS_Msk                        /*!< UTCPD_T::FAULTCTL: FOFFVBDS Mask       */
96 
97 /*---------------------------------------------------------------------------------------------------------*/
98 /*  PWRCTL constant definitions.                                                                          */
99 /*---------------------------------------------------------------------------------------------------------*/
100 #define UTCPD_PWRCTL_VCEN            UTCPD_PWRCTL_VCEN_Msk                            /*!< UTCPD_T::PWRCTL: VCEN Mask             */
101 #define UTCPD_PWRCTL_VCPWR           UTCPD_PWRCTL_VCPWR_Msk                           /*!< UTCPD_T::PWRCTL: VCPWR Mask            */
102 #define UTCPD_PWRCTL_FDGEN           UTCPD_PWRCTL_FDGEN_Msk                           /*!< UTCPD_T::PWRCTL: FDGEN Mask            */
103 #define UTCPD_PWRCTL_BDGEN           UTCPD_PWRCTL_BDGEN_Msk                           /*!< UTCPD_T::PWRCTL: BDGEN Mask            */
104 #define UTCPD_PWRCTL_ADGDC           UTCPD_PWRCTL_ADGDC_Msk                           /*!< UTCPD_T::PWRCTL: ADGDC Mask            */
105 #define UTCPD_PWRCTL_DSVBAM_DIS      UTCPD_PWRCTL_DSVBAM_Msk                          /*!< UTCPD_T::PWRCTL: DSVBAM Mask           */
106 #define UTCPD_PWRCTL_VBMONI_DIS      UTCPD_PWRCTL_VBMONI_Msk                          /*!< UTCPD_T::PWRCTL: VBMONI Mask           */
107 
108 /*---------------------------------------------------------------------------------------------------------*/
109 /*  TCPCCTL constant definitions.                                                                          */
110 /*---------------------------------------------------------------------------------------------------------*/
111 #define UTCPD_TCPCCTL_ORIENT         UTCPD_CTL_ORIENT_Msk                             /*!< UTCPD_T::TCPCCTL: ORIENT Mask          */
112 #define UTCPD_TCPCCTL_BISTEN         UTCPD_CTL_BISTEN_Msk                             /*!< UTCPD_T::TCPCCTL: BISTEN Mask          */
113 
114 /*---------------------------------------------------------------------------------------------------------*/
115 /*  ROLECTL constant definitions.                                                                          */
116 /*---------------------------------------------------------------------------------------------------------*/
117 #define UTCPD_ROLECTL_CC1            UTCPD_ROLCTL_CC1_Msk                             /*!< UTCPD_T::ROLECTL: CC1 Mask             */
118 #define UTCPD_ROLECTL_CC2            UTCPD_ROLCTL_CC2_Msk                             /*!< UTCPD_T::ROLECTL: CC2 Mask             */
119 #define UTCPD_ROLECTL_RPVALUE        UTCPD_ROLCTL_RPVALUE_Msk                         /*!< UTCPD_T::ROLECTL: RPVALUE Mask         */
120 #define UTCPD_ROLECTL_DRP            UTCPD_ROLCTL_DRP_Msk                             /*!< UTCPD_T::ROLECTL: DRP Mask             */
121 
122 #define UTCPD_ROLECTL_CC1_RA        (0 << 0)
123 #define UTCPD_ROLECTL_CC1_RP        (1 << 0)
124 #define UTCPD_ROLECTL_CC1_RD        (2 << 0)
125 #define UTCPD_ROLECTL_CC1_OPEN      (3 << 0)
126 
127 #define UTCPD_ROLECTL_CC2_RA        (0 << 2)
128 #define UTCPD_ROLECTL_CC2_RP        (1 << 2)
129 #define UTCPD_ROLECTL_CC2_RD        (2 << 2)
130 #define UTCPD_ROLECTL_CC2_OPEN      (3 << 2)
131 
132 #define UTCPD_ROLECTL_RPVALUE_DEF   (0 << 4)
133 #define UTCPD_ROLECTL_RPVALUE_1P5A  (1 << 4)
134 #define UTCPD_ROLECTL_RPVALUE_3A    (2 << 4)
135 
136 /*---------------------------------------------------------------------------------------------------------*/
137 /*  CCSTS constant definitions.                                                                            */
138 /*---------------------------------------------------------------------------------------------------------*/
139 #define UTCPD_CCSTS_CC1STATE         UTCPD_CCSTS_CC1STATE_Msk                         /*!< UTCPD_T::CCSTS: CC1STATE Mask          */
140 #define UTCPD_CCSTS_CC2STATE         UTCPD_CCSTS_CC2STATE_Msk                         /*!< UTCPD_T::CCSTS: CC2STATE Mask          */
141 #define UTCPD_CCSTS_CONRLT           UTCPD_CCSTS_CONRLT_Msk                           /*!< UTCPD_T::CCSTS: CONRLT Mask            */
142 #define UTCPD_CCSTS_LK4CONN          UTCPD_CCSTS_LK4CONN_Msk                          /*!< UTCPD_T::CCSTS: LK4CONN Mask           */
143 
144 #define UTCPD_UNDER_LK4CONN       	(1 << 5)
145 #define UTCPD_LK4CONN_DONE          (0 << 5)
146 
147 #define UTCPD_CONN_RESULT_RP        (0 << 4)
148 #define UTCPD_CONN_RESULT_RD        (1 << 4)
149 
150 #define UTCPD_CCSTS_CC2STATE_SRC_OPEN	    (0 << 2)
151 #define UTCPD_CCSTS_CC2STATE_SRC_RA         (1 << 2)
152 #define UTCPD_CCSTS_CC2STATE_SRC_RD         (2 << 2)
153 
154 #define UTCPD_CCSTS_CC2STATE_SNK_OPEN	    (0 << 2)
155 #define UTCPD_CCSTS_CC2STATE_SNK_DEF        (1 << 2)
156 #define UTCPD_CCSTS_CC2STATE_SNK_1P5A       (2 << 2)
157 #define UTCPD_CCSTS_CC2STATE_SNK_3A         (3 << 2)
158 
159 #define UTCPD_CCSTS_CC1STATE_SRC_OPEN       (0 << 0)
160 #define UTCPD_CCSTS_CC1STATE_SRC_RA         (1 << 0)
161 #define UTCPD_CCSTS_CC1STATE_SRC_RD         (2 << 0)
162 
163 #define UTCPD_CCSTS_CC1STATE_SNK_OPEN	    (0 << 0)
164 #define UTCPD_CCSTS_CC1STATE_SNK_DEF        (1 << 0)
165 #define UTCPD_CCSTS_CC1STATE_SNK_1P5A       (2 << 0)
166 #define UTCPD_CCSTS_CC1STATE_SNK_3A         (3 << 0)
167 
168 /*---------------------------------------------------------------------------------------------------------*/
169 /*  PWRSTS constant definitions.                                                                           */
170 /*---------------------------------------------------------------------------------------------------------*/
171 #define UTCPD_PWRSTS_SKVB            UTCPD_PWRSTS_SKVB_Msk                            /*!< UTCPD_T::PWRSTS: SKVB Mask             */
172 #define UTCPD_PWRSTS_VCPS            UTCPD_PWRSTS_VCPS_Msk                            /*!< UTCPD_T::PWRSTS: VCPS Mask             */
173 #define UTCPD_PWRSTS_VBPS            UTCPD_PWRSTS_VBPS_Msk                            /*!< UTCPD_T::PWRSTS: VBPS Mask             */
174 #define UTCPD_PWRSTS_VBPSDTEN        UTCPD_PWRSTS_VBPSDTEN_Msk                        /*!< UTCPD_T::PWRSTS: VBPSDTEN Mask         */
175 #define UTCPD_PWRSTS_SRVB            UTCPD_PWRSTS_SRVB_Msk                            /*!< UTCPD_T::PWRSTS: SRVB Mask             */
176 #define UTCPD_PWRSTS_SRHV            UTCPD_PWRSTS_SRHV_Msk                            /*!< UTCPD_T::PWRSTS: SRHV Mask             */
177 #define UTCPD_PWRSTS_DACON           UTCPD_PWRSTS_DACON_Msk                           /*!< UTCPD_T::PWRSTS: DACON Mask            */
178 
179 /*---------------------------------------------------------------------------------------------------------*/
180 /*  FAULTSTS constant definitions.                                                                         */
181 /*---------------------------------------------------------------------------------------------------------*/
182 
183 #define UTCPD_FAULTSTS_VCOCFUT       UTCPD_FUTSTS_VCOCFUT_Pos                         /*!< UTCPD_T::FAULTSTS: VCOCFUT Mask        */
184 #define UTCPD_FAULTSTS_VBOVFUT       UTCPD_FUTSTS_VBOVFUT_Msk                         /*!< UTCPD_T::FAULTSTS: VBOVFUT Mask        */
185 #define UTCPD_FAULTSTS_VBOCFUT       UTCPD_FUTSTS_VBOCFUT_Msk                         /*!< UTCPD_T::FAULTSTS: VBOCFUT Mask        */
186 #define UTCPD_FAULTSTS_FDGFAL        UTCPD_FUTSTS_FDGFAL_Msk                          /*!< UTCPD_T::FAULTSTS: FDGFAL Mask         */
187 #define UTCPD_FAULTSTS_ADGFAL        UTCPD_FUTSTS_ADGFAL_Msk                          /*!< UTCPD_T::FAULTSTS: ADGFAL Mask         */
188 #define UTCPD_FAULTSTS_FOFFVB        UTCPD_FUTSTS_FOFFVB_Msk                          /*!< UTCPD_T::FAULTSTS: FOFFVB Mask         */
189 
190 /*---------------------------------------------------------------------------------------------------------*/
191 /*  CMD constant definitions.                                                                        */
192 /*---------------------------------------------------------------------------------------------------------*/
193 //#define NPD48_CMD_WAKEI2C                   (0x11)	/* Not Support */
194 #define UTCPD_CMD_DISABLE_VBUS_DETECT       (0x22)
195 #define UTCPD_CMD_ENABLE_VBUS_DETECT        (0x33)
196 #define UTCPD_CMD_DISABLE_SINK_VBUS         (0x44)
197 #define UTCPD_CMD_SINK_VBUS                 (0x55)
198 #define UTCPD_CMD_DISABLE_SRC_VBUS          (0x66)
199 #define UTCPD_CMD_SRC_VBUS_DEFAULT          (0x77)
200 #define UTCPD_CMD_SRC_VBUS_NONDEFAULT       (0x88)
201 #define UTCPD_CMD_LOOK4CONNECTION           (0x99)
202 //#define UTCPD_CMD_RX_ONE_MORE               (0xAA)    /* Not Support */
203 //#define UTCPD_CMD_SEND_FRS_SWAP_SIGNAL      (0xCC)	/* Not Support */
204 //#define UTCPD_CMD_SEND_RESET_TX_BUF         (0xDD)	/* Not Support */
205 //#define UTCPD_CMD_SEND_RESET_RX_BUF         (0xEE)	/* Not Support */
206 //#define UTCPD_CMD_I2C_IDLE                  (0xFF)	/* Not Support */
207 
208 /*---------------------------------------------------------------------------------------------------------*/
209 /*  NPD48_MHINFO constant definitions.                                                                     */
210 /*---------------------------------------------------------------------------------------------------------*/
211 #define UTCPD_MHINFO_DROLE_UFP              (0x0UL << UTCPD_MSHEAD_DAROL_Pos)         /*!< UTCPD_T::MHINFO: DROLE Position        */
212 #define UTCPD_MHINFO_DROLE_DFP              (0x1UL << UTCPD_MSHEAD_DAROL_Pos)         /*!< UTCPD_T::MHINFO: DROLE Position        */
213 
214 #define UTCPD_MHINFO_PDREV_10               (0x0UL << UTCPD_MSHEAD_PDREV_Pos)         /*!< UTCPD_T::MHINFO: PDREV Position        */
215 #define UTCPD_MHINFO_PDREV_20               (0x1UL << UTCPD_MSHEAD_PDREV_Pos)         /*!< UTCPD_T::MHINFO: PDREV Position        */
216 #define UTCPD_MHINFO_PDREV_30               (0x2UL << UTCPD_MSHEAD_PDREV_Pos)         /*!< UTCPD_T::MHINFO: PDREV Position        */
217 #define UTCPD_MHINFO_PDREV_31               (0x3UL << UTCPD_MSHEAD_PDREV_Pos)         /*!< UTCPD_T::MHINFO: PDREV Position        */
218 
219 #define UTCPD_MHINFO_PROLE_SNK              (0x0UL << UTCPD_MSHEAD_PWRROL_Pos)        /*!< UTCPD_T::MHINFO: PROLE Position        */
220 #define UTCPD_MHINFO_PROLE_SRC              (0x1UL << UTCPD_MSHEAD_PWRROL_Pos)        /*!< UTCPD_T::MHINFO: PROLE Position        */
221 
222 /*---------------------------------------------------------------------------------------------------------*/
223 /*  RDET constant definitions.                                                                             */
224 /*---------------------------------------------------------------------------------------------------------*/
225 #define UTCPD_RDET_SOPEN                    UTCPD_DTRXEVNT_SOPEN_Msk                  /*!< UTCPD_T::RDET: SOPEN Mask              */
226 #define UTCPD_RDET_SOPPEN                   UTCPD_DTRXEVNT_SOPPEN_Msk                 /*!< UTCPD_T::RDET: SOPPEN Mask             */
227 #define UTCPD_RDET_SOPPPEN                  UTCPD_DTRXEVNT_SOPPPEN_Msk                /*!< UTCPD_T::RDET: SOPPPEN Mask            */
228 #define UTCPD_RDET_SDBGPEN                  UTCPD_DTRXEVNT_SDBGPEN_Msk                /*!< UTCPD_T::RDET: SDBGPEN Mask            */
229 #define UTCPD_RDET_SDBGPPEN                 UTCPD_DTRXEVNT_SDBGPPEN_Msk               /*!< UTCPD_T::RDET: SDBGPPEN Mask           */
230 #define UTCPD_RDET_HRSTEN                   UTCPD_DTRXEVNT_HRSTEN_Msk                 /*!< UTCPD_T::RDET: HRSTEN Mask             */
231 #define UTCPD_RDET_CABRSTEN                 UTCPD_DTRXEVNT_CABRSTEN_Msk               /*!< UTCPD_T::RDET: CABRSTEN Mask           */
232 
233 
234 /*---------------------------------------------------------------------------------------------------------*/
235 /*  FSTXCTL constant definitions.                                                                          */
236 /*---------------------------------------------------------------------------------------------------------*/
237 #define UTCPD_FSTXCTL_FSTXEN                UTCPD_FRSRXCTL_FRSTX_Msk                  /*!< UTCPD_T::FSTXCTL: FSTXEN Mask          */
238 #define UTCPD_FSTXCTL_FSDVVB                UTCPD_FRSRXCTL_FRSDVVB_Msk                /*!< UTCPD_T::FSTXCTL: FSDVVB Mask          */
239 #define UTCPD_FSTXCTL_FSRXDET               UTCPD_FRSRXCTL_FRSRXEN_Msk                /*!< UTCPD_T::FSTXCTL: FSRXDET Mask         */
240 
241 
242 
243 /*---------------------------------------------------------------------------------------------------------*/
244 /*  MUXSEL constant definitions.                                                                           */
245 /*---------------------------------------------------------------------------------------------------------*/
246 #define UTCPD_VCONN_OC_EINT0      (0UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From EINT0    */
247 #define UTCPD_VCONN_OC_EINT1      (1UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From EINT1    */
248 #define UTCPD_VCONN_OC_EINT2      (2UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From EINT2    */
249 #define UTCPD_VCONN_OC_EINT3	  (3UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From EINT3    */
250 #define UTCPD_VCONN_OC_ADC_CMP1   (4UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From ADC_CMP1 */
251 #define UTCPD_VCONN_OC_ACMP0      (5UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From ACMP0    */
252 #define UTCPD_VCONN_OC_ACMP1      (6UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From ACMP1    */
253 #define UTCPD_VCONN_OC_ACMP2      (7UL << UTCPD_MUXSEL_VCOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VCONN OC Source From ACMP2    */
254 
255 
256 #define UTCPD_VBUS_OC_EINT0       (0UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From EINT0     */
257 #define UTCPD_VBUS_OC_EINT1       (1UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From EINT1     */
258 #define UTCPD_VBUS_OC_EINT2       (2UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From EINT2     */
259 #define UTCPD_VBUS_OC_EINT3	      (3UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From EINT3     */
260 #define UTCPD_VBUS_OC_ADC_CMP0    (4UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From ADC_CMP0  */
261 #define UTCPD_VBUS_OC_ACMP0       (5UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From ACMP0     */
262 #define UTCPD_VBUS_OC_ACMP1       (6UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From ACMP1     */
263 #define UTCPD_VBUS_OC_ACMP2       (7UL << UTCPD_MUXSEL_VBOCS_Pos)                     /*!< UTCPD_T::MUXSEL: VBUS OC Source From ACMP2     */
264 /*---------------------------------------------------------------------------------------------------------*/
265 /*  PWRASTS constant definitions.                                                                          */
266 /*---------------------------------------------------------------------------------------------------------*/
267 #define UTCPD_PWRASTS_SRCENLVL_HIGH  (0x0ul << 0)                                      /*!< UTCPD_T::PWRASTS: SRC Enable Level     */
268 #define UTCPD_PWRASTS_SRCENLVL_LOW   (0x1ul << 0)                                      /*!< UTCPD_T::PWRASTS: SRC Enable Level     */
269 
270 #define UTCPD_PWRASTS_SNKENLVL_HIGH  (0x0ul << 1)                                      /*!< UTCPD_T::PWRASTS: SNK Enable Level     */
271 #define UTCPD_PWRASTS_SNKENLVL_LOW   (0x1ul << 1)                                      /*!< UTCPD_T::PWRASTS: SNK Enable Level     */
272 
273 #define UTCPD_PWRASTS_FORCEDLVL_HIGH (0x0ul << 2)                                      /*!< UTCPD_T::PWRASTS: Force Discharge Level*/
274 #define UTCPD_PWRASTS_FORCEDLVL_LOW  (0x1ul << 2)                                      /*!< UTCPD_T::PWRASTS: Force Discharge Level*/
275 
276 #define UTCPD_PWRASTS_BLEEDDLVL_HIGH (0x0ul << 3)                                      /*!< UTCPD_T::PWRASTS: Bleed Discharge Level*/
277 #define UTCPD_PWRASTS_BLEEDDLVL_LOW  (0x1ul << 3)                                      /*!< UTCPD_T::PWRASTS: Bleed Discharge Level*/
278 /*@}*/ /* end of group I2C_EXPORTED_CONSTANTS */
279 
280 /*---------------------------------------------------------------------------------------------------------*/
281 /* Define utcpd functions prototype                                                                        */
282 /*---------------------------------------------------------------------------------------------------------*/
283 int32_t UTCPD_GetAlertStatus(int port, int* i32AlertSts);
284 int32_t UTCPD_ClearAlertStatus(int port, int AlertStClr);
285 int32_t UTCPD_EnableAlertMask(int port, int mask_set);
286 int32_t UTCPD_DisableAlertMask(int port, int mask_clr);
287 int32_t UTCPD_EnablePowerStatusMask(int port, int mask_set);
288 int32_t UTCPD_DisablePowerStatusMask(int port, int mask_clr);
289 int32_t UTCPD_EnableFaultMask(int port, int mask_set);
290 int32_t UTCPD_DisableFaultMask(int port, int mask_clr);
291 int32_t UTCPD_EnablePowerCtrl(int port, uint32_t mask_set);
292 int32_t UTCPD_DisablePowerCtrl(int port, uint32_t maskclr);
293 int32_t UTCPD_EnableFaultCtrl(int port, uint32_t mask_set);
294 int32_t UTCPD_DisableFaultCtrl(int port, uint32_t maskclr);
295 int32_t UTCPD_ClearPowerStatus(int port, int PowerStClr);
296 int32_t UTCPD_EnableFaultStatusMask(int port, int mask_set);
297 int32_t UTCPD_DisableFaultStatusMask(int port, int mask_clr);
298 int32_t UTCPD_GetFaultStatus(int port, int* pi32RegData);
299 int32_t UTCPD_ClearFaultStatus(int port, int FaultStClr);
300 int32_t UTCPD_SetRoleCtrl(int port, uint32_t u32DrpToggle, uint32_t u32Rpvalue, uint32_t u32CC2, uint32_t u32CC1);
301 int32_t UTCPD_GetRoleCtrl(int port, uint32_t* pu32DrpToggle, uint32_t* pu32CC1, uint32_t* pu32CC2, uint32_t* pu32Rpvalue);
302 int32_t UTCPD_SetTypeCPortCtrl(int port, uint32_t u32BistMode, uint32_t u32Orient);
303 int32_t UTCPD_GetTypeCPortCtrl(int port, uint32_t* pu32BistMode, uint32_t* pu32Orient);
304 int32_t UTCPD_IsssueCmd(int port, uint32_t cmd);
305 int32_t UTCPD_GetCCSts(int port, uint32_t* pu32Look4Con, uint32_t* pu32ConRlt, uint32_t* pu32CC2Sts, uint32_t* pu32CC1Sts);
306 int32_t UTCPD_GetPwrSts(int port, uint32_t* pu32VBUSDetEn, uint32_t* pu32VBUSPresent, uint32_t* pu32VCONNPresent, uint32_t* pu32SnkVBUS);
307 int32_t UTCPD_GetPwrStsExt(int port, uint32_t* pu32DbgAccessory, uint32_t* pu32SrcNonDefVBUS, uint32_t* pu32SrcDefVBUS);
308 int32_t UTCPD_GetFaultSts(int port, uint32_t* pu32VBUSOverCurr, uint32_t* pu32VBUSOverVolt, uint32_t* pu32VCONNOverCurr, uint32_t* pu32I2CInfErr);
309 int32_t UTCPD_GetFaultStsExt(int port, uint32_t* pu32ForceOffFat, uint32_t* pu32AutoDiscFat, uint32_t* pu32ForceDiscFat);
310 int32_t UTCPD_SetMsgHeaderInfo(int port, uint32_t u32DataRole, uint32_t u32Revision, uint32_t u32PwrRole);
311 int32_t UTCPD_SetRecDetect(int port, uint32_t u32RegData);
312 int32_t UTCPD_SetVBUSAlarm(int port, uint32_t u32AlarmH, uint32_t u32AlarmL);
313 int32_t UTCPD_SetSnkDisconnect(int port, uint32_t u32SnkDiscVolt);
314 int32_t UTCPD_SetStopDischargeVolt(int port, uint32_t u32StopDischgVolt);
315 void UTCPD_vconn_disable_src_cc(int port);
316 void UTCPD_vconn_enable_src_cc(int port);
317 void UTCPD_vconn_enable_from_cc2(int port);
318 void UTCPD_vconn_enable_from_cc1(int port);
319 void UTCPD_vconn_polarity_active_low(int port);
320 void UTCPD_vconn_polarity_active_high(int port);
321 void UTCPD_vconn_disable_oc_fault(int port);
322 void UTCPD_vconn_enable_oc_fault(int port);
323 void UTCPD_vconn_mux_selection(int port, uint32_t cc1vcensel, uint32_t cc2vcensel);
324 void UTCPD_vconn_configure_oc_detection_soruce(int port, uint32_t u32Src);
325 void UTCPD_vbus_srcen_polarity_active_low(int port);
326 void UTCPD_vbus_srcen_polarity_active_high(int port);
327 void UTCPD_vbus_snken_polarity_active_low(int port);
328 void UTCPD_vbus_snken_polarity_active_high(int port);
329 void UTCPD_vbus_disable_oc_fault(int port);
330 void UTCPD_vbus_enable_oc_fault(int port);
331 void UTCPD_vbus_discharge_polarity_active_low(int port);
332 void UTCPD_vbus_discharge_polarity_active_high(int port);
333 void UTCPD_vbus_configure_oc_soruce(int port, uint32_t u32Src);
334 void UTCPD_vbus_disable_ov_fault(int port);
335 void UTCPD_vbus_enable_ov_fault(int port);
336 void UTCPD_vbus_disable_forceoff_fault(int port);
337 void UTCPD_vbus_enable_forceoff_fault(int port);
338 uint32_t UTCPD_vbus_is_source(int port);
339 uint32_t UTCPD_vbus_is_sink(int port);
340 uint32_t UTCPD_vbus_is_source_hv(int port);
341 void UTCPD_power_enable_monitor(int port);
342 void UTCPD_power_disable_monitor(int port);
343 void UTCPD_power_disable_auto_discharge(int port);
344 void UTCPD_power_enable_auto_discharge(int port);
345 void UTCPD_frs_tx_polarity_active_low(int port);
346 void UTCPD_frs_tx_polarity_active_high(int port);
347 void UTCPD_frs_mux_selection(int port, uint32_t cc1frssel, uint32_t cc2frssel);
348 uint32_t UTCPD_Open(int port);
349 
350 
351 /*@}*/ /* end of group UTCPD_EXPORTED_FUNCTIONS */
352 
353 /*@}*/ /* end of group UTCPD_Driver */
354 
355 /*@}*/ /* end of group Standard_Driver */
356 
357 #ifdef __cplusplus
358 }
359 #endif
360 
361 #endif
362 
363 /*** (C) COPYRIGHT 2020 Nuvoton Technology Corp. ***/