es8316->irq = i2c_client->irq;
        mutex_init(&es8316->lock);
 
-       ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq,
-                                       IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN,
-                                       "es8316", es8316);
-       if (ret) {
-               dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret);
-               es8316->irq = -ENXIO;
+       if (es8316->irq > 0) {
+               ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq,
+                                               IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN,
+                                               "es8316", es8316);
+               if (ret) {
+                       dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret);
+                       es8316->irq = -ENXIO;
+               }
        }
 
        return devm_snd_soc_register_component(&i2c_client->dev,