rockchip: hwrng: sync with official develop-4.19 branch

ee89075 hwrng: rockchip: add rk356x support

(cherry picked from commit c7621fb09f47b6cefa794ce10aed3af2c895c955)
This commit is contained in:
AmadeusGhost 2021-10-19 23:05:03 +08:00 committed by Tianling Shen
parent c7e3d01f70
commit fb0a449098
No known key found for this signature in database
GPG Key ID: 6850B6345C862176

View File

@ -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 <troy.lin@rock-chips.com>");
MODULE_LICENSE("GPL v2");