Hi,

On 4/1/25 15:14, Patrice Chotard wrote:
From: Patrick Delaunay <patrick.delau...@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.chevall...@foss.st.com>
Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chot...@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.delau...@foss.st.com>

Thanks
Patrick


Reply via email to