ASoC: Merge up fixes
authorMark Brown <broonie@kernel.org>
Thu, 17 Aug 2023 18:18:58 +0000 (19:18 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 17 Aug 2023 21:38:42 +0000 (22:38 +0100)
For the benefit of CI.

1  2 
sound/soc/codecs/cs35l56-i2c.c
sound/soc/codecs/cs35l56-spi.c
sound/soc/codecs/cs35l56.c
sound/soc/codecs/rt1308-sdw.c
sound/soc/sof/ipc4-pcm.c

Simple merge
Simple merge
@@@ -1029,26 -1353,22 +1028,22 @@@ static int cs35l56_dsp_init(struct cs35
        return 0;
  }
  
- static int cs35l56_acpi_get_name(struct cs35l56_private *cs35l56)
+ static int cs35l56_get_firmware_uid(struct cs35l56_private *cs35l56)
  {
-       acpi_handle handle = ACPI_HANDLE(cs35l56->base.dev);
-       const char *sub;
 -      struct device *dev = cs35l56->dev;
++      struct device *dev = cs35l56->base.dev;
+       const char *prop;
+       int ret;
  
-       /* If there is no ACPI_HANDLE, there is no ACPI for this system, return 0 */
-       if (!handle)
+       ret = device_property_read_string(dev, "cirrus,firmware-uid", &prop);
+       /* If bad sw node property, return 0 and fallback to legacy firmware path */
+       if (ret < 0)
                return 0;
  
-       sub = acpi_get_subsystem_id(handle);
-       if (IS_ERR(sub)) {
-               /* If bad ACPI, return 0 and fallback to legacy firmware path, otherwise fail */
-               if (PTR_ERR(sub) == -ENODATA)
-                       return 0;
-               else
-                       return PTR_ERR(sub);
-       }
+       cs35l56->dsp.system_name = devm_kstrdup(dev, prop, GFP_KERNEL);
+       if (cs35l56->dsp.system_name == NULL)
+               return -ENOMEM;
  
-       cs35l56->dsp.system_name = sub;
-       dev_dbg(cs35l56->base.dev, "Subsystem ID: %s\n", cs35l56->dsp.system_name);
+       dev_dbg(dev, "Firmware UID: %s\n", cs35l56->dsp.system_name);
  
        return 0;
  }
@@@ -1086,16 -1405,14 +1081,16 @@@ int cs35l56_common_probe(struct cs35l56
  
        ret = regulator_bulk_enable(ARRAY_SIZE(cs35l56->supplies), cs35l56->supplies);
        if (ret != 0)
 -              return dev_err_probe(cs35l56->dev, ret, "Failed to enable supplies\n");
 +              return dev_err_probe(cs35l56->base.dev, ret, "Failed to enable supplies\n");
  
 -      if (cs35l56->reset_gpio) {
 +      if (cs35l56->base.reset_gpio) {
 +              /* ACPI can override GPIOD_OUT_LOW flag so force it to start low */
 +              gpiod_set_value_cansleep(cs35l56->base.reset_gpio, 0);
                cs35l56_wait_min_reset_pulse();
 -              gpiod_set_value_cansleep(cs35l56->reset_gpio, 1);
 +              gpiod_set_value_cansleep(cs35l56->base.reset_gpio, 1);
        }
  
-       ret = cs35l56_acpi_get_name(cs35l56);
+       ret = cs35l56_get_firmware_uid(cs35l56);
        if (ret != 0)
                goto err;
  
@@@ -1212,14 -1594,12 +1207,12 @@@ void cs35l56_remove(struct cs35l56_priv
        flush_workqueue(cs35l56->dsp_wq);
        destroy_workqueue(cs35l56->dsp_wq);
  
 -      pm_runtime_suspend(cs35l56->dev);
 -      pm_runtime_disable(cs35l56->dev);
 +      pm_runtime_suspend(cs35l56->base.dev);
 +      pm_runtime_disable(cs35l56->base.dev);
  
 -      regcache_cache_only(cs35l56->regmap, true);
 +      regcache_cache_only(cs35l56->base.regmap, true);
  
-       kfree(cs35l56->dsp.system_name);
 -      gpiod_set_value_cansleep(cs35l56->reset_gpio, 0);
 +      gpiod_set_value_cansleep(cs35l56->base.reset_gpio, 0);
        regulator_bulk_disable(ARRAY_SIZE(cs35l56->supplies), cs35l56->supplies);
  }
  EXPORT_SYMBOL_NS_GPL(cs35l56_remove, SND_SOC_CS35L56_CORE);
@@@ -229,8 -235,18 +230,12 @@@ static int rt1308_io_init(struct devic
                /* update count of parent 'active' children */
                pm_runtime_set_active(&slave->dev);
  
 -              /* make sure the device does not suspend immediately */
 -              pm_runtime_mark_last_busy(&slave->dev);
 -
 -              pm_runtime_enable(&slave->dev);
 -      }
 -
        pm_runtime_get_noresume(&slave->dev);
  
+       regmap_read(rt1308->regmap, 0xcf01, &hibernation_flag);
+       if ((hibernation_flag != 0x00) && rt1308->first_hw_init)
+               goto _preset_ready_;
        /* sw reset */
        regmap_write(rt1308->regmap, RT1308_SDW_RESET, 0);
  
Simple merge