diff options
81 files changed, 757 insertions, 2953 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index 8f1f4667012..c39efb4d0a2 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -212,7 +212,8 @@ config SANDBOX imply VIRTIO_MMIO imply VIRTIO_PCI imply VIRTIO_SANDBOX - imply VIRTIO_BLK + # Re-enable this when fully implemented + # imply VIRTIO_BLK imply VIRTIO_NET imply DM_SOUND imply PCI_SANDBOX_EP diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index aeccfa93fc5..042282f3723 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -778,8 +778,6 @@ dtb-y += \ imx6dl-cubox-i.dtb \ imx6dl-cubox-i-emmc-som-v15.dtb \ imx6dl-cubox-i-som-v15.dtb \ - imx6dl-dhcom-pdk2.dtb \ - imx6dl-dhcom-picoitx.dts \ imx6dl-gw51xx.dtb \ imx6dl-gw52xx.dtb \ imx6dl-gw53xx.dtb \ @@ -811,8 +809,7 @@ dtb-y += \ imx6dl-sabreauto.dtb \ imx6dl-sabresd.dtb \ imx6dl-sielaff.dtb \ - imx6dl-wandboard-revd1.dtb \ - imx6s-dhcom-drc02.dtb + imx6dl-wandboard-revd1.dtb endif @@ -824,7 +821,6 @@ dtb-y += \ imx6q-cubox-i.dtb \ imx6q-cubox-i-emmc-som-v15.dtb \ imx6q-cubox-i-som-v15.dtb \ - imx6q-dhcom-pdk2.dtb \ imx6q-display5.dtb \ imx6q-gw51xx.dtb \ imx6q-gw52xx.dtb \ @@ -979,9 +975,6 @@ dtb-$(CONFIG_ARCH_IMXRT) += imxrt1050-evk.dtb \ imxrt1020-evk.dtb \ imxrt1170-evk.dtb \ -dtb-$(CONFIG_TARGET_RZG2L) += \ - r9a07g044l2-smarc.dts - ifdef CONFIG_RCAR_64 DTC_FLAGS += -R 4 -p 0x1000 endif diff --git a/arch/arm/dts/imx6dl-dhcom-pdk2.dts b/arch/arm/dts/imx6dl-dhcom-pdk2.dts deleted file mode 100644 index d59687490cf..00000000000 --- a/arch/arm/dts/imx6dl-dhcom-pdk2.dts +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0+) -/* - * Copyright (C) 2019 DH electronics GmbH - */ - -/dts-v1/; - -#include "imx6dl.dtsi" -#include "imx6qdl-dhcom-som.dtsi" -#include "imx6qdl-dhcom-pdk2.dtsi" - -/ { - model = "Freescale i.MX6 Duallite/Solo DHCOM Premium Developer Kit (2)"; - compatible = "dh,imx6dl-dhcom-pdk2", "dh,imx6dl-dhcom", "fsl,imx6dl"; -}; diff --git a/arch/arm/dts/imx6dl-dhcom-picoitx.dts b/arch/arm/dts/imx6dl-dhcom-picoitx.dts deleted file mode 100644 index 038bb002555..00000000000 --- a/arch/arm/dts/imx6dl-dhcom-picoitx.dts +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * Copyright (C) 2021 DH electronics GmbH - * - * DHCOM iMX6 variant: - * DHCM-iMX6DL-C0800-R102-F0819-E-SD-RTC-T-HS-I-01D2 - * DHCOM PCB number: 493-300 or newer - * PicoITX PCB number: 487-600 or newer - */ -/dts-v1/; - -#include "imx6dl.dtsi" -#include "imx6qdl-dhcom-som.dtsi" -#include "imx6qdl-dhcom-picoitx.dtsi" - -/ { - model = "DH electronics i.MX6DL DHCOM on PicoITX"; - compatible = "dh,imx6dl-dhcom-picoitx", "dh,imx6dl-dhcom-som", - "fsl,imx6dl"; -}; diff --git a/arch/arm/dts/imx6q-dhcom-pdk2.dts b/arch/arm/dts/imx6q-dhcom-pdk2.dts deleted file mode 100644 index d4d57370615..00000000000 --- a/arch/arm/dts/imx6q-dhcom-pdk2.dts +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * Copyright (C) 2015-2021 DH electronics GmbH - * Copyright (C) 2018 Marek Vasut <marex@denx.de> - * - * DHCOM iMX6 variant: - * DHCM-iMX6Q-C0800-R102-F0819-E-SD-RTC-T-HS-I-01D2 - * DHCOM PCB number: 493-300 or newer - * PDK2 PCB number: 516-400 or newer - */ -/dts-v1/; - -#include "imx6q.dtsi" -#include "imx6qdl-dhcom-som.dtsi" -#include "imx6qdl-dhcom-pdk2.dtsi" - -/ { - model = "DH electronics i.MX6Q DHCOM on Premium Developer Kit (2)"; - compatible = "dh,imx6q-dhcom-pdk2", "dh,imx6q-dhcom-som", - "fsl,imx6q"; -}; - -&sata { - status = "okay"; -}; diff --git a/arch/arm/dts/imx6s-dhcom-drc02.dts b/arch/arm/dts/imx6s-dhcom-drc02.dts deleted file mode 100644 index 4077b607c29..00000000000 --- a/arch/arm/dts/imx6s-dhcom-drc02.dts +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * Copyright (C) 2021 DH electronics GmbH - * - * DHCOM iMX6 variant: - * DHCM-iMX6S-C0800-R102-F0409-E-CAN2-RTC-I-01D2 - * DHCOM PCB number: 493-400 or newer - * DRC02 PCB number: 568-100 or newer - */ -/dts-v1/; - -/* - * The kernel only distinguishes between i.MX6 Quad and DualLite, - * but the Solo is actually a DualLite with only one CPU. So use - * DualLite for the Solo and disable one CPU node. - */ - -#include "imx6dl.dtsi" -#include "imx6qdl-dhcom-som.dtsi" -#include "imx6qdl-dhcom-drc02.dtsi" - -/ { - model = "DH electronics i.MX6S DHCOM on DRC02"; - compatible = "dh,imx6s-dhcom-drc02", "dh,imx6s-dhcom-som", - "fsl,imx6dl"; - - cpus { - /delete-node/ cpu@1; - }; -}; diff --git a/arch/arm/dts/r8a774a1-hihope-rzg2m-ex-u-boot.dtsi b/arch/arm/dts/r8a774a1-hihope-rzg2m-ex-u-boot.dtsi new file mode 100644 index 00000000000..dd5a208cc1b --- /dev/null +++ b/arch/arm/dts/r8a774a1-hihope-rzg2m-ex-u-boot.dtsi @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree Source extras for U-Boot for the Hihope RZ/G2M board + * + * Copyright (C) 2021-2024 Renesas Electronics Corporation + */ + +#include "r8a774a1-u-boot.dtsi" diff --git a/arch/arm/dts/r8a774a1-hihope-rzg2m-u-boot.dtsi b/arch/arm/dts/r8a774a1-hihope-rzg2m-u-boot.dtsi deleted file mode 100644 index 3ad619bdb90..00000000000 --- a/arch/arm/dts/r8a774a1-hihope-rzg2m-u-boot.dtsi +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Device Tree Source extras for U-Boot for the Hihope RZ/G2M board - * - * Copyright (C) 2021 Renesas Electronics Corporation - */ - -#include "r8a774a1-u-boot.dtsi" - -&gpio3 { - bt_reg_on{ - gpio-hog; - gpios = <13 GPIO_ACTIVE_HIGH>; - output-low; - line-name = "bt-reg-on"; - }; -}; - -&gpio4 { - wlan_reg_on{ - gpio-hog; - gpios = <6 GPIO_ACTIVE_HIGH>; - output-low; - line-name = "wlan-reg-on"; - }; -}; diff --git a/arch/arm/dts/r8a774a1-u-boot.dtsi b/arch/arm/dts/r8a774a1-u-boot.dtsi index 38f5bfe85fc..3530eeb2718 100644 --- a/arch/arm/dts/r8a774a1-u-boot.dtsi +++ b/arch/arm/dts/r8a774a1-u-boot.dtsi @@ -10,45 +10,3 @@ &extalr_clk { bootph-all; }; - -/delete-node/ &audma0; -/delete-node/ &audma1; -/delete-node/ &can0; -/delete-node/ &can1; -/delete-node/ &canfd; -/delete-node/ &csi20; -/delete-node/ &csi40; -/delete-node/ &du; -/delete-node/ &fcpf0; -/delete-node/ &fcpvb0; -/delete-node/ &fcpvd0; -/delete-node/ &fcpvd1; -/delete-node/ &fcpvd2; -/delete-node/ &fcpvi0; -/delete-node/ &hdmi0; -/delete-node/ &lvds0; -/delete-node/ &rcar_sound; -/delete-node/ &sound_card; -/delete-node/ &vin0; -/delete-node/ &vin1; -/delete-node/ &vin2; -/delete-node/ &vin3; -/delete-node/ &vin4; -/delete-node/ &vin5; -/delete-node/ &vin6; -/delete-node/ &vin7; -/delete-node/ &vspb; -/delete-node/ &vspd0; -/delete-node/ &vspd1; -/delete-node/ &vspd2; -/delete-node/ &vspi0; - -/ { - /delete-node/ hdmi0-out; -}; - -/ { - soc { - /delete-node/ fdp1@fe940000; - }; -}; diff --git a/arch/arm/dts/r8a774b1-hihope-rzg2n-ex-u-boot.dtsi b/arch/arm/dts/r8a774b1-hihope-rzg2n-ex-u-boot.dtsi new file mode 100644 index 00000000000..b378cabb22c --- /dev/null +++ b/arch/arm/dts/r8a774b1-hihope-rzg2n-ex-u-boot.dtsi @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree Source extras for U-Boot for the Hihope RZ/G2N board + * + * Copyright (C) 2021-2024 Renesas Electronics Corp. + */ + +#include "r8a774b1-u-boot.dtsi" diff --git a/arch/arm/dts/r8a774b1-hihope-rzg2n-u-boot.dtsi b/arch/arm/dts/r8a774b1-hihope-rzg2n-u-boot.dtsi deleted file mode 100644 index 6f2f6c71c2f..00000000000 --- a/arch/arm/dts/r8a774b1-hihope-rzg2n-u-boot.dtsi +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Device Tree Source extras for U-Boot for the Hihope RZ/G2N board - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ - -#include "r8a774b1-u-boot.dtsi" - -&gpio3 { - bt_reg_on{ - gpio-hog; - gpios = <13 GPIO_ACTIVE_HIGH>; - output-low; - line-name = "bt-reg-on"; - }; -}; - -&gpio4 { - wlan_reg_on{ - gpio-hog; - gpios = <6 GPIO_ACTIVE_HIGH>; - output-low; - line-name = "wlan-reg-on"; - }; -}; diff --git a/arch/arm/dts/r8a774b1-u-boot.dtsi b/arch/arm/dts/r8a774b1-u-boot.dtsi index d4890ebc298..07aeabc46b4 100644 --- a/arch/arm/dts/r8a774b1-u-boot.dtsi +++ b/arch/arm/dts/r8a774b1-u-boot.dtsi @@ -10,43 +10,3 @@ &extalr_clk { bootph-all; }; - -/delete-node/ &audma0; -/delete-node/ &audma1; -/delete-node/ &can0; -/delete-node/ &can1; -/delete-node/ &canfd; -/delete-node/ &csi20; -/delete-node/ &csi40; -/delete-node/ &du; -/delete-node/ &fcpf0; -/delete-node/ &fcpvb0; -/delete-node/ &fcpvd0; -/delete-node/ &fcpvd1; -/delete-node/ &fcpvi0; -/delete-node/ &hdmi0; -/delete-node/ &lvds0; -/delete-node/ &rcar_sound; -/delete-node/ &sound_card; -/delete-node/ &vin0; -/delete-node/ &vin1; -/delete-node/ &vin2; -/delete-node/ &vin3; -/delete-node/ &vin4; -/delete-node/ &vin5; -/delete-node/ &vin6; -/delete-node/ &vin7; -/delete-node/ &vspb; -/delete-node/ &vspd0; -/delete-node/ &vspd1; -/delete-node/ &vspi0; - -/ { - /delete-node/ hdmi0-out; -}; - -/ { - soc { - /delete-node/ fdp1@fe940000; - }; -}; diff --git a/arch/arm/dts/r8a774e1-hihope-rzg2h-ex-u-boot.dtsi b/arch/arm/dts/r8a774e1-hihope-rzg2h-ex-u-boot.dtsi new file mode 100644 index 00000000000..560bea46ad7 --- /dev/null +++ b/arch/arm/dts/r8a774e1-hihope-rzg2h-ex-u-boot.dtsi @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree Source extras for U-Boot for the Hihope RZ/G2H board + * + * Copyright (C) 2020-2024 Renesas Electronics Corp. + */ + +#include "r8a774e1-u-boot.dtsi" diff --git a/arch/arm/dts/r8a774e1-hihope-rzg2h-u-boot.dtsi b/arch/arm/dts/r8a774e1-hihope-rzg2h-u-boot.dtsi deleted file mode 100644 index 8e57e03c899..00000000000 --- a/arch/arm/dts/r8a774e1-hihope-rzg2h-u-boot.dtsi +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Device Tree Source extras for U-Boot for the Hihope RZ/G2H board - * - * Copyright (C) 2020 Renesas Electronics Corp. - */ - -#include "r8a774e1-u-boot.dtsi" - -&gpio3 { - bt_reg_on{ - gpio-hog; - gpios = <13 GPIO_ACTIVE_HIGH>; - output-low; - line-name = "bt-reg-on"; - }; -}; - -&gpio4 { - wlan_reg_on{ - gpio-hog; - gpios = <6 GPIO_ACTIVE_HIGH>; - output-low; - line-name = "wlan-reg-on"; - }; -}; diff --git a/arch/arm/dts/r8a774e1-u-boot.dtsi b/arch/arm/dts/r8a774e1-u-boot.dtsi index 45ef5b78240..2202731ccb3 100644 --- a/arch/arm/dts/r8a774e1-u-boot.dtsi +++ b/arch/arm/dts/r8a774e1-u-boot.dtsi @@ -10,49 +10,3 @@ &extalr_clk { bootph-all; }; - -/delete-node/ &audma0; -/delete-node/ &audma1; -/delete-node/ &can0; -/delete-node/ &can1; -/delete-node/ &canfd; -/delete-node/ &csi20; -/delete-node/ &csi40; -/delete-node/ &du; -/delete-node/ &fcpf0; -/delete-node/ &fcpf1; -/delete-node/ &fcpvb0; -/delete-node/ &fcpvb1; -/delete-node/ &fcpvd0; -/delete-node/ &fcpvd1; -/delete-node/ &fcpvi0; -/delete-node/ &fcpvi1; -/delete-node/ &hdmi0; -/delete-node/ &lvds0; -/delete-node/ &rcar_sound; -/delete-node/ &sound_card; -/delete-node/ &vin0; -/delete-node/ &vin1; -/delete-node/ &vin2; -/delete-node/ &vin3; -/delete-node/ &vin4; -/delete-node/ &vin5; -/delete-node/ &vin6; -/delete-node/ &vin7; -/delete-node/ &vspbc; -/delete-node/ &vspbd; -/delete-node/ &vspd0; -/delete-node/ &vspd1; -/delete-node/ &vspi0; -/delete-node/ &vspi1; - -/ { - /delete-node/ hdmi0-out; -}; - -/ { - soc { - /delete-node/ fdp1@fe940000; - /delete-node/ fdp1@fe944000; - }; -}; diff --git a/arch/arm/dts/r9a07g044.dtsi b/arch/arm/dts/r9a07g044.dtsi deleted file mode 100644 index 66f68fc2b24..00000000000 --- a/arch/arm/dts/r9a07g044.dtsi +++ /dev/null @@ -1,1273 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Device Tree Source for the RZ/G2L and RZ/G2LC common SoC parts - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ - -#include <dt-bindings/interrupt-controller/arm-gic.h> -#include <dt-bindings/clock/r9a07g044-cpg.h> - -/ { - compatible = "renesas,r9a07g044"; - #address-cells = <2>; - #size-cells = <2>; - - audio_clk1: audio1-clk { - compatible = "fixed-clock"; - #clock-cells = <0>; - /* This value must be overridden by boards that provide it */ - clock-frequency = <0>; - }; - - audio_clk2: audio2-clk { - compatible = "fixed-clock"; - #clock-cells = <0>; - /* This value must be overridden by boards that provide it */ - clock-frequency = <0>; - }; - - /* External CAN clock - to be overridden by boards that provide it */ - can_clk: can-clk { - compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <0>; - }; - - /* clock can be either from exclk or crystal oscillator (XIN/XOUT) */ - extal_clk: extal-clk { - compatible = "fixed-clock"; - #clock-cells = <0>; - /* This value must be overridden by the board */ - clock-frequency = <0>; - }; - - cluster0_opp: opp-table-0 { - compatible = "operating-points-v2"; - opp-shared; - - opp-150000000 { - opp-hz = /bits/ 64 <150000000>; - opp-microvolt = <1100000>; - clock-latency-ns = <300000>; - }; - opp-300000000 { - opp-hz = /bits/ 64 <300000000>; - opp-microvolt = <1100000>; - clock-latency-ns = <300000>; - }; - opp-600000000 { - opp-hz = /bits/ 64 <600000000>; - opp-microvolt = <1100000>; - clock-latency-ns = <300000>; - }; - opp-1200000000 { - opp-hz = /bits/ 64 <1200000000>; - opp-microvolt = <1100000>; - clock-latency-ns = <300000>; - opp-suspend; - }; - }; - - cpus { - #address-cells = <1>; - #size-cells = <0>; - - cpu-map { - cluster0 { - core0 { - cpu = <&cpu0>; - }; - core1 { - cpu = <&cpu1>; - }; - }; - }; - - cpu0: cpu@0 { - compatible = "arm,cortex-a55"; - reg = <0>; - device_type = "cpu"; - #cooling-cells = <2>; - next-level-cache = <&L3_CA55>; - enable-method = "psci"; - clocks = <&cpg CPG_CORE R9A07G044_CLK_I>; - operating-points-v2 = <&cluster0_opp>; - }; - - cpu1: cpu@100 { - compatible = "arm,cortex-a55"; - reg = <0x100>; - device_type = "cpu"; - next-level-cache = <&L3_CA55>; - enable-method = "psci"; - clocks = <&cpg CPG_CORE R9A07G044_CLK_I>; - operating-points-v2 = <&cluster0_opp>; - }; - - L3_CA55: cache-controller-0 { - compatible = "cache"; - cache-unified; - cache-size = <0x40000>; - cache-level = <3>; - }; - }; - - gpu_opp_table: opp-table-1 { - compatible = "operating-points-v2"; - - opp-500000000 { - opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <1100000>; - }; - - opp-400000000 { - opp-hz = /bits/ 64 <400000000>; - opp-microvolt = <1100000>; - }; - - opp-250000000 { - opp-hz = /bits/ 64 <250000000>; - opp-microvolt = <1100000>; - }; - - opp-200000000 { - opp-hz = /bits/ 64 <200000000>; - opp-microvolt = <1100000>; - }; - - opp-125000000 { - opp-hz = /bits/ 64 <125000000>; - opp-microvolt = <1100000>; - }; - - opp-100000000 { - opp-hz = /bits/ 64 <100000000>; - opp-microvolt = <1100000>; - }; - - opp-62500000 { - opp-hz = /bits/ 64 <62500000>; - opp-microvolt = <1100000>; - }; - - opp-50000000 { - opp-hz = /bits/ 64 <50000000>; - opp-microvolt = <1100000>; - }; - }; - - pmu { - compatible = "arm,cortex-a55-pmu"; - interrupts-extended = <&gic GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>; - }; - - psci { - compatible = "arm,psci-1.0", "arm,psci-0.2"; - method = "smc"; - }; - - soc: soc { - compatible = "simple-bus"; - interrupt-parent = <&gic>; - #address-cells = <2>; - #size-cells = <2>; - ranges; - - mtu3: timer@10001200 { - compatible = "renesas,r9a07g044-mtu3", - "renesas,rz-mtu3"; - reg = <0 0x10001200 0 0xb00>; - interrupts = <GIC_SPI 170 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 171 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 172 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 173 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 174 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 175 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 176 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 179 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 180 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 181 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 182 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 183 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 184 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 185 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 186 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 187 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 188 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 192 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 196 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 198 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 200 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 201 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 202 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 204 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 205 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 206 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 207 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 209 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 210 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 211 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 212 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 213 IRQ_TYPE_EDGE_RISING>; - interrupt-names = "tgia0", "tgib0", "tgic0", "tgid0", - "tciv0", "tgie0", "tgif0", - "tgia1", "tgib1", "tciv1", "tciu1", - "tgia2", "tgib2", "tciv2", "tciu2", - "tgia3", "tgib3", "tgic3", "tgid3", - "tciv3", - "tgia4", "tgib4", "tgic4", "tgid4", - "tciv4", - "tgiu5", "tgiv5", "tgiw5", - "tgia6", "tgib6", "tgic6", "tgid6", - "tciv6", - "tgia7", "tgib7", "tgic7", "tgid7", - "tciv7", - "tgia8", "tgib8", "tgic8", "tgid8", - "tciv8", "tciu8"; - clocks = <&cpg CPG_MOD R9A07G044_MTU_X_MCK_MTU3>; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_MTU_X_PRESET_MTU3>; - #pwm-cells = <2>; - status = "disabled"; - }; - - ssi0: ssi@10049c00 { - compatible = "renesas,r9a07g044-ssi", - "renesas,rz-ssi"; - reg = <0 0x10049c00 0 0x400>; - interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 327 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 328 IRQ_TYPE_EDGE_RISING>; - interrupt-names = "int_req", "dma_rx", "dma_tx"; - clocks = <&cpg CPG_MOD R9A07G044_SSI0_PCLK2>, - <&cpg CPG_MOD R9A07G044_SSI0_PCLK_SFR>, - <&audio_clk1>, <&audio_clk2>; - clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; - resets = <&cpg R9A07G044_SSI0_RST_M2_REG>; - dmas = <&dmac 0x2655>, <&dmac 0x2656>; - dma-names = "tx", "rx"; - power-domains = <&cpg>; - #sound-dai-cells = <0>; - status = "disabled"; - }; - - ssi1: ssi@1004a000 { - compatible = "renesas,r9a07g044-ssi", - "renesas,rz-ssi"; - reg = <0 0x1004a000 0 0x400>; - interrupts = <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 331 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 332 IRQ_TYPE_EDGE_RISING>; - interrupt-names = "int_req", "dma_rx", "dma_tx"; - clocks = <&cpg CPG_MOD R9A07G044_SSI1_PCLK2>, - <&cpg CPG_MOD R9A07G044_SSI1_PCLK_SFR>, - <&audio_clk1>, <&audio_clk2>; - clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; - resets = <&cpg R9A07G044_SSI1_RST_M2_REG>; - dmas = <&dmac 0x2659>, <&dmac 0x265a>; - dma-names = "tx", "rx"; - power-domains = <&cpg>; - #sound-dai-cells = <0>; - status = "disabled"; - }; - - ssi2: ssi@1004a400 { - compatible = "renesas,r9a07g044-ssi", - "renesas,rz-ssi"; - reg = <0 0x1004a400 0 0x400>; - interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 337 IRQ_TYPE_EDGE_RISING>; - interrupt-names = "int_req", "dma_rt"; - clocks = <&cpg CPG_MOD R9A07G044_SSI2_PCLK2>, - <&cpg CPG_MOD R9A07G044_SSI2_PCLK_SFR>, - <&audio_clk1>, <&audio_clk2>; - clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; - resets = <&cpg R9A07G044_SSI2_RST_M2_REG>; - dmas = <&dmac 0x265f>; - dma-names = "rt"; - power-domains = <&cpg>; - #sound-dai-cells = <0>; - status = "disabled"; - }; - - ssi3: ssi@1004a800 { - compatible = "renesas,r9a07g044-ssi", - "renesas,rz-ssi"; - reg = <0 0x1004a800 0 0x400>; - interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 339 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 340 IRQ_TYPE_EDGE_RISING>; - interrupt-names = "int_req", "dma_rx", "dma_tx"; - clocks = <&cpg CPG_MOD R9A07G044_SSI3_PCLK2>, - <&cpg CPG_MOD R9A07G044_SSI3_PCLK_SFR>, - <&audio_clk1>, <&audio_clk2>; - clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; - resets = <&cpg R9A07G044_SSI3_RST_M2_REG>; - dmas = <&dmac 0x2661>, <&dmac 0x2662>; - dma-names = "tx", "rx"; - power-domains = <&cpg>; - #sound-dai-cells = <0>; - status = "disabled"; - }; - - spi0: spi@1004ac00 { - compatible = "renesas,r9a07g044-rspi", "renesas,rspi-rz"; - reg = <0 0x1004ac00 0 0x400>; - interrupts = <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 414 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "error", "rx", "tx"; - clocks = <&cpg CPG_MOD R9A07G044_RSPI0_CLKB>; - resets = <&cpg R9A07G044_RSPI0_RST>; - dmas = <&dmac 0x2e95>, <&dmac 0x2e96>; - dma-names = "tx", "rx"; - power-domains = <&cpg>; - num-cs = <1>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - spi1: spi@1004b000 { - compatible = "renesas,r9a07g044-rspi", "renesas,rspi-rz"; - reg = <0 0x1004b000 0 0x400>; - interrupts = <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "error", "rx", "tx"; - clocks = <&cpg CPG_MOD R9A07G044_RSPI1_CLKB>; - resets = <&cpg R9A07G044_RSPI1_RST>; - dmas = <&dmac 0x2e99>, <&dmac 0x2e9a>; - dma-names = "tx", "rx"; - power-domains = <&cpg>; - num-cs = <1>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - spi2: spi@1004b400 { - compatible = "renesas,r9a07g044-rspi", "renesas,rspi-rz"; - reg = <0 0x1004b400 0 0x400>; - interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "error", "rx", "tx"; - clocks = <&cpg CPG_MOD R9A07G044_RSPI2_CLKB>; - resets = <&cpg R9A07G044_RSPI2_RST>; - dmas = <&dmac 0x2e9d>, <&dmac 0x2e9e>; - dma-names = "tx", "rx"; - power-domains = <&cpg>; - num-cs = <1>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - scif0: serial@1004b800 { - compatible = "renesas,scif-r9a07g044"; - reg = <0 0x1004b800 0 0x400>; - interrupts = <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "eri", "rxi", "txi", - "bri", "dri", "tei"; - clocks = <&cpg CPG_MOD R9A07G044_SCIF0_CLK_PCK>; - clock-names = "fck"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_SCIF0_RST_SYSTEM_N>; - status = "disabled"; - }; - - scif1: serial@1004bc00 { - compatible = "renesas,scif-r9a07g044"; - reg = <0 0x1004bc00 0 0x400>; - interrupts = <GIC_SPI 385 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 387 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 388 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 389 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 389 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "eri", "rxi", "txi", - "bri", "dri", "tei"; - clocks = <&cpg CPG_MOD R9A07G044_SCIF1_CLK_PCK>; - clock-names = "fck"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_SCIF1_RST_SYSTEM_N>; - status = "disabled"; - }; - - scif2: serial@1004c000 { - compatible = "renesas,scif-r9a07g044"; - reg = <0 0x1004c000 0 0x400>; - interrupts = <GIC_SPI 390 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "eri", "rxi", "txi", - "bri", "dri", "tei"; - clocks = <&cpg CPG_MOD R9A07G044_SCIF2_CLK_PCK>; - clock-names = "fck"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_SCIF2_RST_SYSTEM_N>; - status = "disabled"; - }; - - scif3: serial@1004c400 { - compatible = "renesas,scif-r9a07g044"; - reg = <0 0x1004c400 0 0x400>; - interrupts = <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "eri", "rxi", "txi", - "bri", "dri", "tei"; - clocks = <&cpg CPG_MOD R9A07G044_SCIF3_CLK_PCK>; - clock-names = "fck"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_SCIF3_RST_SYSTEM_N>; - status = "disabled"; - }; - - scif4: serial@1004c800 { - compatible = "renesas,scif-r9a07g044"; - reg = <0 0x1004c800 0 0x400>; - interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "eri", "rxi", "txi", - "bri", "dri", "tei"; - clocks = <&cpg CPG_MOD R9A07G044_SCIF4_CLK_PCK>; - clock-names = "fck"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_SCIF4_RST_SYSTEM_N>; - status = "disabled"; - }; - - sci0: serial@1004d000 { - compatible = "renesas,r9a07g044-sci", "renesas,sci"; - reg = <0 0x1004d000 0 0x400>; - interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 406 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 407 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "eri", "rxi", "txi", "tei"; - clocks = <&cpg CPG_MOD R9A07G044_SCI0_CLKP>; - clock-names = "fck"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_SCI0_RST>; - status = "disabled"; - }; - - sci1: serial@1004d400 { - compatible = "renesas,r9a07g044-sci", "renesas,sci"; - reg = <0 0x1004d400 0 0x400>; - interrupts = <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 410 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 411 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "eri", "rxi", "txi", "tei"; - clocks = <&cpg CPG_MOD R9A07G044_SCI1_CLKP>; - clock-names = "fck"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_SCI1_RST>; - status = "disabled"; - }; - - canfd: can@10050000 { - compatible = "renesas,r9a07g044-canfd", "renesas,rzg2l-canfd"; - reg = <0 0x10050000 0 0x8000>; - interrupts = <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "g_err", "g_recc", - "ch0_err", "ch0_rec", "ch0_trx", - "ch1_err", "ch1_rec", "ch1_trx"; - clocks = <&cpg CPG_MOD R9A07G044_CANFD_PCLK>, - <&cpg CPG_CORE R9A07G044_CLK_P0_DIV2>, - <&can_clk>; - clock-names = "fck", "canfd", "can_clk"; - assigned-clocks = <&cpg CPG_CORE R9A07G044_CLK_P0_DIV2>; - assigned-clock-rates = <50000000>; - resets = <&cpg R9A07G044_CANFD_RSTP_N>, - <&cpg R9A07G044_CANFD_RSTC_N>; - reset-names = "rstp_n", "rstc_n"; - power-domains = <&cpg>; - status = "disabled"; - - channel0 { - status = "disabled"; - }; - channel1 { - status = "disabled"; - }; - }; - - i2c0: i2c@10058000 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "renesas,riic-r9a07g044", "renesas,riic-rz"; - reg = <0 0x10058000 0 0x400>; - interrupts = <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 348 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 349 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "tei", "ri", "ti", "spi", "sti", - "naki", "ali", "tmoi"; - clocks = <&cpg CPG_MOD R9A07G044_I2C0_PCLK>; - clock-frequency = <100000>; - resets = <&cpg R9A07G044_I2C0_MRST>; - power-domains = <&cpg>; - status = "disabled"; - }; - - i2c1: i2c@10058400 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "renesas,riic-r9a07g044", "renesas,riic-rz"; - reg = <0 0x10058400 0 0x400>; - interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 356 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 357 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "tei", "ri", "ti", "spi", "sti", - "naki", "ali", "tmoi"; - clocks = <&cpg CPG_MOD R9A07G044_I2C1_PCLK>; - clock-frequency = <100000>; - resets = <&cpg R9A07G044_I2C1_MRST>; - power-domains = <&cpg>; - status = "disabled"; - }; - - i2c2: i2c@10058800 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "renesas,riic-r9a07g044", "renesas,riic-rz"; - reg = <0 0x10058800 0 0x400>; - interrupts = <GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 364 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 365 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "tei", "ri", "ti", "spi", "sti", - "naki", "ali", "tmoi"; - clocks = <&cpg CPG_MOD R9A07G044_I2C2_PCLK>; - clock-frequency = <100000>; - resets = <&cpg R9A07G044_I2C2_MRST>; - power-domains = <&cpg>; - status = "disabled"; - }; - - i2c3: i2c@10058c00 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "renesas,riic-r9a07g044", "renesas,riic-rz"; - reg = <0 0x10058c00 0 0x400>; - interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 372 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 373 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "tei", "ri", "ti", "spi", "sti", - "naki", "ali", "tmoi"; - clocks = <&cpg CPG_MOD R9A07G044_I2C3_PCLK>; - clock-frequency = <100000>; - resets = <&cpg R9A07G044_I2C3_MRST>; - power-domains = <&cpg>; - status = "disabled"; - }; - - adc: adc@10059000 { - compatible = "renesas,r9a07g044-adc", "renesas,rzg2l-adc"; - reg = <0 0x10059000 0 0x400>; - interrupts = <GIC_SPI 347 IRQ_TYPE_EDGE_RISING>; - clocks = <&cpg CPG_MOD R9A07G044_ADC_ADCLK>, - <&cpg CPG_MOD R9A07G044_ADC_PCLK>; - clock-names = "adclk", "pclk"; - resets = <&cpg R9A07G044_ADC_PRESETN>, - <&cpg R9A07G044_ADC_ADRST_N>; - reset-names = "presetn", "adrst-n"; - power-domains = <&cpg>; - status = "disabled"; - - #address-cells = <1>; - #size-cells = <0>; - - channel@0 { - reg = <0>; - }; - channel@1 { - reg = <1>; - }; - channel@2 { - reg = <2>; - }; - channel@3 { - reg = <3>; - }; - channel@4 { - reg = <4>; - }; - channel@5 { - reg = <5>; - }; - channel@6 { - reg = <6>; - }; - channel@7 { - reg = <7>; - }; - }; - - tsu: thermal@10059400 { - compatible = "renesas,r9a07g044-tsu", - "renesas,rzg2l-tsu"; - reg = <0 0x10059400 0 0x400>; - clocks = <&cpg CPG_MOD R9A07G044_TSU_PCLK>; - resets = <&cpg R9A07G044_TSU_PRESETN>; - power-domains = <&cpg>; - #thermal-sensor-cells = <1>; - }; - - sbc: spi@10060000 { - compatible = "renesas,r9a07g044-rpc-if", - "renesas,rzg2l-rpc-if"; - reg = <0 0x10060000 0 0x10000>, - <0 0x20000000 0 0x10000000>, - <0 0x10070000 0 0x10000>; - reg-names = "regs", "dirmap", "wbuf"; - interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_SPI_CLK2>, - <&cpg CPG_MOD R9A07G044_SPI_CLK>; - resets = <&cpg R9A07G044_SPI_RST>; - power-domains = <&cpg>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - cru: video@10830000 { - compatible = "renesas,r9a07g044-cru", "renesas,rzg2l-cru"; - reg = <0 0x10830000 0 0x400>; - clocks = <&cpg CPG_MOD R9A07G044_CRU_VCLK>, - <&cpg CPG_MOD R9A07G044_CRU_PCLK>, - <&cpg CPG_MOD R9A07G044_CRU_ACLK>; - clock-names = "video", "apb", "axi"; - interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "image_conv", "image_conv_err", "axi_mst_err"; - resets = <&cpg R9A07G044_CRU_PRESETN>, - <&cpg R9A07G044_CRU_ARESETN>; - reset-names = "presetn", "aresetn"; - power-domains = <&cpg>; - status = "disabled"; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - #address-cells = <1>; - #size-cells = <0>; - - reg = <0>; - cruparallel: endpoint@0 { - reg = <0>; - }; - }; - - port@1 { - #address-cells = <1>; - #size-cells = <0>; - - reg = <1>; - crucsi2: endpoint@0 { - reg = <0>; - remote-endpoint = <&csi2cru>; - }; - }; - }; - }; - - csi2: csi2@10830400 { - compatible = "renesas,r9a07g044-csi2", "renesas,rzg2l-csi2"; - reg = <0 0x10830400 0 0xfc00>; - interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_CRU_SYSCLK>, - <&cpg CPG_MOD R9A07G044_CRU_VCLK>, - <&cpg CPG_MOD R9A07G044_CRU_PCLK>; - clock-names = "system", "video", "apb"; - resets = <&cpg R9A07G044_CRU_PRESETN>, - <&cpg R9A07G044_CRU_CMN_RSTB>; - reset-names = "presetn", "cmn-rstb"; - power-domains = <&cpg>; - status = "disabled"; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - }; - - port@1 { - #address-cells = <1>; - #size-cells = <0>; - reg = <1>; - - csi2cru: endpoint@0 { - reg = <0>; - remote-endpoint = <&crucsi2>; - }; - }; - }; - }; - - dsi: dsi@10850000 { - compatible = "renesas,r9a07g044-mipi-dsi", - "renesas,rzg2l-mipi-dsi"; - reg = <0 0x10850000 0 0x20000>; - interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "seq0", "seq1", "vin1", "rcv", - "ferr", "ppi", "debug"; - clocks = <&cpg CPG_MOD R9A07G044_MIPI_DSI_PLLCLK>, - <&cpg CPG_MOD R9A07G044_MIPI_DSI_SYSCLK>, - <&cpg CPG_MOD R9A07G044_MIPI_DSI_ACLK>, - <&cpg CPG_MOD R9A07G044_MIPI_DSI_PCLK>, - <&cpg CPG_MOD R9A07G044_MIPI_DSI_VCLK>, - <&cpg CPG_MOD R9A07G044_MIPI_DSI_LPCLK>; - clock-names = "pllclk", "sysclk", "aclk", "pclk", "vclk", "lpclk"; - resets = <&cpg R9A07G044_MIPI_DSI_CMN_RSTB>, - <&cpg R9A07G044_MIPI_DSI_ARESET_N>, - <&cpg R9A07G044_MIPI_DSI_PRESET_N>; - reset-names = "rst", "arst", "prst"; - power-domains = <&cpg>; - status = "disabled"; - }; - - vspd: vsp@10870000 { - compatible = "renesas,r9a07g044-vsp2"; - reg = <0 0x10870000 0 0x10000>; - interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_LCDC_CLK_A>, - <&cpg CPG_MOD R9A07G044_LCDC_CLK_P>, - <&cpg CPG_MOD R9A07G044_LCDC_CLK_D>; - clock-names = "aclk", "pclk", "vclk"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_LCDC_RESET_N>; - renesas,fcp = <&fcpvd>; - }; - - fcpvd: fcp@10880000 { - compatible = "renesas,r9a07g044-fcpvd", - "renesas,fcpv"; - reg = <0 0x10880000 0 0x10000>; - clocks = <&cpg CPG_MOD R9A07G044_LCDC_CLK_A>, - <&cpg CPG_MOD R9A07G044_LCDC_CLK_P>, - <&cpg CPG_MOD R9A07G044_LCDC_CLK_D>; - clock-names = "aclk", "pclk", "vclk"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_LCDC_RESET_N>; - }; - - cpg: clock-controller@11010000 { - compatible = "renesas,r9a07g044-cpg"; - reg = <0 0x11010000 0 0x10000>; - clocks = <&extal_clk>; - clock-names = "extal"; - #clock-cells = <2>; - #reset-cells = <1>; - #power-domain-cells = <0>; - }; - - sysc: system-controller@11020000 { - compatible = "renesas,r9a07g044-sysc"; - reg = <0 0x11020000 0 0x10000>; - interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "lpm_int", "ca55stbydone_int", - "cm33stbyr_int", "ca55_deny"; - status = "disabled"; - }; - - pinctrl: pinctrl@11030000 { - compatible = "renesas,r9a07g044-pinctrl"; - reg = <0 0x11030000 0 0x10000>; - gpio-controller; - #gpio-cells = <2>; - #interrupt-cells = <2>; - interrupt-parent = <&irqc>; - interrupt-controller; - gpio-ranges = <&pinctrl 0 0 392>; - clocks = <&cpg CPG_MOD R9A07G044_GPIO_HCLK>; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_GPIO_RSTN>, - <&cpg R9A07G044_GPIO_PORT_RESETN>, - <&cpg R9A07G044_GPIO_SPARE_RESETN>; - }; - - irqc: interrupt-controller@110a0000 { - compatible = "renesas,r9a07g044-irqc", - "renesas,rzg2l-irqc"; - #interrupt-cells = <2>; - #address-cells = <0>; - interrupt-controller; - reg = <0 0x110a0000 0 0x10000>; - interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 448 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 449 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 450 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 451 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 452 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 453 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 454 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_IA55_CLK>, - <&cpg CPG_MOD R9A07G044_IA55_PCLK>; - clock-names = "clk", "pclk"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_IA55_RESETN>; - }; - - dmac: dma-controller@11820000 { - compatible = "renesas,r9a07g044-dmac", - "renesas,rz-dmac"; - reg = <0 0x11820000 0 0x10000>, - <0 0x11830000 0 0x10000>; - interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 125 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 126 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 127 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 128 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 129 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 130 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 131 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 132 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 133 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 135 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 136 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 137 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 138 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 139 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 140 IRQ_TYPE_EDGE_RISING>; - interrupt-names = "error", - "ch0", "ch1", "ch2", "ch3", - "ch4", "ch5", "ch6", "ch7", - "ch8", "ch9", "ch10", "ch11", - "ch12", "ch13", "ch14", "ch15"; - clocks = <&cpg CPG_MOD R9A07G044_DMAC_ACLK>, - <&cpg CPG_MOD R9A07G044_DMAC_PCLK>; - clock-names = "main", "register"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_DMAC_ARESETN>, - <&cpg R9A07G044_DMAC_RST_ASYNC>; - reset-names = "arst", "rst_async"; - #dma-cells = <1>; - dma-channels = <16>; - }; - - gpu: gpu@11840000 { - compatible = "renesas,r9a07g044-mali", - "arm,mali-bifrost"; - reg = <0x0 0x11840000 0x0 0x10000>; - interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "job", "mmu", "gpu", "event"; - clocks = <&cpg CPG_MOD R9A07G044_GPU_CLK>, - <&cpg CPG_MOD R9A07G044_GPU_AXI_CLK>, - <&cpg CPG_MOD R9A07G044_GPU_ACE_CLK>; - clock-names = "gpu", "bus", "bus_ace"; - power-domains = <&cpg>; - resets = <&cpg R9A07G044_GPU_RESETN>, - <&cpg R9A07G044_GPU_AXI_RESETN>, - <&cpg R9A07G044_GPU_ACE_RESETN>; - reset-names = "rst", "axi_rst", "ace_rst"; - operating-points-v2 = <&gpu_opp_table>; - }; - - gic: interrupt-controller@11900000 { - compatible = "arm,gic-v3"; - #interrupt-cells = <3>; - #address-cells = <0>; - interrupt-controller; - reg = <0x0 0x11900000 0 0x40000>, - <0x0 0x11940000 0 0x60000>; - interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>; - }; - - sdhi0: mmc@11c00000 { - compatible = "renesas,sdhi-r9a07g044", - "renesas,rcar-gen3-sdhi"; - reg = <0x0 0x11c00000 0 0x10000>; - interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_SDHI0_IMCLK>, - <&cpg CPG_MOD R9A07G044_SDHI0_CLK_HS>, - <&cpg CPG_MOD R9A07G044_SDHI0_IMCLK2>, - <&cpg CPG_MOD R9A07G044_SDHI0_ACLK>; - clock-names = "core", "clkh", "cd", "aclk"; - resets = <&cpg R9A07G044_SDHI0_IXRST>; - power-domains = <&cpg>; - status = "disabled"; - }; - - sdhi1: mmc@11c10000 { - compatible = "renesas,sdhi-r9a07g044", - "renesas,rcar-gen3-sdhi"; - reg = <0x0 0x11c10000 0 0x10000>; - interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_SDHI1_IMCLK>, - <&cpg CPG_MOD R9A07G044_SDHI1_CLK_HS>, - <&cpg CPG_MOD R9A07G044_SDHI1_IMCLK2>, - <&cpg CPG_MOD R9A07G044_SDHI1_ACLK>; - clock-names = "core", "clkh", "cd", "aclk"; - resets = <&cpg R9A07G044_SDHI1_IXRST>; - power-domains = <&cpg>; - status = "disabled"; - }; - - eth0: ethernet@11c20000 { - compatible = "renesas,r9a07g044-gbeth", - "renesas,rzg2l-gbeth"; - reg = <0 0x11c20000 0 0x10000>; - interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "mux", "fil", "arp_ns"; - phy-mode = "rgmii"; - clocks = <&cpg CPG_MOD R9A07G044_ETH0_CLK_AXI>, - <&cpg CPG_MOD R9A07G044_ETH0_CLK_CHI>, - <&cpg CPG_CORE R9A07G044_CLK_HP>; - clock-names = "axi", "chi", "refclk"; - resets = <&cpg R9A07G044_ETH0_RST_HW_N>; - power-domains = <&cpg>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - eth1: ethernet@11c30000 { - compatible = "renesas,r9a07g044-gbeth", - "renesas,rzg2l-gbeth"; - reg = <0 0x11c30000 0 0x10000>; - interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "mux", "fil", "arp_ns"; - phy-mode = "rgmii"; - clocks = <&cpg CPG_MOD R9A07G044_ETH1_CLK_AXI>, - <&cpg CPG_MOD R9A07G044_ETH1_CLK_CHI>, - <&cpg CPG_CORE R9A07G044_CLK_HP>; - clock-names = "axi", "chi", "refclk"; - resets = <&cpg R9A07G044_ETH1_RST_HW_N>; - power-domains = <&cpg>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - phyrst: usbphy-ctrl@11c40000 { - compatible = "renesas,r9a07g044-usbphy-ctrl", - "renesas,rzg2l-usbphy-ctrl"; - reg = <0 0x11c40000 0 0x10000>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>; - resets = <&cpg R9A07G044_USB_PRESETN>; - power-domains = <&cpg>; - #reset-cells = <1>; - status = "disabled"; - }; - - ohci0: usb@11c50000 { - compatible = "generic-ohci"; - reg = <0 0x11c50000 0 0x100>; - interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>, - <&cpg CPG_MOD R9A07G044_USB_U2H0_HCLK>; - resets = <&phyrst 0>, - <&cpg R9A07G044_USB_U2H0_HRESETN>; - phys = <&usb2_phy0 1>; - phy-names = "usb"; - power-domains = <&cpg>; - status = "disabled"; - }; - - ohci1: usb@11c70000 { - compatible = "generic-ohci"; - reg = <0 0x11c70000 0 0x100>; - interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>, - <&cpg CPG_MOD R9A07G044_USB_U2H1_HCLK>; - resets = <&phyrst 1>, - <&cpg R9A07G044_USB_U2H1_HRESETN>; - phys = <&usb2_phy1 1>; - phy-names = "usb"; - power-domains = <&cpg>; - status = "disabled"; - }; - - ehci0: usb@11c50100 { - compatible = "generic-ehci"; - reg = <0 0x11c50100 0 0x100>; - interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>, - <&cpg CPG_MOD R9A07G044_USB_U2H0_HCLK>; - resets = <&phyrst 0>, - <&cpg R9A07G044_USB_U2H0_HRESETN>; - phys = <&usb2_phy0 2>; - phy-names = "usb"; - companion = <&ohci0>; - power-domains = <&cpg>; - status = "disabled"; - }; - - ehci1: usb@11c70100 { - compatible = "generic-ehci"; - reg = <0 0x11c70100 0 0x100>; - interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>, - <&cpg CPG_MOD R9A07G044_USB_U2H1_HCLK>; - resets = <&phyrst 1>, - <&cpg R9A07G044_USB_U2H1_HRESETN>; - phys = <&usb2_phy1 2>; - phy-names = "usb"; - companion = <&ohci1>; - power-domains = <&cpg>; - status = "disabled"; - }; - - usb2_phy0: usb-phy@11c50200 { - compatible = "renesas,usb2-phy-r9a07g044", - "renesas,rzg2l-usb2-phy"; - reg = <0 0x11c50200 0 0x700>; - interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>, - <&cpg CPG_MOD R9A07G044_USB_U2H0_HCLK>; - resets = <&phyrst 0>; - #phy-cells = <1>; - power-domains = <&cpg>; - status = "disabled"; - }; - - usb2_phy1: usb-phy@11c70200 { - compatible = "renesas,usb2-phy-r9a07g044", - "renesas,rzg2l-usb2-phy"; - reg = <0 0x11c70200 0 0x700>; - interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>, - <&cpg CPG_MOD R9A07G044_USB_U2H1_HCLK>; - resets = <&phyrst 1>; - #phy-cells = <1>; - power-domains = <&cpg>; - status = "disabled"; - }; - - hsusb: usb@11c60000 { - compatible = "renesas,usbhs-r9a07g044", - "renesas,rza2-usbhs"; - reg = <0 0x11c60000 0 0x10000>; - interrupts = <GIC_SPI 100 IRQ_TYPE_EDGE_RISING>, - <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>, - <&cpg CPG_MOD R9A07G044_USB_U2P_EXR_CPUCLK>; - resets = <&phyrst 0>, - <&cpg R9A07G044_USB_U2P_EXL_SYSRST>; - renesas,buswait = <7>; - phys = <&usb2_phy0 3>; - phy-names = "usb"; - power-domains = <&cpg>; - status = "disabled"; - }; - - wdt0: watchdog@12800800 { - compatible = "renesas,r9a07g044-wdt", - "renesas,rzg2l-wdt"; - reg = <0 0x12800800 0 0x400>; - clocks = <&cpg CPG_MOD R9A07G044_WDT0_PCLK>, - <&cpg CPG_MOD R9A07G044_WDT0_CLK>; - clock-names = "pclk", "oscclk"; - interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "wdt", "perrout"; - resets = <&cpg R9A07G044_WDT0_PRESETN>; - power-domains = <&cpg>; - status = "disabled"; - }; - - wdt1: watchdog@12800c00 { - compatible = "renesas,r9a07g044-wdt", - "renesas,rzg2l-wdt"; - reg = <0 0x12800C00 0 0x400>; - clocks = <&cpg CPG_MOD R9A07G044_WDT1_PCLK>, - <&cpg CPG_MOD R9A07G044_WDT1_CLK>; - clock-names = "pclk", "oscclk"; - interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "wdt", "perrout"; - resets = <&cpg R9A07G044_WDT1_PRESETN>; - power-domains = <&cpg>; - status = "disabled"; - }; - - ostm0: timer@12801000 { - compatible = "renesas,r9a07g044-ostm", - "renesas,ostm"; - reg = <0x0 0x12801000 0x0 0x400>; - interrupts = <GIC_SPI 46 IRQ_TYPE_EDGE_RISING>; - clocks = <&cpg CPG_MOD R9A07G044_OSTM0_PCLK>; - resets = <&cpg R9A07G044_OSTM0_PRESETZ>; - power-domains = <&cpg>; - status = "disabled"; - }; - - ostm1: timer@12801400 { - compatible = "renesas,r9a07g044-ostm", - "renesas,ostm"; - reg = <0x0 0x12801400 0x0 0x400>; - interrupts = <GIC_SPI 47 IRQ_TYPE_EDGE_RISING>; - clocks = <&cpg CPG_MOD R9A07G044_OSTM1_PCLK>; - resets = <&cpg R9A07G044_OSTM1_PRESETZ>; - power-domains = <&cpg>; - status = "disabled"; - }; - - ostm2: timer@12801800 { - compatible = "renesas,r9a07g044-ostm", - "renesas,ostm"; - reg = <0x0 0x12801800 0x0 0x400>; - interrupts = <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>; - clocks = <&cpg CPG_MOD R9A07G044_OSTM2_PCLK>; - resets = <&cpg R9A07G044_OSTM2_PRESETZ>; - power-domains = <&cpg>; - status = "disabled"; - }; - }; - - thermal-zones { - cpu-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - thermal-sensors = <&tsu 0>; - sustainable-power = <717>; - - cooling-maps { - map0 { - trip = <&target>; - cooling-device = <&cpu0 0 2>; - contribution = <1024>; - }; - }; - - trips { - sensor_crit: sensor-crit { - temperature = <125000>; - hysteresis = <1000>; - type = "critical"; - }; - - target: trip-point { - temperature = <100000>; - hysteresis = <1000>; - type = "passive"; - }; - }; - }; - }; - - timer { - compatible = "arm,armv8-timer"; - interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, - <&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, - <&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, - <&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; - }; -}; diff --git a/arch/arm/dts/r9a07g044l2-smarc.dts b/arch/arm/dts/r9a07g044l2-smarc.dts deleted file mode 100644 index 568d49cfe44..00000000000 --- a/arch/arm/dts/r9a07g044l2-smarc.dts +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Device Tree Source for the RZ/G2L SMARC EVK board - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ - -/dts-v1/; - -/* Enable SCIF2 (SER0) on PMOD1 (CN7) */ -#define PMOD1_SER0 1 - -/* - * To enable MTU3a PWM on PMOD0, - * Disable PMOD1_SER0 by setting "#define PMOD1_SER0 0" above and - * enable PMOD_MTU3 by setting "#define PMOD_MTU3 1" below. - */ -#define PMOD_MTU3 0 - -#if (PMOD_MTU3 && PMOD1_SER0) -#error "Cannot set as PMOD_MTU3 and PMOD1_SER0 are mutually exclusive " -#endif - -#define MTU3_COUNTER_Z_PHASE_SIGNAL 0 - -#if (!PMOD_MTU3 && MTU3_COUNTER_Z_PHASE_SIGNAL) -#error "Cannot set 1 to MTU3_COUNTER_Z_PHASE_SIGNAL as PMOD_MTU3=0" -#endif - -#include "r9a07g044l2.dtsi" -#include "rzg2l-smarc-som.dtsi" -#include "rzg2l-smarc-pinfunction.dtsi" -#include "rz-smarc-common.dtsi" -#include "rzg2l-smarc.dtsi" - -/ { - model = "Renesas SMARC EVK based on r9a07g044l2"; - compatible = "renesas,smarc-evk", "renesas,r9a07g044l2", "renesas,r9a07g044"; -}; diff --git a/arch/arm/dts/r9a07g044l2.dtsi b/arch/arm/dts/r9a07g044l2.dtsi deleted file mode 100644 index 91dc10b2cdb..00000000000 --- a/arch/arm/dts/r9a07g044l2.dtsi +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Device Tree Source for the RZ/G2L R9A07G044L2 SoC specific parts - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ - -/dts-v1/; -#include "r9a07g044.dtsi" - -/ { - compatible = "renesas,r9a07g044l2", "renesas,r9a07g044"; -}; diff --git a/arch/arm/dts/rz-smarc-common.dtsi b/arch/arm/dts/rz-smarc-common.dtsi deleted file mode 100644 index b7a3e6caa38..00000000000 --- a/arch/arm/dts/rz-smarc-common.dtsi +++ /dev/null @@ -1,183 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Device Tree Source for the RZ/{G2L,G2LC,V2L} SMARC EVK common parts - * - * Copyright (C) 2022 Renesas Electronics Corp. - */ - -#include <dt-bindings/gpio/gpio.h> -#include <dt-bindings/pinctrl/rzg2l-pinctrl.h> - -/* - * SSI-WM8978 - * - * This command is required when Playback/Capture - * - * amixer cset name='Left Input Mixer L2 Switch' on - * amixer cset name='Right Input Mixer R2 Switch' on - * amixer cset name='Headphone Playback Volume' 100 - * amixer cset name='PCM Volume' 100% - * amixer cset name='Input PGA Volume' 25 - * - */ - -/ { - aliases { - serial0 = &scif0; - i2c0 = &i2c0; - i2c1 = &i2c1; - }; - - chosen { - stdout-path = "serial0:115200n8"; - }; - - snd_rzg2l: sound { - compatible = "simple-audio-card"; - simple-audio-card,format = "i2s"; - simple-audio-card,bitclock-master = <&cpu_dai>; - simple-audio-card,frame-master = <&cpu_dai>; - simple-audio-card,mclk-fs = <256>; - - simple-audio-card,widgets = "Microphone", "Microphone Jack"; - simple-audio-card,routing = - "L2", "Mic Bias", - "R2", "Mic Bias", - "Mic Bias", "Microphone Jack"; - - cpu_dai: simple-audio-card,cpu { - }; - - codec_dai: simple-audio-card,codec { - clocks = <&versa3 2>; - sound-dai = <&wm8978>; - }; - }; - - usb0_vbus_otg: regulator-usb0-vbus-otg { - compatible = "regulator-fixed"; - - regulator-name = "USB0_VBUS_OTG"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - }; - - vccq_sdhi1: regulator-vccq-sdhi1 { - compatible = "regulator-gpio"; - regulator-name = "SDHI1 VccQ"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3300000>; - gpios-states = <1>; - states = <3300000 1>, <1800000 0>; - }; - - x1: x1-clock { - compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <24000000>; - }; -}; - -&audio_clk1 { - clock-frequency = <11289600>; -}; - -&audio_clk2 { - clock-frequency = <12288000>; -}; - -&canfd { - pinctrl-0 = <&can0_pins &can1_pins>; - pinctrl-names = "default"; - status = "okay"; - - channel0 { - status = "okay"; - }; - - channel1 { - status = "okay"; - }; -}; - -&ehci0 { - dr_mode = "otg"; - status = "okay"; -}; - -&ehci1 { - status = "okay"; -}; - -&hsusb { - dr_mode = "otg"; - status = "okay"; -}; - -&i2c0 { - pinctrl-0 = <&i2c0_pins>; - pinctrl-names = "default"; - - status = "okay"; -}; - -&i2c1 { - pinctrl-0 = <&i2c1_pins>; - pinctrl-names = "default"; - - status = "okay"; -}; - -&ohci0 { - dr_mode = "otg"; - status = "okay"; -}; - -&ohci1 { - status = "okay"; -}; - -&phyrst { - status = "okay"; -}; - -&scif0 { - pinctrl-0 = <&scif0_pins>; - pinctrl-names = "default"; - status = "okay"; -}; - -&sdhi1 { - pinctrl-0 = <&sdhi1_pins>; - pinctrl-1 = <&sdhi1_pins_uhs>; - pinctrl-names = "default", "state_uhs"; - - vmmc-supply = <®_3p3v>; - vqmmc-supply = <&vccq_sdhi1>; - bus-width = <4>; - sd-uhs-sdr50; - sd-uhs-sdr104; - status = "okay"; -}; - -&spi1 { - pinctrl-0 = <&spi1_pins>; - pinctrl-names = "default"; - - status = "okay"; -}; - -&usb2_phy0 { - pinctrl-0 = <&usb0_pins>; - pinctrl-names = "default"; - - vbus-supply = <&usb0_vbus_otg>; - status = "okay"; -}; - -&usb2_phy1 { - pinctrl-0 = <&usb1_pins>; - pinctrl-names = "default"; - - status = "okay"; -}; diff --git a/arch/arm/dts/rzg2l-smarc-pinfunction.dtsi b/arch/arm/dts/rzg2l-smarc-pinfunction.dtsi deleted file mode 100644 index 18c526c7a4c..00000000000 --- a/arch/arm/dts/rzg2l-smarc-pinfunction.dtsi +++ /dev/null @@ -1,157 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Device Tree Source for the RZ/{G2L,V2L} SMARC pincontrol parts - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ - -#include <dt-bindings/gpio/gpio.h> -#include <dt-bindings/pinctrl/rzg2l-pinctrl.h> - -&pinctrl { - pinctrl-0 = <&sound_clk_pins>; - pinctrl-names = "default"; - - can0_pins: can0 { - pinmux = <RZG2L_PORT_PINMUX(10, 1, 2)>, /* TX */ - <RZG2L_PORT_PINMUX(11, 0, 2)>; /* RX */ - }; - - /* SW7 should be at position 2->3 so that GPIO8_CAN0_STB line is activated */ - can0-stb-hog { - gpio-hog; - gpios = <RZG2L_GPIO(42, 2) GPIO_ACTIVE_HIGH>; - output-low; - line-name = "can0_stb"; - }; - - can1_pins: can1 { - pinmux = <RZG2L_PORT_PINMUX(12, 1, 2)>, /* TX */ - <RZG2L_PORT_PINMUX(13, 0, 2)>; /* RX */ - }; - - /* SW8 should be at position 2->3 so that GPIO9_CAN1_STB line is activated */ - can1-stb-hog { - gpio-hog; - gpios = <RZG2L_GPIO(42, 3) GPIO_ACTIVE_HIGH>; - output-low; - line-name = "can1_stb"; - }; - - i2c0_pins: i2c0 { - pins = "RIIC0_SDA", "RIIC0_SCL"; - input-enable; - }; - - i2c1_pins: i2c1 { - pins = "RIIC1_SDA", "RIIC1_SCL"; - input-enable; - }; - - i2c3_pins: i2c3 { - pinmux = <RZG2L_PORT_PINMUX(18, 0, 3)>, /* SDA */ - <RZG2L_PORT_PINMUX(18, 1, 3)>; /* SCL */ - }; - - mtu3_pins: mtu3 { - mtu3-ext-clk-input-pin { - pinmux = <RZG2L_PORT_PINMUX(48, 0, 4)>, /* MTCLKA */ - <RZG2L_PORT_PINMUX(48, 1, 4)>; /* MTCLKB */ - }; - - mtu3-pwm { - pinmux = <RZG2L_PORT_PINMUX(44, 0, 4)>, /* MTIOC3A */ - <RZG2L_PORT_PINMUX(44, 1, 4)>, /* MTIOC3B */ - <RZG2L_PORT_PINMUX(44, 2, 4)>, /* MTIOC3C */ - <RZG2L_PORT_PINMUX(44, 3, 4)>; /* MTIOC3D */ - }; - -#if MTU3_COUNTER_Z_PHASE_SIGNAL - mtu3-zphase-clk { - pinmux = <RZG2L_PORT_PINMUX(19, 0, 3)>; /* MTIOC1A */ - }; -#endif /* MTU3_COUNTER_Z_PHASE_SIGNAL */ - }; - - scif0_pins: scif0 { - pinmux = <RZG2L_PORT_PINMUX(38, 0, 1)>, /* TxD */ - <RZG2L_PORT_PINMUX(38, 1, 1)>; /* RxD */ - }; - - scif2_pins: scif2 { - pinmux = <RZG2L_PORT_PINMUX(48, 0, 1)>, /* TxD */ - <RZG2L_PORT_PINMUX(48, 1, 1)>, /* RxD */ - <RZG2L_PORT_PINMUX(48, 3, 1)>, /* CTS# */ - <RZG2L_PORT_PINMUX(48, 4, 1)>; /* RTS# */ - }; - - sd1-pwr-en-hog { - gpio-hog; - gpios = <RZG2L_GPIO(39, 2) GPIO_ACTIVE_HIGH>; - output-high; - line-name = "sd1_pwr_en"; - }; - - sdhi1_pins: sd1 { - sd1_data { - pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3"; - power-source = <3300>; - }; - - sd1_ctrl { - pins = "SD1_CLK", "SD1_CMD"; - power-source = <3300>; - }; - - sd1_mux { - pinmux = <RZG2L_PORT_PINMUX(19, 0, 1)>; /* SD1_CD */ - }; - }; - - sdhi1_pins_uhs: sd1_uhs { - sd1_data_uhs { - pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3"; - power-source = <1800>; - }; - - sd1_ctrl_uhs { - pins = "SD1_CLK", "SD1_CMD"; - power-source = <1800>; - }; - - sd1_mux_uhs { - pinmux = <RZG2L_PORT_PINMUX(19, 0, 1)>; /* SD1_CD */ - }; - }; - - sound_clk_pins: sound_clk { - pins = "AUDIO_CLK1", "AUDIO_CLK2"; - input-enable; - }; - - spi1_pins: spi1 { - pinmux = <RZG2L_PORT_PINMUX(44, 0, 1)>, /* CK */ - <RZG2L_PORT_PINMUX(44, 1, 1)>, /* MOSI */ - <RZG2L_PORT_PINMUX(44, 2, 1)>, /* MISO */ - <RZG2L_PORT_PINMUX(44, 3, 1)>; /* SSL */ - }; - - ssi0_pins: ssi0 { - pinmux = <RZG2L_PORT_PINMUX(45, 0, 1)>, /* BCK */ - <RZG2L_PORT_PINMUX(45, 1, 1)>, /* RCK */ - <RZG2L_PORT_PINMUX(45, 2, 1)>, /* TXD */ - <RZG2L_PORT_PINMUX(45, 3, 1)>; /* RXD */ - }; - - usb0_pins: usb0 { - pinmux = <RZG2L_PORT_PINMUX(4, 0, 1)>, /* VBUS */ - <RZG2L_PORT_PINMUX(5, 0, 1)>, /* OVC */ - <RZG2L_PORT_PINMUX(5, 1, 1)>; /* OTG_ID */ - }; - - usb1_pins: usb1 { - pinmux = <RZG2L_PORT_PINMUX(42, 0, 1)>, /* VBUS */ - <RZG2L_PORT_PINMUX(42, 1, 1)>; /* OVC */ - }; -}; - diff --git a/arch/arm/dts/rzg2l-smarc-som.dtsi b/arch/arm/dts/rzg2l-smarc-som.dtsi deleted file mode 100644 index 547859c388c..00000000000 --- a/arch/arm/dts/rzg2l-smarc-som.dtsi +++ /dev/null @@ -1,371 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Device Tree Source for the RZ/{G2L,V2L} SMARC SOM common parts - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ - -#include <dt-bindings/gpio/gpio.h> -#include <dt-bindings/interrupt-controller/irqc-rzg2l.h> -#include <dt-bindings/pinctrl/rzg2l-pinctrl.h> - -/* SW1[2] should be at position 2/OFF to enable 64 GB eMMC */ -#define EMMC 1 - -/* - * To enable uSD card on CN3, - * SW1[2] should be at position 3/ON. - * Disable eMMC by setting "#define EMMC 0" above. - */ -#define SDHI (!EMMC) - -/ { - aliases { - ethernet0 = ð0; - ethernet1 = ð1; - }; - - chosen { - bootargs = "ignore_loglevel rw root=/dev/nfs ip=on"; - }; - - memory@48000000 { - device_type = "memory"; - /* first 128MB is reserved for secure area. */ - reg = <0x0 0x48000000 0x0 0x78000000>; - }; - - reg_1p8v: regulator-1p8v { - compatible = "regulator-fixed"; - regulator-name = "fixed-1.8V"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-boot-on; - regulator-always-on; - }; - - reg_3p3v: regulator-3p3v { - compatible = "regulator-fixed"; - regulator-name = "fixed-3.3V"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - regulator-always-on; - }; - - reg_1p1v: regulator-vdd-core { - compatible = "regulator-fixed"; - regulator-name = "fixed-1.1V"; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <1100000>; - regulator-boot-on; - regulator-always-on; - }; - - vccq_sdhi0: regulator-vccq-sdhi0 { - compatible = "regulator-gpio"; - - regulator-name = "SDHI0 VccQ"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3300000>; - states = <3300000 1>, <1800000 0>; - regulator-boot-on; - gpios = <&pinctrl RZG2L_GPIO(39, 0) GPIO_ACTIVE_HIGH>; - regulator-always-on; - }; - - /* 32.768kHz crystal */ - x2: x2-clock { - compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <32768>; - }; -}; - -&adc { - pinctrl-0 = <&adc_pins>; - pinctrl-names = "default"; - status = "okay"; - - /delete-node/ channel@6; - /delete-node/ channel@7; -}; - -ð0 { - pinctrl-0 = <ð0_pins>; - pinctrl-names = "default"; - phy-handle = <&phy0>; - phy-mode = "rgmii-id"; - status = "okay"; - - phy0: ethernet-phy@7 { - compatible = "ethernet-phy-id0022.1640", - "ethernet-phy-ieee802.3-c22"; - reg = <7>; - interrupt-parent = <&irqc>; - interrupts = <RZG2L_IRQ2 IRQ_TYPE_LEVEL_LOW>; - rxc-skew-psec = <2400>; - txc-skew-psec = <2400>; - rxdv-skew-psec = <0>; - txen-skew-psec = <0>; - rxd0-skew-psec = <0>; - rxd1-skew-psec = <0>; - rxd2-skew-psec = <0>; - rxd3-skew-psec = <0>; - txd0-skew-psec = <0>; - txd1-skew-psec = <0>; - txd2-skew-psec = <0>; - txd3-skew-psec = <0>; - }; -}; - -ð1 { - pinctrl-0 = <ð1_pins>; - pinctrl-names = "default"; - phy-handle = <&phy1>; - phy-mode = "rgmii-id"; - status = "okay"; - - phy1: ethernet-phy@7 { - compatible = "ethernet-phy-id0022.1640", - "ethernet-phy-ieee802.3-c22"; - reg = <7>; - interrupt-parent = <&irqc>; - interrupts = <RZG2L_IRQ3 IRQ_TYPE_LEVEL_LOW>; - rxc-skew-psec = <2400>; - txc-skew-psec = <2400>; - rxdv-skew-psec = <0>; - txen-skew-psec = <0>; - rxd0-skew-psec = <0>; - rxd1-skew-psec = <0>; - rxd2-skew-psec = <0>; - rxd3-skew-psec = <0>; - txd0-skew-psec = <0>; - txd1-skew-psec = <0>; - txd2-skew-psec = <0>; - txd3-skew-psec = <0>; - }; -}; - -&extal_clk { - clock-frequency = <24000000>; -}; - -&gpu { - mali-supply = <®_1p1v>; -}; - -&i2c3 { - raa215300: pmic@12 { - compatible = "renesas,raa215300"; - reg = <0x12>, <0x6f>; - reg-names = "main", "rtc"; - - clocks = <&x2>; - clock-names = "xin"; - }; -}; - -&ostm1 { - status = "okay"; -}; - -&ostm2 { - status = "okay"; -}; - -&pinctrl { - adc_pins: adc { - pinmux = <RZG2L_PORT_PINMUX(9, 0, 2)>; /* ADC_TRG */ - }; - - eth0_pins: eth0 { - pinmux = <RZG2L_PORT_PINMUX(28, 1, 1)>, /* ET0_LINKSTA */ - <RZG2L_PORT_PINMUX(27, 1, 1)>, /* ET0_MDC */ - <RZG2L_PORT_PINMUX(28, 0, 1)>, /* ET0_MDIO */ - <RZG2L_PORT_PINMUX(20, 0, 1)>, /* ET0_TXC */ - <RZG2L_PORT_PINMUX(20, 1, 1)>, /* ET0_TX_CTL */ - <RZG2L_PORT_PINMUX(20, 2, 1)>, /* ET0_TXD0 */ - <RZG2L_PORT_PINMUX(21, 0, 1)>, /* ET0_TXD1 */ - <RZG2L_PORT_PINMUX(21, 1, 1)>, /* ET0_TXD2 */ - <RZG2L_PORT_PINMUX(22, 0, 1)>, /* ET0_TXD3 */ - <RZG2L_PORT_PINMUX(24, 0, 1)>, /* ET0_RXC */ - <RZG2L_PORT_PINMUX(24, 1, 1)>, /* ET0_RX_CTL */ - <RZG2L_PORT_PINMUX(25, 0, 1)>, /* ET0_RXD0 */ - <RZG2L_PORT_PINMUX(25, 1, 1)>, /* ET0_RXD1 */ - <RZG2L_PORT_PINMUX(26, 0, 1)>, /* ET0_RXD2 */ - <RZG2L_PORT_PINMUX(26, 1, 1)>, /* ET0_RXD3 */ - <RZG2L_PORT_PINMUX(1, 0, 1)>; /* IRQ2 */ - }; - - eth1_pins: eth1 { - pinmux = <RZG2L_PORT_PINMUX(37, 2, 1)>, /* ET1_LINKSTA */ - <RZG2L_PORT_PINMUX(37, 0, 1)>, /* ET1_MDC */ - <RZG2L_PORT_PINMUX(37, 1, 1)>, /* ET1_MDIO */ - <RZG2L_PORT_PINMUX(29, 0, 1)>, /* ET1_TXC */ - <RZG2L_PORT_PINMUX(29, 1, 1)>, /* ET1_TX_CTL */ - <RZG2L_PORT_PINMUX(30, 0, 1)>, /* ET1_TXD0 */ - <RZG2L_PORT_PINMUX(30, 1, 1)>, /* ET1_TXD1 */ - <RZG2L_PORT_PINMUX(31, 0, 1)>, /* ET1_TXD2 */ - <RZG2L_PORT_PINMUX(31, 1, 1)>, /* ET1_TXD3 */ - <RZG2L_PORT_PINMUX(33, 1, 1)>, /* ET1_RXC */ - <RZG2L_PORT_PINMUX(34, 0, 1)>, /* ET1_RX_CTL */ - <RZG2L_PORT_PINMUX(34, 1, 1)>, /* ET1_RXD0 */ - <RZG2L_PORT_PINMUX(35, 0, 1)>, /* ET1_RXD1 */ - <RZG2L_PORT_PINMUX(35, 1, 1)>, /* ET1_RXD2 */ - <RZG2L_PORT_PINMUX(36, 0, 1)>, /* ET1_RXD3 */ - <RZG2L_PORT_PINMUX(1, 1, 1)>; /* IRQ3 */ - }; - - gpio-sd0-pwr-en-hog { - gpio-hog; - gpios = <RZG2L_GPIO(4, 1) GPIO_ACTIVE_HIGH>; - output-high; - line-name = "gpio_sd0_pwr_en"; - }; - - qspi0_pins: qspi0 { - qspi0-data { - pins = "QSPI0_IO0", "QSPI0_IO1", "QSPI0_IO2", "QSPI0_IO3"; - power-source = <1800>; - }; - - qspi0-ctrl { - pins = "QSPI0_SPCLK", "QSPI0_SSL", "QSPI_RESET#"; - power-source = <1800>; - }; - }; - - /* - * SD0 device selection is XOR between GPIO_SD0_DEV_SEL and SW1[2] - * The below switch logic can be used to select the device between - * eMMC and microSD, after setting GPIO_SD0_DEV_SEL to high in DT. - * SW1[2] should be at position 2/OFF to enable 64 GB eMMC - * SW1[2] should be at position 3/ON to enable uSD card CN3 - */ - sd0-dev-sel-hog { - gpio-hog; - gpios = <RZG2L_GPIO(41, 1) GPIO_ACTIVE_HIGH>; - output-high; - line-name = "sd0_dev_sel"; - }; - - sdhi0_emmc_pins: sd0emmc { - sd0_emmc_data { - pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3", - "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7"; - power-source = <1800>; - }; - - sd0_emmc_ctrl { - pins = "SD0_CLK", "SD0_CMD"; - power-source = <1800>; - }; - - sd0_emmc_rst { - pins = "SD0_RST#"; - power-source = <1800>; - }; - }; - - sdhi0_pins: sd0 { - sd0_data { - pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3"; - power-source = <3300>; - }; - - sd0_ctrl { - pins = "SD0_CLK", "SD0_CMD"; - power-source = <3300>; - }; - - sd0_mux { - pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */ - }; - }; - - sdhi0_pins_uhs: sd0_uhs { - sd0_data_uhs { - pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3"; - power-source = <1800>; - }; - - sd0_ctrl_uhs { - pins = "SD0_CLK", "SD0_CMD"; - power-source = <1800>; - }; - - sd0_mux_uhs { - pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */ - }; - }; -}; - -&sbc { - pinctrl-0 = <&qspi0_pins>; - pinctrl-names = "default"; - status = "okay"; - - flash@0 { - compatible = "micron,mt25qu512a", "jedec,spi-nor"; - reg = <0>; - m25p,fast-read; - spi-max-frequency = <50000000>; - spi-rx-bus-width = <4>; - - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - boot@0 { - reg = <0x00000000 0x2000000>; - read-only; - }; - user@2000000 { - reg = <0x2000000 0x2000000>; - }; - }; - }; -}; - -#if SDHI -&sdhi0 { - pinctrl-0 = <&sdhi0_pins>; - pinctrl-1 = <&sdhi0_pins_uhs>; - pinctrl-names = "default", "state_uhs"; - - vmmc-supply = <®_3p3v>; - vqmmc-supply = <&vccq_sdhi0>; - bus-width = <4>; - sd-uhs-sdr50; - sd-uhs-sdr104; - status = "okay"; -}; -#endif - -#if EMMC -&sdhi0 { - pinctrl-0 = <&sdhi0_emmc_pins>; - pinctrl-1 = <&sdhi0_emmc_pins>; - pinctrl-names = "default", "state_uhs"; - - vmmc-supply = <®_3p3v>; - vqmmc-supply = <®_1p8v>; - bus-width = <8>; - mmc-hs200-1_8v; - non-removable; - fixed-emmc-driver-type = <1>; - status = "okay"; -}; -#endif - -&wdt0 { - status = "okay"; - timeout-sec = <60>; -}; - -&wdt1 { - status = "okay"; - timeout-sec = <60>; -}; diff --git a/arch/arm/dts/rzg2l-smarc.dtsi b/arch/arm/dts/rzg2l-smarc.dtsi deleted file mode 100644 index 37807f1bda4..00000000000 --- a/arch/arm/dts/rzg2l-smarc.dtsi +++ /dev/null @@ -1,181 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Device Tree Source for the RZ/{G2L,V2L} SMARC EVK common parts - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ - -#include <dt-bindings/gpio/gpio.h> -#include <dt-bindings/pinctrl/rzg2l-pinctrl.h> - -/ { - aliases { - serial1 = &scif2; - i2c3 = &i2c3; - }; - - osc1: cec-clock { - compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <12000000>; - }; - - hdmi-out { - compatible = "hdmi-connector"; - type = "d"; - - port { - hdmi_con_out: endpoint { - remote-endpoint = <&adv7535_out>; - }; - }; - }; -}; - -&cpu_dai { - sound-dai = <&ssi0>; -}; - -&dsi { - status = "okay"; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - dsi0_in: endpoint { - }; - }; - - port@1 { - reg = <1>; - dsi0_out: endpoint { - data-lanes = <1 2 3 4>; - remote-endpoint = <&adv7535_in>; - }; - }; - }; -}; - -&i2c1 { - adv7535: hdmi@3d { - compatible = "adi,adv7535"; - reg = <0x3d>; - - interrupt-parent = <&pinctrl>; - interrupts = <RZG2L_GPIO(2, 1) IRQ_TYPE_EDGE_FALLING>; - clocks = <&osc1>; - clock-names = "cec"; - avdd-supply = <®_1p8v>; - dvdd-supply = <®_1p8v>; - pvdd-supply = <®_1p8v>; - a2vdd-supply = <®_1p8v>; - v3p3-supply = <®_3p3v>; - v1p2-supply = <®_1p8v>; - - adi,dsi-lanes = <4>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - adv7535_in: endpoint { - remote-endpoint = <&dsi0_out>; - }; - }; - - port@1 { - reg = <1>; - adv7535_out: endpoint { - remote-endpoint = <&hdmi_con_out>; - }; - }; - }; - }; -}; - -&i2c3 { - pinctrl-0 = <&i2c3_pins>; - pinctrl-names = "default"; - clock-frequency = <400000>; - - status = "okay"; - - wm8978: codec@1a { - compatible = "wlf,wm8978"; - #sound-dai-cells = <0>; - reg = <0x1a>; - }; - - versa3: clock-generator@68 { - compatible = "renesas,5p35023"; - reg = <0x68>; - #clock-cells = <1>; - clocks = <&x1>; - - renesas,settings = [ - 80 00 11 19 4c 02 23 7f 83 19 08 a9 5f 25 24 bf - 00 14 7a e1 00 00 00 00 01 55 59 bb 3f 30 90 b6 - 80 b0 45 c4 95 - ]; - - assigned-clocks = <&versa3 0>, <&versa3 1>, - <&versa3 2>, <&versa3 3>, - <&versa3 4>, <&versa3 5>; - assigned-clock-rates = <24000000>, <11289600>, - <11289600>, <12000000>, - <25000000>, <12288000>; - }; -}; - -#if PMOD_MTU3 -&mtu3 { - pinctrl-0 = <&mtu3_pins>; - pinctrl-names = "default"; - - status = "okay"; -}; - -#if MTU3_COUNTER_Z_PHASE_SIGNAL -/* SDHI cd pin is muxed with counter Z phase signal */ -&sdhi1 { - status = "disabled"; -}; -#endif /* MTU3_COUNTER_Z_PHASE_SIGNAL */ - -&spi1 { - status = "disabled"; -}; -#endif /* PMOD_MTU3 */ - -/* - * To enable SCIF2 (SER0) on PMOD1 (CN7) - * SW1 should be at position 2->3 so that SER0_CTS# line is activated - * SW2 should be at position 2->3 so that SER0_TX line is activated - * SW3 should be at position 2->3 so that SER0_RX line is activated - * SW4 should be at position 2->3 so that SER0_RTS# line is activated - */ -#if PMOD1_SER0 -&scif2 { - pinctrl-0 = <&scif2_pins>; - pinctrl-names = "default"; - - uart-has-rtscts; - status = "okay"; -}; -#endif - -&ssi0 { - pinctrl-0 = <&ssi0_pins>; - pinctrl-names = "default"; - - status = "okay"; -}; - -&vccq_sdhi1 { - gpios = <&pinctrl RZG2L_GPIO(39, 1) GPIO_ACTIVE_HIGH>; -}; diff --git a/arch/arm/include/asm/mach-imx/hab.h b/arch/arm/include/asm/mach-imx/hab.h index 2abf28ea45b..c0caf57fe61 100644 --- a/arch/arm/include/asm/mach-imx/hab.h +++ b/arch/arm/include/asm/mach-imx/hab.h @@ -132,13 +132,14 @@ enum hab_target { HAB_TGT_ANY = 0x55, }; -struct imx_sec_config_fuse_t { +struct imx_fuse { int bank; int word; }; #if defined(CONFIG_IMX_HAB) -extern struct imx_sec_config_fuse_t const imx_sec_config_fuse; +extern struct imx_fuse const imx_sec_config_fuse; +extern struct imx_fuse const imx_field_return_fuse; #endif /*Function prototype description*/ diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 21d955b4aef..011cca5d975 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -293,3 +293,5 @@ obj-$(CONFIG_ARCH_IMXRT) += imxrt/ obj-$(CONFIG_SPL_BOOTROM_SUPPORT) += spl_imx_romapi.o obj-$(CONFIG_IMX8_ROMAPI) += romapi.o + +obj-$(CONFIG_MX7)$(CONFIG_IMX8M) += snvs.o diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c index a8107f46ae5..600092389a3 100644 --- a/arch/arm/mach-imx/hab.c +++ b/arch/arm/mach-imx/hab.c @@ -26,6 +26,14 @@ DECLARE_GLOBAL_DATA_PTR; #define IS_HAB_ENABLED_BIT \ (is_soc_type(MXC_SOC_MX7ULP) ? 0x80000000 : \ ((is_soc_type(MXC_SOC_MX7) || is_soc_type(MXC_SOC_IMX8M)) ? 0x2000000 : 0x2)) +#define FIELD_RETURN_FUSE_MASK \ + (is_imx8mp() ? 0xFFFFFFFF : 0x00000001) +/* + * The fuse pattern for i.MX8M Plus is 0x28001401, but bit 2 is already set from factory. + * This means when field return is set, the fuse word value reads 0x28001405 + */ +#define FIELD_RETURN_PATTERN \ + (is_imx8mp() ? 0x28001405 : 0x00000001) #ifdef CONFIG_MX7ULP #define HAB_M4_PERSISTENT_START ((soc_rev() >= CHIP_REV_2_0) ? 0x20008040 : \ @@ -870,18 +878,30 @@ static int validate_ivt(struct ivt *ivt_initial) bool imx_hab_is_enabled(void) { - struct imx_sec_config_fuse_t *fuse = - (struct imx_sec_config_fuse_t *)&imx_sec_config_fuse; + struct imx_fuse *sec_config = + (struct imx_fuse *)&imx_sec_config_fuse; + struct imx_fuse *field_return = + (struct imx_fuse *)&imx_field_return_fuse; uint32_t reg; + bool is_enabled; int ret; - ret = fuse_read(fuse->bank, fuse->word, ®); + ret = fuse_read(sec_config->bank, sec_config->word, ®); if (ret) { - puts("\nSecure boot fuse read error\n"); + puts("Secure boot fuse read error\n"); return ret; } + is_enabled = reg & IS_HAB_ENABLED_BIT; + if (is_enabled) { + ret = fuse_read(field_return->bank, field_return->word, ®); + if (ret) { + puts("Field return fuse read error\n"); + return ret; + } + is_enabled = (reg & FIELD_RETURN_FUSE_MASK) != FIELD_RETURN_PATTERN; + } - return (reg & IS_HAB_ENABLED_BIT) == IS_HAB_ENABLED_BIT; + return is_enabled; } int imx_hab_authenticate_image(uint32_t ddr_start, uint32_t image_size, diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c index a72329ea919..9588b8b28bf 100644 --- a/arch/arm/mach-imx/imx8m/soc.c +++ b/arch/arm/mach-imx/imx8m/soc.c @@ -34,13 +34,20 @@ #include <linux/bitfield.h> #include <linux/sizes.h> +#include "../snvs.h" + DECLARE_GLOBAL_DATA_PTR; #if defined(CONFIG_IMX_HAB) -struct imx_sec_config_fuse_t const imx_sec_config_fuse = { +struct imx_fuse const imx_sec_config_fuse = { .bank = 1, .word = 3, }; + +struct imx_fuse const imx_field_return_fuse = { + .bank = 8, + .word = 3, +}; #endif int timer_init(void) @@ -571,6 +578,8 @@ static void imx8m_setup_snvs(void) writel(SNVS_LPPGDR_INIT, SNVS_BASE_ADDR + SNVS_LPLVDR); /* Clear interrupt status */ writel(0xffffffff, SNVS_BASE_ADDR + SNVS_LPSR); + + init_snvs(); } static void imx8m_setup_csu_tzasc(void) diff --git a/arch/arm/mach-imx/imx9/soc.c b/arch/arm/mach-imx/imx9/soc.c index 7c28fa39e14..21e0e7dd1e8 100644 --- a/arch/arm/mach-imx/imx9/soc.c +++ b/arch/arm/mach-imx/imx9/soc.c @@ -42,12 +42,18 @@ DECLARE_GLOBAL_DATA_PTR; struct rom_api *g_rom_api = (struct rom_api *)0x1980; -#ifdef CONFIG_ENV_IS_IN_MMC +#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC) || CONFIG_IS_ENABLED(ENV_IS_NOWHERE) __weak int board_mmc_get_env_dev(int devno) { return devno; } +#ifdef CONFIG_SYS_MMC_ENV_DEV +#define IMX9_MMC_ENV_DEV CONFIG_SYS_MMC_ENV_DEV +#else +#define IMX9_MMC_ENV_DEV 0 +#endif + int mmc_get_env_dev(void) { int ret; @@ -59,7 +65,7 @@ int mmc_get_env_dev(void) if (ret != ROM_API_OKAY) { puts("ROMAPI: failure at query_boot_info\n"); - return CONFIG_SYS_MMC_ENV_DEV; + return IMX9_MMC_ENV_DEV; } boot_type = boot >> 16; @@ -69,7 +75,7 @@ int mmc_get_env_dev(void) /* If not boot from sd/mmc, use default value */ if (boot_type != BOOT_TYPE_SD && boot_type != BOOT_TYPE_MMC) - return env_get_ulong("mmcdev", 10, CONFIG_SYS_MMC_ENV_DEV); + return env_get_ulong("mmcdev", 10, IMX9_MMC_ENV_DEV); return board_mmc_get_env_dev(boot_instance); } diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c index 9b40fe9235a..d4a61731a67 100644 --- a/arch/arm/mach-imx/mx6/soc.c +++ b/arch/arm/mach-imx/mx6/soc.c @@ -51,10 +51,15 @@ U_BOOT_DRVINFO(imx6_thermal) = { #endif #if defined(CONFIG_IMX_HAB) -struct imx_sec_config_fuse_t const imx_sec_config_fuse = { +struct imx_fuse const imx_sec_config_fuse = { .bank = 0, .word = 6, }; + +struct imx_fuse const imx_field_return_fuse = { + .bank = 5, + .word = 6, +}; #endif u32 get_nr_cpus(void) diff --git a/arch/arm/mach-imx/mx7/Makefile b/arch/arm/mach-imx/mx7/Makefile index f1436e2d0d7..fec228a616a 100644 --- a/arch/arm/mach-imx/mx7/Makefile +++ b/arch/arm/mach-imx/mx7/Makefile @@ -3,5 +3,5 @@ # (C) Copyright 2015 Freescale Semiconductor, Inc. # -obj-y := soc.o clock.o clock_slice.o ddr.o snvs.o +obj-y := soc.o clock.o clock_slice.o ddr.o obj-$(CONFIG_ARMV7_PSCI) += psci-mx7.o psci-suspend.o diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 1b891a2db3d..e504c1fd52a 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -127,10 +127,15 @@ static void isolate_resource(void) #endif #if defined(CONFIG_IMX_HAB) -struct imx_sec_config_fuse_t const imx_sec_config_fuse = { +struct imx_fuse const imx_sec_config_fuse = { .bank = 1, .word = 3, }; + +struct imx_fuse const imx_field_return_fuse = { + .bank = 8, + .word = 3, +}; #endif static bool is_mx7d(void) diff --git a/arch/arm/mach-imx/mx7ulp/soc.c b/arch/arm/mach-imx/mx7ulp/soc.c index 980e0226156..61d331e0181 100644 --- a/arch/arm/mach-imx/mx7ulp/soc.c +++ b/arch/arm/mach-imx/mx7ulp/soc.c @@ -38,10 +38,15 @@ static char *get_reset_cause(char *); #if defined(CONFIG_IMX_HAB) -struct imx_sec_config_fuse_t const imx_sec_config_fuse = { +struct imx_fuse const imx_sec_config_fuse = { .bank = 29, .word = 6, }; + +struct imx_fuse const imx_field_return_fuse = { + .bank = 9, + .word = 6, +}; #endif #define ROM_VERSION_ADDR 0x80 diff --git a/arch/arm/mach-imx/mx7/snvs.c b/arch/arm/mach-imx/snvs.c index 359bbbb41c7..359bbbb41c7 100644 --- a/arch/arm/mach-imx/mx7/snvs.c +++ b/arch/arm/mach-imx/snvs.c diff --git a/arch/arm/mach-imx/snvs.h b/arch/arm/mach-imx/snvs.h new file mode 100644 index 00000000000..4ce9781ca6d --- /dev/null +++ b/arch/arm/mach-imx/snvs.h @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2018 Linaro + */ + +void init_snvs(void); diff --git a/arch/arm/mach-renesas/include/mach/rzg2l.h b/arch/arm/mach-renesas/include/mach/rzg2l.h index 057df5cb9d4..c49a71a6dd4 100644 --- a/arch/arm/mach-renesas/include/mach/rzg2l.h +++ b/arch/arm/mach-renesas/include/mach/rzg2l.h @@ -8,6 +8,6 @@ #define __ASM_ARCH_RZG2L_H #define GICD_BASE 0x11900000 -#define GICR_BASE 0x11960000 +#define GICR_BASE 0x11940000 #endif /* __ASM_ARCH_RZG2L_H */ diff --git a/arch/riscv/dts/Makefile b/arch/riscv/dts/Makefile index bf32ead01b0..de356584bf1 100644 --- a/arch/riscv/dts/Makefile +++ b/arch/riscv/dts/Makefile @@ -10,6 +10,7 @@ dtb-$(CONFIG_TARGET_SIPEED_MAIX) += k210-maix-bit.dtb dtb-$(CONFIG_TARGET_STARFIVE_VISIONFIVE2) += jh7110-starfive-visionfive-2.dtb dtb-$(CONFIG_TARGET_TH1520_LPI4A) += th1520-lichee-pi-4a.dtb dtb-$(CONFIG_TARGET_XILINX_MBV) += xilinx-mbv32.dtb +dtb-$(CONFIG_TARGET_XILINX_MBV) += xilinx-mbv64.dtb dtb-$(CONFIG_TARGET_ASPEED_AST2700_IBEX) += ast2700-ibex.dtb include $(srctree)/scripts/Makefile.dts diff --git a/arch/riscv/dts/xilinx-mbv64.dts b/arch/riscv/dts/xilinx-mbv64.dts new file mode 100644 index 00000000000..4d65d338ecb --- /dev/null +++ b/arch/riscv/dts/xilinx-mbv64.dts @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dts file for AMD MicroBlaze V + * + * (C) Copyright 2023 - 2024, Advanced Micro Devices, Inc. + * + * Michal Simek <michal.simek@amd.com> + */ + +/dts-v1/; + +#include "binman.dtsi" + +/ { + #address-cells = <2>; + #size-cells = <2>; + model = "AMD MicroBlaze V 64bit"; + compatible = "qemu,mbv", "amd,mbv"; + + cpus: cpus { + #address-cells = <1>; + #size-cells = <0>; + timebase-frequency = <100000000>; + cpu_0: cpu@0 { + compatible = "amd,mbv64", "riscv"; + device_type = "cpu"; + reg = <0>; + riscv,isa = "rv64imafdc"; + i-cache-size = <32768>; + d-cache-size = <32768>; + clock-frequency = <100000000>; + cpu0_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + }; + + aliases { + serial0 = &uart0; + }; + + chosen { + bootargs = "earlycon"; + stdout-path = "serial0:115200n8"; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0 0x80000000 0 0x40000000>; + }; + + clk100: clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <100000000>; + }; + + axi: axi { + #address-cells = <2>; + #size-cells = <2>; + compatible = "simple-bus"; + ranges; + bootph-all; + + axi_intc: interrupt-controller@41200000 { + compatible = "xlnx,xps-intc-1.00.a"; + reg = <0 0x41200000 0 0x1000>; + interrupt-controller; + interrupt-parent = <&cpu0_intc>; + #interrupt-cells = <2>; + kind-of-intr = <0>; + }; + + xlnx_timer0: timer@41c00000 { + compatible = "xlnx,xps-timer-1.00.a"; + reg = <0 0x41c00000 0 0x1000>; + interrupt-parent = <&axi_intc>; + interrupts = <0 2>; + bootph-all; + xlnx,one-timer-only = <0>; + clock-names = "s_axi_aclk"; + clocks = <&clk100>; + }; + + uart0: serial@40600000 { + compatible = "xlnx,xps-uartlite-1.00.a"; + reg = <0 0x40600000 0 0x1000>; + interrupt-parent = <&axi_intc>; + interrupts = <1 2>; + bootph-all; + clocks = <&clk100>; + current-speed = <115200>; + xlnx,data-bits = <8>; + xlnx,use-parity = <0>; + }; + }; +}; diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c index 81752edc9f8..2940768cd1c 100644 --- a/arch/sandbox/cpu/start.c +++ b/arch/sandbox/cpu/start.c @@ -449,6 +449,16 @@ static void setup_ram_buf(struct sandbox_state *state) gd->ram_size = state->ram_size; } +static int sandbox_cmdline_cb_native(struct sandbox_state *state, + const char *arg) +{ + state->native = true; + + return 0; +} +SANDBOX_CMDLINE_OPT_SHORT(native, 'N', 0, + "Use native mode (host-based EFI boot filename)"); + void state_show(struct sandbox_state *state) { char **p; diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 3017b33d67b..dee280184b1 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -1515,7 +1515,7 @@ flash-stick@1 { reg = <1>; compatible = "sandbox,usb-flash"; - sandbox,filepath = "testflash1.bin"; + sandbox,filepath = "flash1.img"; }; flash-stick@2 { diff --git a/arch/sandbox/include/asm/state.h b/arch/sandbox/include/asm/state.h index e7dc01759e8..dc21a623106 100644 --- a/arch/sandbox/include/asm/state.h +++ b/arch/sandbox/include/asm/state.h @@ -101,6 +101,7 @@ struct sandbox_state { bool disable_eth; /* Disable Ethernet devices */ bool disable_sf_bootdevs; /* Don't bind SPI flash bootdevs */ bool upl; /* Enable Universal Payload (UPL) */ + bool native; /* Adjust to reflect host arch */ /* Pointer to information for each SPI bus/cs */ struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS] diff --git a/board/freescale/imx93_evk/imx93_evk.c b/board/freescale/imx93_evk/imx93_evk.c index 341831a7d30..c9171df330e 100644 --- a/board/freescale/imx93_evk/imx93_evk.c +++ b/board/freescale/imx93_evk/imx93_evk.c @@ -58,7 +58,7 @@ int board_init(void) int board_late_init(void) { -#ifdef CONFIG_ENV_IS_IN_MMC +#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC) || CONFIG_IS_ENABLED(ENV_IS_NOWHERE) board_late_mmc_env_init(); #endif diff --git a/board/hoperun/hihope-rzg2/hihope-rzg2.c b/board/hoperun/hihope-rzg2/hihope-rzg2.c index 0966e257464..8b635ef71ac 100644 --- a/board/hoperun/hihope-rzg2/hihope-rzg2.c +++ b/board/hoperun/hihope-rzg2/hihope-rzg2.c @@ -96,15 +96,15 @@ static bool is_hoperun_hihope_rzg2_board(const char *board_name) int board_fit_config_name_match(const char *name) { if (is_hoperun_hihope_rzg2_board("hoperun,hihope-rzg2m") && - !strcmp(name, "r8a774a1-hihope-rzg2m-u-boot")) + !strcmp(name, "r8a774a1-hihope-rzg2m-ex")) return 0; if (is_hoperun_hihope_rzg2_board("hoperun,hihope-rzg2n") && - !strcmp(name, "r8a774b1-hihope-rzg2n-u-boot")) + !strcmp(name, "r8a774b1-hihope-rzg2n-ex")) return 0; if (is_hoperun_hihope_rzg2_board("hoperun,hihope-rzg2h") && - !strcmp(name, "r8a774e1-hihope-rzg2h-u-boot")) + !strcmp(name, "r8a774e1-hihope-rzg2h-ex")) return 0; return -1; diff --git a/board/renesas/rzg2l/MAINTAINERS b/board/renesas/rzg2l/MAINTAINERS index 0a51391c1fc..0e656e2ef4f 100644 --- a/board/renesas/rzg2l/MAINTAINERS +++ b/board/renesas/rzg2l/MAINTAINERS @@ -1,6 +1,6 @@ RENESAS RZG2L BOARD FAMILY M: Paul Barker <paul.barker.ct@bp.renesas.com> S: Supported -F: arch/arm/dts/rz-smarc-common.dtsi +N: rz-smarc N: rzg2l N: r9a07g044 diff --git a/board/xilinx/Kconfig b/board/xilinx/Kconfig index c7df4ab5781..0ff8440e6e0 100644 --- a/board/xilinx/Kconfig +++ b/board/xilinx/Kconfig @@ -45,7 +45,7 @@ config XILINX_OF_BOARD_DTB_ADDR default 0x1000 if ARCH_VERSAL || ARCH_VERSAL_NET || ARCH_VERSAL2 default 0x8000 if MICROBLAZE default 0x100000 if ARCH_ZYNQ || ARCH_ZYNQMP - default 0x23000000 if TARGET_XILINX_MBV + default 0x83000000 if TARGET_XILINX_MBV depends on OF_BOARD || OF_SEPARATE help Offset in the memory where the board configuration DTB is placed. diff --git a/boot/bootmeth_efi.c b/boot/bootmeth_efi.c index 2ad6d3b4ace..f836aa655f5 100644 --- a/boot/bootmeth_efi.c +++ b/boot/bootmeth_efi.c @@ -13,7 +13,7 @@ #include <bootmeth.h> #include <command.h> #include <dm.h> -#include <efi_default_filename.h> +#include <efi.h> #include <efi_loader.h> #include <fs.h> #include <malloc.h> @@ -25,32 +25,11 @@ #define EFI_DIRNAME "/EFI/BOOT/" -static int get_efi_pxe_arch(void) -{ - /* http://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml */ - if (IS_ENABLED(CONFIG_ARM64)) - return 0xb; - else if (IS_ENABLED(CONFIG_ARM)) - return 0xa; - else if (IS_ENABLED(CONFIG_X86_64)) - return 0x6; - else if (IS_ENABLED(CONFIG_X86)) - return 0x7; - else if (IS_ENABLED(CONFIG_ARCH_RV32I)) - return 0x19; - else if (IS_ENABLED(CONFIG_ARCH_RV64I)) - return 0x1b; - else if (IS_ENABLED(CONFIG_SANDBOX)) - return 0; /* not used */ - - return -EINVAL; -} - static int get_efi_pxe_vci(char *str, int max_len) { int ret; - ret = get_efi_pxe_arch(); + ret = efi_get_pxe_arch(); if (ret < 0) return ret; @@ -168,7 +147,7 @@ static int distro_efi_try_bootflow_files(struct udevice *dev, } strcpy(fname, EFI_DIRNAME); - strcat(fname, BOOTEFI_NAME); + strcat(fname, efi_get_basename()); if (bflow->blk) desc = dev_get_uclass_plat(bflow->blk); @@ -239,7 +218,7 @@ static int distro_efi_read_bootflow_net(struct bootflow *bflow) ret = get_efi_pxe_vci(str, sizeof(str)); if (ret) return log_msg_ret("vci", ret); - ret = get_efi_pxe_arch(); + ret = efi_get_pxe_arch(); if (ret < 0) return log_msg_ret("arc", ret); arch = ret; diff --git a/cmd/efidebug.c b/cmd/efidebug.c index e040fe75fa1..02f1e080e88 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -511,6 +511,27 @@ static int do_efi_show_images(struct cmd_tbl *cmdtp, int flag, return CMD_RET_SUCCESS; } +/** + * do_efi_show_defaults() - show UEFI default filename and PXE architecture + * + * @cmdtp: Command table + * @flag: Command flag + * @argc: Number of arguments + * @argv: Argument array + * Return: CMD_RET_SUCCESS on success, CMD_RET_RET_FAILURE on failure + * + * Implement efidebug "defaults" sub-command. + * Shows the default EFI filename and PXE architecture + */ +static int do_efi_show_defaults(struct cmd_tbl *cmdtp, int flag, + int argc, char *const argv[]) +{ + printf("Default boot path: EFI\\BOOT\\%s\n", efi_get_basename()); + printf("PXE arch: 0x%02x\n", efi_get_pxe_arch()); + + return CMD_RET_SUCCESS; +} + static const char * const efi_mem_type_string[] = { [EFI_RESERVED_MEMORY_TYPE] = "RESERVED", [EFI_LOADER_CODE] = "LOADER CODE", @@ -1561,6 +1582,8 @@ static struct cmd_tbl cmd_efidebug_sub[] = { "", ""), U_BOOT_CMD_MKENT(dh, CONFIG_SYS_MAXARGS, 1, do_efi_show_handles, "", ""), + U_BOOT_CMD_MKENT(defaults, CONFIG_SYS_MAXARGS, 1, do_efi_show_defaults, + "", ""), U_BOOT_CMD_MKENT(images, CONFIG_SYS_MAXARGS, 1, do_efi_show_images, "", ""), U_BOOT_CMD_MKENT(memmap, CONFIG_SYS_MAXARGS, 1, do_efi_show_memmap, @@ -1653,6 +1676,8 @@ U_BOOT_LONGHELP(efidebug, " - show UEFI drivers\n" "efidebug dh\n" " - show UEFI handles\n" + "efidebug defaults\n" + " - show default EFI filename and PXE architecture\n" "efidebug images\n" " - show loaded images\n" "efidebug memmap\n" diff --git a/configs/dh_imx6_defconfig b/configs/dh_imx6_defconfig index 468ec3805f6..43ac5a567ba 100644 --- a/configs/dh_imx6_defconfig +++ b/configs/dh_imx6_defconfig @@ -5,11 +5,12 @@ CONFIG_ARCH_MX6=y CONFIG_MX6QDL=y CONFIG_TARGET_DHCOMIMX6=y CONFIG_SPL_SYS_L2_PL310=y -CONFIG_DEFAULT_DEVICE_TREE="imx6q-dhcom-pdk2" +CONFIG_DEFAULT_DEVICE_TREE="nxp/imx/imx6q-dhcom-pdk2" CONFIG_MX6_DDRCAL=y CONFIG_NR_DRAM_BANKS=1 CONFIG_OF_LIBFDT_OVERLAY=y -CONFIG_OF_LIST="imx6q-dhcom-pdk2 imx6dl-dhcom-pdk2 imx6s-dhcom-drc02 imx6dl-dhcom-picoitx" +CONFIG_OF_LIST="nxp/imx/imx6q-dhcom-pdk2 nxp/imx/imx6dl-dhcom-pdk2 nxp/imx/imx6s-dhcom-drc02 nxp/imx/imx6dl-dhcom-picoitx" +CONFIG_OF_UPSTREAM=y CONFIG_FIT_VERBOSE=y CONFIG_MULTI_DTB_FIT=y CONFIG_LTO=y diff --git a/configs/hihope_rzg2_defconfig b/configs/hihope_rzg2_defconfig index 6266f3cbc56..c9753e13657 100644 --- a/configs/hihope_rzg2_defconfig +++ b/configs/hihope_rzg2_defconfig @@ -8,23 +8,23 @@ CONFIG_ARCH_CPU_INIT=y CONFIG_TEXT_BASE=0x50000000 CONFIG_ENV_SIZE=0x20000 CONFIG_ENV_OFFSET=0xFFFE0000 -CONFIG_DEFAULT_DEVICE_TREE="renesas/r8a774a1-hihope-rzg2m" +CONFIG_DEFAULT_DEVICE_TREE="renesas/r8a774a1-hihope-rzg2m-ex" CONFIG_TARGET_HIHOPE_RZG2=y # CONFIG_SPL is not set CONFIG_USE_BOOTARGS=y CONFIG_USE_BOOTCOMMAND=y -CONFIG_BOOTCOMMAND="tftp 0x48080000 Image; tftp 0x48000000 Image-r8a774a1-hihope-rzg2m.dtb; booti 0x48080000 - 0x48000000" -CONFIG_DEFAULT_FDT_FILE="r8a774a1-hihope-rzg2m.dtb" +CONFIG_BOOTCOMMAND="tftp 0x48080000 Image; tftp 0x48000000 Image-r8a774a1-hihope-rzg2m-ex.dtb; booti 0x48080000 - 0x48000000" +CONFIG_DEFAULT_FDT_FILE="r8a774a1-hihope-rzg2m-ex.dtb" # CONFIG_BOARD_EARLY_INIT_F is not set CONFIG_CMD_MMC=y CONFIG_CMD_PART=y CONFIG_CMD_USB=y -CONFIG_OF_LIST="renesas/r8a774a1-hihope-rzg2m renesas/r8a774b1-hihope-rzg2n renesas/r8a774e1-hihope-rzg2h" +CONFIG_OF_LIST="renesas/r8a774a1-hihope-rzg2m-ex renesas/r8a774b1-hihope-rzg2n-ex renesas/r8a774e1-hihope-rzg2h-ex" CONFIG_MULTI_DTB_FIT_LZO=y CONFIG_MULTI_DTB_FIT_USER_DEFINED_AREA=y CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y -CONFIG_SYS_MMC_ENV_DEV=1 +CONFIG_SYS_MMC_ENV_DEV=0 CONFIG_SYS_MMC_ENV_PART=2 CONFIG_GPIO_HOG=y CONFIG_DM_PCA953X=y diff --git a/configs/starfive_visionfive2_defconfig b/configs/starfive_visionfive2_defconfig index c3508926d6c..11e1332f875 100644 --- a/configs/starfive_visionfive2_defconfig +++ b/configs/starfive_visionfive2_defconfig @@ -55,6 +55,9 @@ CONFIG_SPL_PAD_TO=0x0 CONFIG_SPL_SYS_MALLOC=y CONFIG_SPL_HAS_CUSTOM_MALLOC_START=y CONFIG_SPL_CUSTOM_SYS_MALLOC_ADDR=0x80000000 +CONFIG_SPL_SYS_MMCSD_RAW_MODE=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x2 CONFIG_SPL_SYS_MALLOC_SIZE=0x400000 CONFIG_SPL_I2C=y CONFIG_SPL_DM_SPI_FLASH=y diff --git a/configs/xilinx_mbv32_smode_defconfig b/configs/xilinx_mbv32_smode_defconfig index 741724f3bda..820681d505b 100644 --- a/configs/xilinx_mbv32_smode_defconfig +++ b/configs/xilinx_mbv32_smode_defconfig @@ -2,13 +2,13 @@ CONFIG_RISCV=y CONFIG_SYS_MALLOC_LEN=0xe00000 CONFIG_NR_DRAM_BANKS=1 CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x21200000 +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x81200000 CONFIG_ENV_SIZE=0x20000 CONFIG_DEFAULT_DEVICE_TREE="xilinx-mbv32" -CONFIG_SPL_STACK=0x20200000 -CONFIG_SPL_BSS_START_ADDR=0x24000000 +CONFIG_SPL_STACK=0x80200000 +CONFIG_SPL_BSS_START_ADDR=0x84000000 CONFIG_SPL_BSS_MAX_SIZE=0x80000 -CONFIG_SYS_LOAD_ADDR=0x20200000 +CONFIG_SYS_LOAD_ADDR=0x80200000 CONFIG_SPL_SIZE_LIMIT=0x40000 CONFIG_SPL=y CONFIG_DEBUG_UART_BASE=0x40600000 @@ -16,12 +16,12 @@ CONFIG_DEBUG_UART_CLOCK=1000000 CONFIG_SYS_CLK_FREQ=100000000 CONFIG_BOOT_SCRIPT_OFFSET=0x0 CONFIG_TARGET_XILINX_MBV=y -CONFIG_SPL_OPENSBI_LOAD_ADDR=0x20100000 +CONFIG_SPL_OPENSBI_LOAD_ADDR=0x80100000 CONFIG_RISCV_SMODE=y # CONFIG_SPL_SMP is not set CONFIG_REMAKE_ELF=y CONFIG_FIT=y -CONFIG_SPL_LOAD_FIT_ADDRESS=0x20200000 +CONFIG_SPL_LOAD_FIT_ADDRESS=0x80200000 CONFIG_DISTRO_DEFAULTS=y CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y diff --git a/configs/xilinx_mbv64_defconfig b/configs/xilinx_mbv64_defconfig new file mode 100644 index 00000000000..aad9c3f140b --- /dev/null +++ b/configs/xilinx_mbv64_defconfig @@ -0,0 +1,44 @@ +CONFIG_RISCV=y +CONFIG_SYS_MALLOC_LEN=0xe00000 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x81200000 +CONFIG_ENV_SIZE=0x20000 +CONFIG_DEFAULT_DEVICE_TREE="xilinx-mbv64" +CONFIG_SPL_STACK=0x80200000 +CONFIG_SPL_BSS_START_ADDR=0x84000000 +CONFIG_SPL_BSS_MAX_SIZE=0x80000 +CONFIG_SYS_LOAD_ADDR=0x80200000 +CONFIG_SPL_SIZE_LIMIT=0x40000 +CONFIG_SPL=y +CONFIG_DEBUG_UART_BASE=0x40600000 +CONFIG_DEBUG_UART_CLOCK=100000000 +CONFIG_SYS_CLK_FREQ=100000000 +CONFIG_BOOT_SCRIPT_OFFSET=0x0 +CONFIG_DEBUG_UART=y +CONFIG_TARGET_XILINX_MBV=y +CONFIG_ARCH_RV64I=y +# CONFIG_SPL_SMP is not set +CONFIG_REMAKE_ELF=y +CONFIG_FIT=y +CONFIG_SPL_LOAD_FIT_ADDRESS=0x80200000 +CONFIG_DISTRO_DEFAULTS=y +CONFIG_DISPLAY_CPUINFO=y +CONFIG_DISPLAY_BOARDINFO=y +# CONFIG_BOARD_LATE_INIT is not set +CONFIG_SPL_MAX_SIZE=0x40000 +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_SYS_MALLOC=y +CONFIG_SPL_SYS_MALLOC_SIZE=0x800000 +# CONFIG_CMD_MII is not set +CONFIG_CMD_TIMER=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_DM_MTD=y +CONFIG_DEBUG_UART_ANNOUNCE=y +CONFIG_DEBUG_UART_SKIP_INIT=y +CONFIG_XILINX_UARTLITE=y +CONFIG_XILINX_TIMER=y +# CONFIG_BINMAN_FDT is not set +CONFIG_PANIC_HANG=y +CONFIG_SPL_GZIP=y diff --git a/configs/xilinx_mbv64_smode_defconfig b/configs/xilinx_mbv64_smode_defconfig new file mode 100644 index 00000000000..628e0ed5be2 --- /dev/null +++ b/configs/xilinx_mbv64_smode_defconfig @@ -0,0 +1,48 @@ +CONFIG_RISCV=y +CONFIG_SYS_MALLOC_LEN=0xe00000 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x81200000 +CONFIG_ENV_SIZE=0x20000 +CONFIG_DEFAULT_DEVICE_TREE="xilinx-mbv64" +CONFIG_SPL_STACK=0x80200000 +CONFIG_SPL_BSS_START_ADDR=0x84000000 +CONFIG_SPL_BSS_MAX_SIZE=0x80000 +CONFIG_SYS_LOAD_ADDR=0x80200000 +CONFIG_SPL_SIZE_LIMIT=0x40000 +CONFIG_SPL=y +CONFIG_DEBUG_UART_BASE=0x40600000 +CONFIG_DEBUG_UART_CLOCK=1000000 +CONFIG_SYS_CLK_FREQ=100000000 +CONFIG_BOOT_SCRIPT_OFFSET=0x0 +CONFIG_TARGET_XILINX_MBV=y +CONFIG_SPL_OPENSBI_LOAD_ADDR=0x80100000 +CONFIG_ARCH_RV64I=y +CONFIG_RISCV_SMODE=y +# CONFIG_SPL_SMP is not set +CONFIG_REMAKE_ELF=y +CONFIG_FIT=y +CONFIG_SPL_LOAD_FIT_ADDRESS=0x80200000 +CONFIG_DISTRO_DEFAULTS=y +CONFIG_DISPLAY_CPUINFO=y +CONFIG_DISPLAY_BOARDINFO=y +# CONFIG_BOARD_LATE_INIT is not set +CONFIG_SPL_MAX_SIZE=0x40000 +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_SYS_MALLOC=y +CONFIG_SPL_SYS_MALLOC_SIZE=0x800000 +CONFIG_SPL_OPENSBI_SCRATCH_OPTIONS=0x2 +# CONFIG_CMD_MII is not set +CONFIG_CMD_TIMER=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_DM_MTD=y +CONFIG_DEBUG_UART_UARTLITE=y +CONFIG_DEBUG_UART_ANNOUNCE=y +CONFIG_DEBUG_UART_SKIP_INIT=y +CONFIG_XILINX_UARTLITE=y +# CONFIG_RISCV_TIMER is not set +CONFIG_XILINX_TIMER=y +# CONFIG_BINMAN_FDT is not set +CONFIG_PANIC_HANG=y +CONFIG_SPL_GZIP=y diff --git a/doc/board/emulation/qemu-riscv.rst b/doc/board/emulation/qemu-riscv.rst index 8a5eb1eda56..8388e13d96d 100644 --- a/doc/board/emulation/qemu-riscv.rst +++ b/doc/board/emulation/qemu-riscv.rst @@ -171,3 +171,8 @@ The following settings provide a debug UART for the virt machine:: CONFIG_DEBUG_UART_NS16550=y CONFIG_DEBUG_UART_BASE=0x10000000 CONFIG_DEBUG_UART_CLOCK=3686400 + +To provide a debug UART in main U-Boot the SBI DBCN extension can be used +instead:: + + CONFIG_DEBUG_SBI_CONSOLE=y diff --git a/doc/conf.py b/doc/conf.py index ced3a6723fc..c50daf874a5 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -560,13 +560,9 @@ epub_exclude_files = ['search.html'] # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # -# See the Sphinx chapter of https://ralsina.me/static/manual.pdf -# -# FIXME: Do not add the index file here; the result will be too big. Adding -# multiple PDF files here actually tries to get the cross-referencing right -# *between* PDF files. +# See https://rst2pdf.org/static/manual.html#sphinx pdf_documents = [ - ('uboot-documentation', u'U-Boot', u'U-Boot', u'J. Random Bozo'), + ('index', u'U-Boot', u'Das U-Boot', u'The U-Boot development community'), ] # kernel-doc extension configuration for running Sphinx directly (e.g. by Read diff --git a/doc/develop/devicetree/control.rst b/doc/develop/devicetree/control.rst index 211f7e4909c..0233945f8b6 100644 --- a/doc/develop/devicetree/control.rst +++ b/doc/develop/devicetree/control.rst @@ -89,7 +89,7 @@ Failing that, you could write one from scratch yourself! Resyncing with devicetree-rebasing ---------------------------------- -The `devicetree-rebasing repository`_ maintains a fork cum mirror copy of +The `devicetree-rebasing repository`_ maintains a mirror copy of devicetree files along with the bindings synced at every Linux kernel major release or intermediate release candidates. The U-Boot maintainers regularly sync the `dts/upstream/` subtree from the devicetree-rebasing repo whenever diff --git a/drivers/cache/cache-sifive-ccache.c b/drivers/cache/cache-sifive-ccache.c index cc00b80f60b..2ff5ca701d6 100644 --- a/drivers/cache/cache-sifive-ccache.c +++ b/drivers/cache/cache-sifive-ccache.c @@ -14,8 +14,17 @@ #define SIFIVE_CCACHE_WAY_ENABLE 0x008 +#define SIFIVE_CCACHE_TRUNKCLOCKGATE 0x1000 +#define SIFIVE_CCACHE_TRUNKCLOCKGATE_DISABLE BIT(0) +#define SIFIVE_CCACHE_REGIONCLOCKGATE_DISABLE BIT(1) + struct sifive_ccache { void __iomem *base; + bool has_cg; +}; + +struct sifive_ccache_quirks { + bool has_cg; }; static int sifive_ccache_enable(struct udevice *dev) @@ -30,6 +39,14 @@ static int sifive_ccache_enable(struct udevice *dev) writel(ways - 1, priv->base + SIFIVE_CCACHE_WAY_ENABLE); + if (priv->has_cg) { + /* enable clock gating bits */ + config = readl(priv->base + SIFIVE_CCACHE_TRUNKCLOCKGATE); + config &= ~(SIFIVE_CCACHE_TRUNKCLOCKGATE_DISABLE | + SIFIVE_CCACHE_REGIONCLOCKGATE_DISABLE); + writel(config, priv->base + SIFIVE_CCACHE_TRUNKCLOCKGATE); + } + return 0; } @@ -50,7 +67,9 @@ static const struct cache_ops sifive_ccache_ops = { static int sifive_ccache_probe(struct udevice *dev) { struct sifive_ccache *priv = dev_get_priv(dev); + const struct sifive_ccache_quirks *quirk = (void *)dev_get_driver_data(dev); + priv->has_cg = quirk->has_cg; priv->base = dev_read_addr_ptr(dev); if (!priv->base) return -EINVAL; @@ -58,10 +77,18 @@ static int sifive_ccache_probe(struct udevice *dev) return 0; } +static const struct sifive_ccache_quirks fu540_ccache = { + .has_cg = false, +}; + +static const struct sifive_ccache_quirks ccache0 = { + .has_cg = true, +}; + static const struct udevice_id sifive_ccache_ids[] = { - { .compatible = "sifive,fu540-c000-ccache" }, - { .compatible = "sifive,fu740-c000-ccache" }, - { .compatible = "sifive,ccache0" }, + { .compatible = "sifive,fu540-c000-ccache", .data = (ulong)&fu540_ccache }, + { .compatible = "sifive,fu740-c000-ccache", .data = (ulong)&fu540_ccache }, + { .compatible = "sifive,ccache0", .data = (ulong)&ccache0 }, {} }; diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c index 4aad3248d9e..e43dbb40c4a 100644 --- a/drivers/spi/zynq_qspi.c +++ b/drivers/spi/zynq_qspi.c @@ -813,7 +813,7 @@ static int zynq_qspi_exec_op(struct spi_slave *slave, priv->is_parallel = false; priv->is_stacked = false; - slave->flags &= ~SPI_XFER_MASK; + slave->flags &= ~SPI_XFER_LOWER; spi_release_bus(slave); return 0; diff --git a/drivers/spi/zynqmp_gqspi.c b/drivers/spi/zynqmp_gqspi.c index 1d19b2606c5..4251bf28cd3 100644 --- a/drivers/spi/zynqmp_gqspi.c +++ b/drivers/spi/zynqmp_gqspi.c @@ -870,8 +870,8 @@ static int zynqmp_qspi_exec_op(struct spi_slave *slave, priv->bus = 0; if (priv->is_parallel) { - if (slave->flags & SPI_XFER_MASK) - priv->bus = (slave->flags & SPI_XFER_MASK) >> 8; + if (slave->flags & SPI_XFER_LOWER) + priv->bus = 1; if (zynqmp_qspi_update_stripe(op)) priv->stripe = 1; } @@ -890,7 +890,7 @@ static int zynqmp_qspi_exec_op(struct spi_slave *slave, zynqmp_qspi_chipselect(priv, 0); priv->is_parallel = false; - slave->flags &= ~SPI_XFER_MASK; + slave->flags &= ~SPI_XFER_LOWER; return ret; } diff --git a/dts/upstream/src/arm/nxp/imx/imx6dl-dhcom-pdk2.dts b/dts/upstream/src/arm/nxp/imx/imx6dl-dhcom-pdk2.dts new file mode 100644 index 00000000000..38235925257 --- /dev/null +++ b/dts/upstream/src/arm/nxp/imx/imx6dl-dhcom-pdk2.dts @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2024 Marek Vasut <marex@denx.de> + * + * DHCOM iMX6 variant: + * DHCM-iMX6DL-C080-R102-F0819-E-SD-RTC-T-HS-I-01D2 + * DHCOM PCB number: 493-400 or newer + * PDK2 PCB number: 516-400 or newer + */ +/dts-v1/; + +#include "imx6dl.dtsi" +#include "imx6qdl-dhcom-som.dtsi" +#include "imx6qdl-dhcom-pdk2.dtsi" + +/ { + model = "DH electronics i.MX6DL DHCOM on Premium Developer Kit (2)"; + compatible = "dh,imx6dl-dhcom-pdk2", "dh,imx6dl-dhcom-som", + "fsl,imx6dl"; +}; diff --git a/include/configs/imx93_evk.h b/include/configs/imx93_evk.h index 53fb8c9b1ba..260a5043d53 100644 --- a/include/configs/imx93_evk.h +++ b/include/configs/imx93_evk.h @@ -27,6 +27,12 @@ #define BOOTENV #endif +#ifdef CONFIG_SYS_MMC_ENV_DEV +#define IMX93_EVK_MMC_ENV_DEV CONFIG_SYS_MMC_ENV_DEV +#else +#define IMX93_EVK_MMC_ENV_DEV 0 +#endif + /* Initial environment variables */ #define CFG_EXTRA_ENV_SETTINGS \ BOOTENV \ @@ -42,7 +48,7 @@ "boot_fit=no\0" \ "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ "bootm_size=0x10000000\0" \ - "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ + "mmcdev=" __stringify(IMX93_EVK_MMC_ENV_DEV)"\0" \ "mmcpart=1\0" \ "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \ "mmcautodetect=yes\0" \ diff --git a/include/dt-bindings/clock/r9a07g044-cpg.h b/include/dt-bindings/clock/r9a07g044-cpg.h deleted file mode 100644 index 0bb17ff1a01..00000000000 --- a/include/dt-bindings/clock/r9a07g044-cpg.h +++ /dev/null @@ -1,220 +0,0 @@ -/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) - * - * Copyright (C) 2021 Renesas Electronics Corp. - */ -#ifndef __DT_BINDINGS_CLOCK_R9A07G044_CPG_H__ -#define __DT_BINDINGS_CLOCK_R9A07G044_CPG_H__ - -#include <dt-bindings/clock/renesas-cpg-mssr.h> - -/* R9A07G044 CPG Core Clocks */ -#define R9A07G044_CLK_I 0 -#define R9A07G044_CLK_I2 1 -#define R9A07G044_CLK_G 2 -#define R9A07G044_CLK_S0 3 -#define R9A07G044_CLK_S1 4 -#define R9A07G044_CLK_SPI0 5 -#define R9A07G044_CLK_SPI1 6 -#define R9A07G044_CLK_SD0 7 -#define R9A07G044_CLK_SD1 8 -#define R9A07G044_CLK_M0 9 -#define R9A07G044_CLK_M1 10 -#define R9A07G044_CLK_M2 11 -#define R9A07G044_CLK_M3 12 -#define R9A07G044_CLK_M4 13 -#define R9A07G044_CLK_HP 14 -#define R9A07G044_CLK_TSU 15 -#define R9A07G044_CLK_ZT 16 -#define R9A07G044_CLK_P0 17 -#define R9A07G044_CLK_P1 18 -#define R9A07G044_CLK_P2 19 -#define R9A07G044_CLK_AT 20 -#define R9A07G044_OSCCLK 21 -#define R9A07G044_CLK_P0_DIV2 22 - -/* R9A07G044 Module Clocks */ -#define R9A07G044_CA55_SCLK 0 -#define R9A07G044_CA55_PCLK 1 -#define R9A07G044_CA55_ATCLK 2 -#define R9A07G044_CA55_GICCLK 3 -#define R9A07G044_CA55_PERICLK 4 -#define R9A07G044_CA55_ACLK 5 -#define R9A07G044_CA55_TSCLK 6 -#define R9A07G044_GIC600_GICCLK 7 -#define R9A07G044_IA55_CLK 8 -#define R9A07G044_IA55_PCLK 9 -#define R9A07G044_MHU_PCLK 10 -#define R9A07G044_SYC_CNT_CLK 11 -#define R9A07G044_DMAC_ACLK 12 -#define R9A07G044_DMAC_PCLK 13 -#define R9A07G044_OSTM0_PCLK 14 -#define R9A07G044_OSTM1_PCLK 15 -#define R9A07G044_OSTM2_PCLK 16 -#define R9A07G044_MTU_X_MCK_MTU3 17 -#define R9A07G044_POE3_CLKM_POE 18 -#define R9A07G044_GPT_PCLK 19 -#define R9A07G044_POEG_A_CLKP 20 -#define R9A07G044_POEG_B_CLKP 21 -#define R9A07G044_POEG_C_CLKP 22 -#define R9A07G044_POEG_D_CLKP 23 -#define R9A07G044_WDT0_PCLK 24 -#define R9A07G044_WDT0_CLK 25 -#define R9A07G044_WDT1_PCLK 26 -#define R9A07G044_WDT1_CLK 27 -#define R9A07G044_WDT2_PCLK 28 -#define R9A07G044_WDT2_CLK 29 -#define R9A07G044_SPI_CLK2 30 -#define R9A07G044_SPI_CLK 31 -#define R9A07G044_SDHI0_IMCLK 32 -#define R9A07G044_SDHI0_IMCLK2 33 -#define R9A07G044_SDHI0_CLK_HS 34 -#define R9A07G044_SDHI0_ACLK 35 -#define R9A07G044_SDHI1_IMCLK 36 -#define R9A07G044_SDHI1_IMCLK2 37 -#define R9A07G044_SDHI1_CLK_HS 38 -#define R9A07G044_SDHI1_ACLK 39 -#define R9A07G044_GPU_CLK 40 -#define R9A07G044_GPU_AXI_CLK 41 -#define R9A07G044_GPU_ACE_CLK 42 -#define R9A07G044_ISU_ACLK 43 -#define R9A07G044_ISU_PCLK 44 -#define R9A07G044_H264_CLK_A 45 -#define R9A07G044_H264_CLK_P 46 -#define R9A07G044_CRU_SYSCLK 47 -#define R9A07G044_CRU_VCLK 48 -#define R9A07G044_CRU_PCLK 49 -#define R9A07G044_CRU_ACLK 50 -#define R9A07G044_MIPI_DSI_PLLCLK 51 -#define R9A07G044_MIPI_DSI_SYSCLK 52 -#define R9A07G044_MIPI_DSI_ACLK 53 -#define R9A07G044_MIPI_DSI_PCLK 54 -#define R9A07G044_MIPI_DSI_VCLK 55 -#define R9A07G044_MIPI_DSI_LPCLK 56 -#define R9A07G044_LCDC_CLK_A 57 -#define R9A07G044_LCDC_CLK_P 58 -#define R9A07G044_LCDC_CLK_D 59 -#define R9A07G044_SSI0_PCLK2 60 -#define R9A07G044_SSI0_PCLK_SFR 61 -#define R9A07G044_SSI1_PCLK2 62 -#define R9A07G044_SSI1_PCLK_SFR 63 -#define R9A07G044_SSI2_PCLK2 64 -#define R9A07G044_SSI2_PCLK_SFR 65 -#define R9A07G044_SSI3_PCLK2 66 -#define R9A07G044_SSI3_PCLK_SFR 67 -#define R9A07G044_SRC_CLKP 68 -#define R9A07G044_USB_U2H0_HCLK 69 -#define R9A07G044_USB_U2H1_HCLK 70 -#define R9A07G044_USB_U2P_EXR_CPUCLK 71 -#define R9A07G044_USB_PCLK 72 -#define R9A07G044_ETH0_CLK_AXI 73 -#define R9A07G044_ETH0_CLK_CHI 74 -#define R9A07G044_ETH1_CLK_AXI 75 -#define R9A07G044_ETH1_CLK_CHI 76 -#define R9A07G044_I2C0_PCLK 77 -#define R9A07G044_I2C1_PCLK 78 -#define R9A07G044_I2C2_PCLK 79 -#define R9A07G044_I2C3_PCLK 80 -#define R9A07G044_SCIF0_CLK_PCK 81 -#define R9A07G044_SCIF1_CLK_PCK 82 -#define R9A07G044_SCIF2_CLK_PCK 83 -#define R9A07G044_SCIF3_CLK_PCK 84 -#define R9A07G044_SCIF4_CLK_PCK 85 -#define R9A07G044_SCI0_CLKP 86 -#define R9A07G044_SCI1_CLKP 87 -#define R9A07G044_IRDA_CLKP 88 -#define R9A07G044_RSPI0_CLKB 89 -#define R9A07G044_RSPI1_CLKB 90 -#define R9A07G044_RSPI2_CLKB 91 -#define R9A07G044_CANFD_PCLK 92 -#define R9A07G044_GPIO_HCLK 93 -#define R9A07G044_ADC_ADCLK 94 -#define R9A07G044_ADC_PCLK 95 -#define R9A07G044_TSU_PCLK 96 - -/* R9A07G044 Resets */ -#define R9A07G044_CA55_RST_1_0 0 -#define R9A07G044_CA55_RST_1_1 1 -#define R9A07G044_CA55_RST_3_0 2 -#define R9A07G044_CA55_RST_3_1 3 -#define R9A07G044_CA55_RST_4 4 -#define R9A07G044_CA55_RST_5 5 -#define R9A07G044_CA55_RST_6 6 -#define R9A07G044_CA55_RST_7 7 -#define R9A07G044_CA55_RST_8 8 -#define R9A07G044_CA55_RST_9 9 -#define R9A07G044_CA55_RST_10 10 -#define R9A07G044_CA55_RST_11 11 -#define R9A07G044_CA55_RST_12 12 -#define R9A07G044_GIC600_GICRESET_N 13 -#define R9A07G044_GIC600_DBG_GICRESET_N 14 -#define R9A07G044_IA55_RESETN 15 -#define R9A07G044_MHU_RESETN 16 -#define R9A07G044_DMAC_ARESETN 17 -#define R9A07G044_DMAC_RST_ASYNC 18 -#define R9A07G044_SYC_RESETN 19 -#define R9A07G044_OSTM0_PRESETZ 20 -#define R9A07G044_OSTM1_PRESETZ 21 -#define R9A07G044_OSTM2_PRESETZ 22 -#define R9A07G044_MTU_X_PRESET_MTU3 23 -#define R9A07G044_POE3_RST_M_REG 24 -#define R9A07G044_GPT_RST_C 25 -#define R9A07G044_POEG_A_RST 26 -#define R9A07G044_POEG_B_RST 27 -#define R9A07G044_POEG_C_RST 28 -#define R9A07G044_POEG_D_RST 29 -#define R9A07G044_WDT0_PRESETN 30 -#define R9A07G044_WDT1_PRESETN 31 -#define R9A07G044_WDT2_PRESETN 32 -#define R9A07G044_SPI_RST 33 -#define R9A07G044_SDHI0_IXRST 34 -#define R9A07G044_SDHI1_IXRST 35 -#define R9A07G044_GPU_RESETN 36 -#define R9A07G044_GPU_AXI_RESETN 37 -#define R9A07G044_GPU_ACE_RESETN 38 -#define R9A07G044_ISU_ARESETN 39 -#define R9A07G044_ISU_PRESETN 40 -#define R9A07G044_H264_X_RESET_VCP 41 -#define R9A07G044_H264_CP_PRESET_P 42 -#define R9A07G044_CRU_CMN_RSTB 43 -#define R9A07G044_CRU_PRESETN 44 -#define R9A07G044_CRU_ARESETN 45 -#define R9A07G044_MIPI_DSI_CMN_RSTB 46 -#define R9A07G044_MIPI_DSI_ARESET_N 47 -#define R9A07G044_MIPI_DSI_PRESET_N 48 -#define R9A07G044_LCDC_RESET_N 49 -#define R9A07G044_SSI0_RST_M2_REG 50 -#define R9A07G044_SSI1_RST_M2_REG 51 -#define R9A07G044_SSI2_RST_M2_REG 52 -#define R9A07G044_SSI3_RST_M2_REG 53 -#define R9A07G044_SRC_RST 54 -#define R9A07G044_USB_U2H0_HRESETN 55 -#define R9A07G044_USB_U2H1_HRESETN 56 -#define R9A07G044_USB_U2P_EXL_SYSRST 57 -#define R9A07G044_USB_PRESETN 58 -#define R9A07G044_ETH0_RST_HW_N 59 -#define R9A07G044_ETH1_RST_HW_N 60 -#define R9A07G044_I2C0_MRST 61 -#define R9A07G044_I2C1_MRST 62 -#define R9A07G044_I2C2_MRST 63 -#define R9A07G044_I2C3_MRST 64 -#define R9A07G044_SCIF0_RST_SYSTEM_N 65 -#define R9A07G044_SCIF1_RST_SYSTEM_N 66 -#define R9A07G044_SCIF2_RST_SYSTEM_N 67 -#define R9A07G044_SCIF3_RST_SYSTEM_N 68 -#define R9A07G044_SCIF4_RST_SYSTEM_N 69 -#define R9A07G044_SCI0_RST 70 -#define R9A07G044_SCI1_RST 71 -#define R9A07G044_IRDA_RST 72 -#define R9A07G044_RSPI0_RST 73 -#define R9A07G044_RSPI1_RST 74 -#define R9A07G044_RSPI2_RST 75 -#define R9A07G044_CANFD_RSTP_N 76 -#define R9A07G044_CANFD_RSTC_N 77 -#define R9A07G044_GPIO_RSTN 78 -#define R9A07G044_GPIO_PORT_RESETN 79 -#define R9A07G044_GPIO_SPARE_RESETN 80 -#define R9A07G044_ADC_PRESETN 81 -#define R9A07G044_ADC_ADRST_N 82 -#define R9A07G044_TSU_PRESETN 83 - -#endif /* __DT_BINDINGS_CLOCK_R9A07G044_CPG_H__ */ diff --git a/include/dt-bindings/interrupt-controller/irqc-rzg2l.h b/include/dt-bindings/interrupt-controller/irqc-rzg2l.h deleted file mode 100644 index 34ce778885a..00000000000 --- a/include/dt-bindings/interrupt-controller/irqc-rzg2l.h +++ /dev/null @@ -1,25 +0,0 @@ -/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ -/* - * This header provides constants for Renesas RZ/G2L family IRQC bindings. - * - * Copyright (C) 2022 Renesas Electronics Corp. - * - */ - -#ifndef __DT_BINDINGS_IRQC_RZG2L_H -#define __DT_BINDINGS_IRQC_RZG2L_H - -/* NMI maps to SPI0 */ -#define RZG2L_NMI 0 - -/* IRQ0-7 map to SPI1-8 */ -#define RZG2L_IRQ0 1 -#define RZG2L_IRQ1 2 -#define RZG2L_IRQ2 3 -#define RZG2L_IRQ3 4 -#define RZG2L_IRQ4 5 -#define RZG2L_IRQ5 6 -#define RZG2L_IRQ6 7 -#define RZG2L_IRQ7 8 - -#endif /* __DT_BINDINGS_IRQC_RZG2L_H */ diff --git a/include/dt-bindings/pinctrl/rzg2l-pinctrl.h b/include/dt-bindings/pinctrl/rzg2l-pinctrl.h deleted file mode 100644 index c78ed5e5efb..00000000000 --- a/include/dt-bindings/pinctrl/rzg2l-pinctrl.h +++ /dev/null @@ -1,23 +0,0 @@ -/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ -/* - * This header provides constants for Renesas RZ/G2L family pinctrl bindings. - * - * Copyright (C) 2021 Renesas Electronics Corp. - * - */ - -#ifndef __DT_BINDINGS_RZG2L_PINCTRL_H -#define __DT_BINDINGS_RZG2L_PINCTRL_H - -#define RZG2L_PINS_PER_PORT 8 - -/* - * Create the pin index from its bank and position numbers and store in - * the upper 16 bits the alternate function identifier - */ -#define RZG2L_PORT_PINMUX(b, p, f) ((b) * RZG2L_PINS_PER_PORT + (p) | ((f) << 16)) - -/* Convert a port and pin label to its global pin index */ -#define RZG2L_GPIO(port, pin) ((port) * RZG2L_PINS_PER_PORT + (pin)) - -#endif /* __DT_BINDINGS_RZG2L_PINCTRL_H */ diff --git a/include/efi.h b/include/efi.h index 84640cf7b25..c559fda3004 100644 --- a/include/efi.h +++ b/include/efi.h @@ -669,4 +669,38 @@ int efi_get_mmap(struct efi_mem_desc **descp, int *sizep, uint *keyp, */ void efi_show_tables(struct efi_system_table *systab); +/** + * efi_get_basename() - Get the default filename to use when loading + * + * E.g. this function returns BOOTAA64.EFI for an aarch target + * + * Return: Default EFI filename + */ +const char *efi_get_basename(void); + +#ifdef CONFIG_SANDBOX +#include <asm/state.h> +#endif + +static inline bool efi_use_host_arch(void) +{ +#ifdef CONFIG_SANDBOX + struct sandbox_state *state = state_get_current(); + + return state->native; +#else + return false; +#endif +} + +/** + * efi_get_pxe_arch() - Get the architecture value for PXE + * + * See: + * http://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml + * + * Return: Architecture value + */ +int efi_get_pxe_arch(void); + #endif /* _LINUX_EFI_H */ diff --git a/include/efi_default_filename.h b/include/efi_default_filename.h deleted file mode 100644 index 77932984b55..00000000000 --- a/include/efi_default_filename.h +++ /dev/null @@ -1,56 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * When a boot option does not provide a file path the EFI file to be - * booted is \EFI\BOOT\$(BOOTEFI_NAME).EFI. The architecture specific - * file name is defined in this include. - * - * Copyright (c) 2022, Heinrich Schuchardt <xypron.glpk@gmx.de> - * Copyright (c) 2022, Linaro Limited - */ - -#ifndef _EFI_DEFAULT_FILENAME_H -#define _EFI_DEFAULT_FILENAME_H - -#include <host_arch.h> - -#undef BOOTEFI_NAME - -#ifdef CONFIG_SANDBOX - -#if HOST_ARCH == HOST_ARCH_X86_64 -#define BOOTEFI_NAME "BOOTX64.EFI" -#elif HOST_ARCH == HOST_ARCH_X86 -#define BOOTEFI_NAME "BOOTIA32.EFI" -#elif HOST_ARCH == HOST_ARCH_AARCH64 -#define BOOTEFI_NAME "BOOTAA64.EFI" -#elif HOST_ARCH == HOST_ARCH_ARM -#define BOOTEFI_NAME "BOOTARM.EFI" -#elif HOST_ARCH == HOST_ARCH_RISCV32 -#define BOOTEFI_NAME "BOOTRISCV32.EFI" -#elif HOST_ARCH == HOST_ARCH_RISCV64 -#define BOOTEFI_NAME "BOOTRISCV64.EFI" -#else -#error Unsupported UEFI architecture -#endif - -#else - -#if defined(CONFIG_ARM64) -#define BOOTEFI_NAME "BOOTAA64.EFI" -#elif defined(CONFIG_ARM) -#define BOOTEFI_NAME "BOOTARM.EFI" -#elif defined(CONFIG_X86_64) -#define BOOTEFI_NAME "BOOTX64.EFI" -#elif defined(CONFIG_X86) -#define BOOTEFI_NAME "BOOTIA32.EFI" -#elif defined(CONFIG_ARCH_RV32I) -#define BOOTEFI_NAME "BOOTRISCV32.EFI" -#elif defined(CONFIG_ARCH_RV64I) -#define BOOTEFI_NAME "BOOTRISCV64.EFI" -#else -#error Unsupported UEFI architecture -#endif - -#endif - -#endif diff --git a/include/efi_loader.h b/include/efi_loader.h index 291eca5c077..39809eac1bc 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -858,7 +858,7 @@ struct efi_device_path *efi_dp_from_file(const struct efi_device_path *dp, struct efi_device_path *efi_dp_from_eth(void); struct efi_device_path *efi_dp_from_mem(uint32_t mem_type, uint64_t start_address, - uint64_t end_address); + size_t size); /* Determine the last device path node that is not the end node. */ const struct efi_device_path *efi_dp_last_node( const struct efi_device_path *dp); diff --git a/include/imx8image.h b/include/imx8image.h index 85fb642ae39..6b95e93fb50 100644 --- a/include/imx8image.h +++ b/include/imx8image.h @@ -146,6 +146,7 @@ struct image_array { enum imx8image_cmd { CMD_INVALID, CMD_BOOT_FROM, + CMD_DCD_SKIP, CMD_FUSE_VERSION, CMD_SW_VERSION, CMD_MSG_BLOCK, diff --git a/include/spi.h b/include/spi.h index 3a92d02f215..6944773b596 100644 --- a/include/spi.h +++ b/include/spi.h @@ -41,12 +41,6 @@ #define SPI_3BYTE_MODE 0x0 #define SPI_4BYTE_MODE 0x1 -/* SPI transfer flags */ -#define SPI_XFER_STRIPE (1 << 6) -#define SPI_XFER_MASK (3 << 8) -#define SPI_XFER_LOWER (1 << 8) -#define SPI_XFER_UPPER (2 << 8) - /* Max no. of CS supported per spi device */ #define SPI_CS_CNT_MAX 2 @@ -169,6 +163,8 @@ struct spi_slave { #define SPI_XFER_ONCE (SPI_XFER_BEGIN | SPI_XFER_END) #define SPI_XFER_U_PAGE BIT(4) #define SPI_XFER_STACKED BIT(5) +#define SPI_XFER_LOWER BIT(6) + /* * Flag indicating that the spi-controller has multi chip select * capability and can assert/de-assert more than one chip select diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index 066f0ca0da7..58d49789f12 100644 --- a/lib/efi_loader/Kconfig +++ b/lib/efi_loader/Kconfig @@ -567,6 +567,16 @@ config BOOTEFI_HELLO_COMPILE No additional space will be required in the resulting U-Boot binary when this option is enabled. +config BOOTEFI_TESTAPP_COMPILE + bool "Compile an EFI test app for testing" + default y + help + This compiles an app designed for testing. It is packed into an image + by the test.py testing frame in the setup_efi_image() function. + + No additional space will be required in the resulting U-Boot binary + when this option is enabled. + endif source "lib/efi/Kconfig" diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile index 00d18966f9e..87131ab911d 100644 --- a/lib/efi_loader/Makefile +++ b/lib/efi_loader/Makefile @@ -20,6 +20,7 @@ apps-$(CONFIG_EFI_LOAD_FILE2_INITRD) += initrddump ifeq ($(CONFIG_GENERATE_ACPI_TABLE),) apps-y += dtbdump endif +apps-$(CONFIG_BOOTEFI_TESTAPP_COMPILE) += testapp obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o obj-$(CONFIG_EFI_BOOTMGR) += efi_bootmgr.o diff --git a/lib/efi_loader/efi_bootbin.c b/lib/efi_loader/efi_bootbin.c index bf38392fac3..a87006b3c0e 100644 --- a/lib/efi_loader/efi_bootbin.c +++ b/lib/efi_loader/efi_bootbin.c @@ -137,7 +137,6 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size) */ file_path = efi_dp_from_mem(EFI_RESERVED_MEMORY_TYPE, (uintptr_t)source_buffer, - (uintptr_t)source_buffer + source_size); /* * Make sure that device for device_path exist diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c index f9b5988a06e..8c51a6ef2ed 100644 --- a/lib/efi_loader/efi_bootmgr.c +++ b/lib/efi_loader/efi_bootmgr.c @@ -11,10 +11,10 @@ #include <blkmap.h> #include <charset.h> #include <dm.h> +#include <efi.h> #include <log.h> #include <malloc.h> #include <net.h> -#include <efi_default_filename.h> #include <efi_loader.h> #include <efi_variable.h> #include <asm/unaligned.h> @@ -82,8 +82,12 @@ struct efi_device_path *expand_media_path(struct efi_device_path *device_path) &efi_simple_file_system_protocol_guid, &rem); if (handle) { if (rem->type == DEVICE_PATH_TYPE_END) { - full_path = efi_dp_from_file(device_path, - "/EFI/BOOT/" BOOTEFI_NAME); + char fname[30]; + + snprintf(fname, sizeof(fname), "/EFI/BOOT/%s", + efi_get_basename()); + full_path = efi_dp_from_file(device_path, fname); + } else { full_path = efi_dp_dup(device_path); } diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index d7444588aa0..ee387e1dfd4 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -977,7 +977,7 @@ struct efi_device_path __maybe_unused *efi_dp_from_eth(void) /* Construct a device-path for memory-mapped image */ struct efi_device_path *efi_dp_from_mem(uint32_t memory_type, uint64_t start_address, - uint64_t end_address) + size_t size) { struct efi_device_path_memory *mdp; void *buf, *start; @@ -992,7 +992,7 @@ struct efi_device_path *efi_dp_from_mem(uint32_t memory_type, mdp->dp.length = sizeof(*mdp); mdp->memory_type = memory_type; mdp->start_address = start_address; - mdp->end_address = end_address; + mdp->end_address = start_address + size; buf = &mdp[1]; *((struct efi_device_path *)buf) = END; @@ -1073,8 +1073,7 @@ efi_status_t efi_dp_from_name(const char *dev, const char *devnr, efi_get_image_parameters(&image_addr, &image_size); dp = efi_dp_from_mem(EFI_RESERVED_MEMORY_TYPE, - (uintptr_t)image_addr, - (uintptr_t)image_addr + image_size); + (uintptr_t)image_addr, image_size); } else if (IS_ENABLED(CONFIG_NETDEVICES) && !strcmp(dev, "Net")) { dp = efi_dp_from_eth(); } else if (!strcmp(dev, "Uart")) { diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c index 00167bd2a10..bf96f61d3d0 100644 --- a/lib/efi_loader/efi_helper.c +++ b/lib/efi_loader/efi_helper.c @@ -12,18 +12,89 @@ #include <mapmem.h> #include <dm.h> #include <fs.h> +#include <efi.h> #include <efi_api.h> #include <efi_load_initrd.h> #include <efi_loader.h> #include <efi_variable.h> +#include <host_arch.h> #include <linux/libfdt.h> #include <linux/list.h> +#undef BOOTEFI_NAME + +#if HOST_ARCH == HOST_ARCH_X86_64 +#define HOST_BOOTEFI_NAME "BOOTX64.EFI" +#define HOST_PXE_ARCH 0x6 +#elif HOST_ARCH == HOST_ARCH_X86 +#define HOST_BOOTEFI_NAME "BOOTIA32.EFI" +#define HOST_PXE_ARCH 0x7 +#elif HOST_ARCH == HOST_ARCH_AARCH64 +#define HOST_BOOTEFI_NAME "BOOTAA64.EFI" +#define HOST_PXE_ARCH 0xb +#elif HOST_ARCH == HOST_ARCH_ARM +#define HOST_BOOTEFI_NAME "BOOTARM.EFI" +#define HOST_PXE_ARCH 0xa +#elif HOST_ARCH == HOST_ARCH_RISCV32 +#define HOST_BOOTEFI_NAME "BOOTRISCV32.EFI" +#define HOST_PXE_ARCH 0x19 +#elif HOST_ARCH == HOST_ARCH_RISCV64 +#define HOST_BOOTEFI_NAME "BOOTRISCV64.EFI" +#define HOST_PXE_ARCH 0x1b +#else +#error Unsupported Host architecture +#endif + +#if defined(CONFIG_SANDBOX) +#define BOOTEFI_NAME "BOOTSBOX.EFI" +#elif defined(CONFIG_ARM64) +#define BOOTEFI_NAME "BOOTAA64.EFI" +#elif defined(CONFIG_ARM) +#define BOOTEFI_NAME "BOOTARM.EFI" +#elif defined(CONFIG_X86_64) +#define BOOTEFI_NAME "BOOTX64.EFI" +#elif defined(CONFIG_X86) +#define BOOTEFI_NAME "BOOTIA32.EFI" +#elif defined(CONFIG_ARCH_RV32I) +#define BOOTEFI_NAME "BOOTRISCV32.EFI" +#elif defined(CONFIG_ARCH_RV64I) +#define BOOTEFI_NAME "BOOTRISCV64.EFI" +#else +#error Unsupported UEFI architecture +#endif + #if defined(CONFIG_CMD_EFIDEBUG) || defined(CONFIG_EFI_LOAD_FILE2_INITRD) /* GUID used by Linux to identify the LoadFile2 protocol with the initrd */ const efi_guid_t efi_lf2_initrd_guid = EFI_INITRD_MEDIA_GUID; #endif +const char *efi_get_basename(void) +{ + return efi_use_host_arch() ? HOST_BOOTEFI_NAME : BOOTEFI_NAME; +} + +int efi_get_pxe_arch(void) +{ + if (efi_use_host_arch()) + return HOST_PXE_ARCH; + + /* http://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml */ + if (IS_ENABLED(CONFIG_ARM64)) + return 0xb; + else if (IS_ENABLED(CONFIG_ARM)) + return 0xa; + else if (IS_ENABLED(CONFIG_X86_64)) + return 0x6; + else if (IS_ENABLED(CONFIG_X86)) + return 0x7; + else if (IS_ENABLED(CONFIG_ARCH_RV32I)) + return 0x19; + else if (IS_ENABLED(CONFIG_ARCH_RV64I)) + return 0x1b; + + return -EINVAL; +} + /** * efi_create_current_boot_var() - Return Boot#### name were #### is replaced by * the value of BootCurrent diff --git a/lib/efi_loader/testapp.c b/lib/efi_loader/testapp.c new file mode 100644 index 00000000000..804ca7e4679 --- /dev/null +++ b/lib/efi_loader/testapp.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * EFI test application + * + * Copyright 2024 Google LLC + * Written by Simon Glass <sjg@chromium.org> + * + * This test program is used to test the invocation of an EFI application. + * It writes a few messages to the console and then exits boot services + */ + +#include <efi_api.h> + +static const efi_guid_t loaded_image_guid = EFI_LOADED_IMAGE_PROTOCOL_GUID; + +static struct efi_system_table *systable; +static struct efi_boot_services *boottime; +static struct efi_simple_text_output_protocol *con_out; + +/** + * efi_main() - entry point of the EFI application. + * + * @handle: handle of the loaded image + * @systab: system table + * Return: status code + */ +efi_status_t EFIAPI efi_main(efi_handle_t handle, + struct efi_system_table *systab) +{ + struct efi_loaded_image *loaded_image; + efi_status_t ret; + + systable = systab; + boottime = systable->boottime; + con_out = systable->con_out; + + /* Get the loaded image protocol */ + ret = boottime->open_protocol(handle, &loaded_image_guid, + (void **)&loaded_image, NULL, NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL); + if (ret != EFI_SUCCESS) { + con_out->output_string + (con_out, u"Cannot open loaded image protocol\r\n"); + goto out; + } + + /* UEFI requires CR LF */ + con_out->output_string(con_out, u"U-Boot test app for EFI_LOADER\r\n"); + +out: + con_out->output_string(con_out, u"Exiting test app\n"); + ret = boottime->exit(handle, ret, 0, NULL); + + /* We should never arrive here */ + return ret; +} diff --git a/lib/lmb.c b/lib/lmb.c index 2ed0da21b45..8b306e4de8e 100644 --- a/lib/lmb.c +++ b/lib/lmb.c @@ -220,8 +220,6 @@ static void lmb_reserve_uboot_region(void) */ debug("## Current stack ends at 0x%08lx ", (ulong)rsv_start); - /* adjust sp by 16K to be safe */ - rsv_start -= SZ_16K; for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) { if (!gd->bd->bi_dram[bank].size || rsv_start < gd->bd->bi_dram[bank].start) diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c index 369c611d924..8c44afd9297 100644 --- a/test/boot/bootdev.c +++ b/test/boot/bootdev.c @@ -221,6 +221,10 @@ static int bootdev_test_order(struct unit_test_state *uts) /* Use the environment variable to override it */ ut_assertok(env_set("boot_targets", "mmc1 mmc2 usb")); ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); + + /* get the usb device which has a backing file (flash1.img) */ + ut_asserteq(0, bootflow_scan_next(&iter, &bflow)); + ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ut_asserteq(5, iter.num_devs); ut_asserteq_str("mmc1.bootdev", iter.dev_used[0]->name); @@ -260,7 +264,11 @@ static int bootdev_test_order(struct unit_test_state *uts) ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); ut_asserteq(2, iter.num_devs); - /* Now scan past mmc1 and make sure that the 3 USB devices show up */ + /* + * Now scan past mmc1 and make sure that the 3 USB devices show up. The + * first one has a backing file so returns success + */ + ut_asserteq(0, bootflow_scan_next(&iter, &bflow)); ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ut_asserteq(6, iter.num_devs); ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); @@ -322,6 +330,10 @@ static int bootdev_test_prio(struct unit_test_state *uts) /* 3 MMC and 3 USB bootdevs: MMC should come before USB */ ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); + + /* get the usb device which has a backing file (flash1.img) */ + ut_asserteq(0, bootflow_scan_next(&iter, &bflow)); + ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ut_asserteq(6, iter.num_devs); ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); @@ -339,6 +351,10 @@ static int bootdev_test_prio(struct unit_test_state *uts) bootflow_iter_uninit(&iter); ut_assertok(bootflow_scan_first(NULL, NULL, &iter, BOOTFLOWIF_HUNT, &bflow)); + + /* get the usb device which has a backing file (flash1.img) */ + ut_asserteq(0, bootflow_scan_next(&iter, &bflow)); + ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ut_asserteq(7, iter.num_devs); ut_asserteq_str("usb_mass_storage.lun0.bootdev", diff --git a/test/boot/bootflow.c b/test/boot/bootflow.c index 2f859c40adb..9397328609d 100644 --- a/test/boot/bootflow.c +++ b/test/boot/bootflow.c @@ -12,7 +12,8 @@ #include <bootstd.h> #include <cli.h> #include <dm.h> -#include <efi_default_filename.h> +#include <efi.h> +#include <efi_loader.h> #include <expo.h> #ifdef CONFIG_SANDBOX #include <asm/test.h> @@ -31,6 +32,9 @@ extern U_BOOT_DRIVER(bootmeth_android); extern U_BOOT_DRIVER(bootmeth_cros); extern U_BOOT_DRIVER(bootmeth_2script); +/* Use this as the vendor for EFI to tell the app to exit boot services */ +static u16 __efi_runtime_data test_vendor[] = u"U-Boot testing"; + static int inject_response(struct unit_test_state *uts) { /* @@ -184,8 +188,9 @@ static int bootflow_cmd_scan_e(struct unit_test_state *uts) ut_assert_nextline(" 3 efi media mmc 0 mmc1.bootdev.whole "); ut_assert_nextline(" ** No partition found, err=-2: No such file or directory"); ut_assert_nextline(" 4 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); - ut_assert_nextline(" 5 efi fs mmc 1 mmc1.bootdev.part_1 /EFI/BOOT/" - BOOTEFI_NAME); + ut_assert_nextline( + " 5 efi fs mmc 1 mmc1.bootdev.part_1 /EFI/BOOT/%s", + efi_get_basename()); ut_assert_skip_to_line("Scanning bootdev 'mmc0.bootdev':"); ut_assert_skip_to_line( @@ -533,7 +538,7 @@ static int prep_mmc_bootdev(struct unit_test_state *uts, const char *mmc_dev, order[2] = mmc_dev; - /* Enable the mmc4 node since we need a second bootflow */ + /* Enable the requested mmc node since we need a second bootflow */ root = oftree_root(oftree_default()); node = ofnode_find_subnode(root, mmc_dev); ut_assert(ofnode_valid(node)); @@ -1216,3 +1221,66 @@ static int bootflow_android(struct unit_test_state *uts) return 0; } BOOTSTD_TEST(bootflow_android, UTF_CONSOLE); + +/* Test EFI bootmeth */ +static int bootflow_efi(struct unit_test_state *uts) +{ + static const char *order[] = {"mmc1", "usb", NULL}; + struct bootstd_priv *std; + struct udevice *bootstd; + const char **old_order; + + ut_assertok(uclass_first_device_err(UCLASS_BOOTSTD, &bootstd)); + std = dev_get_priv(bootstd); + old_order = std->bootdev_order; + std->bootdev_order = order; + + /* disable ethernet since the hunter will run dhcp */ + test_set_eth_enable(false); + + /* make USB scan without delays */ + test_set_skip_delays(true); + + bootstd_reset_usb(); + + ut_assertok(run_command("bootflow scan", 0)); + ut_assert_skip_to_line( + "Bus usb@1: scanning bus usb@1 for devices... 5 USB Device(s) found"); + + ut_assertok(run_command("bootflow list", 0)); + + ut_assert_nextlinen("Showing all"); + ut_assert_nextlinen("Seq"); + ut_assert_nextlinen("---"); + ut_assert_nextlinen(" 0 extlinux"); + ut_assert_nextlinen( + " 1 efi ready usb_mass_ 1 usb_mass_storage.lun0.boo /EFI/BOOT/BOOTSBOX.EFI"); + ut_assert_nextlinen("---"); + ut_assert_skip_to_line("(2 bootflows, 2 valid)"); + ut_assert_console_end(); + + ut_assertok(run_command("bootflow select 1", 0)); + ut_assert_console_end(); + + systab.fw_vendor = test_vendor; + + ut_asserteq(1, run_command("bootflow boot", 0)); + ut_assert_nextline( + "** Booting bootflow 'usb_mass_storage.lun0.bootdev.part_1' with efi"); + if (IS_ENABLED(CONFIG_LOGF_FUNC)) + ut_assert_skip_to_line(" efi_run_image() Booting /\\EFI\\BOOT\\BOOTSBOX.EFI"); + else + ut_assert_skip_to_line("Booting /\\EFI\\BOOT\\BOOTSBOX.EFI"); + + /* TODO: Why the \r ? */ + ut_assert_nextline("U-Boot test app for EFI_LOADER\r"); + ut_assert_nextline("Exiting test app"); + ut_assert_nextline("Boot failed (err=-14)"); + + ut_assert_console_end(); + + ut_assertok(bootstd_test_drop_bootdev_order(uts)); + + return 0; +} +BOOTSTD_TEST(bootflow_efi, UTF_CONSOLE); diff --git a/test/py/tests/bootstd/flash1.img.xz b/test/py/tests/bootstd/flash1.img.xz Binary files differnew file mode 100644 index 00000000000..29b78c62a9b --- /dev/null +++ b/test/py/tests/bootstd/flash1.img.xz diff --git a/test/py/tests/test_ut.py b/test/py/tests/test_ut.py index 9166c8f6b6e..6d44191976b 100644 --- a/test/py/tests/test_ut.py +++ b/test/py/tests/test_ut.py @@ -28,21 +28,22 @@ def mkdir_cond(dirname): if not os.path.exists(dirname): os.mkdir(dirname) -def setup_image(cons, mmc_dev, part_type, second_part=False): +def setup_image(cons, devnum, part_type, second_part=False, basename='mmc'): """Create a 20MB disk image with a single partition Args: cons (ConsoleBase): Console to use - mmc_dev (int): MMC device number to use, e.g. 1 + devnum (int): Device number to use, e.g. 1 part_type (int): Partition type, e.g. 0xc for FAT32 second_part (bool): True to contain a small second partition + basename (str): Base name to use in the filename, e.g. 'mmc' Returns: tuple: str: Filename of MMC image str: Directory name of 'mnt' directory """ - fname = os.path.join(cons.config.source_dir, f'mmc{mmc_dev}.img') + fname = os.path.join(cons.config.source_dir, f'{basename}{devnum}.img') mnt = os.path.join(cons.config.persistent_data_dir, 'mnt') mkdir_cond(mnt) @@ -78,16 +79,17 @@ def mount_image(cons, fname, mnt, fstype): u_boot_utils.run_and_log(cons, f'sudo chown {getpass.getuser()} {mnt}') return loop -def copy_prepared_image(cons, mmc_dev, fname): +def copy_prepared_image(cons, devnum, fname, basename='mmc'): """Use a prepared image since we cannot create one Args: cons (ConsoleBase): Console touse - mmc_dev (int): MMC device number + devnum (int): device number fname (str): Filename of MMC image + basename (str): Base name to use in the filename, e.g. 'mmc' """ infname = os.path.join(cons.config.source_dir, - f'test/py/tests/bootstd/mmc{mmc_dev}.img.xz') + f'test/py/tests/bootstd/{basename}{devnum}.img.xz') u_boot_utils.run_and_log(cons, ['sh', '-c', f'xz -dc {infname} >{fname}']) def setup_bootmenu_image(cons): @@ -547,6 +549,44 @@ def test_ut_dm_init(u_boot_console): with open(fn, 'wb') as fh: fh.write(data) + +def setup_efi_image(cons): + """Create a 20MB disk image with an EFI app on it""" + devnum = 1 + basename = 'flash' + fname, mnt = setup_image(cons, devnum, 0xc, second_part=True, + basename=basename) + + loop = None + mounted = False + complete = False + try: + loop = mount_image(cons, fname, mnt, 'ext4') + mounted = True + efi_dir = os.path.join(mnt, 'EFI') + mkdir_cond(efi_dir) + bootdir = os.path.join(efi_dir, 'BOOT') + mkdir_cond(bootdir) + efi_src = os.path.join(cons.config.build_dir, + f'lib/efi_loader/testapp.efi') + efi_dst = os.path.join(bootdir, 'BOOTSBOX.EFI') + with open(efi_src, 'rb') as inf: + with open(efi_dst, 'wb') as outf: + outf.write(inf.read()) + complete = True + except ValueError as exc: + print(f'Falled to create image, failing back to prepared copy: {exc}') + + finally: + if mounted: + u_boot_utils.run_and_log(cons, 'sudo umount --lazy %s' % mnt) + if loop: + u_boot_utils.run_and_log(cons, 'sudo losetup -d %s' % loop) + + if not complete: + copy_prepared_image(cons, devnum, fname, basename) + + @pytest.mark.buildconfigspec('cmd_bootflow') @pytest.mark.buildconfigspec('sandbox') def test_ut_dm_init_bootstd(u_boot_console): @@ -557,6 +597,7 @@ def test_ut_dm_init_bootstd(u_boot_console): setup_cedit_file(u_boot_console) setup_cros_image(u_boot_console) setup_android_image(u_boot_console) + setup_efi_image(u_boot_console) # Restart so that the new mmc1.img is picked up u_boot_console.restart_uboot() diff --git a/tools/imx8image.c b/tools/imx8image.c index 5eb4b9612c8..96ece28bd6c 100644 --- a/tools/imx8image.c +++ b/tools/imx8image.c @@ -14,6 +14,7 @@ static soc_type_t soc; static int container = -1; static int32_t core_type = CFG_CORE_INVALID; static bool emmc_fastboot; +static bool dcd_skip; static image_t param_stack[IMG_STACK_SIZE]; static uint8_t fuse_version; static uint16_t sw_version; @@ -41,6 +42,7 @@ static int imx8image_check_image_types(uint8_t type) static table_entry_t imx8image_cmds[] = { {CMD_BOOT_FROM, "BOOT_FROM", "boot command", }, + {CMD_DCD_SKIP, "DCD_SKIP", "skip DCD init", }, {CMD_FUSE_VERSION, "FUSE_VERSION", "fuse version", }, {CMD_SW_VERSION, "SW_VERSION", "sw version", }, {CMD_MSG_BLOCK, "MSG_BLOCK", "msg block", }, @@ -88,6 +90,9 @@ static void parse_cfg_cmd(image_t *param_stack, int32_t cmd, char *token, if (!strncmp("emmc_fastboot", token, 13)) emmc_fastboot = true; break; + case CMD_DCD_SKIP: + if (!strncmp("true", token, 4)) + dcd_skip = true; case CMD_FUSE_VERSION: fuse_version = (uint8_t)(strtoll(token, NULL, 0) & 0xFF); break; @@ -1024,7 +1029,7 @@ int imx8image_copy_image(int outfd, struct image_tool_params *mparams) fprintf(stdout, "CONTAINER SW VERSION:\t0x%04x\n", sw_version); build_container(soc, sector_size, emmc_fastboot, - img_sp, false, fuse_version, sw_version, outfd); + img_sp, dcd_skip, fuse_version, sw_version, outfd); return 0; } diff --git a/tools/mkeficapsule.c b/tools/mkeficapsule.c index 49f5b7849e4..fb6c57f77c1 100644 --- a/tools/mkeficapsule.c +++ b/tools/mkeficapsule.c @@ -866,12 +866,12 @@ static struct fdt_header *load_dtb(const char *path) dtb = malloc(dtb_size); if (!dtb) { - fprintf(stderr, "Can't allocated %ld\n", dtb_size); + fprintf(stderr, "Can't allocated %zd\n", dtb_size); return NULL; } if (fread(dtb, dtb_size, 1, f) != 1) { - fprintf(stderr, "Can't read %ld bytes from %s\n", + fprintf(stderr, "Can't read %zd bytes from %s\n", dtb_size, path); free(dtb); return NULL; |