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