Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d817c0e authored by Adam Thomson's avatar Adam Thomson Committed by Mark Brown
Browse files

ASoC: codecs: Add da7219 codec driver



This adds support for the DA7219 audio codec with built-in advanced
accessory detect features.

Signed-off-by: default avatarAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent c25c79b4
Loading
Loading
Loading
Loading
+99 −0
Original line number Original line Diff line number Diff line
/*
 * da7219-aad.h - DA7322 ASoC Codec AAD Driver Platform Data
 *
 * Copyright (c) 2015 Dialog Semiconductor Ltd.
 *
 * Author: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */

#ifndef __DA7219_AAD_PDATA_H
#define __DA7219_AAD_PDATA_H

enum da7219_aad_micbias_pulse_lvl {
	DA7219_AAD_MICBIAS_PULSE_LVL_OFF = 0,
	DA7219_AAD_MICBIAS_PULSE_LVL_2_8V = 6,
	DA7219_AAD_MICBIAS_PULSE_LVL_2_9V,
};

enum da7219_aad_btn_cfg {
	DA7219_AAD_BTN_CFG_2MS = 1,
	DA7219_AAD_BTN_CFG_5MS,
	DA7219_AAD_BTN_CFG_10MS,
	DA7219_AAD_BTN_CFG_50MS,
	DA7219_AAD_BTN_CFG_100MS,
	DA7219_AAD_BTN_CFG_200MS,
	DA7219_AAD_BTN_CFG_500MS,
};

enum da7219_aad_mic_det_thr {
	DA7219_AAD_MIC_DET_THR_200_OHMS = 0,
	DA7219_AAD_MIC_DET_THR_500_OHMS,
	DA7219_AAD_MIC_DET_THR_750_OHMS,
	DA7219_AAD_MIC_DET_THR_1000_OHMS,
};

enum da7219_aad_jack_ins_deb {
	DA7219_AAD_JACK_INS_DEB_5MS = 0,
	DA7219_AAD_JACK_INS_DEB_10MS,
	DA7219_AAD_JACK_INS_DEB_20MS,
	DA7219_AAD_JACK_INS_DEB_50MS,
	DA7219_AAD_JACK_INS_DEB_100MS,
	DA7219_AAD_JACK_INS_DEB_200MS,
	DA7219_AAD_JACK_INS_DEB_500MS,
	DA7219_AAD_JACK_INS_DEB_1S,
};

enum da7219_aad_jack_det_rate {
	DA7219_AAD_JACK_DET_RATE_32_64MS = 0,
	DA7219_AAD_JACK_DET_RATE_64_128MS,
	DA7219_AAD_JACK_DET_RATE_128_256MS,
	DA7219_AAD_JACK_DET_RATE_256_512MS,
};

enum da7219_aad_jack_rem_deb {
	DA7219_AAD_JACK_REM_DEB_1MS = 0,
	DA7219_AAD_JACK_REM_DEB_5MS,
	DA7219_AAD_JACK_REM_DEB_10MS,
	DA7219_AAD_JACK_REM_DEB_20MS,
};

enum da7219_aad_btn_avg {
	DA7219_AAD_BTN_AVG_1 = 0,
	DA7219_AAD_BTN_AVG_2,
	DA7219_AAD_BTN_AVG_4,
	DA7219_AAD_BTN_AVG_8,
};

enum da7219_aad_adc_1bit_rpt {
	DA7219_AAD_ADC_1BIT_RPT_1 = 0,
	DA7219_AAD_ADC_1BIT_RPT_2,
	DA7219_AAD_ADC_1BIT_RPT_4,
	DA7219_AAD_ADC_1BIT_RPT_8,
};

struct da7219_aad_pdata {
	int irq;

	enum da7219_aad_micbias_pulse_lvl micbias_pulse_lvl;
	u32 micbias_pulse_time;
	enum da7219_aad_btn_cfg btn_cfg;
	enum da7219_aad_mic_det_thr mic_det_thr;
	enum da7219_aad_jack_ins_deb jack_ins_deb;
	enum da7219_aad_jack_det_rate jack_det_rate;
	enum da7219_aad_jack_rem_deb jack_rem_deb;

	u8 a_d_btn_thr;
	u8 d_b_btn_thr;
	u8 b_c_btn_thr;
	u8 c_mic_btn_thr;

	enum da7219_aad_btn_avg btn_avg;
	enum da7219_aad_adc_1bit_rpt adc_1bit_rpt;
};

#endif /* __DA7219_AAD_PDATA_H */

include/sound/da7219.h

0 → 100644
+55 −0
Original line number Original line Diff line number Diff line
/*
 * da7219.h - DA7219 ASoC Codec Driver Platform Data
 *
 * Copyright (c) 2015 Dialog Semiconductor
 *
 * Author: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */

