xref: /OK3568_Linux_fs/kernel/drivers/extcon/extcon-sm5502.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * sm5502.h
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (c) 2014 Samsung Electronics Co., Ltd
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef __LINUX_EXTCON_SM5502_H
9*4882a593Smuzhiyun #define __LINUX_EXTCON_SM5502_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun enum sm5502_types {
12*4882a593Smuzhiyun 	TYPE_SM5502,
13*4882a593Smuzhiyun };
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* SM5502 registers */
16*4882a593Smuzhiyun enum sm5502_reg {
17*4882a593Smuzhiyun 	SM5502_REG_DEVICE_ID = 0x01,
18*4882a593Smuzhiyun 	SM5502_REG_CONTROL,
19*4882a593Smuzhiyun 	SM5502_REG_INT1,
20*4882a593Smuzhiyun 	SM5502_REG_INT2,
21*4882a593Smuzhiyun 	SM5502_REG_INTMASK1,
22*4882a593Smuzhiyun 	SM5502_REG_INTMASK2,
23*4882a593Smuzhiyun 	SM5502_REG_ADC,
24*4882a593Smuzhiyun 	SM5502_REG_TIMING_SET1,
25*4882a593Smuzhiyun 	SM5502_REG_TIMING_SET2,
26*4882a593Smuzhiyun 	SM5502_REG_DEV_TYPE1,
27*4882a593Smuzhiyun 	SM5502_REG_DEV_TYPE2,
28*4882a593Smuzhiyun 	SM5502_REG_BUTTON1,
29*4882a593Smuzhiyun 	SM5502_REG_BUTTON2,
30*4882a593Smuzhiyun 	SM5502_REG_CAR_KIT_STATUS,
31*4882a593Smuzhiyun 	SM5502_REG_RSVD1,
32*4882a593Smuzhiyun 	SM5502_REG_RSVD2,
33*4882a593Smuzhiyun 	SM5502_REG_RSVD3,
34*4882a593Smuzhiyun 	SM5502_REG_RSVD4,
35*4882a593Smuzhiyun 	SM5502_REG_MANUAL_SW1,
36*4882a593Smuzhiyun 	SM5502_REG_MANUAL_SW2,
37*4882a593Smuzhiyun 	SM5502_REG_DEV_TYPE3,
38*4882a593Smuzhiyun 	SM5502_REG_RSVD5,
39*4882a593Smuzhiyun 	SM5502_REG_RSVD6,
40*4882a593Smuzhiyun 	SM5502_REG_RSVD7,
41*4882a593Smuzhiyun 	SM5502_REG_RSVD8,
42*4882a593Smuzhiyun 	SM5502_REG_RSVD9,
43*4882a593Smuzhiyun 	SM5502_REG_RESET,
44*4882a593Smuzhiyun 	SM5502_REG_RSVD10,
45*4882a593Smuzhiyun 	SM5502_REG_RESERVED_ID1,
46*4882a593Smuzhiyun 	SM5502_REG_RSVD11,
47*4882a593Smuzhiyun 	SM5502_REG_RSVD12,
48*4882a593Smuzhiyun 	SM5502_REG_RESERVED_ID2,
49*4882a593Smuzhiyun 	SM5502_REG_RSVD13,
50*4882a593Smuzhiyun 	SM5502_REG_OCP,
51*4882a593Smuzhiyun 	SM5502_REG_RSVD14,
52*4882a593Smuzhiyun 	SM5502_REG_RSVD15,
53*4882a593Smuzhiyun 	SM5502_REG_RSVD16,
54*4882a593Smuzhiyun 	SM5502_REG_RSVD17,
55*4882a593Smuzhiyun 	SM5502_REG_RSVD18,
56*4882a593Smuzhiyun 	SM5502_REG_RSVD19,
57*4882a593Smuzhiyun 	SM5502_REG_RSVD20,
58*4882a593Smuzhiyun 	SM5502_REG_RSVD21,
59*4882a593Smuzhiyun 	SM5502_REG_RSVD22,
60*4882a593Smuzhiyun 	SM5502_REG_RSVD23,
61*4882a593Smuzhiyun 	SM5502_REG_RSVD24,
62*4882a593Smuzhiyun 	SM5502_REG_RSVD25,
63*4882a593Smuzhiyun 	SM5502_REG_RSVD26,
64*4882a593Smuzhiyun 	SM5502_REG_RSVD27,
65*4882a593Smuzhiyun 	SM5502_REG_RSVD28,
66*4882a593Smuzhiyun 	SM5502_REG_RSVD29,
67*4882a593Smuzhiyun 	SM5502_REG_RSVD30,
68*4882a593Smuzhiyun 	SM5502_REG_RSVD31,
69*4882a593Smuzhiyun 	SM5502_REG_RSVD32,
70*4882a593Smuzhiyun 	SM5502_REG_RSVD33,
71*4882a593Smuzhiyun 	SM5502_REG_RSVD34,
72*4882a593Smuzhiyun 	SM5502_REG_RSVD35,
73*4882a593Smuzhiyun 	SM5502_REG_RSVD36,
74*4882a593Smuzhiyun 	SM5502_REG_RESERVED_ID3,
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun 	SM5502_REG_END,
77*4882a593Smuzhiyun };
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun /* Define SM5502 MASK/SHIFT constant */
80*4882a593Smuzhiyun #define SM5502_REG_DEVICE_ID_VENDOR_SHIFT	0
81*4882a593Smuzhiyun #define SM5502_REG_DEVICE_ID_VERSION_SHIFT	3
82*4882a593Smuzhiyun #define SM5502_REG_DEVICE_ID_VENDOR_MASK	(0x3 << SM5502_REG_DEVICE_ID_VENDOR_SHIFT)
83*4882a593Smuzhiyun #define SM5502_REG_DEVICE_ID_VERSION_MASK	(0x1f << SM5502_REG_DEVICE_ID_VERSION_SHIFT)
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define SM5502_REG_CONTROL_MASK_INT_SHIFT	0
86*4882a593Smuzhiyun #define SM5502_REG_CONTROL_WAIT_SHIFT		1
87*4882a593Smuzhiyun #define SM5502_REG_CONTROL_MANUAL_SW_SHIFT	2
88*4882a593Smuzhiyun #define SM5502_REG_CONTROL_RAW_DATA_SHIFT	3
89*4882a593Smuzhiyun #define SM5502_REG_CONTROL_SW_OPEN_SHIFT	4
90*4882a593Smuzhiyun #define SM5502_REG_CONTROL_MASK_INT_MASK	(0x1 << SM5502_REG_CONTROL_MASK_INT_SHIFT)
91*4882a593Smuzhiyun #define SM5502_REG_CONTROL_WAIT_MASK		(0x1 << SM5502_REG_CONTROL_WAIT_SHIFT)
92*4882a593Smuzhiyun #define SM5502_REG_CONTROL_MANUAL_SW_MASK	(0x1 << SM5502_REG_CONTROL_MANUAL_SW_SHIFT)
93*4882a593Smuzhiyun #define SM5502_REG_CONTROL_RAW_DATA_MASK	(0x1 << SM5502_REG_CONTROL_RAW_DATA_SHIFT)
94*4882a593Smuzhiyun #define SM5502_REG_CONTROL_SW_OPEN_MASK		(0x1 << SM5502_REG_CONTROL_SW_OPEN_SHIFT)
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun #define SM5502_REG_INTM1_ATTACH_SHIFT		0
97*4882a593Smuzhiyun #define SM5502_REG_INTM1_DETACH_SHIFT		1
98*4882a593Smuzhiyun #define SM5502_REG_INTM1_KP_SHIFT		2
99*4882a593Smuzhiyun #define SM5502_REG_INTM1_LKP_SHIFT		3
100*4882a593Smuzhiyun #define SM5502_REG_INTM1_LKR_SHIFT		4
101*4882a593Smuzhiyun #define SM5502_REG_INTM1_OVP_EVENT_SHIFT	5
102*4882a593Smuzhiyun #define SM5502_REG_INTM1_OCP_EVENT_SHIFT	6
103*4882a593Smuzhiyun #define SM5502_REG_INTM1_OVP_OCP_DIS_SHIFT	7
104*4882a593Smuzhiyun #define SM5502_REG_INTM1_ATTACH_MASK		(0x1 << SM5502_REG_INTM1_ATTACH_SHIFT)
105*4882a593Smuzhiyun #define SM5502_REG_INTM1_DETACH_MASK		(0x1 << SM5502_REG_INTM1_DETACH_SHIFT)
106*4882a593Smuzhiyun #define SM5502_REG_INTM1_KP_MASK		(0x1 << SM5502_REG_INTM1_KP_SHIFT)
107*4882a593Smuzhiyun #define SM5502_REG_INTM1_LKP_MASK		(0x1 << SM5502_REG_INTM1_LKP_SHIFT)
108*4882a593Smuzhiyun #define SM5502_REG_INTM1_LKR_MASK		(0x1 << SM5502_REG_INTM1_LKR_SHIFT)
109*4882a593Smuzhiyun #define SM5502_REG_INTM1_OVP_EVENT_MASK		(0x1 << SM5502_REG_INTM1_OVP_EVENT_SHIFT)
110*4882a593Smuzhiyun #define SM5502_REG_INTM1_OCP_EVENT_MASK		(0x1 << SM5502_REG_INTM1_OCP_EVENT_SHIFT)
111*4882a593Smuzhiyun #define SM5502_REG_INTM1_OVP_OCP_DIS_MASK	(0x1 << SM5502_REG_INTM1_OVP_OCP_DIS_SHIFT)
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #define SM5502_REG_INTM2_VBUS_DET_SHIFT		0
114*4882a593Smuzhiyun #define SM5502_REG_INTM2_REV_ACCE_SHIFT		1
115*4882a593Smuzhiyun #define SM5502_REG_INTM2_ADC_CHG_SHIFT		2
116*4882a593Smuzhiyun #define SM5502_REG_INTM2_STUCK_KEY_SHIFT	3
117*4882a593Smuzhiyun #define SM5502_REG_INTM2_STUCK_KEY_RCV_SHIFT	4
118*4882a593Smuzhiyun #define SM5502_REG_INTM2_MHL_SHIFT		5
119*4882a593Smuzhiyun #define SM5502_REG_INTM2_VBUS_DET_MASK		(0x1 << SM5502_REG_INTM2_VBUS_DET_SHIFT)
120*4882a593Smuzhiyun #define SM5502_REG_INTM2_REV_ACCE_MASK		(0x1 << SM5502_REG_INTM2_REV_ACCE_SHIFT)
121*4882a593Smuzhiyun #define SM5502_REG_INTM2_ADC_CHG_MASK		(0x1 << SM5502_REG_INTM2_ADC_CHG_SHIFT)
122*4882a593Smuzhiyun #define SM5502_REG_INTM2_STUCK_KEY_MASK		(0x1 << SM5502_REG_INTM2_STUCK_KEY_SHIFT)
123*4882a593Smuzhiyun #define SM5502_REG_INTM2_STUCK_KEY_RCV_MASK	(0x1 << SM5502_REG_INTM2_STUCK_KEY_RCV_SHIFT)
124*4882a593Smuzhiyun #define SM5502_REG_INTM2_MHL_MASK		(0x1 << SM5502_REG_INTM2_MHL_SHIFT)
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun #define SM5502_REG_ADC_SHIFT			0
127*4882a593Smuzhiyun #define SM5502_REG_ADC_MASK			(0x1f << SM5502_REG_ADC_SHIFT)
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET1_KEY_PRESS_SHIFT	4
130*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET1_KEY_PRESS_MASK	(0xf << SM5502_REG_TIMING_SET1_KEY_PRESS_SHIFT)
131*4882a593Smuzhiyun #define TIMING_KEY_PRESS_100MS			0x0
132*4882a593Smuzhiyun #define TIMING_KEY_PRESS_200MS			0x1
133*4882a593Smuzhiyun #define TIMING_KEY_PRESS_300MS			0x2
134*4882a593Smuzhiyun #define TIMING_KEY_PRESS_400MS			0x3
135*4882a593Smuzhiyun #define TIMING_KEY_PRESS_500MS			0x4
136*4882a593Smuzhiyun #define TIMING_KEY_PRESS_600MS			0x5
137*4882a593Smuzhiyun #define TIMING_KEY_PRESS_700MS			0x6
138*4882a593Smuzhiyun #define TIMING_KEY_PRESS_800MS			0x7
139*4882a593Smuzhiyun #define TIMING_KEY_PRESS_900MS			0x8
140*4882a593Smuzhiyun #define TIMING_KEY_PRESS_1000MS			0x9
141*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET1_ADC_DET_SHIFT	0
142*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET1_ADC_DET_MASK	(0xf << SM5502_REG_TIMING_SET1_ADC_DET_SHIFT)
143*4882a593Smuzhiyun #define TIMING_ADC_DET_50MS			0x0
144*4882a593Smuzhiyun #define TIMING_ADC_DET_100MS			0x1
145*4882a593Smuzhiyun #define TIMING_ADC_DET_150MS			0x2
146*4882a593Smuzhiyun #define TIMING_ADC_DET_200MS			0x3
147*4882a593Smuzhiyun #define TIMING_ADC_DET_300MS			0x4
148*4882a593Smuzhiyun #define TIMING_ADC_DET_400MS			0x5
149*4882a593Smuzhiyun #define TIMING_ADC_DET_500MS			0x6
150*4882a593Smuzhiyun #define TIMING_ADC_DET_600MS			0x7
151*4882a593Smuzhiyun #define TIMING_ADC_DET_700MS			0x8
152*4882a593Smuzhiyun #define TIMING_ADC_DET_800MS			0x9
153*4882a593Smuzhiyun #define TIMING_ADC_DET_900MS			0xA
154*4882a593Smuzhiyun #define TIMING_ADC_DET_1000MS			0xB
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET2_SW_WAIT_SHIFT	4
157*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET2_SW_WAIT_MASK	(0xf << SM5502_REG_TIMING_SET2_SW_WAIT_SHIFT)
158*4882a593Smuzhiyun #define TIMING_SW_WAIT_10MS			0x0
159*4882a593Smuzhiyun #define TIMING_SW_WAIT_30MS			0x1
160*4882a593Smuzhiyun #define TIMING_SW_WAIT_50MS			0x2
161*4882a593Smuzhiyun #define TIMING_SW_WAIT_70MS			0x3
162*4882a593Smuzhiyun #define TIMING_SW_WAIT_90MS			0x4
163*4882a593Smuzhiyun #define TIMING_SW_WAIT_110MS			0x5
164*4882a593Smuzhiyun #define TIMING_SW_WAIT_130MS			0x6
165*4882a593Smuzhiyun #define TIMING_SW_WAIT_150MS			0x7
166*4882a593Smuzhiyun #define TIMING_SW_WAIT_170MS			0x8
167*4882a593Smuzhiyun #define TIMING_SW_WAIT_190MS			0x9
168*4882a593Smuzhiyun #define TIMING_SW_WAIT_210MS			0xA
169*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET2_LONG_KEY_SHIFT	0
170*4882a593Smuzhiyun #define SM5502_REG_TIMING_SET2_LONG_KEY_MASK	(0xf << SM5502_REG_TIMING_SET2_LONG_KEY_SHIFT)
171*4882a593Smuzhiyun #define TIMING_LONG_KEY_300MS			0x0
172*4882a593Smuzhiyun #define TIMING_LONG_KEY_400MS			0x1
173*4882a593Smuzhiyun #define TIMING_LONG_KEY_500MS			0x2
174*4882a593Smuzhiyun #define TIMING_LONG_KEY_600MS			0x3
175*4882a593Smuzhiyun #define TIMING_LONG_KEY_700MS			0x4
176*4882a593Smuzhiyun #define TIMING_LONG_KEY_800MS			0x5
177*4882a593Smuzhiyun #define TIMING_LONG_KEY_900MS			0x6
178*4882a593Smuzhiyun #define TIMING_LONG_KEY_1000MS			0x7
179*4882a593Smuzhiyun #define TIMING_LONG_KEY_1100MS			0x8
180*4882a593Smuzhiyun #define TIMING_LONG_KEY_1200MS			0x9
181*4882a593Smuzhiyun #define TIMING_LONG_KEY_1300MS			0xA
182*4882a593Smuzhiyun #define TIMING_LONG_KEY_1400MS			0xB
183*4882a593Smuzhiyun #define TIMING_LONG_KEY_1500MS			0xC
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_AUDIO_TYPE1_SHIFT		0
186*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_AUDIO_TYPE2_SHIFT		1
187*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_USB_SDP_SHIFT		2
188*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_UART_SHIFT			3
189*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_CAR_KIT_CHARGER_SHIFT	4
190*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_USB_CHG_SHIFT		5
191*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_DEDICATED_CHG_SHIFT	6
192*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_USB_OTG_SHIFT		7
193*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_AUDIO_TYPE1_MASK		(0x1 << SM5502_REG_DEV_TYPE1_AUDIO_TYPE1_SHIFT)
194*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_AUDIO_TYPE1__MASK		(0x1 << SM5502_REG_DEV_TYPE1_AUDIO_TYPE2_SHIFT)
195*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_USB_SDP_MASK		(0x1 << SM5502_REG_DEV_TYPE1_USB_SDP_SHIFT)
196*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_UART_MASK			(0x1 << SM5502_REG_DEV_TYPE1_UART_SHIFT)
197*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_CAR_KIT_CHARGER_MASK	(0x1 << SM5502_REG_DEV_TYPE1_CAR_KIT_CHARGER_SHIFT)
198*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_USB_CHG_MASK		(0x1 << SM5502_REG_DEV_TYPE1_USB_CHG_SHIFT)
199*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_DEDICATED_CHG_MASK		(0x1 << SM5502_REG_DEV_TYPE1_DEDICATED_CHG_SHIFT)
200*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE1_USB_OTG_MASK		(0x1 << SM5502_REG_DEV_TYPE1_USB_OTG_SHIFT)
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_USB_ON_SHIFT		0
203*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_USB_OFF_SHIFT		1
204*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_UART_ON_SHIFT		2
205*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_UART_OFF_SHIFT		3
206*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_PPD_SHIFT			4
207*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_TTY_SHIFT			5
208*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_AV_CABLE_SHIFT		6
209*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_USB_ON_MASK		(0x1 << SM5502_REG_DEV_TYPE2_JIG_USB_ON_SHIFT)
210*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_USB_OFF_MASK		(0x1 << SM5502_REG_DEV_TYPE2_JIG_USB_OFF_SHIFT)
211*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_UART_ON_MASK		(0x1 << SM5502_REG_DEV_TYPE2_JIG_UART_ON_SHIFT)
212*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_JIG_UART_OFF_MASK		(0x1 << SM5502_REG_DEV_TYPE2_JIG_UART_OFF_SHIFT)
213*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_PPD_MASK			(0x1 << SM5502_REG_DEV_TYPE2_PPD_SHIFT)
214*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_TTY_MASK			(0x1 << SM5502_REG_DEV_TYPE2_TTY_SHIFT)
215*4882a593Smuzhiyun #define SM5502_REG_DEV_TYPE2_AV_CABLE_MASK		(0x1 << SM5502_REG_DEV_TYPE2_AV_CABLE_SHIFT)
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun #define SM5502_REG_MANUAL_SW1_VBUSIN_SHIFT	0
218*4882a593Smuzhiyun #define SM5502_REG_MANUAL_SW1_DP_SHIFT		2
219*4882a593Smuzhiyun #define SM5502_REG_MANUAL_SW1_DM_SHIFT		5
220*4882a593Smuzhiyun #define SM5502_REG_MANUAL_SW1_VBUSIN_MASK	(0x3 << SM5502_REG_MANUAL_SW1_VBUSIN_SHIFT)
221*4882a593Smuzhiyun #define SM5502_REG_MANUAL_SW1_DP_MASK		(0x7 << SM5502_REG_MANUAL_SW1_DP_SHIFT)
222*4882a593Smuzhiyun #define SM5502_REG_MANUAL_SW1_DM_MASK		(0x7 << SM5502_REG_MANUAL_SW1_DM_SHIFT)
223*4882a593Smuzhiyun #define VBUSIN_SWITCH_OPEN			0x0
224*4882a593Smuzhiyun #define VBUSIN_SWITCH_VBUSOUT			0x1
225*4882a593Smuzhiyun #define VBUSIN_SWITCH_MIC			0x2
226*4882a593Smuzhiyun #define VBUSIN_SWITCH_VBUSOUT_WITH_USB		0x3
227*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_OPEN			0x0
228*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_USB			0x1
229*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_AUDIO			0x2
230*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_UART			0x3
231*4882a593Smuzhiyun #define DM_DP_SWITCH_OPEN			((DM_DP_CON_SWITCH_OPEN <<SM5502_REG_MANUAL_SW1_DP_SHIFT) \
232*4882a593Smuzhiyun 						| (DM_DP_CON_SWITCH_OPEN <<SM5502_REG_MANUAL_SW1_DM_SHIFT))
233*4882a593Smuzhiyun #define DM_DP_SWITCH_USB			((DM_DP_CON_SWITCH_USB <<SM5502_REG_MANUAL_SW1_DP_SHIFT) \
234*4882a593Smuzhiyun 						| (DM_DP_CON_SWITCH_USB <<SM5502_REG_MANUAL_SW1_DM_SHIFT))
235*4882a593Smuzhiyun #define DM_DP_SWITCH_AUDIO			((DM_DP_CON_SWITCH_AUDIO <<SM5502_REG_MANUAL_SW1_DP_SHIFT) \
236*4882a593Smuzhiyun 						| (DM_DP_CON_SWITCH_AUDIO <<SM5502_REG_MANUAL_SW1_DM_SHIFT))
237*4882a593Smuzhiyun #define DM_DP_SWITCH_UART			((DM_DP_CON_SWITCH_UART <<SM5502_REG_MANUAL_SW1_DP_SHIFT) \
238*4882a593Smuzhiyun 						| (DM_DP_CON_SWITCH_UART <<SM5502_REG_MANUAL_SW1_DM_SHIFT))
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun #define SM5502_REG_RESET_MASK			(0x1)
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun /* SM5502 Interrupts */
243*4882a593Smuzhiyun enum sm5502_irq {
244*4882a593Smuzhiyun 	/* INT1 */
245*4882a593Smuzhiyun 	SM5502_IRQ_INT1_ATTACH,
246*4882a593Smuzhiyun 	SM5502_IRQ_INT1_DETACH,
247*4882a593Smuzhiyun 	SM5502_IRQ_INT1_KP,
248*4882a593Smuzhiyun 	SM5502_IRQ_INT1_LKP,
249*4882a593Smuzhiyun 	SM5502_IRQ_INT1_LKR,
250*4882a593Smuzhiyun 	SM5502_IRQ_INT1_OVP_EVENT,
251*4882a593Smuzhiyun 	SM5502_IRQ_INT1_OCP_EVENT,
252*4882a593Smuzhiyun 	SM5502_IRQ_INT1_OVP_OCP_DIS,
253*4882a593Smuzhiyun 
254*4882a593Smuzhiyun 	/* INT2 */
255*4882a593Smuzhiyun 	SM5502_IRQ_INT2_VBUS_DET,
256*4882a593Smuzhiyun 	SM5502_IRQ_INT2_REV_ACCE,
257*4882a593Smuzhiyun 	SM5502_IRQ_INT2_ADC_CHG,
258*4882a593Smuzhiyun 	SM5502_IRQ_INT2_STUCK_KEY,
259*4882a593Smuzhiyun 	SM5502_IRQ_INT2_STUCK_KEY_RCV,
260*4882a593Smuzhiyun 	SM5502_IRQ_INT2_MHL,
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun 	SM5502_IRQ_NUM,
263*4882a593Smuzhiyun };
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun #define SM5502_IRQ_INT1_ATTACH_MASK		BIT(0)
266*4882a593Smuzhiyun #define SM5502_IRQ_INT1_DETACH_MASK		BIT(1)
267*4882a593Smuzhiyun #define SM5502_IRQ_INT1_KP_MASK			BIT(2)
268*4882a593Smuzhiyun #define SM5502_IRQ_INT1_LKP_MASK		BIT(3)
269*4882a593Smuzhiyun #define SM5502_IRQ_INT1_LKR_MASK		BIT(4)
270*4882a593Smuzhiyun #define SM5502_IRQ_INT1_OVP_EVENT_MASK		BIT(5)
271*4882a593Smuzhiyun #define SM5502_IRQ_INT1_OCP_EVENT_MASK		BIT(6)
272*4882a593Smuzhiyun #define SM5502_IRQ_INT1_OVP_OCP_DIS_MASK	BIT(7)
273*4882a593Smuzhiyun #define SM5502_IRQ_INT2_VBUS_DET_MASK		BIT(0)
274*4882a593Smuzhiyun #define SM5502_IRQ_INT2_REV_ACCE_MASK		BIT(1)
275*4882a593Smuzhiyun #define SM5502_IRQ_INT2_ADC_CHG_MASK		BIT(2)
276*4882a593Smuzhiyun #define SM5502_IRQ_INT2_STUCK_KEY_MASK		BIT(3)
277*4882a593Smuzhiyun #define SM5502_IRQ_INT2_STUCK_KEY_RCV_MASK	BIT(4)
278*4882a593Smuzhiyun #define SM5502_IRQ_INT2_MHL_MASK		BIT(5)
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun #endif /*  __LINUX_EXTCON_SM5502_H */
281