crypto: rockchip - use clk_bulk to simplify clock management
authorCorentin Labbe <clabbe@baylibre.com>
Tue, 27 Sep 2022 07:54:53 +0000 (07:54 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 28 Oct 2022 04:36:33 +0000 (12:36 +0800)
rk3328 does not have the same clock names than rk3288, instead of using a complex
clock management, let's use clk_bulk to simplify their handling.

Reviewed-by: John Keeping <john@metanate.com>
Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/rockchip/rk3288_crypto.c
drivers/crypto/rockchip/rk3288_crypto.h

index 399829ef92e0f7dec72bbef0ce4abd17eb53282c..a635029ac71d075b6a5e58472eb37c9089676bcb 100644 (file)
@@ -22,47 +22,16 @@ static int rk_crypto_enable_clk(struct rk_crypto_info *dev)
 {
        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);
 }
 
 /*
@@ -266,27 +235,10 @@ static int rk_crypto_probe(struct platform_device *pdev)
                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;
        }
 
index ddbb9246ce164723c8bf1cc7486c9cbedd5d0fa3..28bf09fe1c1d1eac30e6370ac59ab510e0a24f21 100644 (file)
 
 struct rk_crypto_info {
        struct device                   *dev;
-       struct clk                      *aclk;
-       struct clk                      *hclk;
-       struct clk                      *sclk;
-       struct clk                      *dmaclk;
+       struct clk_bulk_data            *clks;
+       int num_clks;
        struct reset_control            *rst;
        void __iomem                    *reg;
        int                             irq;