[Feature] add GA346 baseline version

Change-Id: Ic62933698569507dcf98240cdf5d9931ae34348f
diff --git a/src/kernel/linux/v4.19/sound/soc/codecs/mt6359-accdet.h b/src/kernel/linux/v4.19/sound/soc/codecs/mt6359-accdet.h
new file mode 100644
index 0000000..25b44fa
--- /dev/null
+++ b/src/kernel/linux/v4.19/sound/soc/codecs/mt6359-accdet.h
@@ -0,0 +1,138 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2019 MediaTek Inc.
+ * Author: Argus Lin <argus.lin@mediatek.com>
+ */
+
+#ifndef _ACCDET_H_
+#define _ACCDET_H_
+
+#include <linux/ctype.h>
+#include <linux/string.h>
+
+#define ACCDET_DEVNAME "accdet"
+/* SW ENV define */
+#define NO_KEY			(0x0)
+#define UP_KEY			(0x01)
+#define MD_KEY			(0x02)
+#define DW_KEY			(0x04)
+#define AS_KEY			(0x08)
+
+#define HEADSET_MODE_1		(1)
+#define HEADSET_MODE_2		(2)
+#define HEADSET_MODE_6		(6)
+
+/* IOCTL */
+#define ACCDET_IOC_MAGIC 'A'
+#define ACCDET_INIT _IO(ACCDET_IOC_MAGIC, 0)
+#define SET_CALL_STATE _IO(ACCDET_IOC_MAGIC, 1)
+#define GET_BUTTON_STATUS _IO(ACCDET_IOC_MAGIC, 2)
+
+/* 400us, Accdet irq clear timeout  */
+#define ACCDET_TIME_OUT		0x61A80
+
+/* cable type recognized by accdet, and report to WiredAccessoryManager */
+enum accdet_report_state {
+	NO_DEVICE =		0,
+	HEADSET_MIC =		1,
+	HEADSET_NO_MIC =	2,
+	HEADSET_FIVE_POLE =	3,
+	LINE_OUT_DEVICE =	4,
+};
+
+/* accdet status got from accdet FSM  */
+enum accdet_status {
+	PLUG_OUT =		0,
+	MIC_BIAS =		1,
+	HOOK_SWITCH =		2,
+	BI_MIC_BIAS =		3,
+	LINE_OUT =		4,
+	STAND_BY =		5
+};
+
+enum accdet_eint_ID {
+	NO_PMIC_EINT =		0,
+	PMIC_EINT0 =		1,
+	PMIC_EINT1 =		2,
+	PMIC_BIEINT =		3,
+};
+
+/* EINT state when moisture enable  */
+enum eint_moisture_status {
+	M_PLUG_IN =		0,
+	M_WATER_IN =		1,
+	M_HP_PLUG_IN =		2,
+	M_PLUG_OUT =		3,
+	M_NO_ACT =		4,
+	M_UNKNOWN =		5,
+};
+
+struct three_key_threshold {
+	unsigned int mid;
+	unsigned int up;
+	unsigned int down;
+};
+struct four_key_threshold {
+	unsigned int mid;
+	unsigned int voice;
+	unsigned int up;
+	unsigned int down;
+};
+
+struct pwm_deb_settings {
+	unsigned int pwm_width;
+	unsigned int pwm_thresh;
+	unsigned int fall_delay;
+	unsigned int rise_delay;
+	unsigned int debounce0;
+	unsigned int debounce1;
+	unsigned int debounce3;
+	unsigned int debounce4;
+	unsigned int eint_pwm_width;
+	unsigned int eint_pwm_thresh;
+	unsigned int eint_debounce0;
+	unsigned int eint_debounce1;
+	unsigned int eint_debounce2;
+	unsigned int eint_debounce3;
+	unsigned int eint_inverter_debounce;
+
+};
+
+struct head_dts_data {
+	unsigned int mic_vol;
+	unsigned int mic_mode;
+	unsigned int plugout_deb;
+	unsigned int eint_pol;
+	struct pwm_deb_settings pwm_deb;
+	struct three_key_threshold three_key;
+	struct four_key_threshold four_key;
+	unsigned int moisture_detect_enable;
+	unsigned int eint_detect_mode;
+	unsigned int eint_use_ext_res;
+	unsigned int moisture_detect_mode;
+	unsigned int moisture_comp_vth;
+	unsigned int moisture_comp_vref2;
+	unsigned int moisture_use_ext_res;
+};
+
+enum {
+	accdet_state000 = 0,
+	accdet_state001,
+	accdet_state010,
+	accdet_state011,
+	accdet_auxadc,
+	eint_state000,
+	eint_state001,
+	eint_state010,
+	eint_state011,
+	eint_inverter_state000,
+};
+
+/* just be called by audio module for DC trim */
+extern void accdet_late_init(unsigned long data);
+extern const struct file_operations *accdet_get_fops(void);
+extern void mt_accdet_suspend(void);
+extern void mt_accdet_resume(void);
+extern void accdet_set_debounce(int state, unsigned int debounce);
+
+#endif