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