On Thu, Apr 18, 2024 at 02:11:12PM +0200, Marek Behún wrote: > Add support for true random number generator provided by the MCU. > New Omnia boards come without the Atmel SHA204-A chip. Instead the > crypto functionality is provided by new microcontroller, which has > a TRNG peripheral. ... > +int omnia_mcu_register_trng(struct omnia_mcu *mcu) > +{ > + struct device *dev = &mcu->client->dev; > + int irq, err; > + u8 irq_idx; > + > + if (!(mcu->features & FEAT_TRNG)) > + return 0; > + irq_idx = omnia_int_to_gpio_idx[__bf_shf(INT_TRNG)]; > + irq = devm_irq_create_mapping(dev, mcu->gc.irq.domain, irq_idx); > + if (irq < 0) > + return dev_err_probe(dev, irq, "Cannot map TRNG IRQ\n"); This looks like some workaround against existing gpiod_to_irq(). Why do you need this? > + init_completion(&mcu->trng_completion); > + > + err = devm_request_threaded_irq(dev, irq, NULL, omnia_trng_irq_handler, > + IRQF_ONESHOT, "turris-omnia-mcu-trng", > + mcu); > + if (err) > + return dev_err_probe(dev, err, "Cannot request TRNG IRQ\n"); > + > + mcu->trng.name = "turris-omnia-mcu-trng"; > + mcu->trng.read = omnia_trng_read; > + mcu->trng.priv = (unsigned long)mcu; > + > + err = devm_hwrng_register(dev, &mcu->trng); > + if (err) > + return dev_err_probe(dev, err, "Cannot register TRNG\n"); > + > + return 0; > +} -- With Best Regards, Andy Shevchenko