Commit c5fd9e77 authored by Mark Brown's avatar Mark Brown

Merge branch 'asoc-4.20' into asoc-linus

parents 7566ec39 a01b8d1d
...@@ -770,15 +770,22 @@ int pcm3168a_probe(struct device *dev, struct regmap *regmap) ...@@ -770,15 +770,22 @@ int pcm3168a_probe(struct device *dev, struct regmap *regmap)
} }
EXPORT_SYMBOL_GPL(pcm3168a_probe); EXPORT_SYMBOL_GPL(pcm3168a_probe);
void pcm3168a_remove(struct device *dev) static void pcm3168a_disable(struct device *dev)
{ {
struct pcm3168a_priv *pcm3168a = dev_get_drvdata(dev); struct pcm3168a_priv *pcm3168a = dev_get_drvdata(dev);
pm_runtime_disable(dev);
regulator_bulk_disable(ARRAY_SIZE(pcm3168a->supplies), regulator_bulk_disable(ARRAY_SIZE(pcm3168a->supplies),
pcm3168a->supplies); pcm3168a->supplies);
clk_disable_unprepare(pcm3168a->scki); clk_disable_unprepare(pcm3168a->scki);
} }
void pcm3168a_remove(struct device *dev)
{
pm_runtime_disable(dev);
#ifndef CONFIG_PM
pcm3168a_disable(dev);
#endif
}
EXPORT_SYMBOL_GPL(pcm3168a_remove); EXPORT_SYMBOL_GPL(pcm3168a_remove);
#ifdef CONFIG_PM #ifdef CONFIG_PM
...@@ -833,10 +840,7 @@ static int pcm3168a_rt_suspend(struct device *dev) ...@@ -833,10 +840,7 @@ static int pcm3168a_rt_suspend(struct device *dev)
regcache_cache_only(pcm3168a->regmap, true); regcache_cache_only(pcm3168a->regmap, true);
regulator_bulk_disable(ARRAY_SIZE(pcm3168a->supplies), pcm3168a_disable(dev);
pcm3168a->supplies);
clk_disable_unprepare(pcm3168a->scki);
return 0; return 0;
} }
......
...@@ -1246,6 +1246,7 @@ MODULE_DEVICE_TABLE(of, rt5660_of_match); ...@@ -1246,6 +1246,7 @@ MODULE_DEVICE_TABLE(of, rt5660_of_match);
static const struct acpi_device_id rt5660_acpi_match[] = { static const struct acpi_device_id rt5660_acpi_match[] = {
{ "10EC5660", 0 }, { "10EC5660", 0 },
{ "10EC3277", 0 },
{ }, { },
}; };
MODULE_DEVICE_TABLE(acpi, rt5660_acpi_match); MODULE_DEVICE_TABLE(acpi, rt5660_acpi_match);
......
...@@ -389,6 +389,20 @@ static struct snd_soc_card snd_soc_card_cht = { ...@@ -389,6 +389,20 @@ static struct snd_soc_card snd_soc_card_cht = {
}; };
static const struct dmi_system_id cht_max98090_quirk_table[] = { static const struct dmi_system_id cht_max98090_quirk_table[] = {
{
/* Clapper model Chromebook */
.matches = {
DMI_MATCH(DMI_PRODUCT_NAME, "Clapper"),
},
.driver_data = (void *)QUIRK_PMC_PLT_CLK_0,
},
{
/* Gnawty model Chromebook (Acer Chromebook CB3-111) */
.matches = {
DMI_MATCH(DMI_PRODUCT_NAME, "Gnawty"),
},
.driver_data = (void *)QUIRK_PMC_PLT_CLK_0,
},
{ {
/* Swanky model Chromebook (Toshiba Chromebook 2) */ /* Swanky model Chromebook (Toshiba Chromebook 2) */
.matches = { .matches = {
......
...@@ -1339,6 +1339,18 @@ int rsnd_kctrl_new(struct rsnd_mod *mod, ...@@ -1339,6 +1339,18 @@ int rsnd_kctrl_new(struct rsnd_mod *mod,
}; };
int ret; int ret;
/*
* 1) Avoid duplicate register (ex. MIXer case)
* 2) re-register if card was rebinded
*/
list_for_each_entry(kctrl, &card->controls, list) {
struct rsnd_kctrl_cfg *c = kctrl->private_data;
if (strcmp(kctrl->id.name, name) == 0 &&
c->mod == mod)
return 0;
}
if (size > RSND_MAX_CHANNELS) if (size > RSND_MAX_CHANNELS)
return -EINVAL; return -EINVAL;
......
...@@ -40,11 +40,8 @@ struct rsnd_dvc { ...@@ -40,11 +40,8 @@ struct rsnd_dvc {
struct rsnd_kctrl_cfg_s ren; /* Ramp Enable */ struct rsnd_kctrl_cfg_s ren; /* Ramp Enable */
struct rsnd_kctrl_cfg_s rup; /* Ramp Rate Up */ struct rsnd_kctrl_cfg_s rup; /* Ramp Rate Up */
struct rsnd_kctrl_cfg_s rdown; /* Ramp Rate Down */ struct rsnd_kctrl_cfg_s rdown; /* Ramp Rate Down */
u32 flags;
}; };
#define KCTRL_INITIALIZED (1 << 0)
#define rsnd_dvc_get(priv, id) ((struct rsnd_dvc *)(priv->dvc) + id) #define rsnd_dvc_get(priv, id) ((struct rsnd_dvc *)(priv->dvc) + id)
#define rsnd_dvc_nr(priv) ((priv)->dvc_nr) #define rsnd_dvc_nr(priv) ((priv)->dvc_nr)
...@@ -227,9 +224,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, ...@@ -227,9 +224,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod,
int channels = rsnd_rdai_channels_get(rdai); int channels = rsnd_rdai_channels_get(rdai);
int ret; int ret;
if (rsnd_flags_has(dvc, KCTRL_INITIALIZED))
return 0;
/* Volume */ /* Volume */
ret = rsnd_kctrl_new_m(mod, io, rtd, ret = rsnd_kctrl_new_m(mod, io, rtd,
is_play ? is_play ?
...@@ -285,8 +279,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, ...@@ -285,8 +279,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod,
if (ret < 0) if (ret < 0)
return ret; return ret;
rsnd_flags_set(dvc, KCTRL_INITIALIZED);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment