{
        int err;
 
-       err = clk_prepare_enable(dev->sclk);
-       if (err) {
-               dev_err(dev->dev, "[%s:%d], Couldn't enable clock sclk\n",
-                       __func__, __LINE__);
-               goto err_return;
-       }
-       err = clk_prepare_enable(dev->aclk);
-       if (err) {
-               dev_err(dev->dev, "[%s:%d], Couldn't enable clock aclk\n",
-                       __func__, __LINE__);
-               goto err_aclk;
-       }
-       err = clk_prepare_enable(dev->hclk);
-       if (err) {
-               dev_err(dev->dev, "[%s:%d], Couldn't enable clock hclk\n",
-                       __func__, __LINE__);
-               goto err_hclk;
-       }
-       err = clk_prepare_enable(dev->dmaclk);
-       if (err) {
-               dev_err(dev->dev, "[%s:%d], Couldn't enable clock dmaclk\n",
-                       __func__, __LINE__);
-               goto err_dmaclk;
-       }
-       return err;
-err_dmaclk:
-       clk_disable_unprepare(dev->hclk);
-err_hclk:
-       clk_disable_unprepare(dev->aclk);
-err_aclk:
-       clk_disable_unprepare(dev->sclk);
-err_return:
+       err = clk_bulk_prepare_enable(dev->num_clks, dev->clks);
+       if (err)
+               dev_err(dev->dev, "Could not enable clock clks\n");
+
        return err;
 }
 
 static void rk_crypto_disable_clk(struct rk_crypto_info *dev)
 {
-       clk_disable_unprepare(dev->dmaclk);
-       clk_disable_unprepare(dev->hclk);
-       clk_disable_unprepare(dev->aclk);
-       clk_disable_unprepare(dev->sclk);
+       clk_bulk_disable_unprepare(dev->num_clks, dev->clks);
 }
 
 /*
                goto err_crypto;
        }
 
-       crypto_info->aclk = devm_clk_get(&pdev->dev, "aclk");
-       if (IS_ERR(crypto_info->aclk)) {
-               err = PTR_ERR(crypto_info->aclk);
-               goto err_crypto;
-       }
-
-       crypto_info->hclk = devm_clk_get(&pdev->dev, "hclk");
-       if (IS_ERR(crypto_info->hclk)) {
-               err = PTR_ERR(crypto_info->hclk);
-               goto err_crypto;
-       }
-
-       crypto_info->sclk = devm_clk_get(&pdev->dev, "sclk");
-       if (IS_ERR(crypto_info->sclk)) {
-               err = PTR_ERR(crypto_info->sclk);
-               goto err_crypto;
-       }
-
-       crypto_info->dmaclk = devm_clk_get(&pdev->dev, "apb_pclk");
-       if (IS_ERR(crypto_info->dmaclk)) {
-               err = PTR_ERR(crypto_info->dmaclk);
+       crypto_info->num_clks = devm_clk_bulk_get_all(&pdev->dev,
+                                                     &crypto_info->clks);
+       if (crypto_info->num_clks < 3) {
+               err = -EINVAL;
                goto err_crypto;
        }