xref: /OK3568_Linux_fs/kernel/drivers/extcon/extcon-rt8973a.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * rt8973a.h
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (c) 2014 Samsung Electronics Co., Ltd
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef __LINUX_EXTCON_RT8973A_H
9*4882a593Smuzhiyun #define __LINUX_EXTCON_RT8973A_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun enum rt8973a_types {
12*4882a593Smuzhiyun 	TYPE_RT8973A,
13*4882a593Smuzhiyun };
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* RT8973A registers */
16*4882a593Smuzhiyun enum rt8973A_reg {
17*4882a593Smuzhiyun 	RT8973A_REG_DEVICE_ID = 0x1,
18*4882a593Smuzhiyun 	RT8973A_REG_CONTROL1,
19*4882a593Smuzhiyun 	RT8973A_REG_INT1,
20*4882a593Smuzhiyun 	RT8973A_REG_INT2,
21*4882a593Smuzhiyun 	RT8973A_REG_INTM1,
22*4882a593Smuzhiyun 	RT8973A_REG_INTM2,
23*4882a593Smuzhiyun 	RT8973A_REG_ADC,
24*4882a593Smuzhiyun 	RT8973A_REG_RSVD_1,
25*4882a593Smuzhiyun 	RT8973A_REG_RSVD_2,
26*4882a593Smuzhiyun 	RT8973A_REG_DEV1,
27*4882a593Smuzhiyun 	RT8973A_REG_DEV2,
28*4882a593Smuzhiyun 	RT8973A_REG_RSVD_3,
29*4882a593Smuzhiyun 	RT8973A_REG_RSVD_4,
30*4882a593Smuzhiyun 	RT8973A_REG_RSVD_5,
31*4882a593Smuzhiyun 	RT8973A_REG_RSVD_6,
32*4882a593Smuzhiyun 	RT8973A_REG_RSVD_7,
33*4882a593Smuzhiyun 	RT8973A_REG_RSVD_8,
34*4882a593Smuzhiyun 	RT8973A_REG_RSVD_9,
35*4882a593Smuzhiyun 	RT8973A_REG_MANUAL_SW1,
36*4882a593Smuzhiyun 	RT8973A_REG_MANUAL_SW2,
37*4882a593Smuzhiyun 	RT8973A_REG_RSVD_10,
38*4882a593Smuzhiyun 	RT8973A_REG_RSVD_11,
39*4882a593Smuzhiyun 	RT8973A_REG_RSVD_12,
40*4882a593Smuzhiyun 	RT8973A_REG_RSVD_13,
41*4882a593Smuzhiyun 	RT8973A_REG_RSVD_14,
42*4882a593Smuzhiyun 	RT8973A_REG_RSVD_15,
43*4882a593Smuzhiyun 	RT8973A_REG_RESET,
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun 	RT8973A_REG_END,
46*4882a593Smuzhiyun };
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun /* Define RT8973A MASK/SHIFT constant */
49*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VENDOR_SHIFT	0
50*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VERSION_SHIFT	3
51*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VENDOR_MASK	(0x7 << RT8973A_REG_DEVICE_ID_VENDOR_SHIFT)
52*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VERSION_MASK	(0x1f << RT8973A_REG_DEVICE_ID_VERSION_SHIFT)
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_INTM_SHIFT	0
55*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_AUTO_CONFIG_SHIFT	2
56*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_I2C_RST_EN_SHIFT	3
57*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_SWITCH_OPEN_SHIFT	4
58*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_CHGTYP_SHIFT	5
59*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_USB_CHD_EN_SHIFT	6
60*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_ADC_EN_SHIFT	7
61*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_INTM_MASK		(0x1 << RT8973A_REG_CONTROL1_INTM_SHIFT)
62*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_AUTO_CONFIG_MASK	(0x1 << RT8973A_REG_CONTROL1_AUTO_CONFIG_SHIFT)
63*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_I2C_RST_EN_MASK	(0x1 << RT8973A_REG_CONTROL1_I2C_RST_EN_SHIFT)
64*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_SWITCH_OPEN_MASK	(0x1 << RT8973A_REG_CONTROL1_SWITCH_OPEN_SHIFT)
65*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_CHGTYP_MASK	(0x1 << RT8973A_REG_CONTROL1_CHGTYP_SHIFT)
66*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_USB_CHD_EN_MASK	(0x1 << RT8973A_REG_CONTROL1_USB_CHD_EN_SHIFT)
67*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_ADC_EN_MASK	(0x1 << RT8973A_REG_CONTROL1_ADC_EN_SHIFT)
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ATTACH_SHIFT		0
70*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DETACH_SHIFT		1
71*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CHGDET_SHIFT		2
72*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DCD_T_SHIFT		3
73*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OVP_SHIFT		4
74*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CONNECT_SHIFT		5
75*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ADC_CHG_SHIFT		6
76*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OTP_SHIFT		7
77*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ATTACH_MASK		(0x1 << RT9873A_REG_INTM1_ATTACH_SHIFT)
78*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DETACH_MASK		(0x1 <<  RT9873A_REG_INTM1_DETACH_SHIFT)
79*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CHGDET_MASK		(0x1 <<  RT9873A_REG_INTM1_CHGDET_SHIFT)
80*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DCD_T_MASK		(0x1 <<  RT9873A_REG_INTM1_DCD_T_SHIFT)
81*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OVP_MASK		(0x1 <<  RT9873A_REG_INTM1_OVP_SHIFT)
82*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CONNECT_MASK		(0x1 <<  RT9873A_REG_INTM1_CONNECT_SHIFT)
83*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ADC_CHG_MASK		(0x1 <<  RT9873A_REG_INTM1_ADC_CHG_SHIFT)
84*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OTP_MASK		(0x1 <<  RT9873A_REG_INTM1_OTP_SHIFT)
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define RT9873A_REG_INTM2_UVLO_SHIFT		1
87*4882a593Smuzhiyun #define RT9873A_REG_INTM2_POR_SHIFT		2
88*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OTP_FET_SHIFT		3
89*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_FET_SHIFT		4
90*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_LATCH_SHIFT	5
91*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_SHIFT		6
92*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_OCP_SHIFT		7
93*4882a593Smuzhiyun #define RT9873A_REG_INTM2_UVLO_MASK		(0x1 << RT9873A_REG_INTM2_UVLO_SHIFT)
94*4882a593Smuzhiyun #define RT9873A_REG_INTM2_POR_MASK		(0x1 <<  RT9873A_REG_INTM2_POR_SHIFT)
95*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OTP_FET_MASK		(0x1 <<  RT9873A_REG_INTM2_OTP_FET_SHIFT)
96*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_FET_MASK		(0x1 <<  RT9873A_REG_INTM2_OVP_FET_SHIFT)
97*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_LATCH_MASK	(0x1 <<  RT9873A_REG_INTM2_OCP_LATCH_SHIFT)
98*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_MASK		(0x1 <<  RT9873A_REG_INTM2_OCP_SHIFT)
99*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_OCP_MASK		(0x1 <<  RT9873A_REG_INTM2_OVP_OCP_SHIFT)
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define RT8973A_REG_ADC_SHIFT			0
102*4882a593Smuzhiyun #define RT8973A_REG_ADC_MASK			(0x1f << RT8973A_REG_ADC_SHIFT)
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun #define RT8973A_REG_DEV1_OTG_SHIFT		0
105*4882a593Smuzhiyun #define RT8973A_REG_DEV1_SDP_SHIFT		2
106*4882a593Smuzhiyun #define RT8973A_REG_DEV1_UART_SHIFT		3
107*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CAR_KIT_TYPE1_SHIFT	4
108*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CDPORT_SHIFT		5
109*4882a593Smuzhiyun #define RT8973A_REG_DEV1_DCPORT_SHIFT		6
110*4882a593Smuzhiyun #define RT8973A_REG_DEV1_OTG_MASK		(0x1 << RT8973A_REG_DEV1_OTG_SHIFT)
111*4882a593Smuzhiyun #define RT8973A_REG_DEV1_SDP_MASK		(0x1 << RT8973A_REG_DEV1_SDP_SHIFT)
112*4882a593Smuzhiyun #define RT8973A_REG_DEV1_UART_MASK		(0x1 << RT8973A_REG_DEV1_UART_SHIFT)
113*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CAR_KIT_TYPE1_MASK	(0x1 << RT8973A_REG_DEV1_CAR_KIT_TYPE1_SHIFT)
114*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CDPORT_MASK		(0x1 << RT8973A_REG_DEV1_CDPORT_SHIFT)
115*4882a593Smuzhiyun #define RT8973A_REG_DEV1_DCPORT_MASK		(0x1 << RT8973A_REG_DEV1_DCPORT_SHIFT)
116*4882a593Smuzhiyun #define RT8973A_REG_DEV1_USB_MASK		(RT8973A_REG_DEV1_SDP_MASK \
117*4882a593Smuzhiyun 						| RT8973A_REG_DEV1_CDPORT_MASK)
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_ON_SHIFT	0
120*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_OFF_SHIFT	1
121*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_ON_SHIFT	2
122*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_OFF_SHIFT	3
123*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_ON_MASK	(0x1 << RT8973A_REG_DEV2_JIG_USB_ON_SHIFT)
124*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_OFF_MASK	(0x1 << RT8973A_REG_DEV2_JIG_USB_OFF_SHIFT)
125*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_ON_MASK	(0x1 << RT8973A_REG_DEV2_JIG_UART_ON_SHIFT)
126*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_OFF_MASK	(0x1 << RT8973A_REG_DEV2_JIG_UART_OFF_SHIFT)
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DP_SHIFT		2
129*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DM_SHIFT		5
130*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DP_MASK		(0x7 << RT8973A_REG_MANUAL_SW1_DP_SHIFT)
131*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DM_MASK		(0x7 << RT8973A_REG_MANUAL_SW1_DM_SHIFT)
132*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_OPEN			0x0
133*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_USB			0x1
134*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_UART			0x3
135*4882a593Smuzhiyun #define DM_DP_SWITCH_OPEN			((DM_DP_CON_SWITCH_OPEN << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \
136*4882a593Smuzhiyun 						| (DM_DP_CON_SWITCH_OPEN << RT8973A_REG_MANUAL_SW1_DM_SHIFT))
137*4882a593Smuzhiyun #define DM_DP_SWITCH_USB			((DM_DP_CON_SWITCH_USB << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \
138*4882a593Smuzhiyun 						| (DM_DP_CON_SWITCH_USB << RT8973A_REG_MANUAL_SW1_DM_SHIFT))
139*4882a593Smuzhiyun #define DM_DP_SWITCH_UART			((DM_DP_CON_SWITCH_UART << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \
140*4882a593Smuzhiyun 						| (DM_DP_CON_SWITCH_UART << RT8973A_REG_MANUAL_SW1_DM_SHIFT))
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_ON_SHIFT	0
143*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_ON_SHIFT	2
144*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_SHIFT	3
145*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_ON_MASK	(0x1 << RT8973A_REG_MANUAL_SW2_FET_ON_SHIFT)
146*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_ON_MASK	(0x1 << RT8973A_REG_MANUAL_SW2_JIG_ON_SHIFT)
147*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_MASK	(0x1 << RT8973A_REG_MANUAL_SW2_BOOT_SW_SHIFT)
148*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_ON		0
149*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_OFF		0x1
150*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_OFF		0
151*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_ON		0x1
152*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_ON	0
153*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_OFF	0x1
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define RT8973A_REG_RESET_SHIFT			0
156*4882a593Smuzhiyun #define RT8973A_REG_RESET_MASK			(0x1 << RT8973A_REG_RESET_SHIFT)
157*4882a593Smuzhiyun #define RT8973A_REG_RESET			0x1
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun /* RT8973A Interrupts */
160*4882a593Smuzhiyun enum rt8973a_irq {
161*4882a593Smuzhiyun 	/* Interrupt1*/
162*4882a593Smuzhiyun 	RT8973A_INT1_ATTACH,
163*4882a593Smuzhiyun 	RT8973A_INT1_DETACH,
164*4882a593Smuzhiyun 	RT8973A_INT1_CHGDET,
165*4882a593Smuzhiyun 	RT8973A_INT1_DCD_T,
166*4882a593Smuzhiyun 	RT8973A_INT1_OVP,
167*4882a593Smuzhiyun 	RT8973A_INT1_CONNECT,
168*4882a593Smuzhiyun 	RT8973A_INT1_ADC_CHG,
169*4882a593Smuzhiyun 	RT8973A_INT1_OTP,
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun 	/* Interrupt2*/
172*4882a593Smuzhiyun 	RT8973A_INT2_UVLO,
173*4882a593Smuzhiyun 	RT8973A_INT2_POR,
174*4882a593Smuzhiyun 	RT8973A_INT2_OTP_FET,
175*4882a593Smuzhiyun 	RT8973A_INT2_OVP_FET,
176*4882a593Smuzhiyun 	RT8973A_INT2_OCP_LATCH,
177*4882a593Smuzhiyun 	RT8973A_INT2_OCP,
178*4882a593Smuzhiyun 	RT8973A_INT2_OVP_OCP,
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun 	RT8973A_NUM,
181*4882a593Smuzhiyun };
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun #define RT8973A_INT1_ATTACH_MASK		BIT(0)
184*4882a593Smuzhiyun #define RT8973A_INT1_DETACH_MASK		BIT(1)
185*4882a593Smuzhiyun #define RT8973A_INT1_CHGDET_MASK		BIT(2)
186*4882a593Smuzhiyun #define RT8973A_INT1_DCD_T_MASK			BIT(3)
187*4882a593Smuzhiyun #define RT8973A_INT1_OVP_MASK			BIT(4)
188*4882a593Smuzhiyun #define RT8973A_INT1_CONNECT_MASK		BIT(5)
189*4882a593Smuzhiyun #define RT8973A_INT1_ADC_CHG_MASK		BIT(6)
190*4882a593Smuzhiyun #define RT8973A_INT1_OTP_MASK			BIT(7)
191*4882a593Smuzhiyun #define RT8973A_INT2_UVLOT_MASK			BIT(0)
192*4882a593Smuzhiyun #define RT8973A_INT2_POR_MASK			BIT(1)
193*4882a593Smuzhiyun #define RT8973A_INT2_OTP_FET_MASK		BIT(2)
194*4882a593Smuzhiyun #define RT8973A_INT2_OVP_FET_MASK		BIT(3)
195*4882a593Smuzhiyun #define RT8973A_INT2_OCP_LATCH_MASK		BIT(4)
196*4882a593Smuzhiyun #define RT8973A_INT2_OCP_MASK			BIT(5)
197*4882a593Smuzhiyun #define RT8973A_INT2_OVP_OCP_MASK		BIT(6)
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #endif /*  __LINUX_EXTCON_RT8973A_H */
200