Lines Matching refs:rng

34 static unsigned long reset_rng_health_state(struct cn10k_rng *rng)  in reset_rng_health_state()  argument
43 static int check_rng_health(struct cn10k_rng *rng) in check_rng_health() argument
49 if (!rng->reg_base) in check_rng_health()
52 status = readq(rng->reg_base + RNM_PF_EBG_HEALTH); in check_rng_health()
54 err = reset_rng_health_state(rng); in check_rng_health()
56 dev_err(&rng->pdev->dev, "HWRNG: Health test failed (status=%llx)\n", in check_rng_health()
58 dev_err(&rng->pdev->dev, "HWRNG: error during reset (error=%lx)\n", in check_rng_health()
66 static void cn10k_read_trng(struct cn10k_rng *rng, u64 *value) in cn10k_read_trng() argument
70 *value = readq(rng->reg_base + RNM_PF_RANDOM); in cn10k_read_trng()
76 upper = readq(rng->reg_base + RNM_PF_RANDOM); in cn10k_read_trng()
77 lower = readq(rng->reg_base + RNM_PF_RANDOM); in cn10k_read_trng()
79 upper = readq(rng->reg_base + RNM_PF_RANDOM); in cn10k_read_trng()
81 lower = readq(rng->reg_base + RNM_PF_RANDOM); in cn10k_read_trng()
90 struct cn10k_rng *rng = (struct cn10k_rng *)hwrng->priv; in cn10k_rng_read() local
96 err = check_rng_health(rng); in cn10k_rng_read()
103 cn10k_read_trng(rng, &value); in cn10k_rng_read()
111 cn10k_read_trng(rng, &value); in cn10k_rng_read()
126 struct cn10k_rng *rng; in cn10k_rng_probe() local
129 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in cn10k_rng_probe()
130 if (!rng) in cn10k_rng_probe()
133 rng->pdev = pdev; in cn10k_rng_probe()
134 pci_set_drvdata(pdev, rng); in cn10k_rng_probe()
136 rng->reg_base = pcim_iomap(pdev, 0, 0); in cn10k_rng_probe()
137 if (!rng->reg_base) { in cn10k_rng_probe()
142 rng->ops.name = devm_kasprintf(&pdev->dev, GFP_KERNEL, in cn10k_rng_probe()
144 if (!rng->ops.name) in cn10k_rng_probe()
147 rng->ops.read = cn10k_rng_read; in cn10k_rng_probe()
148 rng->ops.priv = (unsigned long)rng; in cn10k_rng_probe()
150 reset_rng_health_state(rng); in cn10k_rng_probe()
152 err = devm_hwrng_register(&pdev->dev, &rng->ops); in cn10k_rng_probe()