xref: /OK3568_Linux_fs/kernel/drivers/headset_observe/rk_headset.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef RK_HEADSET_H
3*4882a593Smuzhiyun #define RK_HEADSET_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #define HEADSET_IN_HIGH 0x00000001
6*4882a593Smuzhiyun #define HEADSET_IN_LOW  0x00000000
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #define HOOK_DOWN_HIGH 0x00000001
9*4882a593Smuzhiyun #define HOOK_DOWN_LOW  0x00000000
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun struct rk_headset_pdata {
12*4882a593Smuzhiyun 	/* heaset about */
13*4882a593Smuzhiyun 	unsigned int headset_gpio;
14*4882a593Smuzhiyun 	/* Headphones into the state level */
15*4882a593Smuzhiyun 	unsigned int headset_insert_type;
16*4882a593Smuzhiyun 	/* hook about */
17*4882a593Smuzhiyun 	unsigned int hook_gpio;
18*4882a593Smuzhiyun 	/* Hook key down status */
19*4882a593Smuzhiyun 	unsigned int hook_down_type;
20*4882a593Smuzhiyun #ifdef CONFIG_MODEM_MIC_SWITCH
21*4882a593Smuzhiyun 	/* mic about */
22*4882a593Smuzhiyun 	unsigned int mic_switch_gpio;
23*4882a593Smuzhiyun 	unsigned int hp_mic_io_value;
24*4882a593Smuzhiyun 	unsigned int main_mic_io_value;
25*4882a593Smuzhiyun #endif
26*4882a593Smuzhiyun 	struct iio_channel *chan;
27*4882a593Smuzhiyun 	int headset_wakeup;
28*4882a593Smuzhiyun };
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define HOOK_KEY_CODE KEY_MEDIA
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun int rk_headset_probe(struct platform_device *pdev,
33*4882a593Smuzhiyun 		     struct rk_headset_pdata *pdata);
34*4882a593Smuzhiyun int rk_headset_adc_probe(struct platform_device *pdev,
35*4882a593Smuzhiyun 			 struct rk_headset_pdata *pdata);
36*4882a593Smuzhiyun int rk_headset_adc_suspend(struct platform_device *pdev, pm_message_t state);
37*4882a593Smuzhiyun int rk_headset_adc_resume(struct platform_device *pdev);
38*4882a593Smuzhiyun #endif
39