Symbol: ks_sa_rng
drivers/char/hw_random/ks-sa-rng.c
115
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
drivers/char/hw_random/ks-sa-rng.c
116
unsigned long clk_rate = clk_get_rate(ks_sa_rng->clk);
drivers/char/hw_random/ks-sa-rng.c
119
regmap_write_bits(ks_sa_rng->regmap_cfg, SA_CMD_STATUS_OFS,
drivers/char/hw_random/ks-sa-rng.c
124
writel(0, &ks_sa_rng->reg_rng->control);
drivers/char/hw_random/ks-sa-rng.c
126
writel(value, &ks_sa_rng->reg_rng->control);
drivers/char/hw_random/ks-sa-rng.c
135
writel(value, &ks_sa_rng->reg_rng->config);
drivers/char/hw_random/ks-sa-rng.c
138
writel(0, &ks_sa_rng->reg_rng->intmask);
drivers/char/hw_random/ks-sa-rng.c
141
value = readl(&ks_sa_rng->reg_rng->control);
drivers/char/hw_random/ks-sa-rng.c
143
writel(value, &ks_sa_rng->reg_rng->control);
drivers/char/hw_random/ks-sa-rng.c
145
ks_sa_rng->refill_delay_ns = refill_delay_ns(clk_rate);
drivers/char/hw_random/ks-sa-rng.c
146
ks_sa_rng->ready_ts = ktime_get_ns() +
drivers/char/hw_random/ks-sa-rng.c
154
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
drivers/char/hw_random/ks-sa-rng.c
157
writel(0, &ks_sa_rng->reg_rng->control);
drivers/char/hw_random/ks-sa-rng.c
158
regmap_write_bits(ks_sa_rng->regmap_cfg, SA_CMD_STATUS_OFS,
drivers/char/hw_random/ks-sa-rng.c
164
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
drivers/char/hw_random/ks-sa-rng.c
167
data[0] = readl(&ks_sa_rng->reg_rng->output_l);
drivers/char/hw_random/ks-sa-rng.c
168
data[1] = readl(&ks_sa_rng->reg_rng->output_h);
drivers/char/hw_random/ks-sa-rng.c
170
writel(TRNG_INTACK_REG_READY, &ks_sa_rng->reg_rng->intack);
drivers/char/hw_random/ks-sa-rng.c
171
ks_sa_rng->ready_ts = ktime_get_ns() + ks_sa_rng->refill_delay_ns;
drivers/char/hw_random/ks-sa-rng.c
178
struct ks_sa_rng *ks_sa_rng = container_of(rng, struct ks_sa_rng, rng);
drivers/char/hw_random/ks-sa-rng.c
184
if (wait && now < ks_sa_rng->ready_ts) {
drivers/char/hw_random/ks-sa-rng.c
187
DIV_ROUND_UP((u32)(ks_sa_rng->ready_ts - now), 1000);
drivers/char/hw_random/ks-sa-rng.c
193
ready = readl(&ks_sa_rng->reg_rng->status);
drivers/char/hw_random/ks-sa-rng.c
207
struct ks_sa_rng *ks_sa_rng;
drivers/char/hw_random/ks-sa-rng.c
211
ks_sa_rng = devm_kzalloc(dev, sizeof(*ks_sa_rng), GFP_KERNEL);
drivers/char/hw_random/ks-sa-rng.c
212
if (!ks_sa_rng)
drivers/char/hw_random/ks-sa-rng.c
215
ks_sa_rng->rng = (struct hwrng) {
drivers/char/hw_random/ks-sa-rng.c
223
ks_sa_rng->reg_rng = devm_platform_ioremap_resource(pdev, 0);
drivers/char/hw_random/ks-sa-rng.c
224
if (IS_ERR(ks_sa_rng->reg_rng))
drivers/char/hw_random/ks-sa-rng.c
225
return PTR_ERR(ks_sa_rng->reg_rng);
drivers/char/hw_random/ks-sa-rng.c
227
ks_sa_rng->regmap_cfg =
drivers/char/hw_random/ks-sa-rng.c
231
if (IS_ERR(ks_sa_rng->regmap_cfg))
drivers/char/hw_random/ks-sa-rng.c
234
ks_sa_rng->clk = devm_clk_get_enabled(dev, NULL);
drivers/char/hw_random/ks-sa-rng.c
235
if (IS_ERR(ks_sa_rng->clk))
drivers/char/hw_random/ks-sa-rng.c
236
return dev_err_probe(dev, PTR_ERR(ks_sa_rng->clk), "Failed to get clock\n");
drivers/char/hw_random/ks-sa-rng.c
245
return devm_hwrng_register(&pdev->dev, &ks_sa_rng->rng);