From c7621fb09f47b6cefa794ce10aed3af2c895c955 Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Tue, 19 Oct 2021 23:05:03 +0800 Subject: [PATCH] rockchip: hwrng: sync with official develop-4.19 branch ee89075 hwrng: rockchip: add rk356x support --- .../drivers/char/hw_random/rockchip-rng.c | 40 +++---------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/target/linux/rockchip/files/drivers/char/hw_random/rockchip-rng.c b/target/linux/rockchip/files/drivers/char/hw_random/rockchip-rng.c index bdc3578d4d..9a61f80874 100644 --- a/target/linux/rockchip/files/drivers/char/hw_random/rockchip-rng.c +++ b/target/linux/rockchip/files/drivers/char/hw_random/rockchip-rng.c @@ -53,8 +53,6 @@ /* end of CRYPTO V2 register define */ struct rk_rng_soc_data { - const char * const *clks; - int clks_num; int (*rk_rng_read)(struct hwrng *rng, void *buf, size_t max, bool wait); }; @@ -63,22 +61,10 @@ struct rk_rng { struct hwrng rng; void __iomem *mem; struct rk_rng_soc_data *soc_data; - u32 clk_num; + int clk_num; struct clk_bulk_data *clk_bulks; }; -static const char * const rk_rng_v1_clks[] = { - "hclk_crypto", - "clk_crypto", -}; - -static const char * const rk_rng_v2_clks[] = { - "hclk_crypto", - "aclk_crypto", - "clk_crypto", - "clk_crypto_apk", -}; - static void rk_rng_writel(struct rk_rng *rng, u32 val, u32 offset) { __raw_writel(val, rng->mem + offset); @@ -209,14 +195,10 @@ out: } static const struct rk_rng_soc_data rk_rng_v1_soc_data = { - .clks_num = ARRAY_SIZE(rk_rng_v1_clks), - .clks = rk_rng_v1_clks, .rk_rng_read = rk_rng_v1_read, }; static const struct rk_rng_soc_data rk_rng_v2_soc_data = { - .clks_num = ARRAY_SIZE(rk_rng_v2_clks), - .clks = rk_rng_v2_clks, .rk_rng_read = rk_rng_v2_read, }; @@ -236,7 +218,6 @@ MODULE_DEVICE_TABLE(of, rk_rng_dt_match); static int rk_rng_probe(struct platform_device *pdev) { - int i; int ret; struct rk_rng *rk_rng; struct device_node *np = pdev->dev.of_node; @@ -257,26 +238,16 @@ static int rk_rng_probe(struct platform_device *pdev) rk_rng->rng.cleanup = rk_rng_cleanup, #endif rk_rng->rng.read = rk_rng->soc_data->rk_rng_read; - rk_rng->rng.quality = 1000; - - rk_rng->clk_bulks = - devm_kzalloc(&pdev->dev, sizeof(*rk_rng->clk_bulks) * - rk_rng->soc_data->clks_num, GFP_KERNEL); - - rk_rng->clk_num = rk_rng->soc_data->clks_num; - - for (i = 0; i < rk_rng->soc_data->clks_num; i++) - rk_rng->clk_bulks[i].id = rk_rng->soc_data->clks[i]; + rk_rng->rng.quality = 999; rk_rng->mem = devm_of_iomap(&pdev->dev, pdev->dev.of_node, 0, NULL); if (IS_ERR(rk_rng->mem)) return PTR_ERR(rk_rng->mem); - ret = devm_clk_bulk_get(&pdev->dev, rk_rng->clk_num, - rk_rng->clk_bulks); - if (ret) { + rk_rng->clk_num = devm_clk_bulk_get_all(&pdev->dev, &rk_rng->clk_bulks); + if (rk_rng->clk_num < 0) { dev_err(&pdev->dev, "failed to get clks property\n"); - return ret; + return -ENODEV; } platform_set_drvdata(pdev, rk_rng); @@ -337,4 +308,3 @@ module_platform_driver(rk_rng_driver); MODULE_DESCRIPTION("ROCKCHIP H/W Random Number Generator driver"); MODULE_AUTHOR("Lin Jinhan "); MODULE_LICENSE("GPL v2"); -