brintos

brintos / linux-shallow public Read only

0
0
Text · 2.8 KiB · c234f2f Raw
129 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Copyright (C) 2021 MediaTek Inc.4 * Author: Argus Lin <argus.lin@mediatek.com>5 */6 7#ifndef _ACCDET_H_8#define _ACCDET_H_9 10#include <linux/ctype.h>11#include <linux/string.h>12 13#define ACCDET_DEVNAME "accdet"14 15#define HEADSET_MODE_1		(1)16#define HEADSET_MODE_2		(2)17#define HEADSET_MODE_6		(6)18 19#define MT6359_ACCDET_NUM_BUTTONS 420#define MT6359_ACCDET_JACK_MASK (SND_JACK_HEADPHONE | \21				SND_JACK_HEADSET | \22				SND_JACK_BTN_0 | \23				SND_JACK_BTN_1 | \24				SND_JACK_BTN_2 | \25				SND_JACK_BTN_3)26#define MT6359_ACCDET_BTN_MASK (SND_JACK_BTN_0 | \27				SND_JACK_BTN_1 | \28				SND_JACK_BTN_2 | \29				SND_JACK_BTN_3)30 31enum eint_moisture_status {32	M_PLUG_IN =		0,33	M_WATER_IN =		1,34	M_HP_PLUG_IN =		2,35	M_PLUG_OUT =		3,36	M_NO_ACT =		4,37	M_UNKNOWN =		5,38};39 40enum {41	accdet_state000 = 0,42	accdet_state001,43	accdet_state010,44	accdet_state011,45	accdet_auxadc,46	eint_state000,47	eint_state001,48	eint_state010,49	eint_state011,50	eint_inverter_state000,51};52 53struct three_key_threshold {54	unsigned int mid;55	unsigned int up;56	unsigned int down;57};58 59struct four_key_threshold {60	unsigned int mid;61	unsigned int voice;62	unsigned int up;63	unsigned int down;64};65 66struct pwm_deb_settings {67	unsigned int pwm_width;68	unsigned int pwm_thresh;69	unsigned int fall_delay;70	unsigned int rise_delay;71	unsigned int debounce0;72	unsigned int debounce1;73	unsigned int debounce3;74	unsigned int debounce4;75	unsigned int eint_pwm_width;76	unsigned int eint_pwm_thresh;77	unsigned int eint_debounce0;78	unsigned int eint_debounce1;79	unsigned int eint_debounce2;80	unsigned int eint_debounce3;81	unsigned int eint_inverter_debounce;82 83};84 85struct dts_data {86	unsigned int mic_vol;87	unsigned int mic_mode;88	unsigned int plugout_deb;89	unsigned int eint_pol;90	struct pwm_deb_settings *pwm_deb;91	struct three_key_threshold three_key;92	struct four_key_threshold four_key;93	unsigned int moisture_detect_enable;94	unsigned int eint_detect_mode;95	unsigned int eint_use_ext_res;96	unsigned int eint_comp_vth;97	unsigned int moisture_detect_mode;98	unsigned int moisture_comp_vth;99	unsigned int moisture_comp_vref2;100	unsigned int moisture_use_ext_res;101};102 103struct mt6359_accdet {104	struct snd_soc_jack *jack;105	struct device *dev;106	struct regmap *regmap;107	struct dts_data *data;108	unsigned int caps;109	int accdet_irq;110	int accdet_eint0;111	int accdet_eint1;112	struct mutex res_lock; /* lock protection */113	bool jack_plugged;114	unsigned int jack_type;115	unsigned int btn_type;116	unsigned int accdet_status;117	unsigned int pre_accdet_status;118	unsigned int cali_voltage;119	unsigned int jd_sts;120	struct work_struct accdet_work;121	struct workqueue_struct *accdet_workqueue;122	struct work_struct jd_work;123	struct workqueue_struct *jd_workqueue;124};125 126int mt6359_accdet_enable_jack_detect(struct snd_soc_component *component,127				     struct snd_soc_jack *jack);128#endif129