1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Platform data for Texas Instruments TLV320AIC3x codec
4  *
5  * Author: Jarkko Nikula <jarkko.nikula@bitmer.com>
6  */
7 #ifndef __TLV320AIC3x_H__
8 #define __TLV320AIC3x_H__
9 
10 /* GPIO API */
11 enum {
12 	AIC3X_GPIO1_FUNC_DISABLED		= 0,
13 	AIC3X_GPIO1_FUNC_AUDIO_WORDCLK_ADC	= 1,
14 	AIC3X_GPIO1_FUNC_CLOCK_MUX		= 2,
15 	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV2		= 3,
16 	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV4		= 4,
17 	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV8		= 5,
18 	AIC3X_GPIO1_FUNC_SHORT_CIRCUIT_IRQ	= 6,
19 	AIC3X_GPIO1_FUNC_AGC_NOISE_IRQ		= 7,
20 	AIC3X_GPIO1_FUNC_INPUT			= 8,
21 	AIC3X_GPIO1_FUNC_OUTPUT			= 9,
22 	AIC3X_GPIO1_FUNC_DIGITAL_MIC_MODCLK	= 10,
23 	AIC3X_GPIO1_FUNC_AUDIO_WORDCLK		= 11,
24 	AIC3X_GPIO1_FUNC_BUTTON_IRQ		= 12,
25 	AIC3X_GPIO1_FUNC_HEADSET_DETECT_IRQ	= 13,
26 	AIC3X_GPIO1_FUNC_HEADSET_DETECT_OR_BUTTON_IRQ	= 14,
27 	AIC3X_GPIO1_FUNC_ALL_IRQ		= 16
28 };
29 
30 enum {
31 	AIC3X_GPIO2_FUNC_DISABLED		= 0,
32 	AIC3X_GPIO2_FUNC_HEADSET_DETECT_IRQ	= 2,
33 	AIC3X_GPIO2_FUNC_INPUT			= 3,
34 	AIC3X_GPIO2_FUNC_OUTPUT			= 4,
35 	AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT	= 5,
36 	AIC3X_GPIO2_FUNC_AUDIO_BITCLK		= 8,
37 	AIC3X_GPIO2_FUNC_HEADSET_DETECT_OR_BUTTON_IRQ = 9,
38 	AIC3X_GPIO2_FUNC_ALL_IRQ		= 10,
39 	AIC3X_GPIO2_FUNC_SHORT_CIRCUIT_OR_AGC_IRQ = 11,
40 	AIC3X_GPIO2_FUNC_HEADSET_OR_BUTTON_PRESS_OR_SHORT_CIRCUIT_IRQ = 12,
41 	AIC3X_GPIO2_FUNC_SHORT_CIRCUIT_IRQ	= 13,
42 	AIC3X_GPIO2_FUNC_AGC_NOISE_IRQ		= 14,
43 	AIC3X_GPIO2_FUNC_BUTTON_PRESS_IRQ	= 15
44 };
45 
46 enum aic3x_micbias_voltage {
47 	AIC3X_MICBIAS_OFF = 0,
48 	AIC3X_MICBIAS_2_0V = 1,
49 	AIC3X_MICBIAS_2_5V = 2,
50 	AIC3X_MICBIAS_AVDDV = 3,
51 };
52 
53 struct aic3x_setup_data {
54 	unsigned int gpio_func[2];
55 };
56 
57 struct aic3x_pdata {
58 	int gpio_reset; /* < 0 if not used */
59 	struct aic3x_setup_data *setup;
60 
61 	/* Selects the micbias voltage */
62 	enum aic3x_micbias_voltage micbias_vg;
63 };
64 
65 #endif
66