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

Jean-Michel Hautbois <[email protected]>
Newsgroups org.kernel.vger.linux-crypto,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k
Message-ID <[email protected]>
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 ?

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);
>>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.