void (*seq_notifier)(struct snd_soc_component *, enum snd_soc_dapm_type,
                int subseq);
        int (*stream_event)(struct snd_soc_component *, int event);
+       int (*set_bias_level)(struct snd_soc_component *component,
+                             enum snd_soc_bias_level level);
 
        /* probe ordering - for components with runtime dependencies */
        int probe_order;
        int remove_order;
+
+       /* bits */
+       unsigned int idle_bias_on:1;
+       unsigned int suspend_bias_off:1;
 };
 
 struct snd_soc_component {
                       int source, unsigned int freq_in, unsigned int freq_out);
        int (*set_jack)(struct snd_soc_component *component,
                        struct snd_soc_jack *jack,  void *data);
+       int (*set_bias_level)(struct snd_soc_component *component,
+                             enum snd_soc_bias_level level);
 
        /* machine specific init */
        int (*init)(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)
 {
        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);