[PATCH v2 2/2] m68k: coldfire: Add RNG support for MCF54418

Jean-Michel Hautbois jeanmichel.hautbois at yoseli.org
Mon Nov 10 00:34:42 PST 2025


Hi Geert,

Le lundi 10 novembre 2025, 09:15:11 heure normale d’Europe centrale Geert 
Uytterhoeven a écrit :
> Hi Jean-Michel,
> 
> On Fri, 7 Nov 2025 at 11:29, Jean-Michel Hautbois
> 
> <jeanmichel.hautbois at yoseli.org> wrote:
> > Add platform device support for the MCF54418 RNGB hardware with clock
> > enabled at platform initialization.
> > 
> > The imx-rngc driver now uses devm_clk_get_optional() to support both
> > Coldfire (always-on clock) and i.MX platforms (managed clock).
> > 
> > Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at yoseli.org>
> 
> Thanks for your patch!
> 
> > --- a/drivers/char/hw_random/Kconfig
> > +++ b/drivers/char/hw_random/Kconfig
> > @@ -270,12 +270,13 @@ config HW_RANDOM_MXC_RNGA
> > 
> >  config HW_RANDOM_IMX_RNGC
> >  
> >         tristate "Freescale i.MX RNGC Random Number Generator"
> >         depends on HAS_IOMEM
> > 
> > -       depends on SOC_IMX25 || SOC_IMX6SL || SOC_IMX6SLL || SOC_IMX6UL ||
> > COMPILE_TEST +       depends on SOC_IMX25 || SOC_IMX6SL || SOC_IMX6SLL ||
> > SOC_IMX6UL || M5441x || COMPILE_TEST
> Is the same RNG present in other Coldfire SoCs?

According to the RM, it is only present in MCF54416 and MCF54418.

> 
> >         default HW_RANDOM
> >         help
> >         
> >           This driver provides kernel-side support for the Random Number
> >           Generator Version C hardware found on some Freescale i.MX
> >           processors. Version B is also supported by this driver.
> > 
> > +         Also supports RNGB on Freescale MCF54418 (Coldfire V4e).
> > 
> >           To compile this driver as a module, choose M here: the
> >           module will be called imx-rngc.
> > 
> > diff --git a/drivers/char/hw_random/imx-rngc.c
> > b/drivers/char/hw_random/imx-rngc.c index
> > 241664a9b5d9ac7244f15cbe5d5302ca3787ebea..44f20a05de0a425cb6ff7b2a347b111
> > 750ac3702 100644 --- a/drivers/char/hw_random/imx-rngc.c
> > +++ b/drivers/char/hw_random/imx-rngc.c
> > @@ -353,12 +353,19 @@ static const struct of_device_id imx_rngc_dt_ids[] =
> > {> 
> >  };
> >  MODULE_DEVICE_TABLE(of, imx_rngc_dt_ids);
> > 
> > +static const struct platform_device_id imx_rngc_devtype[] = {
> > +       { .name = "imx-rngc" },
> 
> I believe this is identical to KBUILD_MODNAME, so the .name below
> should be sufficient for binding?
> 
> > +       { /* sentinel */ }
> > +};
> > +MODULE_DEVICE_TABLE(platform, imx_rngc_devtype);
> 
> Or do you need this mainly for the addition of MODULE_DEVICE_TABLE(),
> i.e. the module is not auto-loaded based on just KBUILD_MODNAME?

Yes, exactly. If you have a better way, I will happily apply it :-).

Thanks !
JM

> 
> > +
> > 
> >  static struct platform_driver imx_rngc_driver = {
> >  
> >         .driver = {
> >         
> >                 .name = KBUILD_MODNAME,
> 
>                   ^^^^^^^^^^^^^^^^^^^^^^^
> 
> >                 .pm = pm_ptr(&imx_rngc_pm_ops),
> >                 .of_match_table = imx_rngc_dt_ids,
> >         
> >         },
> > 
> > +       .id_table = imx_rngc_devtype,
> > 
> >  };
> >  
> >  module_platform_driver_probe(imx_rngc_driver, imx_rngc_probe);
> 
> Gr{oetje,eeting}s,
> 
>                         Geert







More information about the linux-arm-kernel mailing list