ASoC: max98095: add jack detection

This change adds the logic to support using the jack detect mechanism built
in to the codec to detect both when a jack was inserted and what type of
jack is present.

This change also supports the use of an external mechanism for headphone
detection. If this mechanism exists, when the max98095_jack_detect function
is called, the hp_jack is simply passed NULL.

This change supports both simple headphones, powered headphones, microphones
and headsets with both headphones and a mic.

Signed-off-by: Rhyland Klein <rklein@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
Rhyland Klein
2012-03-15 15:07:47 -07:00
committed by Mark Brown
parent 5f1cba63a3
commit 9dd90c5db0
3 changed files with 191 additions and 1 deletions

View File

@@ -175,11 +175,23 @@
/* MAX98095 Registers Bit Fields */
/* M98095_007_JACK_AUTO_STS */
#define M98095_MIC_IN (1<<3)
#define M98095_LO_IN (1<<5)
#define M98095_HP_IN (1<<6)
#define M98095_DDONE (1<<7)
/* M98095_00F_HOST_CFG */
#define M98095_SEG (1<<0)
#define M98095_XTEN (1<<1)
#define M98095_MDLLEN (1<<2)
/* M98095_013_JACK_INT_EN */
#define M98095_IMIC_IN (1<<3)
#define M98095_ILO_IN (1<<5)
#define M98095_IHP_IN (1<<6)
#define M98095_IDDONE (1<<7)
/* M98095_027_DAI1_CLKMODE, M98095_031_DAI2_CLKMODE, M98095_03B_DAI3_CLKMODE */
#define M98095_CLKMODE_MASK 0xFF
@@ -255,6 +267,10 @@
#define M98095_EQ2EN (1<<1)
#define M98095_EQ1EN (1<<0)
/* M98095_089_JACK_DET_AUTO */
#define M98095_PIN5EN (1<<2)
#define M98095_JDEN (1<<7)
/* M98095_090_PWR_EN_IN */
#define M98095_INEN (1<<7)
#define M98095_MB2EN (1<<3)
@@ -296,4 +312,10 @@
#define M98095_174_DAI1_BQ_BASE 0x74
#define M98095_17E_DAI2_BQ_BASE 0x7E
/* Default Delay used in Slew Rate Calculation for Jack detection */
#define M98095_DEFAULT_SLEW_DELAY 0x18
extern int max98095_jack_detect(struct snd_soc_codec *codec,
struct snd_soc_jack *hp_jack, struct snd_soc_jack *mic_jack);
#endif