summaryrefslogtreecommitdiffstats
path: root/include/sound/tlv320aic32x4.h
diff options
context:
space:
mode:
authorDan Murphy <dmurphy@ti.com>2017-07-12 20:37:00 +0200
committerMark Brown <broonie@kernel.org>2017-07-17 17:22:28 +0200
commitb9045b9c6b79d2ea5b888a0f9e9aa156d09ba8a9 (patch)
treea865e0d7fa0f89f5b38b5b8c02b1aed0c31bba0d /include/sound/tlv320aic32x4.h
parentASoC: tlv320aic32x4: Add support for tlv320aic32x6 (diff)
downloadlinux-b9045b9c6b79d2ea5b888a0f9e9aa156d09ba8a9.tar.xz
linux-b9045b9c6b79d2ea5b888a0f9e9aa156d09ba8a9.zip
ASoC: tlv320aic32x4: Add gpio configuration to the codec
Add the ability to configure the MFP1->MFP5 registers as GPIOs. In addition adding ALSA controls to get and set the GPIO state. Per the data sheet each MFP can be configured as a GPIO input only, output only or either an input or output. Signed-off-by: Dan Murphy <dmurphy@ti.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'include/sound/tlv320aic32x4.h')
-rw-r--r--include/sound/tlv320aic32x4.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/sound/tlv320aic32x4.h b/include/sound/tlv320aic32x4.h
index 24e5d991f148..22305c0ab31a 100644
--- a/include/sound/tlv320aic32x4.h
+++ b/include/sound/tlv320aic32x4.h
@@ -22,7 +22,30 @@
#define AIC32X4_MICPGA_ROUTE_LMIC_IN2R_10K 0x00000001
#define AIC32X4_MICPGA_ROUTE_RMIC_IN1L_10K 0x00000002
+/* GPIO API */
+#define AIC32X4_MFPX_DEFAULT_VALUE 0xff
+
+#define AIC32X4_MFP1_DIN_DISABLED 0
+#define AIC32X4_MFP1_DIN_ENABLED 0x2
+#define AIC32X4_MFP1_GPIO_IN 0x4
+
+#define AIC32X4_MFP2_GPIO_OUT_LOW 0x0
+#define AIC32X4_MFP2_GPIO_OUT_HIGH 0x1
+
+#define AIC32X4_MFP_GPIO_ENABLED 0x4
+
+#define AIC32X4_MFP5_GPIO_DISABLED 0x0
+#define AIC32X4_MFP5_GPIO_INPUT 0x8
+#define AIC32X4_MFP5_GPIO_OUTPUT 0xc
+#define AIC32X4_MFP5_GPIO_OUT_LOW 0x0
+#define AIC32X4_MFP5_GPIO_OUT_HIGH 0x1
+
+struct aic32x4_setup_data {
+ unsigned int gpio_func[5];
+};
+
struct aic32x4_pdata {
+ struct aic32x4_setup_data *setup;
u32 power_cfg;
u32 micpga_routing;
bool swapdacs;