106 lines
2.9 KiB
YAML
106 lines
2.9 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/bus/st,stm32mp25-rifsc.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: STM32 Resource isolation framework security controller
|
|
|
|
maintainers:
|
|
- Gatien Chevallier <gatien.chevallier@foss.st.com>
|
|
|
|
description: |
|
|
Resource isolation framework (RIF) is a comprehensive set of hardware blocks
|
|
designed to enforce and manage isolation of STM32 hardware resources like
|
|
memory and peripherals.
|
|
|
|
The RIFSC (RIF security controller) is composed of three sets of registers,
|
|
each managing a specific set of hardware resources:
|
|
- RISC registers associated with RISUP logic (resource isolation device unit
|
|
for peripherals), assign all non-RIF aware peripherals to zero, one or
|
|
any security domains (secure, privilege, compartment).
|
|
- RIMC registers: associated with RIMU logic (resource isolation master
|
|
unit), assign all non RIF-aware bus master to one security domain by
|
|
setting secure, privileged and compartment information on the system bus.
|
|
Alternatively, the RISUP logic controlling the device port access to a
|
|
peripheral can assign target bus attributes to this peripheral master port
|
|
(supported attribute: CID).
|
|
- RISC registers associated with RISAL logic (resource isolation device unit
|
|
for address space - Lite version), assign address space subregions to one
|
|
security domains (secure, privilege, compartment).
|
|
|
|
select:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: st,stm32mp25-rifsc
|
|
required:
|
|
- compatible
|
|
|
|
properties:
|
|
compatible:
|
|
items:
|
|
- const: st,stm32mp25-rifsc
|
|
- const: simple-bus
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
"#address-cells":
|
|
const: 1
|
|
|
|
"#size-cells":
|
|
const: 1
|
|
|
|
ranges: true
|
|
|
|
"#access-controller-cells":
|
|
const: 1
|
|
description:
|
|
Contains the firewall ID associated to the peripheral.
|
|
|
|
patternProperties:
|
|
"^.*@[0-9a-f]+$":
|
|
description: Peripherals
|
|
type: object
|
|
|
|
additionalProperties: true
|
|
|
|
required:
|
|
- access-controllers
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- "#address-cells"
|
|
- "#size-cells"
|
|
- "#access-controller-cells"
|
|
- ranges
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
// In this example, the usart2 device refers to rifsc as its domain
|
|
// controller.
|
|
// Access rights are verified before creating devices.
|
|
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
rifsc: bus@42080000 {
|
|
compatible = "st,stm32mp25-rifsc", "simple-bus";
|
|
reg = <0x42080000 0x1000>;
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
#access-controller-cells = <1>;
|
|
ranges;
|
|
|
|
usart2: serial@400e0000 {
|
|
compatible = "st,stm32h7-uart";
|
|
reg = <0x400e0000 0x400>;
|
|
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
|
|
clocks = <&ck_flexgen_08>;
|
|
access-controllers = <&rifsc 32>;
|
|
};
|
|
};
|