[PATCH 13/13] ARM: stm32mp: add RIFSC system bus driver for STM32MP25

Patrick DELAUNAY patrick.delaunay at foss.st.com
Tue Apr 22 10:44:05 CEST 2025


Hi,

On 4/1/25 15:14, Patrice Chotard wrote:
> From: Patrick Delaunay <patrick.delaunay at foss.st.com>
>
> This driver is checking the access rights of the different
> peripherals connected to the RIFSC bus. If access is denied,
> the associated device is not binded.
>
> Signed-off-by: Gatien Chevallier <gatien.chevallier at foss.st.com>
> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> Signed-off-by: Patrice Chotard <patrice.chotard at foss.st.com>
>
> ---
>
>   arch/arm/mach-stm32mp/include/mach/rif.h |  26 ++
>   arch/arm/mach-stm32mp/stm32mp2/Makefile  |   1 +
>   arch/arm/mach-stm32mp/stm32mp2/rifsc.c   | 364 +++++++++++++++++++++++
>   3 files changed, 391 insertions(+)
>   create mode 100644 arch/arm/mach-stm32mp/include/mach/rif.h
>   create mode 100644 arch/arm/mach-stm32mp/stm32mp2/rifsc.c
>
> diff --git a/arch/arm/mach-stm32mp/include/mach/rif.h b/arch/arm/mach-stm32mp/include/mach/rif.h
> new file mode 100644
> index 00000000000..10b22108120
> --- /dev/null
> +++ b/arch/arm/mach-stm32mp/include/mach/rif.h
> @@ -0,0 +1,26 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause */
> +/*
> + * Copyright (C) 2023, STMicroelectronics - All Rights Reserved
> + */
> +
> +#ifndef MACH_RIF_H
> +#define MACH_RIF_H
> +
> +#include <linux/types.h>
> +
> +/**
> + * stm32_rifsc_check_access - Check RIF accesses for given device node
> + *
> + * @device_node		Node of the device for which the accesses are checked
> + */
> +int stm32_rifsc_check_access(ofnode device_node);
> +
> +/**
> + * stm32_rifsc_check_access - Check RIF accesses for given id
> + *
> + * @device_node		Node of the device to get a reference on RIFSC
> + * @id			ID of the resource to check
> + */
> +int stm32_rifsc_check_access_by_id(ofnode device_node, u32 id);
> +
> +#endif /* MACH_RIF_H*/
> diff --git a/arch/arm/mach-stm32mp/stm32mp2/Makefile b/arch/arm/mach-stm32mp/stm32mp2/Makefile
> index b579ce5a800..5dbf75daa76 100644
> --- a/arch/arm/mach-stm32mp/stm32mp2/Makefile
> +++ b/arch/arm/mach-stm32mp/stm32mp2/Makefile
> @@ -5,5 +5,6 @@
>   
>   obj-y += cpu.o
>   obj-y += arm64-mmu.o
> +obj-y += rifsc.o
>   obj-$(CONFIG_OF_SYSTEM_SETUP) += fdt.o
>   obj-$(CONFIG_STM32MP25X) += stm32mp25x.o
> diff --git a/arch/arm/mach-stm32mp/stm32mp2/rifsc.c b/arch/arm/mach-stm32mp/stm32mp2/rifsc.c
> new file mode 100644
> index 00000000000..48f65365376
> --- /dev/null
> +++ b/arch/arm/mach-stm32mp/stm32mp2/rifsc.c
> @@ -0,0 +1,364 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause
> +/*
> + * Copyright (C) 2023, STMicroelectronics - All Rights Reserved
> + */
> +
> +#define LOG_CATEGORY UCLASS_SIMPLE_BUS
> +


minor:

#define LOG_CATEGORY UCLASS_NOP


to be coherent with driver

....

> +
> +U_BOOT_DRIVER(stm32_rifsc) = {
> +	.name = "stm32_rifsc",
> +	.id = UCLASS_NOP,
> +	.of_match = stm32_rifsc_ids,
> +	.bind = stm32_rifsc_bind,
> +	.remove = stm32_rifsc_remove,
> +	.child_post_bind = stm32_rifsc_child_post_bind,
> +	.child_pre_probe = stm32_rifsc_child_pre_probe,
> +	.child_post_remove = stm32_rifsc_child_post_remove,
> +	.plat_auto = sizeof(struct stm32_rifsc_plat),
> +	.per_child_plat_auto = sizeof(struct stm32_rifsc_child_plat),
> +	.flags = DM_FLAG_OS_PREPARE,
> +};


Anyway


Reviewed-by: Patrick Delaunay <patrick.delaunay at foss.st.com>

Thanks
Patrick




More information about the U-Boot mailing list