goto err;
        }
 
-       ret = clk_prepare(at91_chip->clock);
-       if (ret)
-               goto clk_prepare_err;
-
-       /* enable PIO controller's clock */
-       ret = clk_enable(at91_chip->clock);
+       ret = clk_prepare_enable(at91_chip->clock);
        if (ret) {
-               dev_err(&pdev->dev, "failed to enable clock, ignoring.\n");
+               dev_err(&pdev->dev, "failed to prepare and enable clock, ignoring.\n");
                goto clk_enable_err;
        }
 
 irq_setup_err:
        gpiochip_remove(chip);
 gpiochip_add_err:
-       clk_disable(at91_chip->clock);
 clk_enable_err:
-       clk_unprepare(at91_chip->clock);
-clk_prepare_err:
+       clk_disable_unprepare(at91_chip->clock);
 err:
        dev_err(&pdev->dev, "Failure %i for GPIO %i\n", ret, alias_idx);