#ifndef __DA7219_PDATA_H
#define __DA7219_PDATA_H

/* LDO */
enum da7219_ldo_lvl_sel {
	DA7219_LDO_LVL_SEL_1_05V = 0,
	DA7219_LDO_LVL_SEL_1_10V,
	DA7219_LDO_LVL_SEL_1_20V,
	DA7219_LDO_LVL_SEL_1_40V,
};

/* Mic Bias */
enum da7219_micbias_voltage {
	DA7219_MICBIAS_1_8V = 1,
	DA7219_MICBIAS_2_0V,
	DA7219_MICBIAS_2_2V,
	DA7219_MICBIAS_2_4V,
	DA7219_MICBIAS_2_6V,
};

/* Mic input type */
enum da7219_mic_amp_in_sel {
	DA7219_MIC_AMP_IN_SEL_DIFF = 0,
	DA7219_MIC_AMP_IN_SEL_SE_P,
	DA7219_MIC_AMP_IN_SEL_SE_N,
};

struct da7219_aad_pdata;

struct da7219_pdata {
	/* Internal LDO */
	enum da7219_ldo_lvl_sel ldo_lvl_sel;

	/* Mic */
	enum da7219_micbias_voltage micbias_lvl;
	enum da7219_mic_amp_in_sel mic_amp_in_sel;

	/* AAD */
	struct da7219_aad_pdata *aad_pdata;
};

#endif /* __DA7219_PDATA_H */
+4 −0
Original line number Original line Diff line number Diff line
@@ -57,6 +57,7 @@ config SND_SOC_ALL_CODECS
	select SND_SOC_CX20442 if TTY
	select SND_SOC_CX20442 if TTY
	select SND_SOC_DA7210 if SND_SOC_I2C_AND_SPI
	select SND_SOC_DA7210 if SND_SOC_I2C_AND_SPI
	select SND_SOC_DA7213 if I2C
	select SND_SOC_DA7213 if I2C
	select SND_SOC_DA7219 if I2C
	select SND_SOC_DA732X if I2C
	select SND_SOC_DA732X if I2C
	select SND_SOC_DA9055 if I2C
	select SND_SOC_DA9055 if I2C
	select SND_SOC_DMIC
	select SND_SOC_DMIC
@@ -430,6 +431,9 @@ config SND_SOC_DA7210
config SND_SOC_DA7213
config SND_SOC_DA7213
        tristate
        tristate


config SND_SOC_DA7219
        tristate

config SND_SOC_DA732X
config SND_SOC_DA732X
        tristate
        tristate


+2 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,7 @@ snd-soc-cs4349-objs := cs4349.o
snd-soc-cx20442-objs := cx20442.o
snd-soc-cx20442-objs := cx20442.o
snd-soc-da7210-objs := da7210.o
snd-soc-da7210-objs := da7210.o
snd-soc-da7213-objs := da7213.o
snd-soc-da7213-objs := da7213.o
snd-soc-da7219-objs := da7219.o da7219-aad.o
snd-soc-da732x-objs := da732x.o
snd-soc-da732x-objs := da732x.o
snd-soc-da9055-objs := da9055.o
snd-soc-da9055-objs := da9055.o
snd-soc-bt-sco-objs := bt-sco.o
snd-soc-bt-sco-objs := bt-sco.o
@@ -241,6 +242,7 @@ obj-$(CONFIG_SND_SOC_CS4349) += snd-soc-cs4349.o
obj-$(CONFIG_SND_SOC_CX20442)	+= snd-soc-cx20442.o
obj-$(CONFIG_SND_SOC_CX20442)	+= snd-soc-cx20442.o
obj-$(CONFIG_SND_SOC_DA7210)	+= snd-soc-da7210.o
obj-$(CONFIG_SND_SOC_DA7210)	+= snd-soc-da7210.o
obj-$(CONFIG_SND_SOC_DA7213)	+= snd-soc-da7213.o
obj-$(CONFIG_SND_SOC_DA7213)	+= snd-soc-da7213.o
obj-$(CONFIG_SND_SOC_DA7219)	+= snd-soc-da7219.o
obj-$(CONFIG_SND_SOC_DA732X)	+= snd-soc-da732x.o
obj-$(CONFIG_SND_SOC_DA732X)	+= snd-soc-da732x.o
obj-$(CONFIG_SND_SOC_DA9055)	+= snd-soc-da9055.o
obj-$(CONFIG_SND_SOC_DA9055)	+= snd-soc-da9055.o
obj-$(CONFIG_SND_SOC_BT_SCO)	+= snd-soc-bt-sco.o
obj-$(CONFIG_SND_SOC_BT_SCO)	+= snd-soc-bt-sco.o
+823 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading