// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) /* * Copyright (C) STMicroelectronics 2025 - All Rights Reserved * * SCMI server (based on SCP) configuration in OP-TEE for STMicroelectronics * boards when CA35 is TDCID */ #include / { scmi { compatible = "optee,scmi-server"; #address-cells = <1>; #size-cells = <0>; /* SCMI agent for cortex A35 non-secure */ agent@1 { compatible = "linaro,scmi-optee"; reg = <1>; scmi-channel-id = <0>; #address-cells = <1>; #size-cells = <0>; scmi_clock: protocol@14 { reg = <0x14>; clocks { #address-cells = <1>; #size-cells = <0>; clock@0 { reg = ; domain-name = "ck_icn_hs_mcu"; clocks = <&rcc CK_ICN_HS_MCU>; }; clock@1 { reg = ; domain-name = "ck_icn_sdmmc"; clocks = <&rcc CK_ICN_SDMMC>; }; clock@2 { reg = ; domain-name = "ck_icn_ddr"; clocks = <&rcc CK_ICN_DDR>; }; clock@3 { reg = ; domain-name = "ck_icn_display"; clocks = <&rcc CK_ICN_DISPLAY>; }; clock@4 { reg = ; domain-name = "ck_icn_hsl"; clocks = <&rcc CK_ICN_HSL>; }; clock@5 { reg = ; domain-name = "ck_icn_nic"; clocks = <&rcc CK_ICN_NIC>; }; clock@6 { reg = ; domain-name = "ck_icn_vid"; clocks = <&rcc CK_ICN_VID>; }; clock@7 { reg = ; domain-name = "ck_flexgen_07"; clocks = <&rcc CK_FLEXGEN_07>; }; clock@8 { reg = ; domain-name = "ck_flexgen_08"; clocks = <&rcc CK_FLEXGEN_08>; }; clock@9 { reg = ; domain-name = "ck_flexgen_09"; clocks = <&rcc CK_FLEXGEN_09>; }; clock@a { reg = ; domain-name = "ck_flexgen_10"; clocks = <&rcc CK_FLEXGEN_10>; flags = ; }; clock@b { reg = ; domain-name = "ck_flexgen_11"; clocks = <&rcc CK_FLEXGEN_11>; }; clock@c { reg = ; domain-name = "ck_flexgen_12"; clocks = <&rcc CK_FLEXGEN_12>; }; clock@d { reg = ; domain-name = "ck_flexgen_13"; clocks = <&rcc CK_FLEXGEN_13>; }; clock@e { reg = ; domain-name = "ck_flexgen_14"; clocks = <&rcc CK_FLEXGEN_14>; }; clock@f { reg = ; domain-name = "ck_flexgen_15"; clocks = <&rcc CK_FLEXGEN_15>; }; clock@10 { reg = ; domain-name = "ck_flexgen_16"; clocks = <&rcc CK_FLEXGEN_16>; flags = ; }; clock@11 { reg = ; domain-name = "ck_flexgen_17"; clocks = <&rcc CK_FLEXGEN_17>; }; clock@12 { reg = ; domain-name = "ck_flexgen_18"; clocks = <&rcc CK_FLEXGEN_18>; }; clock@13 { reg = ; domain-name = "ck_flexgen_19"; clocks = <&rcc CK_FLEXGEN_19>; }; clock@14 { reg = ; domain-name = "ck_flexgen_20"; clocks = <&rcc CK_FLEXGEN_20>; }; clock@15 { reg = ; domain-name = "ck_flexgen_21"; clocks = <&rcc CK_FLEXGEN_21>; }; clock@16 { reg = ; domain-name = "ck_flexgen_22"; clocks = <&rcc CK_FLEXGEN_22>; }; clock@17 { reg = ; domain-name = "ck_flexgen_23"; clocks = <&rcc CK_FLEXGEN_23>; flags = ; }; clock@18 { reg = ; domain-name = "ck_flexgen_24"; clocks = <&rcc CK_FLEXGEN_24>; flags = ; }; clock@19 { reg = ; domain-name = "ck_flexgen_25"; clocks = <&rcc CK_FLEXGEN_25>; flags = ; }; clock@1a { reg = ; domain-name = "ck_flexgen_26"; clocks = <&rcc CK_FLEXGEN_26>; }; clock@1b { reg = ; domain-name = "ck_flexgen_27"; clocks = <&rcc CK_FLEXGEN_27>; flags = ; }; clock@1c { reg = ; domain-name = "ck_flexgen_28"; clocks = <&rcc CK_FLEXGEN_28>; }; clock@1d { reg = ; domain-name = "ck_flexgen_29"; clocks = <&rcc CK_FLEXGEN_29>; }; clock@1e { reg = ; domain-name = "ck_flexgen_30"; clocks = <&rcc CK_FLEXGEN_30>; }; clock@1f { reg = ; domain-name = "ck_flexgen_31"; clocks = <&rcc CK_FLEXGEN_31>; }; clock@20 { reg = ; domain-name = "ck_flexgen_32"; clocks = <&rcc CK_FLEXGEN_32>; }; clock@21 { reg = ; domain-name = "ck_flexgen_33"; clocks = <&rcc CK_FLEXGEN_33>; }; clock@22 { reg = ; domain-name = "ck_flexgen_34"; clocks = <&rcc CK_FLEXGEN_34>; }; clock@23 { reg = ; domain-name = "ck_flexgen_35"; clocks = <&rcc CK_FLEXGEN_35>; }; clock@24 { reg = ; domain-name = "ck_flexgen_36"; clocks = <&rcc CK_FLEXGEN_36>; }; clock@25 { reg = ; domain-name = "ck_flexgen_37"; clocks = <&rcc CK_FLEXGEN_37>; }; clock@26 { reg = ; domain-name = "ck_flexgen_38"; clocks = <&rcc CK_FLEXGEN_38>; }; clock@27 { reg = ; domain-name = "ck_flexgen_39"; clocks = <&rcc CK_FLEXGEN_39>; }; clock@28 { reg = ; domain-name = "ck_flexgen_40"; clocks = <&rcc CK_FLEXGEN_40>; }; clock@29 { reg = ; domain-name = "ck_flexgen_41"; clocks = <&rcc CK_FLEXGEN_41>; }; clock@2a { reg = ; domain-name = "ck_flexgen_42"; clocks = <&rcc CK_FLEXGEN_42>; }; clock@2b { reg = ; domain-name = "ck_flexgen_43"; clocks = <&rcc CK_FLEXGEN_43>; }; clock@2c { reg = ; domain-name = "ck_flexgen_44"; clocks = <&rcc CK_FLEXGEN_44>; }; clock@2d { reg = ; domain-name = "ck_flexgen_45"; clocks = <&rcc CK_FLEXGEN_45>; }; clock@2e { reg = ; domain-name = "ck_flexgen_46"; clocks = <&rcc CK_FLEXGEN_46>; }; clock@2f { reg = ; domain-name = "ck_flexgen_47"; clocks = <&rcc CK_FLEXGEN_47>; }; clock@30 { reg = ; domain-name = "ck_flexgen_48"; clocks = <&rcc CK_FLEXGEN_48>; }; clock@31 { reg = ; domain-name = "ck_flexgen_49"; clocks = <&rcc CK_FLEXGEN_49>; }; clock@32 { reg = ; domain-name = "ck_flexgen_50"; clocks = <&rcc CK_FLEXGEN_50>; }; clock@33 { reg = ; domain-name = "ck_flexgen_51"; clocks = <&rcc CK_FLEXGEN_51>; }; clock@34 { reg = ; domain-name = "ck_flexgen_52"; clocks = <&rcc CK_FLEXGEN_52>; }; clock@35 { reg = ; domain-name = "ck_flexgen_53"; clocks = <&rcc CK_FLEXGEN_53>; }; clock@36 { reg = ; domain-name = "ck_flexgen_54"; clocks = <&rcc CK_FLEXGEN_54>; }; clock@37 { reg = ; domain-name = "ck_flexgen_55"; clocks = <&rcc CK_FLEXGEN_55>; }; clock@38 { reg = ; domain-name = "ck_flexgen_56"; clocks = <&rcc CK_FLEXGEN_56>; }; clock@39 { reg = ; domain-name = "ck_flexgen_57"; clocks = <&rcc CK_FLEXGEN_57>; }; clock@3a { reg = ; domain-name = "ck_flexgen_58"; clocks = <&rcc CK_FLEXGEN_58>; }; clock@3b { reg = ; domain-name = "ck_flexgen_59"; clocks = <&rcc CK_FLEXGEN_59>; }; clock@3c { reg = ; domain-name = "ck_flexgen_60"; clocks = <&rcc CK_FLEXGEN_60>; }; clock@3d { reg = ; domain-name = "ck_flexgen_61"; clocks = <&rcc CK_FLEXGEN_61>; }; clock@3e { reg = ; domain-name = "ck_flexgen_62"; clocks = <&rcc CK_FLEXGEN_62>; }; clock@3f { reg = ; domain-name = "ck_flexgen_63"; clocks = <&rcc CK_FLEXGEN_63>; }; clock@40 { reg = ; domain-name = "ck_icn_ls_mcu"; clocks = <&rcc CK_ICN_LS_MCU>; }; clock@41 { reg = ; domain-name = "hse_ck"; clocks = <&rcc HSE_CK>; }; clock@42 { reg = ; domain-name = "lse_ck"; clocks = <&rcc LSE_CK>; }; clock@43 { reg = ; domain-name = "hsi_ck"; clocks = <&rcc HSI_CK>; }; clock@44 { reg = ; domain-name = "lsi_ck"; clocks = <&rcc LSI_CK>; }; clock@45 { reg = ; domain-name = "msi_ck"; clocks = <&rcc MSI_CK>; }; clock@46 { reg = ; domain-name = "hse_div2_ck"; clocks = <&rcc HSE_DIV2_CK>; }; clock@4a { reg = ; domain-name = "ck_pll3"; clocks = <&rcc PLL3_CK>; }; clock@4b { reg = ; domain-name = "ck_bus_rtc"; clocks = <&rcc CK_BUS_RTC>; }; clock@4c { reg = ; domain-name = "rtc_ck"; clocks = <&rcc RTC_CK>; }; clock@4d { reg = ; domain-name = "ck_icn_apb1"; clocks = <&rcc CK_ICN_APB1>; }; clock@4e { reg = ; domain-name = "ck_icn_apb2"; clocks = <&rcc CK_ICN_APB2>; }; clock@4f { reg = ; domain-name = "ck_icn_apb3"; clocks = <&rcc CK_ICN_APB3>; }; clock@50 { reg = ; domain-name = "ck_icn_apb4"; clocks = <&rcc CK_ICN_APB4>; }; clock@51 { reg = ; domain-name = "ck_icn_apbdbg"; clocks = <&rcc CK_ICN_APBDBG>; }; clock@52 { reg = ; domain-name = "timg1_ck"; clocks = <&rcc TIMG1_CK>; }; clock@53 { reg = ; domain-name = "timg2_ck"; clocks = <&rcc TIMG2_CK>; }; clock@57 { reg = ; domain-name = "ck_icn_p_etr"; clocks = <&rcc CK_BUS_ETR>; }; clock@58 { reg = ; domain-name = "ck_ker_fmc"; clocks = <&rcc CK_KER_FMC>; }; clock@59 { reg = ; domain-name = "ck_bus_gpioa"; clocks = <&rcc CK_BUS_GPIOA>; }; clock@5a { reg = ; domain-name = "ck_bus_gpiob"; clocks = <&rcc CK_BUS_GPIOB>; }; clock@5b { reg = ; domain-name = "ck_bus_gpioc"; clocks = <&rcc CK_BUS_GPIOC>; }; clock@5c { reg = ; domain-name = "ck_bus_gpiod"; clocks = <&rcc CK_BUS_GPIOD>; }; clock@5d { reg = ; domain-name = "ck_bus_gpioe"; clocks = <&rcc CK_BUS_GPIOE>; }; clock@5e { reg = ; domain-name = "ck_bus_gpiof"; clocks = <&rcc CK_BUS_GPIOF>; }; clock@5f { reg = ; domain-name = "ck_bus_gpiog"; clocks = <&rcc CK_BUS_GPIOG>; }; clock@60 { reg = ; domain-name = "ck_bus_gpioh"; clocks = <&rcc CK_BUS_GPIOH>; }; clock@61 { reg = ; domain-name = "ck_bus_gpioi"; clocks = <&rcc CK_BUS_GPIOI>; }; clock@62 { reg = ; domain-name = "ck_bus_gpioj"; clocks = <&rcc CK_BUS_GPIOJ>; }; clock@63 { reg = ; domain-name = "ck_bus_gpiok"; clocks = <&rcc CK_BUS_GPIOK>; }; clock@64 { reg = ; domain-name = "ck_bus_gpioz"; clocks = <&rcc CK_BUS_GPIOZ>; }; clock@65 { reg = ; domain-name = "ck_bus_hpdma1"; clocks = <&rcc CK_BUS_HPDMA1>; }; clock@66 { reg = ; domain-name = "ck_bus_hpdma2"; clocks = <&rcc CK_BUS_HPDMA2>; }; clock@67 { reg = ; domain-name = "ck_bus_hpdma3"; clocks = <&rcc CK_BUS_HPDMA3>; }; clock@69 { reg = ; domain-name = "ck_bus_ipcc1"; clocks = <&rcc CK_BUS_IPCC1>; }; clock@6a { reg = ; domain-name = "ck_bus_ipcc2"; clocks = <&rcc CK_BUS_IPCC2>; }; clock@74 { reg = ; domain-name = "ck_ker_ospi1"; clocks = <&rcc CK_KER_OSPI1>; }; clock@75 { reg = ; domain-name = "ck_ker_ospi2"; clocks = <&rcc CK_KER_OSPI2>; }; clock@76 { reg = ; domain-name = "ck_ker_tpiu"; clocks = <&rcc CK_KER_TPIU>; }; clock@77 { reg = ; domain-name = "ck_sys_dbg"; clocks = <&rcc CK_SYSDBG>; }; clock@78 { reg = ; domain-name = "ck_sys_atb"; clocks = <&rcc CK_BUS_SYSATB>; }; clock@7a { reg = ; domain-name = "ck_icn_p_stm"; clocks = <&rcc CK_BUS_STM>; }; clock@7b { reg = ; domain-name = "ck_icn_s_stm"; clocks = <&rcc CK_KER_STM>; }; clock@7c { reg = ; domain-name = "ck_icn_m_etr"; clocks = <&rcc CK_KER_ETR>; }; }; }; scmi_reset: protocol@16 { reg = <0x16>; resets { #address-cells = <1>; #size-cells = <0>; reset@4 { reg = ; domain-name = "fmc"; resets = <&rcc FMC_R>; }; reset@5 { reg = ; domain-name = "ospi1"; resets = <&rcc OSPI1_R>; }; reset@6 { reg = ; domain-name = "ospi1_ddl"; resets = <&rcc OSPI1DLL_R>; }; reset@7 { reg = ; domain-name = "ospi2"; resets = <&rcc OSPI2_R>; }; reset@8 { reg = ; domain-name = "ospi2_ddl"; resets = <&rcc OSPI2DLL_R>; }; }; }; }; }; };