mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
ASoC: da7218: Add da7218 codec driver
This adds support for DA7217 and DA7218 audio codecs. Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
ee4105a589
commit
4d50934abd
109
include/sound/da7218.h
Normal file
109
include/sound/da7218.h
Normal file
@ -0,0 +1,109 @@
|
||||
/*
|
||||
* da7218.h - DA7218 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 _DA7218_PDATA_H
|
||||
#define _DA7218_PDATA_H
|
||||
|
||||
/* Mic Bias */
|
||||
enum da7218_micbias_voltage {
|
||||
DA7218_MICBIAS_1_2V = -1,
|
||||
DA7218_MICBIAS_1_6V,
|
||||
DA7218_MICBIAS_1_8V,
|
||||
DA7218_MICBIAS_2_0V,
|
||||
DA7218_MICBIAS_2_2V,
|
||||
DA7218_MICBIAS_2_4V,
|
||||
DA7218_MICBIAS_2_6V,
|
||||
DA7218_MICBIAS_2_8V,
|
||||
DA7218_MICBIAS_3_0V,
|
||||
};
|
||||
|
||||
enum da7218_mic_amp_in_sel {
|
||||
DA7218_MIC_AMP_IN_SEL_DIFF = 0,
|
||||
DA7218_MIC_AMP_IN_SEL_SE_P,
|
||||
DA7218_MIC_AMP_IN_SEL_SE_N,
|
||||
};
|
||||
|
||||
/* DMIC */
|
||||
enum da7218_dmic_data_sel {
|
||||
DA7218_DMIC_DATA_LRISE_RFALL = 0,
|
||||
DA7218_DMIC_DATA_LFALL_RRISE,
|
||||
};
|
||||
|
||||
enum da7218_dmic_samplephase {
|
||||
DA7218_DMIC_SAMPLE_ON_CLKEDGE = 0,
|
||||
DA7218_DMIC_SAMPLE_BETWEEN_CLKEDGE,
|
||||
};
|
||||
|
||||
enum da7218_dmic_clk_rate {
|
||||
DA7218_DMIC_CLK_3_0MHZ = 0,
|
||||
DA7218_DMIC_CLK_1_5MHZ,
|
||||
};
|
||||
|
||||
/* Headphone Detect */
|
||||
enum da7218_hpldet_jack_rate {
|
||||
DA7218_HPLDET_JACK_RATE_5US = 0,
|
||||
DA7218_HPLDET_JACK_RATE_10US,
|
||||
DA7218_HPLDET_JACK_RATE_20US,
|
||||
DA7218_HPLDET_JACK_RATE_40US,
|
||||
DA7218_HPLDET_JACK_RATE_80US,
|
||||
DA7218_HPLDET_JACK_RATE_160US,
|
||||
DA7218_HPLDET_JACK_RATE_320US,
|
||||
DA7218_HPLDET_JACK_RATE_640US,
|
||||
};
|
||||
|
||||
enum da7218_hpldet_jack_debounce {
|
||||
DA7218_HPLDET_JACK_DEBOUNCE_OFF = 0,
|
||||
DA7218_HPLDET_JACK_DEBOUNCE_2,
|
||||
DA7218_HPLDET_JACK_DEBOUNCE_3,
|
||||
DA7218_HPLDET_JACK_DEBOUNCE_4,
|
||||
};
|
||||
|
||||
enum da7218_hpldet_jack_thr {
|
||||
DA7218_HPLDET_JACK_THR_84PCT = 0,
|
||||
DA7218_HPLDET_JACK_THR_88PCT,
|
||||
DA7218_HPLDET_JACK_THR_92PCT,
|
||||
DA7218_HPLDET_JACK_THR_96PCT,
|
||||
};
|
||||
|
||||
struct da7218_hpldet_pdata {
|
||||
enum da7218_hpldet_jack_rate jack_rate;
|
||||
enum da7218_hpldet_jack_debounce jack_debounce;
|
||||
enum da7218_hpldet_jack_thr jack_thr;
|
||||
bool comp_inv;
|
||||
bool hyst;
|
||||
bool discharge;
|
||||
};
|
||||
|
||||
struct da7218_pdata {
|
||||
/* Mic */
|
||||
enum da7218_micbias_voltage micbias1_lvl;
|
||||
enum da7218_micbias_voltage micbias2_lvl;
|
||||
enum da7218_mic_amp_in_sel mic1_amp_in_sel;
|
||||
enum da7218_mic_amp_in_sel mic2_amp_in_sel;
|
||||
|
||||
/* DMIC */
|
||||
enum da7218_dmic_data_sel dmic1_data_sel;
|
||||
enum da7218_dmic_data_sel dmic2_data_sel;
|
||||
enum da7218_dmic_samplephase dmic1_samplephase;
|
||||
enum da7218_dmic_samplephase dmic2_samplephase;
|
||||
enum da7218_dmic_clk_rate dmic1_clk_rate;
|
||||
enum da7218_dmic_clk_rate dmic2_clk_rate;
|
||||
|
||||
/* HP Diff Supply - DA7217 only */
|
||||
bool hp_diff_single_supply;
|
||||
|
||||
/* HP Detect - DA7218 only */
|
||||
struct da7218_hpldet_pdata *hpldet_pdata;
|
||||
};
|
||||
|
||||
#endif /* _DA7218_PDATA_H */
|
@ -58,6 +58,7 @@ config SND_SOC_ALL_CODECS
|
||||
select SND_SOC_CX20442 if TTY
|
||||
select SND_SOC_DA7210 if SND_SOC_I2C_AND_SPI
|
||||
select SND_SOC_DA7213 if I2C
|
||||
select SND_SOC_DA7218 if I2C
|
||||
select SND_SOC_DA7219 if I2C
|
||||
select SND_SOC_DA732X if I2C
|
||||
select SND_SOC_DA9055 if I2C
|
||||
@ -439,6 +440,9 @@ config SND_SOC_DA7210
|
||||
config SND_SOC_DA7213
|
||||
tristate
|
||||
|
||||
config SND_SOC_DA7218
|
||||
tristate
|
||||
|
||||
config SND_SOC_DA7219
|
||||
tristate
|
||||
|
||||
|
@ -50,6 +50,7 @@ snd-soc-cs4349-objs := cs4349.o
|
||||
snd-soc-cx20442-objs := cx20442.o
|
||||
snd-soc-da7210-objs := da7210.o
|
||||
snd-soc-da7213-objs := da7213.o
|
||||
snd-soc-da7218-objs := da7218.o
|
||||
snd-soc-da7219-objs := da7219.o da7219-aad.o
|
||||
snd-soc-da732x-objs := da732x.o
|
||||
snd-soc-da9055-objs := da9055.o
|
||||
@ -245,6 +246,7 @@ obj-$(CONFIG_SND_SOC_CS4349) += snd-soc-cs4349.o
|
||||
obj-$(CONFIG_SND_SOC_CX20442) += snd-soc-cx20442.o
|
||||
obj-$(CONFIG_SND_SOC_DA7210) += snd-soc-da7210.o
|
||||
obj-$(CONFIG_SND_SOC_DA7213) += snd-soc-da7213.o
|
||||
obj-$(CONFIG_SND_SOC_DA7218) += snd-soc-da7218.o
|
||||
obj-$(CONFIG_SND_SOC_DA7219) += snd-soc-da7219.o
|
||||
obj-$(CONFIG_SND_SOC_DA732X) += snd-soc-da732x.o
|
||||
obj-$(CONFIG_SND_SOC_DA9055) += snd-soc-da9055.o
|
||||
|
3305
sound/soc/codecs/da7218.c
Normal file
3305
sound/soc/codecs/da7218.c
Normal file
File diff suppressed because it is too large
Load Diff
1414
sound/soc/codecs/da7218.h
Normal file
1414
sound/soc/codecs/da7218.h
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user