ASoC: Intel: bytcht_es8316: Add quirk for inverted jack detect
Add a quirk to support boards whose jack detection mechanism is inverted. It will set the 'everest,jack-detect-inverted' boolean device property for the es8316 codec driver. Signed-off-by: Paul Cercueil <paul@crapouillou.net> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
a03584b75a
Коммит
ba49cf6f8e
|
@ -40,6 +40,9 @@
|
|||
#include "../atom/sst-atom-controls.h"
|
||||
#include "../common/sst-dsp.h"
|
||||
|
||||
/* jd-inv + terminating entry */
|
||||
#define MAX_NO_PROPS 2
|
||||
|
||||
struct byt_cht_es8316_private {
|
||||
struct clk *mclk;
|
||||
struct snd_soc_jack jack;
|
||||
|
@ -55,6 +58,7 @@ enum {
|
|||
#define BYT_CHT_ES8316_MAP(quirk) ((quirk) & GENMASK(3, 0))
|
||||
#define BYT_CHT_ES8316_SSP0 BIT(16)
|
||||
#define BYT_CHT_ES8316_MONO_SPEAKER BIT(17)
|
||||
#define BYT_CHT_ES8316_JD_INVERTED BIT(18)
|
||||
|
||||
static int quirk;
|
||||
|
||||
|
@ -72,6 +76,8 @@ static void log_quirks(struct device *dev)
|
|||
dev_info(dev, "quirk SSP0 enabled");
|
||||
if (quirk & BYT_CHT_ES8316_MONO_SPEAKER)
|
||||
dev_info(dev, "quirk MONO_SPEAKER enabled\n");
|
||||
if (quirk & BYT_CHT_ES8316_JD_INVERTED)
|
||||
dev_info(dev, "quirk JD_INVERTED enabled\n");
|
||||
}
|
||||
|
||||
static int byt_cht_es8316_speaker_power_event(struct snd_soc_dapm_widget *w,
|
||||
|
@ -438,12 +444,14 @@ static const struct acpi_gpio_mapping byt_cht_es8316_gpios[] = {
|
|||
static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
|
||||
{
|
||||
static const char * const mic_name[] = { "in1", "in2" };
|
||||
struct property_entry props[MAX_NO_PROPS] = {};
|
||||
struct byt_cht_es8316_private *priv;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct snd_soc_acpi_mach *mach;
|
||||
const char *platform_name;
|
||||
struct acpi_device *adev;
|
||||
struct device *codec_dev;
|
||||
unsigned int cnt = 0;
|
||||
int dai_index = 0;
|
||||
int i;
|
||||
int ret = 0;
|
||||
|
@ -513,6 +521,15 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
|
|||
if (!codec_dev)
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
if (quirk & BYT_CHT_ES8316_JD_INVERTED)
|
||||
props[cnt++] = PROPERTY_ENTRY_BOOL("everest,jack-detect-inverted");
|
||||
|
||||
if (cnt) {
|
||||
ret = device_add_properties(codec_dev, props);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
devm_acpi_dev_add_driver_gpios(codec_dev, byt_cht_es8316_gpios);
|
||||
priv->speaker_en_gpio =
|
||||
gpiod_get_index(codec_dev, "speaker-enable", 0,
|
||||
|
|
Загрузка…
Ссылка в новой задаче