Commit b8f836cb authored by Martin Kaiser's avatar Martin Kaiser Committed by Herbert Xu

hwrng: ks-sa - access private data via struct hwrng

This driver uses a struct ks_sa_rng for its private data. It contains a
struct hwrng. Call container_of to get from hwrng to ks_sa_rng.
Signed-off-by: default avatarMartin Kaiser <martin@kaiser.cx>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent d90dde8c
...@@ -113,8 +113,7 @@ static unsigned int refill_delay_ns(unsigned long clk_rate) ...@@ -113,8 +113,7 @@ static unsigned int refill_delay_ns(unsigned long clk_rate)
static int ks_sa_rng_init(struct hwrng *rng) static int ks_sa_rng_init(struct hwrng *rng)
{ {
u32 value; u32 value;
struct device *dev = (struct device *)rng->priv; struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
struct ks_sa_rng *ks_sa_rng = dev_get_drvdata(dev);
unsigned long clk_rate = clk_get_rate(ks_sa_rng->clk); unsigned long clk_rate = clk_get_rate(ks_sa_rng->clk);
/* Enable RNG module */ /* Enable RNG module */
...@@ -153,8 +152,7 @@ static int ks_sa_rng_init(struct hwrng *rng) ...@@ -153,8 +152,7 @@ static int ks_sa_rng_init(struct hwrng *rng)
static void ks_sa_rng_cleanup(struct hwrng *rng) static void ks_sa_rng_cleanup(struct hwrng *rng)
{ {
struct device *dev = (struct device *)rng->priv; struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
struct ks_sa_rng *ks_sa_rng = dev_get_drvdata(dev);
/* Disable RNG */ /* Disable RNG */
writel(0, &ks_sa_rng->reg_rng->control); writel(0, &ks_sa_rng->reg_rng->control);
...@@ -164,8 +162,7 @@ static void ks_sa_rng_cleanup(struct hwrng *rng) ...@@ -164,8 +162,7 @@ static void ks_sa_rng_cleanup(struct hwrng *rng)
static int ks_sa_rng_data_read(struct hwrng *rng, u32 *data) static int ks_sa_rng_data_read(struct hwrng *rng, u32 *data)
{ {
struct device *dev = (struct device *)rng->priv; struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
struct ks_sa_rng *ks_sa_rng = dev_get_drvdata(dev);
/* Read random data */ /* Read random data */
data[0] = readl(&ks_sa_rng->reg_rng->output_l); data[0] = readl(&ks_sa_rng->reg_rng->output_l);
...@@ -179,8 +176,7 @@ static int ks_sa_rng_data_read(struct hwrng *rng, u32 *data) ...@@ -179,8 +176,7 @@ static int ks_sa_rng_data_read(struct hwrng *rng, u32 *data)
static int ks_sa_rng_data_present(struct hwrng *rng, int wait) static int ks_sa_rng_data_present(struct hwrng *rng, int wait)
{ {
struct device *dev = (struct device *)rng->priv; struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
struct ks_sa_rng *ks_sa_rng = dev_get_drvdata(dev);
u64 now = ktime_get_ns(); u64 now = ktime_get_ns();
u32 ready; u32 ready;
...@@ -225,7 +221,6 @@ static int ks_sa_rng_probe(struct platform_device *pdev) ...@@ -225,7 +221,6 @@ static int ks_sa_rng_probe(struct platform_device *pdev)
.data_present = ks_sa_rng_data_present, .data_present = ks_sa_rng_data_present,
.cleanup = ks_sa_rng_cleanup, .cleanup = ks_sa_rng_cleanup,
}; };
ks_sa_rng->rng.priv = (unsigned long)dev;
ks_sa_rng->reg_rng = devm_platform_ioremap_resource(pdev, 0); ks_sa_rng->reg_rng = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(ks_sa_rng->reg_rng)) if (IS_ERR(ks_sa_rng->reg_rng))
...@@ -248,8 +243,6 @@ static int ks_sa_rng_probe(struct platform_device *pdev) ...@@ -248,8 +243,6 @@ static int ks_sa_rng_probe(struct platform_device *pdev)
return ret; return ret;
} }
platform_set_drvdata(pdev, ks_sa_rng);
return devm_hwrng_register(&pdev->dev, &ks_sa_rng->rng); return devm_hwrng_register(&pdev->dev, &ks_sa_rng->rng);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment