diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2022-08-03 16:55:16 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2022-08-03 17:56:03 +0300 |
commit | bec4ebc22c43c1ff5c3fddb820d44a88bd3aebf0 (patch) | |
tree | cd378e3e0eaff8fe11880bd397f41671e2347a39 /meta-arm/meta-arm-bsp/recipes-kernel/linux/files | |
parent | 79161d7a7126cad324ff0c11a93d8e57d80203ed (diff) | |
download | openbmc-bec4ebc22c43c1ff5c3fddb820d44a88bd3aebf0.tar.xz |
Import 80d60e7 from yoctoproject.org meta-arm
To support ARMv8 SoCs.
meta-arm has several patch files. Since they are maintained by the
upstream meta-arm community, add meta-arm to the ignore list in
run-repotest.
Change-Id: Ia87a2e947bbabd347d256eccc47a343e1c885479
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-arm/meta-arm-bsp/recipes-kernel/linux/files')
6 files changed, 1046 insertions, 0 deletions
diff --git a/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/0001-UPSTREAM-firmware-arm_ffa-Handle-compatibility-with-.patch b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/0001-UPSTREAM-firmware-arm_ffa-Handle-compatibility-with-.patch new file mode 100644 index 0000000000..a4fd673084 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/0001-UPSTREAM-firmware-arm_ffa-Handle-compatibility-with-.patch @@ -0,0 +1,90 @@ +Upstream-Status: Backport [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8e3f9da608f14cfebac2659d8dd8737b79d01308] +Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> + +From a8f3e351c07c48774be2a45e184b9f08dc92f1db Mon Sep 17 00:00:00 2001 +From: Sudeep Holla <sudeep.holla@arm.com> +Date: Wed, 13 Apr 2022 15:43:19 +0100 +Subject: [PATCH] UPSTREAM: firmware: arm_ffa: Handle compatibility with + different firmware versions + +The driver currently just support v1.0 of Arm FFA specification. It also +expects the firmware implementation to match the same and bail out if it +doesn't match. This is causing issue when running with higher version of +firmware implementation(e.g. v1.1 which will released soon). + +In order to support compatibility with different firmware versions, let +us add additional checks and find the compatible version the driver can +work with. + +Link: https://lore.kernel.org/r/20211013091127.990992-1-sudeep.holla@arm.com +Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> +Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> +(cherry picked from commit 8e3f9da608f14cfebac2659d8dd8737b79d01308) +Change-Id: I7bc9a3b172a9067bfd4e9bb9d50b4729e915b5a5 +Bug: 168585974 +--- + drivers/firmware/arm_ffa/driver.c | 37 ++++++++++++++++++++++++++----- + 1 file changed, 32 insertions(+), 5 deletions(-) + +diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c +index c9fb56afbcb4..6e0c883ab708 100644 +--- a/drivers/firmware/arm_ffa/driver.c ++++ b/drivers/firmware/arm_ffa/driver.c +@@ -167,6 +167,28 @@ struct ffa_drv_info { + + static struct ffa_drv_info *drv_info; + ++/* ++ * The driver must be able to support all the versions from the earliest ++ * supported FFA_MIN_VERSION to the latest supported FFA_DRIVER_VERSION. ++ * The specification states that if firmware supports a FFA implementation ++ * that is incompatible with and at a greater version number than specified ++ * by the caller(FFA_DRIVER_VERSION passed as parameter to FFA_VERSION), ++ * it must return the NOT_SUPPORTED error code. ++ */ ++static u32 ffa_compatible_version_find(u32 version) ++{ ++ u32 compat_version; ++ u16 major = MAJOR_VERSION(version), minor = MINOR_VERSION(version); ++ u16 drv_major = MAJOR_VERSION(FFA_DRIVER_VERSION); ++ u16 drv_minor = MINOR_VERSION(FFA_DRIVER_VERSION); ++ ++ if ((major < drv_major) || (major == drv_major && minor <= drv_minor)) ++ return version; ++ ++ pr_info("Firmware version higher than driver version, downgrading\n"); ++ return FFA_DRIVER_VERSION; ++} ++ + static int ffa_version_check(u32 *version) + { + ffa_value_t ver; +@@ -180,15 +202,20 @@ static int ffa_version_check(u32 *version) + return -EOPNOTSUPP; + } + +- if (ver.a0 < FFA_MIN_VERSION || ver.a0 > FFA_DRIVER_VERSION) { +- pr_err("Incompatible version %d.%d found\n", +- MAJOR_VERSION(ver.a0), MINOR_VERSION(ver.a0)); ++ if (ver.a0 < FFA_MIN_VERSION) { ++ pr_err("Incompatible v%d.%d! Earliest supported v%d.%d\n", ++ MAJOR_VERSION(ver.a0), MINOR_VERSION(ver.a0), ++ MAJOR_VERSION(FFA_MIN_VERSION), ++ MINOR_VERSION(FFA_MIN_VERSION)); + return -EINVAL; + } + +- *version = ver.a0; +- pr_info("Version %d.%d found\n", MAJOR_VERSION(ver.a0), ++ pr_info("Driver version %d.%d\n", MAJOR_VERSION(FFA_DRIVER_VERSION), ++ MINOR_VERSION(FFA_DRIVER_VERSION)); ++ pr_info("Firmware version %d.%d found\n", MAJOR_VERSION(ver.a0), + MINOR_VERSION(ver.a0)); ++ *version = ffa_compatible_version_find(ver.a0); ++ + return 0; + } + +-- +2.17.1 + diff --git a/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/corstone1000_kernel_debug.cfg b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/corstone1000_kernel_debug.cfg new file mode 100644 index 0000000000..aad9e93a64 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/corstone1000_kernel_debug.cfg @@ -0,0 +1,3 @@ +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_INFO_DWARF4=y diff --git a/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/defconfig b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/defconfig new file mode 100644 index 0000000000..5f0a7e9198 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/defconfig @@ -0,0 +1,94 @@ +CONFIG_LOCALVERSION="-yocto-standard" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_LOG_BUF_SHIFT=13 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=13 +CONFIG_RELAY=y +CONFIG_BOOT_CONFIG=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_CMDLINE="console=ttyAMA0 loglevel=9" +CONFIG_EFI=y +# CONFIG_SUSPEND is not set +CONFIG_ARM_FFA_TRANSPORT=y +CONFIG_EFI_BOOTLOADER_CONTROL=y +CONFIG_EFI_CAPSULE_LOADER=y +CONFIG_EFI_TEST=y +CONFIG_RESET_ATTACK_MITIGATION=y +# CONFIG_STACKPROTECTOR is not set +CONFIG_MODULES=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_SCHED=y +CONFIG_DEVTMPFS=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_NETDEVICES=y +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HISILICON is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +CONFIG_SMC91X=y +CONFIG_SMSC911X=y +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_USB=y +CONFIG_USB_STORAGE=y +CONFIG_USB_UAS=y +CONFIG_USB_ISP1760=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y +CONFIG_TEE=y +CONFIG_OPTEE=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_CONFIGFS_FS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_860=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_UTF8=y +CONFIG_LIBCRC32C=y +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_DEBUG_FS=y +CONFIG_PANIC_TIMEOUT=5 +CONFIG_STACKTRACE=y diff --git a/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/fvp-base-arm32/0001-ARM-vexpress-enable-GICv3.patch b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/fvp-base-arm32/0001-ARM-vexpress-enable-GICv3.patch new file mode 100644 index 0000000000..d0a05c2462 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/fvp-base-arm32/0001-ARM-vexpress-enable-GICv3.patch @@ -0,0 +1,31 @@ +From 5dbb6c4267b1e46ed08359be363d8bc9b6a79397 Mon Sep 17 00:00:00 2001 +From: Ryan Harkin <ryan.harkin@linaro.org> +Date: Wed, 16 Nov 2016 14:43:02 +0000 +Subject: [PATCH] ARM: vexpress: enable GICv3 + +Upstream-Status: Pending + +ARMv8 targets such as ARM's FVP Cortex-A32 model can run the 32-bit +ARMv7 kernel. And these targets often contain GICv3. + +Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org> +Signed-off-by: Jon Medhurst <tixy@linaro.org> +--- + arch/arm/mach-vexpress/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig +index 7c728ebc0b33..ed579382d41f 100644 +--- a/arch/arm/mach-vexpress/Kconfig ++++ b/arch/arm/mach-vexpress/Kconfig +@@ -4,6 +4,7 @@ menuconfig ARCH_VEXPRESS + select ARCH_SUPPORTS_BIG_ENDIAN + select ARM_AMBA + select ARM_GIC ++ select ARM_GIC_V3 + select ARM_GLOBAL_TIMER + select ARM_TIMER_SP804 + select COMMON_CLK_VERSATILE +-- +2.17.1 + diff --git a/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/fvp-baser-aemv8r64/fvp-baser-aemv8r64.dts b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/fvp-baser-aemv8r64/fvp-baser-aemv8r64.dts new file mode 100644 index 0000000000..6911a598f7 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/fvp-baser-aemv8r64/fvp-baser-aemv8r64.dts @@ -0,0 +1,212 @@ +/dts-v1/; + +/ { + + #address-cells = <0x2>; + #size-cells = <0x2>; + interrupt-parent = <0x1>; + model = "Generated"; + compatible = "arm,base"; + + memory@0 { + #address-cells = <0x2>; + #size-cells = <0x2>; + device_type = "memory"; + reg = <0x0 0x0 0x0 0x80000000>, + <0x00000008 0x80000000 0x0 0x80000000>; + }; + + cpus { + #address-cells = <0x2>; + #size-cells = <0x0>; + + cpu-map { + cluster0 { + core0 { thread0 { cpu = <&CPU_0>; }; }; + core1 { thread0 { cpu = <&CPU_1>; }; }; + core2 { thread0 { cpu = <&CPU_2>; }; }; + core3 { thread0 { cpu = <&CPU_3>; }; }; + }; + }; + + CPU_0: cpu@0 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x0>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x7f800>; + }; + + CPU_1: cpu@1 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x1>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x7f808>; + }; + + CPU_2: cpu@2 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x2>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x7f810>; + }; + + CPU_3: cpu@3 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x3>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x7f818>; + }; + }; + + interrupt-controller@af000000 { + compatible = "arm,gic-v3"; + #interrupt-cells = <0x3>; + #address-cells = <0x2>; + #size-cells = <0x2>; + ranges; + interrupt-controller; + #redistributor-regions = <0x1>; + reg = <0x0 0xaf000000 0x0 0x10000>, // GICD + <0x0 0xaf100000 0x0 0x100000>, // GICR + <0x0 0xac000000 0x0 0x2000>, // GICC + <0x0 0xac010000 0x0 0x2000>, // GICH + <0x0 0xac02f000 0x0 0x2000>; // GICV + interrupts = <0x1 9 0x4>; + linux,phandle = <0x1>; + phandle = <0x1>; + + its: msi-controller@2f020000 { + #msi-cells = <1>; + compatible = "arm,gic-v3-its"; + reg = <0x0 0xaf020000 0x0 0x20000>; // GITS + msi-controller; + }; + + }; + + refclk100mhz: refclk100mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <100000000>; + clock-output-names = "apb_pclk"; + }; + + refclk24mhz: refclk24mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + clock-output-names = "refclk24mhz"; + }; + + refclk1hz: refclk1hz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <1>; + clock-output-names = "refclk1hz"; + }; + + uart@9c090000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x0 0x9c090000 0x0 0x1000>; + interrupts = <0x0 5 0x4>; + clocks = <&refclk24mhz>, <&refclk100mhz>; + clock-names = "uartclk", "apb_pclk"; + }; + + uart@9c0a0000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x0 0x9c0a0000 0x0 0x1000>; + interrupts = <0x0 6 0x4>; + clocks = <&refclk24mhz>, <&refclk100mhz>; + clock-names = "uartclk", "apb_pclk"; + }; + + uart@9c0b0000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x0 0x9c0b0000 0x0 0x1000>; + interrupts = <0x0 7 0x4>; + clocks = <&refclk24mhz>, <&refclk100mhz>; + clock-names = "uartclk", "apb_pclk"; + }; + + uart@9c0c0000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x0 0x9c0c0000 0x0 0x1000>; + interrupts = <0x0 8 0x4>; + clocks = <&refclk24mhz>, <&refclk100mhz>; + clock-names = "uartclk", "apb_pclk"; + }; + + wdt@9c0f0000 { + compatible = "arm,sp805", "arm,primecell"; + reg = <0x0 0x9c0f0000 0x0 0x1000>; + interrupts = <0x0 0 0x4>; + clocks = <&refclk24mhz>, <&refclk100mhz>; + clock-names = "wdog_clk", "apb_pclk"; + }; + + rtc@9c170000 { + compatible = "arm,pl031", "arm,primecell"; + reg = <0x0 0x9c170000 0x0 0x1000>; + interrupts = <0x0 4 0x4>; + clocks = <&refclk1hz>; + clock-names = "apb_pclk"; + }; + + virtio-block@9c130000 { + compatible = "virtio,mmio"; + reg = <0 0x9c130000 0 0x200>; + interrupts = <0x0 42 0x4>; + }; + + virtio-p9@9c140000{ + compatible = "virtio,mmio"; + reg = <0x0 0x9c140000 0x0 0x1000>; + interrupts = <0x0 43 0x4>; + }; + + virtio-net@9c150000 { + compatible = "virtio,mmio"; + reg = <0 0x9c150000 0 0x200>; + interrupts = <0x0 44 0x4>; + }; + + virtio-rng@9c200000 { + compatible = "virtio,mmio"; + reg = <0 0x9c200000 0 0x200>; + interrupts = <0x0 46 0x4>; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = <0x1 13 0xff08>, + <0x1 14 0xff08>, + <0x1 11 0xff08>, + <0x1 4 0xff08>; + clock-frequency = <100000000>; + }; + + aliases { + serial0 = "/uart@9c090000"; + serial1 = "/uart@9c0a0000"; + serial2 = "/uart@9c0b0000"; + serial3 = "/uart@9c0c0000"; + }; + + pmu { + compatible = "arm,armv8-pmuv3"; + interrupts = <0 60 4>, + <0 61 4>, + <0 62 4>, + <0 63 4>; + }; + + chosen { + bootargs = "earlycon console=ttyAMA0 loglevel=8 rootfstype=ext4 root=/dev/vda1 rw"; + stdout-path = "serial0"; + }; +}; diff --git a/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/juno/juno-dts-mhu-doorbell.patch b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/juno/juno-dts-mhu-doorbell.patch new file mode 100644 index 0000000000..81f641c478 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/juno/juno-dts-mhu-doorbell.patch @@ -0,0 +1,616 @@ +Add MHU doorbell support and SCMI device nodes to the Juno DeviceTree. + +Patch taken from https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git/log/?h=scmi_dt_defconfig + +Upstream-Status: Pending +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 821ffd8e5dc4d2fb2716d5fb912b343b932e1e77 Mon Sep 17 00:00:00 2001 +From: Sudeep Holla <sudeep.holla@arm.com> +Date: Thu, 20 Apr 2017 11:58:01 +0100 +Subject: [PATCH] arm64: dts: juno: add mhu doorbell support and scmi device + nodes + +Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> +--- + arch/arm64/boot/dts/arm/juno-base.dtsi | 139 ++++++++++++---------- + arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi | 6 +- + arch/arm64/boot/dts/arm/juno-r1.dts | 12 +- + arch/arm64/boot/dts/arm/juno-r2.dts | 12 +- + arch/arm64/boot/dts/arm/juno.dts | 12 +- + 5 files changed, 96 insertions(+), 85 deletions(-) + +diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi +index 6288e104a089..36844f7d861e 100644 +--- a/arch/arm64/boot/dts/arm/juno-base.dtsi ++++ b/arch/arm64/boot/dts/arm/juno-base.dtsi +@@ -23,11 +23,12 @@ frame@2a830000 { + }; + + mailbox: mhu@2b1f0000 { +- compatible = "arm,mhu", "arm,primecell"; ++ compatible = "arm,mhu-doorbell", "arm,primecell"; + reg = <0x0 0x2b1f0000 0x0 0x1000>; + interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; +- #mbox-cells = <1>; ++ #mbox-cells = <2>; ++ mbox-name = "ARM-MHU"; + clocks = <&soc_refclk100mhz>; + clock-names = "apb_pclk"; + }; +@@ -39,7 +40,7 @@ smmu_gpu: iommu@2b400000 { + <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; + #iommu-cells = <1>; + #global-interrupts = <1>; +- power-domains = <&scpi_devpd 1>; ++ power-domains = <&scmi_devpd 9>; + dma-coherent; + status = "disabled"; + }; +@@ -63,7 +64,7 @@ smmu_etr: iommu@2b600000 { + #iommu-cells = <1>; + #global-interrupts = <1>; + dma-coherent; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + }; + + gic: interrupt-controller@2c010000 { +@@ -123,7 +124,7 @@ etf@20010000 { /* etf0 */ + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + + in-ports { + port { +@@ -147,7 +148,7 @@ tpiu@20030000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + in-ports { + port { + tpiu_in_port: endpoint { +@@ -164,7 +165,7 @@ main_funnel: funnel@20040000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + + out-ports { + port { +@@ -201,7 +202,7 @@ etr@20070000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + arm,scatter-gather; + in-ports { + port { +@@ -220,7 +221,7 @@ stm@20100000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + stm_out_port: endpoint { +@@ -235,7 +236,7 @@ replicator@20120000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + + out-ports { + #address-cells = <1>; +@@ -270,7 +271,7 @@ cpu_debug0: cpu-debug@22010000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + }; + + etm0: etm@22040000 { +@@ -279,7 +280,7 @@ etm0: etm@22040000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster0_etm0_out_port: endpoint { +@@ -295,7 +296,7 @@ funnel@220c0000 { /* cluster0 funnel */ + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster0_funnel_out_port: endpoint { +@@ -330,7 +331,7 @@ cpu_debug1: cpu-debug@22110000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + }; + + etm1: etm@22140000 { +@@ -339,7 +340,7 @@ etm1: etm@22140000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster0_etm1_out_port: endpoint { +@@ -355,7 +356,7 @@ cpu_debug2: cpu-debug@23010000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + }; + + etm2: etm@23040000 { +@@ -364,7 +365,7 @@ etm2: etm@23040000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster1_etm0_out_port: endpoint { +@@ -380,7 +381,7 @@ funnel@230c0000 { /* cluster1 funnel */ + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster1_funnel_out_port: endpoint { +@@ -427,7 +428,7 @@ cpu_debug3: cpu-debug@23110000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + }; + + etm3: etm@23140000 { +@@ -436,7 +437,7 @@ etm3: etm@23140000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster1_etm1_out_port: endpoint { +@@ -452,7 +453,7 @@ cpu_debug4: cpu-debug@23210000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + }; + + etm4: etm@23240000 { +@@ -461,7 +462,7 @@ etm4: etm@23240000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster1_etm2_out_port: endpoint { +@@ -477,7 +478,7 @@ cpu_debug5: cpu-debug@23310000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + }; + + etm5: etm@23340000 { +@@ -486,7 +487,7 @@ etm5: etm@23340000 { + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + cluster1_etm3_out_port: endpoint { +@@ -503,8 +504,8 @@ gpu: gpu@2d000000 { + <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "job", "mmu", "gpu"; +- clocks = <&scpi_dvfs 2>; +- power-domains = <&scpi_devpd 1>; ++ clocks = <&scmi_dvfs 2>; ++ power-domains = <&scmi_devpd 9>; + dma-coherent; + /* The SMMU is only really of interest to bare-metal hypervisors */ + /* iommus = <&smmu_gpu 0>; */ +@@ -519,14 +520,24 @@ sram: sram@2e000000 { + #size-cells = <1>; + ranges = <0 0x0 0x2e000000 0x8000>; + +- cpu_scp_lpri: scp-sram@0 { +- compatible = "arm,juno-scp-shmem"; +- reg = <0x0 0x200>; ++ cpu_scp_lpri0: scp-sram@0 { ++ compatible = "arm,scmi-shmem"; ++ reg = <0x0 0x80>; + }; + +- cpu_scp_hpri: scp-sram@200 { +- compatible = "arm,juno-scp-shmem"; +- reg = <0x200 0x200>; ++ cpu_scp_lpri1: scp-sram@80 { ++ compatible = "arm,scmi-shmem"; ++ reg = <0x80 0x80>; ++ }; ++ ++ cpu_scp_hpri0: scp-sram@100 { ++ compatible = "arm,scmi-shmem"; ++ reg = <0x100 0x80>; ++ }; ++ ++ cpu_scp_hpri1: scp-sram@180 { ++ compatible = "arm,scmi-shmem"; ++ reg = <0x180 0x80>; + }; + }; + +@@ -558,37 +569,37 @@ pcie_ctlr: pcie@40000000 { + iommu-map = <0x0 &smmu_pcie 0x0 0x1>; + }; + +- scpi { +- compatible = "arm,scpi"; +- mboxes = <&mailbox 1>; +- shmem = <&cpu_scp_hpri>; ++ firmware { ++ scmi { ++ compatible = "arm,scmi"; ++ mbox-names = "tx", "rx"; ++ mboxes = <&mailbox 0 0 &mailbox 0 1>; ++ shmem = <&cpu_scp_lpri0 &cpu_scp_lpri1>; ++ #address-cells = <1>; ++ #size-cells = <0>; + +- clocks { +- compatible = "arm,scpi-clocks"; ++ scmi_devpd: protocol@11 { ++ reg = <0x11>; ++ #power-domain-cells = <1>; ++ }; + +- scpi_dvfs: clocks-0 { +- compatible = "arm,scpi-dvfs-clocks"; ++ scmi_dvfs: protocol@13 { ++ reg = <0x13>; + #clock-cells = <1>; +- clock-indices = <0>, <1>, <2>; +- clock-output-names = "atlclk", "aplclk","gpuclk"; ++ mbox-names = "tx", "rx"; ++ mboxes = <&mailbox 1 0 &mailbox 1 1>; ++ shmem = <&cpu_scp_hpri0 &cpu_scp_hpri1>; + }; +- scpi_clk: clocks-1 { +- compatible = "arm,scpi-variable-clocks"; ++ ++ scmi_clk: protocol@14 { ++ reg = <0x14>; + #clock-cells = <1>; +- clock-indices = <3>; +- clock-output-names = "pxlclk"; + }; +- }; + +- scpi_devpd: power-controller { +- compatible = "arm,scpi-power-domains"; +- num-domains = <2>; +- #power-domain-cells = <1>; +- }; +- +- scpi_sensors0: sensors { +- compatible = "arm,scpi-sensors"; +- #thermal-sensor-cells = <1>; ++ scmi_sensors0: protocol@15 { ++ reg = <0x15>; ++ #thermal-sensor-cells = <1>; ++ }; + }; + }; + +@@ -596,40 +607,40 @@ thermal-zones { + pmic { + polling-delay = <1000>; + polling-delay-passive = <100>; +- thermal-sensors = <&scpi_sensors0 0>; ++ thermal-sensors = <&scmi_sensors0 0>; + }; + + soc { + polling-delay = <1000>; + polling-delay-passive = <100>; +- thermal-sensors = <&scpi_sensors0 3>; ++ thermal-sensors = <&scmi_sensors0 3>; + }; + + big_cluster_thermal_zone: big-cluster { + polling-delay = <1000>; + polling-delay-passive = <100>; +- thermal-sensors = <&scpi_sensors0 21>; ++ thermal-sensors = <&scmi_sensors0 21>; + status = "disabled"; + }; + + little_cluster_thermal_zone: little-cluster { + polling-delay = <1000>; + polling-delay-passive = <100>; +- thermal-sensors = <&scpi_sensors0 22>; ++ thermal-sensors = <&scmi_sensors0 22>; + status = "disabled"; + }; + + gpu0_thermal_zone: gpu0 { + polling-delay = <1000>; + polling-delay-passive = <100>; +- thermal-sensors = <&scpi_sensors0 23>; ++ thermal-sensors = <&scmi_sensors0 23>; + status = "disabled"; + }; + + gpu1_thermal_zone: gpu1 { + polling-delay = <1000>; + polling-delay-passive = <100>; +- thermal-sensors = <&scpi_sensors0 24>; ++ thermal-sensors = <&scmi_sensors0 24>; + status = "disabled"; + }; + }; +@@ -705,7 +716,7 @@ hdlcd@7ff50000 { + reg = <0 0x7ff50000 0 0x1000>; + interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; + iommus = <&smmu_hdlcd1 0>; +- clocks = <&scpi_clk 3>; ++ clocks = <&scmi_clk 3>; + clock-names = "pxlclk"; + + port { +@@ -720,7 +731,7 @@ hdlcd@7ff60000 { + reg = <0 0x7ff60000 0 0x1000>; + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; + iommus = <&smmu_hdlcd0 0>; +- clocks = <&scpi_clk 3>; ++ clocks = <&scmi_clk 3>; + clock-names = "pxlclk"; + + port { +diff --git a/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi b/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi +index eda3d9e18af6..e6ecb0dfcbcd 100644 +--- a/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi ++++ b/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi +@@ -6,7 +6,7 @@ funnel@20130000 { /* cssys1 */ + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + csys1_funnel_out_port: endpoint { +@@ -29,7 +29,7 @@ etf@20140000 { /* etf1 */ + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + in-ports { + port { + etf1_in_port: endpoint { +@@ -52,7 +52,7 @@ funnel@20150000 { /* cssys2 */ + + clocks = <&soc_smc50mhz>; + clock-names = "apb_pclk"; +- power-domains = <&scpi_devpd 0>; ++ power-domains = <&scmi_devpd 8>; + out-ports { + port { + csys2_funnel_out_port: endpoint { +diff --git a/arch/arm64/boot/dts/arm/juno-r1.dts b/arch/arm64/boot/dts/arm/juno-r1.dts +index 0e24e29eb9b1..fee67943f4d5 100644 +--- a/arch/arm64/boot/dts/arm/juno-r1.dts ++++ b/arch/arm64/boot/dts/arm/juno-r1.dts +@@ -96,7 +96,7 @@ A57_0: cpu@0 { + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&A57_L2>; +- clocks = <&scpi_dvfs 0>; ++ clocks = <&scmi_dvfs 0>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <1024>; + }; +@@ -113,7 +113,7 @@ A57_1: cpu@1 { + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&A57_L2>; +- clocks = <&scpi_dvfs 0>; ++ clocks = <&scmi_dvfs 0>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <1024>; + }; +@@ -130,7 +130,7 @@ A53_0: cpu@100 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + }; +@@ -147,7 +147,7 @@ A53_1: cpu@101 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + }; +@@ -164,7 +164,7 @@ A53_2: cpu@102 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + }; +@@ -181,7 +181,7 @@ A53_3: cpu@103 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + }; +diff --git a/arch/arm64/boot/dts/arm/juno-r2.dts b/arch/arm64/boot/dts/arm/juno-r2.dts +index e609420ce3e4..7792626eb29e 100644 +--- a/arch/arm64/boot/dts/arm/juno-r2.dts ++++ b/arch/arm64/boot/dts/arm/juno-r2.dts +@@ -96,7 +96,7 @@ A72_0: cpu@0 { + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&A72_L2>; +- clocks = <&scpi_dvfs 0>; ++ clocks = <&scmi_dvfs 0>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <1024>; + dynamic-power-coefficient = <450>; +@@ -114,7 +114,7 @@ A72_1: cpu@1 { + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&A72_L2>; +- clocks = <&scpi_dvfs 0>; ++ clocks = <&scmi_dvfs 0>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <1024>; + dynamic-power-coefficient = <450>; +@@ -132,7 +132,7 @@ A53_0: cpu@100 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <485>; + dynamic-power-coefficient = <140>; +@@ -150,7 +150,7 @@ A53_1: cpu@101 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <485>; + dynamic-power-coefficient = <140>; +@@ -168,7 +168,7 @@ A53_2: cpu@102 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <485>; + dynamic-power-coefficient = <140>; +@@ -186,7 +186,7 @@ A53_3: cpu@103 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <485>; + dynamic-power-coefficient = <140>; +diff --git a/arch/arm64/boot/dts/arm/juno.dts b/arch/arm64/boot/dts/arm/juno.dts +index f00cffbd032c..a28316c65c1b 100644 +--- a/arch/arm64/boot/dts/arm/juno.dts ++++ b/arch/arm64/boot/dts/arm/juno.dts +@@ -95,7 +95,7 @@ A57_0: cpu@0 { + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&A57_L2>; +- clocks = <&scpi_dvfs 0>; ++ clocks = <&scmi_dvfs 0>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <1024>; + dynamic-power-coefficient = <530>; +@@ -113,7 +113,7 @@ A57_1: cpu@1 { + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&A57_L2>; +- clocks = <&scpi_dvfs 0>; ++ clocks = <&scmi_dvfs 0>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <1024>; + dynamic-power-coefficient = <530>; +@@ -131,7 +131,7 @@ A53_0: cpu@100 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + dynamic-power-coefficient = <140>; +@@ -149,7 +149,7 @@ A53_1: cpu@101 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + dynamic-power-coefficient = <140>; +@@ -167,7 +167,7 @@ A53_2: cpu@102 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + dynamic-power-coefficient = <140>; +@@ -185,7 +185,7 @@ A53_3: cpu@103 { + d-cache-line-size = <64>; + d-cache-sets = <128>; + next-level-cache = <&A53_L2>; +- clocks = <&scpi_dvfs 1>; ++ clocks = <&scmi_dvfs 1>; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + capacity-dmips-mhz = <578>; + dynamic-power-coefficient = <140>; +-- +2.25.1 + |