if (ret != 0) {
                        dev_err(arizona->dev,
                                "Failed to add AOD IRQs: %d\n", ret);
-                       goto err_domain;
+                       goto err;
                }
        }
 
                goto err_aod;
        }
 
-       /* Make sure the boot done IRQ is unmasked for resumes */
-       i = arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE);
-       ret = request_threaded_irq(i, NULL, arizona_boot_done, IRQF_ONESHOT,
-                                  "Boot done", arizona);
-       if (ret != 0) {
-               dev_err(arizona->dev, "Failed to request boot done %d: %d\n",
-                       arizona->irq, ret);
-               goto err_boot_done;
-       }
-
-       /* Handle control interface errors in the core */
-       if (arizona->ctrlif_error) {
-               i = arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR);
-               ret = request_threaded_irq(i, NULL, arizona_ctrlif_err,
-                                          IRQF_ONESHOT,
-                                          "Control interface error", arizona);
-               if (ret != 0) {
-                       dev_err(arizona->dev,
-                               "Failed to request CTRLIF_ERR %d: %d\n",
-                               arizona->irq, ret);
-                       goto err_ctrlif;
-               }
-       }
-
        /* Used to emulate edge trigger and to work around broken pinmux */
        if (arizona->pdata.irq_gpio) {
                if (gpio_to_irq(arizona->pdata.irq_gpio) != arizona->irq) {
                goto err_main_irq;
        }
 
+       /* Make sure the boot done IRQ is unmasked for resumes */
+       i = arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE);
+       ret = request_threaded_irq(i, NULL, arizona_boot_done, IRQF_ONESHOT,
+                                  "Boot done", arizona);
+       if (ret != 0) {
+               dev_err(arizona->dev, "Failed to request boot done %d: %d\n",
+                       arizona->irq, ret);
+               goto err_boot_done;
+       }
+
+       /* Handle control interface errors in the core */
+       if (arizona->ctrlif_error) {
+               i = arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR);
+               ret = request_threaded_irq(i, NULL, arizona_ctrlif_err,
+                                          IRQF_ONESHOT,
+                                          "Control interface error", arizona);
+               if (ret != 0) {
+                       dev_err(arizona->dev,
+                               "Failed to request CTRLIF_ERR %d: %d\n",
+                               arizona->irq, ret);
+                       goto err_ctrlif;
+               }
+       }
+
        return 0;
 
-err_main_irq:
-       if (arizona->ctrlif_error)
-               free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR),
-                        arizona);
 err_ctrlif:
        free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE), arizona);
 err_boot_done:
+       free_irq(arizona->irq, arizona);
+err_main_irq:
        regmap_del_irq_chip(irq_create_mapping(arizona->virq, 1),
                            arizona->irq_chip);
 err_aod:
        regmap_del_irq_chip(irq_create_mapping(arizona->virq, 0),
                            arizona->aod_irq_chip);
-err_domain:
 err:
        return ret;
 }