+
+}
+
+static int rt5631_probe(struct snd_soc_codec *codec)
+{
+ struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec);
+ int val;
+ int ret;
+
+ rt5631_codec = codec;
+ ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
+ if (ret != 0) {
+ dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+ return ret;
+ }
+ codec->cache_bypass = 1;
+
+ rt5631->irq_wq = create_singlethread_workqueue("rt5631-irq_wq");
+ if (!rt5631->irq_wq) {
+ printk( "Failed to rt5631 allocate IRQ worker\n");
+ return -ESRCH;
+ }
+ INIT_DELAYED_WORK(&rt5631->rt5631_delayed_work, rt5631_init_work);
+ queue_delayed_work(rt5631->irq_wq, &rt5631->rt5631_delayed_work, msecs_to_jiffies(10));
+