Lines Matching refs:rng

69 static unsigned long reset_rng_health_state(struct cn10k_rng *rng)
78 static int check_rng_health(struct cn10k_rng *rng)
84 if (!rng->reg_base)
87 status = readq(rng->reg_base + RNM_PF_EBG_HEALTH);
89 err = reset_rng_health_state(rng);
91 dev_err(&rng->pdev->dev, "HWRNG: Health test failed (status=%llx)\n",
93 dev_err(&rng->pdev->dev, "HWRNG: error during reset (error=%lx)\n",
102 static bool cn10k_read_trng(struct cn10k_rng *rng, u64 *value)
108 if (rng->extended_trng_regs) {
110 *value = readq(rng->reg_base + RNM_PF_TRNG_DAT);
113 status = readq(rng->reg_base + RNM_PF_TRNG_RES);
119 *value = readq(rng->reg_base + RNM_PF_RANDOM);
125 upper = readq(rng->reg_base + RNM_PF_RANDOM);
126 lower = readq(rng->reg_base + RNM_PF_RANDOM);
128 upper = readq(rng->reg_base + RNM_PF_RANDOM);
130 lower = readq(rng->reg_base + RNM_PF_RANDOM);
140 struct cn10k_rng *rng = (struct cn10k_rng *)hwrng->priv;
146 err = check_rng_health(rng);
153 if (!cn10k_read_trng(rng, &value))
162 if (!cn10k_read_trng(rng, &value))
179 struct cn10k_rng *rng;
182 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL);
183 if (!rng)
186 rng->pdev = pdev;
187 pci_set_drvdata(pdev, rng);
189 rng->reg_base = pcim_iomap(pdev, 0, 0);
190 if (!rng->reg_base)
193 rng->ops.name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
194 "cn10k-rng-%s", dev_name(&pdev->dev));
195 if (!rng->ops.name)
198 rng->ops.read = cn10k_rng_read;
199 rng->ops.priv = (unsigned long)rng;
201 rng->extended_trng_regs = cn10k_is_extended_trng_regs_supported(pdev);
203 reset_rng_health_state(rng);
205 err = devm_hwrng_register(&pdev->dev, &rng->ops);