Re: [PATCH v4 2/2] m68k: coldfire: Add RNG support for MCF54418
Greg Ungerer <[email protected]>
| Newsgroups | org.kernel.vger.linux-m68k,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi JM, On 19/8/26 01:09, Jean-Michel Hautbois wrote: > Hi Greg, > > Sorry for the very long silence on this one, it fell off my radar... > > Le 03/12/2025 à 13:15, Greg Ungerer a écrit : >> Hi Jean-Michel, >> >> On 26/11/25 17:08, Jean-Michel Hautbois via B4 Relay wrote: >>> From: Jean-Michel Hautbois <[email protected]> >>> >>> Add support for the hardware Random Number Generator (RNGB) found on >>> MCF54418 ColdFire processors with clock enabled at platform >>> initialization. >>> >>> The RNGB block is compatible with the imx-rngc driver. >>> >>> Reviewed-by: Frank Li <[email protected]> >>> Signed-off-by: Jean-Michel Hautbois <[email protected]> >>> --- >>> arch/m68k/coldfire/device.c | 28 ++++++++++++++++++++++++++++ >>> arch/m68k/coldfire/m5441x.c | 2 +- >>> arch/m68k/include/asm/m5441xsim.h | 9 +++++++++ >>> drivers/char/hw_random/Kconfig | 3 ++- >>> drivers/char/hw_random/imx-rngc.c | 7 +++++++ >>> 5 files changed, 47 insertions(+), 2 deletions(-) >> >> I am happy with the ColdFire arch parts, so from me: >> >> Acked-by: Greg Ungerer <[email protected]> >> >> I don't mind taking this commit via the m68knommu git tree if the hw_rng >> maintainers are ok with that. Otherwise if you break out the arch/m68k >> parts I can apply those on their own. > > I think Herbert acked ? > Do you need another ack ? I would like to see an acknowledgement that taking this patch via the m68knommu git tree (to Linus) is ok with the RNG maintainers. Regards Greg > Thanks ! > JM > >> Regards >> Greg >> >> >> >>> diff --git a/arch/m68k/coldfire/device.c b/arch/m68k/coldfire/device.c >>> index b6958ec2a220..9d8f844e319a 100644 >>> --- a/arch/m68k/coldfire/device.c >>> +++ b/arch/m68k/coldfire/device.c >>> @@ -622,6 +622,31 @@ static struct platform_device mcf_flexcan0 = { >>> }; >>> #endif /* MCFFLEXCAN_SIZE */ >>> +#ifdef MCF_RNG_BASE >>> +/* >>> + * Random Number Generator (RNG) - only on MCF54418 >>> + */ >>> +static struct resource mcf_rng_resource[] = { >>> + { >>> + .start = MCF_RNG_BASE, >>> + .end = MCF_RNG_BASE + MCF_RNG_SIZE - 1, >>> + .flags = IORESOURCE_MEM, >>> + }, >>> + { >>> + .start = MCF_IRQ_RNG, >>> + .end = MCF_IRQ_RNG, >>> + .flags = IORESOURCE_IRQ, >>> + }, >>> +}; >>> + >>> +static struct platform_device mcf_rng = { >>> + .name = "imx-rngc", >>> + .id = -1, >>> + .num_resources = ARRAY_SIZE(mcf_rng_resource), >>> + .resource = mcf_rng_resource, >>> +}; >>> +#endif /* MCF_RNG_BASE */ >>> + >>> static struct platform_device *mcf_devices[] __initdata = { >>> &mcf_uart, >>> #ifdef MCFFEC_BASE0 >>> @@ -660,6 +685,9 @@ static struct platform_device *mcf_devices[] >>> __initdata = { >>> #ifdef MCFFLEXCAN_SIZE >>> &mcf_flexcan0, >>> #endif >>> +#ifdef MCF_RNG_BASE >>> + &mcf_rng, >>> +#endif >>> }; >>> /* >>> diff --git a/arch/m68k/coldfire/m5441x.c b/arch/m68k/coldfire/m5441x.c >>> index 7a25cfc7ac07..ab5b00637237 100644 >>> --- a/arch/m68k/coldfire/m5441x.c >>> +++ b/arch/m68k/coldfire/m5441x.c >>> @@ -158,6 +158,7 @@ static struct clk * const enable_clks[] >>> __initconst = { >>> &__clk_0_33, /* pit.1 */ >>> &__clk_0_37, /* eport */ >>> &__clk_0_48, /* pll */ >>> + &__clk_0_49, /* rng */ >>> &__clk_0_51, /* esdhc */ >>> &__clk_1_36, /* CCM/reset module/Power management */ >>> @@ -179,7 +180,6 @@ static struct clk * const disable_clks[] >>> __initconst = { >>> &__clk_0_44, /* usb otg */ >>> &__clk_0_45, /* usb host */ >>> &__clk_0_47, /* ssi.0 */ >>> - &__clk_0_49, /* rng */ >>> &__clk_0_50, /* ssi.1 */ >>> &__clk_0_53, /* enet-fec */ >>> &__clk_0_54, /* enet-fec */ >>> diff --git a/arch/m68k/include/asm/m5441xsim.h b/arch/m68k/include/ >>> asm/m5441xsim.h >>> index f48cf63bd782..dd64cdfcad3e 100644 >>> --- a/arch/m68k/include/asm/m5441xsim.h >>> +++ b/arch/m68k/include/asm/m5441xsim.h >>> @@ -198,6 +198,15 @@ >>> #define MCFRTC_SIZE (0xfc0a8840 - 0xfc0a8000) >>> #define MCF_IRQ_RTC (MCFINT2_VECBASE + MCFINT2_RTC) >>> +/* >>> + * Random Number Generator (RNG) Module. >>> + * Note: Only present in MCF54418, not in MCF54410/54415/54417 >>> + */ >>> +#define MCF_RNG_BASE 0xfc0c4000 >>> +#define MCF_RNG_SIZE 0x1c >>> +#define MCFINT2_RNG 28 >>> +#define MCF_IRQ_RNG (MCFINT2_VECBASE + MCFINT2_RNG) >>> + >>> /* >>> * GPIO Module. >>> */ >>> diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/ >>> Kconfig >>> index 492a2a61a65b..2f301e43db84 100644 >>> --- 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 >>> || COLDFIRE || COMPILE_TEST >>> 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 d6a847e48339..44f20a05de0a 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" }, >>> + { /* sentinel */ } >>> +}; >>> +MODULE_DEVICE_TABLE(platform, imx_rngc_devtype); >>> + >>> 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); >>> >> >