Lines Matching full:mcu
3 * CZ.NIC's Turris Omnia MCU TRNG driver
18 #include <linux/turris-omnia-mcu-interface.h>
19 #include "turris-omnia-mcu.h"
25 struct omnia_mcu *mcu = dev_id; in omnia_trng_irq_handler() local
27 complete(&mcu->trng_entropy_ready); in omnia_trng_irq_handler()
34 struct omnia_mcu *mcu = container_of(rng, struct omnia_mcu, trng); in omnia_trng_read() local
38 if (!wait && !completion_done(&mcu->trng_entropy_ready)) in omnia_trng_read()
42 if (wait_for_completion_interruptible(&mcu->trng_entropy_ready)) in omnia_trng_read()
45 err = omnia_cmd_read(mcu->client, in omnia_trng_read()
59 int omnia_mcu_register_trng(struct omnia_mcu *mcu) in omnia_mcu_register_trng() argument
61 struct device *dev = &mcu->client->dev; in omnia_mcu_register_trng()
65 if (!(mcu->features & OMNIA_FEAT_TRNG)) in omnia_mcu_register_trng()
74 err = omnia_cmd_read(mcu->client, OMNIA_CMD_TRNG_COLLECT_ENTROPY, in omnia_mcu_register_trng()
79 init_completion(&mcu->trng_entropy_ready); in omnia_mcu_register_trng()
81 err = omnia_mcu_request_irq(mcu, OMNIA_INT_TRNG, omnia_trng_irq_handler, in omnia_mcu_register_trng()
82 "turris-omnia-mcu-trng"); in omnia_mcu_register_trng()
86 mcu->trng.name = "turris-omnia-mcu-trng"; in omnia_mcu_register_trng()
87 mcu->trng.read = omnia_trng_read; in omnia_mcu_register_trng()
89 err = devm_hwrng_register(dev, &mcu->trng); in omnia_mcu_register_trng()