mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 15:11:31 +00:00
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: Martin Kaiser <martin@kaiser.cx> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
d90dde8c55
commit
b8f836cbe1
@ -113,8 +113,7 @@ static unsigned int refill_delay_ns(unsigned long clk_rate)
|
||||
static int ks_sa_rng_init(struct hwrng *rng)
|
||||
{
|
||||
u32 value;
|
||||
struct device *dev = (struct device *)rng->priv;
|
||||
struct ks_sa_rng *ks_sa_rng = dev_get_drvdata(dev);
|
||||
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
|
||||
unsigned long clk_rate = clk_get_rate(ks_sa_rng->clk);
|
||||
|
||||
/* Enable RNG module */
|
||||
@ -153,8 +152,7 @@ static int ks_sa_rng_init(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 = dev_get_drvdata(dev);
|
||||
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
|
||||
|
||||
/* Disable RNG */
|
||||
writel(0, &ks_sa_rng->reg_rng->control);
|
||||
@ -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)
|
||||
{
|
||||
struct device *dev = (struct device *)rng->priv;
|
||||
struct ks_sa_rng *ks_sa_rng = dev_get_drvdata(dev);
|
||||
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
|
||||
|
||||
/* Read random data */
|
||||
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)
|
||||
|
||||
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 = dev_get_drvdata(dev);
|
||||
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
|
||||
u64 now = ktime_get_ns();
|
||||
|
||||
u32 ready;
|
||||
@ -225,7 +221,6 @@ static int ks_sa_rng_probe(struct platform_device *pdev)
|
||||
.data_present = ks_sa_rng_data_present,
|
||||
.cleanup = ks_sa_rng_cleanup,
|
||||
};
|
||||
ks_sa_rng->rng.priv = (unsigned long)dev;
|
||||
|
||||
ks_sa_rng->reg_rng = devm_platform_ioremap_resource(pdev, 0);
|
||||
if (IS_ERR(ks_sa_rng->reg_rng))
|
||||
@ -248,8 +243,6 @@ static int ks_sa_rng_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, ks_sa_rng);
|
||||
|
||||
return devm_hwrng_register(&pdev->dev, &ks_sa_rng->rng);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user