Merge branch 'asoc-4.20' into asoc-linus
authorMark Brown <broonie@kernel.org>
Tue, 18 Dec 2018 12:23:57 +0000 (12:23 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 18 Dec 2018 12:23:57 +0000 (12:23 +0000)
sound/soc/codecs/pcm3168a.c
sound/soc/codecs/rt5660.c
sound/soc/intel/boards/cht_bsw_max98090_ti.c
sound/soc/sh/rcar/core.c
sound/soc/sh/rcar/dvc.c

index 52cc950c9fd174912ea8e49797e6b8e8a0d28c78..445d025e1409d865b3d3d5dcee87155e65e3d727 100644 (file)
@@ -770,15 +770,22 @@ err_clk:
 }
 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);
 
-       pm_runtime_disable(dev);
        regulator_bulk_disable(ARRAY_SIZE(pcm3168a->supplies),
-                               pcm3168a->supplies);
+                              pcm3168a->supplies);
        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);
 
 #ifdef CONFIG_PM
@@ -833,10 +840,7 @@ static int pcm3168a_rt_suspend(struct device *dev)
 
        regcache_cache_only(pcm3168a->regmap, true);
 
-       regulator_bulk_disable(ARRAY_SIZE(pcm3168a->supplies),
-                              pcm3168a->supplies);
-
-       clk_disable_unprepare(pcm3168a->scki);
+       pcm3168a_disable(dev);
 
        return 0;
 }
index 27f7445b2432005e236f47f82de1c576316c598f..e74b2e8cd423e39a7d8d227066b07d25061b7a44 100644 (file)
@@ -1246,6 +1246,7 @@ MODULE_DEVICE_TABLE(of, rt5660_of_match);
 
 static const struct acpi_device_id rt5660_acpi_match[] = {
        { "10EC5660", 0 },
+       { "10EC3277", 0 },
        { },
 };
 MODULE_DEVICE_TABLE(acpi, rt5660_acpi_match);
index 9d9f6e41d81c079796cb7bec6d9422bd6cbb5c67..08a5152e635ac8b8c38ae9214173c66cd8bae445 100644 (file)
@@ -389,6 +389,20 @@ static struct snd_soc_card snd_soc_card_cht = {
 };
 
 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) */
                .matches = {
index f930f51b686fc95fd78c973576548582b67bb5aa..114f8f233764a065fa49c64e1ed636a42cb3d806 100644 (file)
@@ -1339,6 +1339,18 @@ int rsnd_kctrl_new(struct rsnd_mod *mod,
        };
        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)
                return -EINVAL;
 
index 2b16e0ce6bc5374aff6e3bc0ade4a3faed6a3087..024ece46bf685afe381a8594b04e6e48c03f7616 100644 (file)
@@ -40,11 +40,8 @@ struct rsnd_dvc {
        struct rsnd_kctrl_cfg_s ren;    /* Ramp Enable */
        struct rsnd_kctrl_cfg_s rup;    /* Ramp Rate Up */
        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_nr(priv) ((priv)->dvc_nr)
 
@@ -227,9 +224,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod,
        int channels = rsnd_rdai_channels_get(rdai);
        int ret;
 
-       if (rsnd_flags_has(dvc, KCTRL_INITIALIZED))
-               return 0;
-
        /* Volume */
        ret = rsnd_kctrl_new_m(mod, io, rtd,
                        is_play ?
@@ -285,8 +279,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod,
        if (ret < 0)
                return ret;
 
-       rsnd_flags_set(dvc, KCTRL_INITIALIZED);
-
        return 0;
 }