|
@@ -3270,6 +3270,14 @@ static void snd_soc_component_drv_pcm_free(struct snd_soc_component *component,
|
|
|
component->driver->pcm_free(pcm);
|
|
|
}
|
|
|
|
|
|
+static int snd_soc_component_set_bias_level(struct snd_soc_dapm_context *dapm,
|
|
|
+ enum snd_soc_bias_level level)
|
|
|
+{
|
|
|
+ struct snd_soc_component *component = dapm->component;
|
|
|
+
|
|
|
+ return component->driver->set_bias_level(component, level);
|
|
|
+}
|
|
|
+
|
|
|
static int snd_soc_component_initialize(struct snd_soc_component *component,
|
|
|
const struct snd_soc_component_driver *driver, struct device *dev)
|
|
|
{
|
|
@@ -3297,11 +3305,14 @@ static int snd_soc_component_initialize(struct snd_soc_component *component,
|
|
|
dapm->dev = dev;
|
|
|
dapm->component = component;
|
|
|
dapm->bias_level = SND_SOC_BIAS_OFF;
|
|
|
- dapm->idle_bias_off = true;
|
|
|
+ dapm->idle_bias_off = !driver->idle_bias_on;
|
|
|
+ dapm->suspend_bias_off = driver->suspend_bias_off;
|
|
|
if (driver->seq_notifier)
|
|
|
dapm->seq_notifier = snd_soc_component_seq_notifier;
|
|
|
if (driver->stream_event)
|
|
|
dapm->stream_event = snd_soc_component_stream_event;
|
|
|
+ if (driver->set_bias_level)
|
|
|
+ dapm->set_bias_level = snd_soc_component_set_bias_level;
|
|
|
|
|
|
INIT_LIST_HEAD(&component->dai_list);
|
|
|
mutex_init(&component->io_mutex);
|