diff options
| author | Mark Brown <broonie@kernel.org> | 2026-07-27 13:39:17 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-07-27 13:39:17 +0100 |
| commit | 5b3f2536bd2073caafc820405758da4489c818db (patch) | |
| tree | 63f525f255bc6a54d806dfb7ef9892652926c6a7 | |
| parent | 99075d51275cfd26166fbfdfe53785586945ad56 (diff) | |
| parent | 88f46b866fe93b18abbca52085971ee382ece771 (diff) | |
| download | linux-next-5b3f2536bd2073caafc820405758da4489c818db.tar.gz linux-next-5b3f2536bd2073caafc820405758da4489c818db.zip | |
Merge branch 'for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git
181 files changed, 2741 insertions, 663 deletions
diff --git a/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml b/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml index 55b2200d6e75..1cff2328cd01 100644 --- a/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml +++ b/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml @@ -61,7 +61,13 @@ properties: type: object reboot-mode: - type: object + $ref: /schemas/power/reset/syscon-reboot-mode.yaml + unevaluatedProperties: false + + patternProperties: + # Negative look-ahead to disallow unsupported modes. The '$' has to be + # part of lookahead group to work, instead of trailing outside of (). + "^mode-(?!(bootloader$|loader$|normal$|recovery$))": false required: - compatible diff --git a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml index decc43df3c83..78d8cd77b4ec 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml +++ b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml @@ -71,6 +71,7 @@ properties: - items: - enum: - allwinner,sun20i-d1-plic + - canaan,k230-plic - sophgo,cv1800b-plic - sophgo,cv1812h-plic - sophgo,sg2000-plic diff --git a/Documentation/devicetree/bindings/riscv/canaan.yaml b/Documentation/devicetree/bindings/riscv/canaan.yaml index 41fd11f70a49..f9854ff43ac6 100644 --- a/Documentation/devicetree/bindings/riscv/canaan.yaml +++ b/Documentation/devicetree/bindings/riscv/canaan.yaml @@ -10,7 +10,7 @@ maintainers: - Damien Le Moal <dlemoal@kernel.org> description: - Canaan Kendryte K210 SoC-based boards + Canaan Kendryte SoC-based boards properties: $nodename: @@ -42,6 +42,12 @@ properties: - items: - const: canaan,kendryte-k210 + - items: + - enum: + - canaan,canmv-k230 + - canaan,k230-usip-lp3-evb + - const: canaan,kendryte-k230 + additionalProperties: true ... diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml index 2cc43742b8e3..7bcb4e2f47ec 100644 --- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml @@ -239,11 +239,14 @@ allOf: properties: reboot-mode: type: object - $ref: /schemas/power/reset/syscon-reboot-mode.yaml# - unevaluatedProperties: false + patternProperties: + # Negative look-ahead to disallow unsupported modes. The '$' has to be + # part of lookahead group to work, instead of trailing outside of (). + "^mode-(?!(bootloader$|fastboot$|loader$|normal$|recovery$))": false + - if: properties: compatible: diff --git a/Documentation/devicetree/bindings/timer/sifive,clint.yaml b/Documentation/devicetree/bindings/timer/sifive,clint.yaml index 105e3ef539e6..3673836e14de 100644 --- a/Documentation/devicetree/bindings/timer/sifive,clint.yaml +++ b/Documentation/devicetree/bindings/timer/sifive,clint.yaml @@ -50,6 +50,7 @@ properties: - items: - enum: - allwinner,sun20i-d1-clint + - canaan,k230-clint - sophgo,cv1800b-clint - sophgo,cv1812h-clint - sophgo,sg2000-clint diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 9187240a02db..5adccaed7d01 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -471,7 +471,7 @@ source "arch/arm/mach-zynq/Kconfig" # ARMv7-M architecture config ARCH_LPC18XX - bool "NXP LPC18xx/LPC43xx" + bool "NXP LPC18xx/LPC43xx (DEPRECATED)" depends on ARM_SINGLE_ARMV7M select ARCH_HAS_RESET_CONTROLLER select ARM_AMBA @@ -481,8 +481,10 @@ config ARCH_LPC18XX Support for NXP's LPC18xx Cortex-M3 and LPC43xx Cortex-M4 high performance microcontrollers. + This platform is scheduled for removal in early 2027 + config ARCH_MPS2 - bool "ARM MPS2 platform" + bool "ARM MPS2 platform (DEPRECATED)" depends on ARM_SINGLE_ARMV7M select ARM_AMBA select CLKSRC_MPS2 @@ -493,6 +495,8 @@ config ARCH_MPS2 Please, note that depends which Application Note is used memory map for the platform may vary, so adjustment of RAM base might be needed. + This platform is scheduled for removal in early 2027 + # Definitions to make life easier config ARCH_ACORN bool @@ -513,13 +517,21 @@ config PLAT_VERSATILE source "arch/arm/mm/Kconfig" config IWMMXT - bool "Enable iWMMXt support" - depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK - default y if PXA27x || PXA3xx || ARCH_MMP + bool "Enable iWMMXt support (DEPRECATED)" + depends on PXA27x || PXA3xx || ARCH_MMP help Enable support for iWMMXt context switching at run time if running on a CPU that supports it. + Machines that actually support this feature are very rare, + and support is deprecated in new gcc-14. While there were a + few applications that used this in the past, none are known + to still do so. + + If you use this, please send a patch to remove the + deprecation, otherwise this will be removed in early + 2027. + if !MMU source "arch/arm/Kconfig-nommu" endif @@ -1151,23 +1163,23 @@ config ARM_PATCH_IDIV code to do integer division. config AEABI - bool "Use the ARM EABI to compile the kernel" if !CPU_V7 && \ - !CPU_V7M && !CPU_V6 && !CPU_V6K && !CC_IS_CLANG - default CPU_V7 || CPU_V7M || CPU_V6 || CPU_V6K || CC_IS_CLANG + bool "Use the ARM EABI to compile the kernel" if CPU_SA110 || CPU_SA1100 + default y help - This option allows for the kernel to be compiled using the latest - ARM ABI (aka EABI). This is only useful if you are using a user - space environment that is also compiled with EABI. + The Arm EABI is the default ABI on all modern Linux + distributions, replacing the obsolete and "OABI" that was + commonly used on ARMv4 distributions before ca. 2013. - Since there are major incompatibilities between the legacy ABI and - EABI, especially with regard to structure member alignment, this - option also changes the kernel syscall calling convention to - disambiguate both ABIs and allow for backward compatibility support - (selected with CONFIG_OABI_COMPAT). + Everyone should enable this, as support for OABI user space + was dropped in gcc-4.8 and most distributions after ca. 2013. + + Support for OABI mode will be removed from the kernel + once Intel StrongARM CPUs are phased out. config OABI_COMPAT bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)" depends on AEABI && !THUMB2_KERNEL + depends on CPU_SA110 || CPU_SA1100 help This option preserves the old syscall interface along with the new (ARM EABI) one. It also provides a compatibility layer to @@ -1180,11 +1192,8 @@ config OABI_COMPAT selected, since there is no way yet to sensibly distinguish between calling conventions during filtering. - If you know you'll be using only pure EABI user space then you - can say N here. If this option is not selected and you attempt - to execute a legacy ABI binary then the result will be - UNPREDICTABLE (in fact it can be predicted that it won't work - at all). If in doubt say N. + Support for OABI_COMPAT will be removed from the kernel + once Intel StrongARM CPUs are phased out. config ARCH_SELECT_MEMORY_MODEL def_bool y @@ -1393,19 +1402,22 @@ config ARCH_WANT_FLAT_DTB_INSTALL config ATAGS bool "Support for the traditional ATAGS boot data passing" - default y + depends on EXPERT help - This is the traditional way of passing data to the kernel at boot - time. If you are solely relying on the flattened device tree (or - the ARM_ATAG_DTB_COMPAT option) then you may unselect this option - to remove ATAGS support from your kernel binary. + This is the traditional way of passing data to the kernel at + boot but is now only used by a few of the oldest ARMv4 and + ARMv5 machines. Users that still rely on ATAGS should plan + on migrating to devicetree based booting. + + Support for ATAGS will be removed when the last machine using + it is either converted to DT or removed. config DEPRECATED_PARAM_STRUCT - bool "Provide old way to pass kernel parameters" + bool "Provide old way to pass kernel parameters (DEPRECATED)" depends on ATAGS help This was deprecated in 2001 and announced to live on for 5 years. - Some old boot loaders still use this way. + It is now scheduled for removal in early 2027. # Compressed boot loader in ROM. Yes, we really want to ask about # TEXT and BSS so we preserve their values in the config files. @@ -1651,16 +1663,16 @@ menu "Floating point emulation" comment "At least one emulation must be selected" config FPE_NWFPE - bool "NWFPE math emulation" + bool "NWFPE math emulation (DEPRECATED)" depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL help Say Y to include the NWFPE floating point emulator in the kernel. - This is necessary to run most binaries. Linux does not currently - support floating point hardware so you need to say Y here even if - your machine has an FPA or floating point co-processor podule. - You may say N here if you are going to load the Acorn FPEmulator - early in the bootup. + This is only used on OABI userspace binaries, either using a + pure OABI (!CONFIG_AEABI) kernel, or the OABI emulation. + + Support for NWFPE will be removed in the future when OABI + support is removed. config FPE_NWFPE_XP bool "Support extended precision" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index 386eccc81868..2e118b65f93b 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -33,7 +33,7 @@ config ARCH_MULTI_V4_V5 config ARCH_MULTI_V6 bool "ARMv6 based platforms (ARM11)" select ARCH_MULTI_V6_V7 - select CPU_V6K + select CPU_ARM1176 config ARCH_MULTI_V7 bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)" diff --git a/arch/arm/arm-soc-for-next-contents.txt b/arch/arm/arm-soc-for-next-contents.txt new file mode 100644 index 000000000000..7b531fb5d11e --- /dev/null +++ b/arch/arm/arm-soc-for-next-contents.txt @@ -0,0 +1,48 @@ +soc/arm + arm/deprecation + https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc tags/arm-feature-deprecation-for-7.3 + patch + ARM: replace linux/gpio.h inclusions + renesas/soc + https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel tags/renesas-arm-soc-for-v7.3-tag1 + ixp4xx/arm + https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator tags/ixp4xx-arm-v7.3 + patch + gpio: sa1100: register software node for GPIO controller + ARM: sa1100: assabet: convert gpio-keys to use software nodes + ARM: sa1100: collie: convert gpio-keys to use software nodes + ARM: sa1100: h3xxx: convert gpio-keys to use software nodes + lpc32xx/soc + https://github.com/vzapolskiy/linux-lpc32xx tags/lpc32xx-arm-for-7.3 + +soc/dt + patch + ARM: dts: st: spear: Correct indentation + ARM: dts: st: ste: Correct indentation + ARM: dts: st: spear13xx: Drop unused/incorrect usbh0_id and usbh1_id + ARM: dts: ixp4xx: Drop the reg-offset hack + canaan/dt + https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux tags/riscv-dt-for-v7.3-early-k230 + renesas/dts + https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel tags/renesas-dts-for-v7.3-tag1 + +soc/drivers + ixp4xx/soc-drivers + https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator tags/ixp4xx-soc-v7.3 + firmware/scmi + https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux tags/scmi-updates-7.3 + rockchip/drivers + https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip tags/v7.3-rockchip-drivers1 + renesas/drivers + https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel tags/renesas-drivers-for-v7.3-tag1 + +soc/defconfig + riscv/defconfig + https://git.kernel.org/pub/scm/linux/kernel/git/fustini/linux tags/riscv-config-for-v7.3 + +soc/late + +arm/fixes + broadcom/fixes + https://github.com/Broadcom/stblinux tags/arm-soc/for-7.2/devicetree-arm64-fixes + diff --git a/arch/arm/boot/dts/intel/ixp/intel-ixp4xx.dtsi b/arch/arm/boot/dts/intel/ixp/intel-ixp4xx.dtsi index 0adeccabd4fe..b0f98da8def4 100644 --- a/arch/arm/boot/dts/intel/ixp/intel-ixp4xx.dtsi +++ b/arch/arm/boot/dts/intel/ixp/intel-ixp4xx.dtsi @@ -84,11 +84,6 @@ uart0: serial@c8000000 { compatible = "intel,xscale-uart"; reg = <0xc8000000 0x1000>; - /* - * The reg-offset and reg-shift is a side effect - * of running the platform in big endian mode. - */ - reg-offset = <3>; reg-shift = <2>; interrupts = <15 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <14745600>; @@ -98,11 +93,6 @@ uart1: serial@c8001000 { compatible = "intel,xscale-uart"; reg = <0xc8001000 0x1000>; - /* - * The reg-offset and reg-shift is a side effect - * of running the platform in big endian mode. - */ - reg-offset = <3>; reg-shift = <2>; interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <14745600>; diff --git a/arch/arm/boot/dts/renesas/r8a7740.dtsi b/arch/arm/boot/dts/renesas/r8a7740.dtsi index c7056b96ec0b..d4776a7877ff 100644 --- a/arch/arm/boot/dts/renesas/r8a7740.dtsi +++ b/arch/arm/boot/dts/renesas/r8a7740.dtsi @@ -501,7 +501,11 @@ compatible = "renesas,fsi2-r8a7740", "renesas,sh_fsi2"; reg = <0xfe1f0000 0x400>; interrupts = <GIC_SPI 9 0x4>; - clocks = <&mstp3_clks R8A7740_CLK_FSI>; + clocks = <&mstp3_clks R8A7740_CLK_FSI>, <&spu_clk>, + <&fsia_clk>, <&fsib_clk>, <&fsiack_clk>, + <&fsibck_clk>; + clock-names = "fck", "spu", "icka", "ickb", "xcka", + "xckb"; power-domains = <&pd_a4mp>; status = "disabled"; }; @@ -722,6 +726,12 @@ <0>; #clock-cells = <0>; }; + fsib_clk: fsib@e6150090 { + compatible = "renesas,r8a7740-div6-clock", "renesas,cpg-div6-clock"; + reg = <0xe6150090 4>; + clocks = <&pllc1_div2_clk>, <&fsibck_clk>, <0>, <0>; + #clock-cells = <0>; + }; stpro_clk: stpro@e615009c { compatible = "renesas,r8a7740-div6-clock", "renesas,cpg-div6-clock"; reg = <0xe615009c 4>; diff --git a/arch/arm/boot/dts/renesas/r9a06g032-rzn1d400-eb.dts b/arch/arm/boot/dts/renesas/r9a06g032-rzn1d400-eb.dts index 97a339b30d76..ead379988fb1 100644 --- a/arch/arm/boot/dts/renesas/r9a06g032-rzn1d400-eb.dts +++ b/arch/arm/boot/dts/renesas/r9a06g032-rzn1d400-eb.dts @@ -53,6 +53,10 @@ }; }; +&gpio2 { + status = "okay"; +}; + &i2c2 { /* Sensors are different across revisions. All are LM75B compatible */ sensor@49 { @@ -152,6 +156,13 @@ drive-strength = <12>; }; + pins_spi1: pins-spi1 { + pinmux = <RZN1_PINMUX(156, RZN1_FUNC_SPI0_M)>, + <RZN1_PINMUX(157, RZN1_FUNC_SPI0_M)>, + <RZN1_PINMUX(158, RZN1_FUNC_SPI0_M)>, + <RZN1_PINMUX(159, RZN1_FUNC_GPIO)>; + }; + pins_uart2: pins-uart2 { pinmux = <RZN1_PINMUX(105, RZN1_FUNC_UART2)>, <RZN1_PINMUX(106, RZN1_FUNC_UART2)>, @@ -168,6 +179,20 @@ status = "okay"; }; +&spi1 { + pinctrl-0 = <&pins_spi1>; + pinctrl-names = "default"; + status = "okay"; + + cs-gpios = <&gpio2a 31 GPIO_ACTIVE_LOW>; + + fram: fram@0 { + compatible = "cypress,fm25", "atmel,at25"; + reg = <0>; + spi-max-frequency = <12500000>; + }; +}; + &switch { pinctrl-0 = <&pins_eth1>, <&pins_eth2>, <&pins_eth3>, <&pins_eth4>, <&pins_mdio1>; diff --git a/arch/arm/boot/dts/renesas/r9a06g032.dtsi b/arch/arm/boot/dts/renesas/r9a06g032.dtsi index 442ea26b40f5..19c9bce0a26d 100644 --- a/arch/arm/boot/dts/renesas/r9a06g032.dtsi +++ b/arch/arm/boot/dts/renesas/r9a06g032.dtsi @@ -563,6 +563,90 @@ <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>; }; + /* Controller only */ + spi1: spi@50005000 { + compatible = "renesas,r9a06g032-spi", "renesas,rzn1-spi"; + reg = <0x50005000 0x200>; + interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&sysctrl R9A06G032_CLK_SPI0>, <&sysctrl R9A06G032_HCLK_SPI0>; + clock-names = "ssi_clk", "pclk"; + power-domains = <&sysctrl>; + num-cs = <4>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + /* Controller only */ + spi2: spi@50006000 { + compatible = "renesas,r9a06g032-spi", "renesas,rzn1-spi"; + reg = <0x50006000 0x200>; + interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&sysctrl R9A06G032_CLK_SPI1>, <&sysctrl R9A06G032_HCLK_SPI1>; + clock-names = "ssi_clk", "pclk"; + power-domains = <&sysctrl>; + num-cs = <4>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + /* Controller only */ + spi3: spi@50007000 { + compatible = "renesas,r9a06g032-spi", "renesas,rzn1-spi"; + reg = <0x50007000 0x200>; + interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&sysctrl R9A06G032_CLK_SPI2>, <&sysctrl R9A06G032_HCLK_SPI2>; + clock-names = "ssi_clk", "pclk"; + power-domains = <&sysctrl>; + num-cs = <4>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + /* Controller only */ + spi4: spi@50008000 { + compatible = "renesas,r9a06g032-spi", "renesas,rzn1-spi"; + reg = <0x50008000 0x200>; + interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&sysctrl R9A06G032_CLK_SPI3>, <&sysctrl R9A06G032_HCLK_SPI3>; + clock-names = "ssi_clk", "pclk"; + power-domains = <&sysctrl>; + num-cs = <4>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + /* Target only */ + spi5: spi@50009000 { + compatible = "renesas,r9a06g032-spi", "renesas,rzn1-spi"; + reg = <0x50009000 0x200>; + interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&sysctrl R9A06G032_CLK_SPI4>, <&sysctrl R9A06G032_HCLK_SPI4>; + clock-names = "ssi_clk", "pclk"; + power-domains = <&sysctrl>; + spi-slave; + #address-cells = <0>; + #size-cells = <0>; + status = "disabled"; + }; + + /* Target only */ + spi6: spi@5000a000 { + compatible = "renesas,r9a06g032-spi", "renesas,rzn1-spi"; + reg = <0x5000a000 0x200>; + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&sysctrl R9A06G032_CLK_SPI5>, <&sysctrl R9A06G032_HCLK_SPI5>; + clock-names = "ssi_clk", "pclk"; + power-domains = <&sysctrl>; + spi-slave; + #address-cells = <0>; + #size-cells = <0>; + status = "disabled"; + }; + /* * The GPIO mapping to the corresponding pins is not obvious. * See the hardware documentation for details. diff --git a/arch/arm/boot/dts/st/spear1340-evb.dts b/arch/arm/boot/dts/st/spear1340-evb.dts index 9e7c356b1d9e..133015a5dd46 100644 --- a/arch/arm/boot/dts/st/spear1340-evb.dts +++ b/arch/arm/boot/dts/st/spear1340-evb.dts @@ -259,7 +259,7 @@ stream_name = "spdif-cap", "spdif-play", "i2s-play", "i2s-cap"; dai_name = "spdifin-pcm", "spdifout-pcm", "i2s0-pcm", "i2s1-pcm"; nr_controllers = <4>; - status = "okay"; + status = "okay"; }; spdif0: spdif-in@d0100000 { diff --git a/arch/arm/boot/dts/st/spear13xx.dtsi b/arch/arm/boot/dts/st/spear13xx.dtsi index 0bb88f2d4ef5..cf98160ba268 100644 --- a/arch/arm/boot/dts/st/spear13xx.dtsi +++ b/arch/arm/boot/dts/st/spear13xx.dtsi @@ -178,7 +178,6 @@ compatible = "st,spear600-ehci", "usb-ehci"; reg = <0xe4800000 0x1000>; interrupts = <0 64 0x4>; - usbh0_id = <0>; status = "disabled"; }; @@ -186,7 +185,6 @@ compatible = "st,spear600-ehci", "usb-ehci"; reg = <0xe5800000 0x1000>; interrupts = <0 66 0x4>; - usbh1_id = <1>; status = "disabled"; }; @@ -194,7 +192,6 @@ compatible = "st,spear600-ohci", "usb-ohci"; reg = <0xe4000000 0x1000>; interrupts = <0 65 0x4>; - usbh0_id = <0>; status = "disabled"; }; @@ -202,7 +199,6 @@ compatible = "st,spear600-ohci", "usb-ohci"; reg = <0xe5000000 0x1000>; interrupts = <0 67 0x4>; - usbh1_id = <1>; status = "disabled"; }; diff --git a/arch/arm/boot/dts/st/spear320.dtsi b/arch/arm/boot/dts/st/spear320.dtsi index 56f141297ea3..cbf494419f43 100644 --- a/arch/arm/boot/dts/st/spear320.dtsi +++ b/arch/arm/boot/dts/st/spear320.dtsi @@ -82,7 +82,7 @@ reg = <0xa8000000 0x1000>; #pwm-cells = <2>; status = "disabled"; - }; + }; apb { #address-cells = <1>; diff --git a/arch/arm/boot/dts/st/ste-dbx5x0.dtsi b/arch/arm/boot/dts/st/ste-dbx5x0.dtsi index 0f87abeddc33..25a20fafc6b9 100644 --- a/arch/arm/boot/dts/st/ste-dbx5x0.dtsi +++ b/arch/arm/boot/dts/st/ste-dbx5x0.dtsi @@ -1119,7 +1119,7 @@ dmas = <&dma 14 0 0x12>, /* Logical - DevToMem - HighPrio */ <&dma 14 1 0x19>; /* Physical Chan 1 - MemToDev - HighPrio - Fixed */ + HighPrio - Fixed */ dma-names = "rx", "tx"; clocks = <&prcc_kclk 2 3>, <&prcc_pclk 2 5>; diff --git a/arch/arm/boot/dts/st/ste-href.dtsi b/arch/arm/boot/dts/st/ste-href.dtsi index fbf0309e108f..a85d87665610 100644 --- a/arch/arm/boot/dts/st/ste-href.dtsi +++ b/arch/arm/boot/dts/st/ste-href.dtsi @@ -207,7 +207,7 @@ // On-board eMMC mmc@80114000 { arm,primecell-periphid = <0x10480180>; - max-frequency = <100000000>; + max-frequency = <100000000>; bus-width = <8>; cap-mmc-highspeed; non-removable; diff --git a/arch/arm/boot/dts/st/ste-snowball.dts b/arch/arm/boot/dts/st/ste-snowball.dts index 1322abfc7acf..14ed1079ff6c 100644 --- a/arch/arm/boot/dts/st/ste-snowball.dts +++ b/arch/arm/boot/dts/st/ste-snowball.dts @@ -295,7 +295,7 @@ // On-board eMMC mmc@80114000 { arm,primecell-periphid = <0x10480180>; - max-frequency = <100000000>; + max-frequency = <100000000>; bus-width = <8>; cap-mmc-highspeed; no-sdio; diff --git a/arch/arm/boot/dts/st/ste-ux500-samsung-gavini.dts b/arch/arm/boot/dts/st/ste-ux500-samsung-gavini.dts index ad9a20ccaaeb..0c3eef7a294a 100644 --- a/arch/arm/boot/dts/st/ste-ux500-samsung-gavini.dts +++ b/arch/arm/boot/dts/st/ste-ux500-samsung-gavini.dts @@ -402,7 +402,7 @@ /* eMMC */ mmc@80005000 { arm,primecell-periphid = <0x10480180>; - max-frequency = <50000000>; + max-frequency = <50000000>; bus-width = <8>; non-removable; cap-mmc-highspeed; diff --git a/arch/arm/boot/dts/st/ste-ux500-samsung-janice.dts b/arch/arm/boot/dts/st/ste-ux500-samsung-janice.dts index 64562a3a262c..18fb7263058e 100644 --- a/arch/arm/boot/dts/st/ste-ux500-samsung-janice.dts +++ b/arch/arm/boot/dts/st/ste-ux500-samsung-janice.dts @@ -452,7 +452,7 @@ /* eMMC */ mmc@80005000 { arm,primecell-periphid = <0x10480180>; - max-frequency = <50000000>; + max-frequency = <50000000>; bus-width = <8>; non-removable; cap-mmc-highspeed; diff --git a/arch/arm/boot/dts/st/ste-ux500-samsung-kyle.dts b/arch/arm/boot/dts/st/ste-ux500-samsung-kyle.dts index cdb147dcc1db..c34d43a2b750 100644 --- a/arch/arm/boot/dts/st/ste-ux500-samsung-kyle.dts +++ b/arch/arm/boot/dts/st/ste-ux500-samsung-kyle.dts @@ -274,7 +274,7 @@ */ mmc@80005000 { arm,primecell-periphid = <0x10480180>; - max-frequency = <100000000>; + max-frequency = <100000000>; bus-width = <8>; non-removable; cap-mmc-highspeed; diff --git a/arch/arm/boot/dts/st/ste-ux500-samsung-skomer.dts b/arch/arm/boot/dts/st/ste-ux500-samsung-skomer.dts index 064d6fee8821..7bf4287f6e13 100644 --- a/arch/arm/boot/dts/st/ste-ux500-samsung-skomer.dts +++ b/arch/arm/boot/dts/st/ste-ux500-samsung-skomer.dts @@ -253,7 +253,7 @@ */ mmc@80005000 { arm,primecell-periphid = <0x10480180>; - max-frequency = <100000000>; + max-frequency = <100000000>; bus-width = <8>; non-removable; cap-mmc-highspeed; diff --git a/arch/arm/configs/am200epdkit_defconfig b/arch/arm/configs/am200epdkit_defconfig index d8198592fe1b..61beac88e863 100644 --- a/arch/arm/configs/am200epdkit_defconfig +++ b/arch/arm/configs/am200epdkit_defconfig @@ -7,8 +7,7 @@ CONFIG_EXPERT=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_PXA=y CONFIG_ARCH_GUMSTIX=y -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set +CONFIG_ATAGS=y CONFIG_CMDLINE="console=ttyS0,115200n8 root=1f01 rootfstype=jffs2" CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y diff --git a/arch/arm/configs/aspeed_g4_defconfig b/arch/arm/configs/aspeed_g4_defconfig index 45d8738abb75..f86dd4ce7d0d 100644 --- a/arch/arm/configs/aspeed_g4_defconfig +++ b/arch/arm/configs/aspeed_g4_defconfig @@ -22,9 +22,7 @@ CONFIG_KEXEC=y CONFIG_ARCH_ASPEED=y CONFIG_MACH_ASPEED_G4=y CONFIG_VMSPLIT_2G=y -CONFIG_AEABI=y CONFIG_UACCESS_WITH_MEMCPY=y -# CONFIG_ATAGS is not set CONFIG_JUMP_LABEL=y CONFIG_STRICT_KERNEL_RWX=y # CONFIG_BLK_DEBUG_FS is not set diff --git a/arch/arm/configs/aspeed_g5_defconfig b/arch/arm/configs/aspeed_g5_defconfig index ec558e57d081..45b937419dbd 100644 --- a/arch/arm/configs/aspeed_g5_defconfig +++ b/arch/arm/configs/aspeed_g5_defconfig @@ -29,7 +29,6 @@ CONFIG_VMSPLIT_2G=y CONFIG_NR_CPUS=2 CONFIG_HIGHMEM=y CONFIG_UACCESS_WITH_MEMCPY=y -# CONFIG_ATAGS is not set CONFIG_VFP=y CONFIG_NEON=y CONFIG_KERNEL_MODE_NEON=y diff --git a/arch/arm/configs/assabet_defconfig b/arch/arm/configs/assabet_defconfig index 07ab9eaac4af..e4264fdac2e5 100644 --- a/arch/arm/configs/assabet_defconfig +++ b/arch/arm/configs/assabet_defconfig @@ -1,10 +1,13 @@ CONFIG_SYSVIPC=y CONFIG_LOG_BUF_SHIFT=14 CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_SA1100=y CONFIG_SA1100_ASSABET=y +# CONFIG_AEABI is not set +CONFIG_ATAGS=y CONFIG_CMDLINE="mem=32M console=ttySA0,38400n8 initrd=0xc0800000,3M root=/dev/ram" CONFIG_FPE_NWFPE=y CONFIG_PM=y diff --git a/arch/arm/configs/at91_dt_defconfig b/arch/arm/configs/at91_dt_defconfig index e331242dece7..830c6c0dbdaf 100644 --- a/arch/arm/configs/at91_dt_defconfig +++ b/arch/arm/configs/at91_dt_defconfig @@ -18,9 +18,7 @@ CONFIG_SOC_AT91SAM9=y CONFIG_SOC_SAM9X60=y CONFIG_SOC_SAM9X7=y # CONFIG_ATMEL_CLOCKSOURCE_PIT is not set -CONFIG_AEABI=y CONFIG_UACCESS_WITH_MEMCPY=y -# CONFIG_ATAGS is not set CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_CMDLINE="console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw" diff --git a/arch/arm/configs/axm55xx_defconfig b/arch/arm/configs/axm55xx_defconfig index 0952e5e94c5e..541e38e2205b 100644 --- a/arch/arm/configs/axm55xx_defconfig +++ b/arch/arm/configs/axm55xx_defconfig @@ -38,8 +38,6 @@ CONFIG_PCIE_AXXIA=y CONFIG_SMP=y CONFIG_NR_CPUS=16 CONFIG_HOTPLUG_CPU=y -CONFIG_AEABI=y -CONFIG_OABI_COMPAT=y CONFIG_HIGHMEM=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig index 4a8ac09843d7..b469ecc36cf5 100644 --- a/arch/arm/configs/bcm2835_defconfig +++ b/arch/arm/configs/bcm2835_defconfig @@ -25,7 +25,6 @@ CONFIG_CRASH_DUMP=y CONFIG_ARCH_MULTI_V6=y CONFIG_ARCH_BCM=y CONFIG_ARCH_BCM2835=y -CONFIG_AEABI=y CONFIG_SECCOMP=y CONFIG_KEXEC=y CONFIG_CPU_FREQ=y diff --git a/arch/arm/configs/clps711x_defconfig b/arch/arm/configs/clps711x_defconfig index f66d502ce2ef..7ba344e84c62 100644 --- a/arch/arm/configs/clps711x_defconfig +++ b/arch/arm/configs/clps711x_defconfig @@ -6,7 +6,6 @@ CONFIG_RD_LZMA=y CONFIG_EXPERT=y CONFIG_JUMP_LABEL=y CONFIG_PARTITION_ADVANCED=y -CONFIG_AEABI=y # CONFIG_COREDUMP is not set CONFIG_SLUB_TINY=y CONFIG_NET=y diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig index 578c6a4af620..570a5f8bc57b 100644 --- a/arch/arm/configs/collie_defconfig +++ b/arch/arm/configs/collie_defconfig @@ -9,8 +9,8 @@ CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_SA1100=y CONFIG_SA1100_COLLIE=y +CONFIG_ATAGS=y CONFIG_CMDLINE="noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1" -CONFIG_FPE_NWFPE=y CONFIG_PM=y # CONFIG_SWAP is not set CONFIG_SLUB_TINY=y diff --git a/arch/arm/configs/davinci_all_defconfig b/arch/arm/configs/davinci_all_defconfig index 72703ef0c51c..e6fbe1f03920 100644 --- a/arch/arm/configs/davinci_all_defconfig +++ b/arch/arm/configs/davinci_all_defconfig @@ -17,7 +17,6 @@ CONFIG_ARCH_DAVINCI=y CONFIG_ARCH_DAVINCI_DA850=y CONFIG_DAVINCI_MUX_DEBUG=y CONFIG_DAVINCI_MUX_WARNINGS=y -CONFIG_AEABI=y CONFIG_SECCOMP=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig index b6ed01216a62..917a864fec74 100644 --- a/arch/arm/configs/dove_defconfig +++ b/arch/arm/configs/dove_defconfig @@ -7,8 +7,8 @@ CONFIG_EXPERT=y CONFIG_ARCH_MULTI_V7=y CONFIG_ARCH_DOVE=y CONFIG_MACH_CM_A510=y -CONFIG_AEABI=y CONFIG_HIGHMEM=y +CONFIG_ATAGS=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_VFP=y diff --git a/arch/arm/configs/ep93xx_defconfig b/arch/arm/configs/ep93xx_defconfig index ce41dc8c435c..6863d8fd7713 100644 --- a/arch/arm/configs/ep93xx_defconfig +++ b/arch/arm/configs/ep93xx_defconfig @@ -18,7 +18,6 @@ CONFIG_MACH_EDB9315=y CONFIG_MACH_EDB9315A=y CONFIG_MACH_TS72XX=y CONFIG_MACH_VISION_EP9307=y -CONFIG_AEABI=y CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/nfs ip=bootp" CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y diff --git a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig index 5f6963687ee4..7fa556fb6cf4 100644 --- a/arch/arm/configs/footbridge_defconfig +++ b/arch/arm/configs/footbridge_defconfig @@ -9,8 +9,10 @@ CONFIG_ARCH_MULTI_V4=y CONFIG_ARCH_FOOTBRIDGE=y CONFIG_ARCH_EBSA285_HOST=y CONFIG_ARCH_NETWINDER=y +CONFIG_ATAGS=y CONFIG_FPE_NWFPE=y CONFIG_FPE_NWFPE_XP=y +# CONFIG_AEABI is not set CONFIG_MODULES=y CONFIG_PARTITION_ADVANCED=y CONFIG_ACORN_PARTITION=y diff --git a/arch/arm/configs/gemini_defconfig b/arch/arm/configs/gemini_defconfig index 7b1daec630cb..5860b2fe7d1f 100644 --- a/arch/arm/configs/gemini_defconfig +++ b/arch/arm/configs/gemini_defconfig @@ -11,7 +11,6 @@ CONFIG_KEXEC=y CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_GEMINI=y -CONFIG_AEABI=y CONFIG_HIGHMEM=y CONFIG_CMDLINE="console=ttyS0,115200n8" CONFIG_PM=y diff --git a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig index 4e272875c797..3e8da62d959d 100644 --- a/arch/arm/configs/h3600_defconfig +++ b/arch/arm/configs/h3600_defconfig @@ -4,12 +4,13 @@ CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT=y CONFIG_LOG_BUF_SHIFT=14 CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_SA1100=y CONFIG_SA1100_H3600=y # CONFIG_CPU_FREQ_STAT is not set -CONFIG_FPE_NWFPE=y +CONFIG_ATAGS=y CONFIG_MODULES=y CONFIG_NET=y CONFIG_UNIX=y diff --git a/arch/arm/configs/hisi_defconfig b/arch/arm/configs/hisi_defconfig index dde9cff951d4..c89b743784ca 100644 --- a/arch/arm/configs/hisi_defconfig +++ b/arch/arm/configs/hisi_defconfig @@ -10,7 +10,6 @@ CONFIG_ARCH_HIP04=y CONFIG_ARCH_HIX5HD2=y CONFIG_SMP=y CONFIG_NR_CPUS=16 -CONFIG_AEABI=y CONFIG_HIGHMEM=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y diff --git a/arch/arm/configs/imx_v4_v5_defconfig b/arch/arm/configs/imx_v4_v5_defconfig index 9139d1784c70..871e93dd65b5 100644 --- a/arch/arm/configs/imx_v4_v5_defconfig +++ b/arch/arm/configs/imx_v4_v5_defconfig @@ -15,7 +15,6 @@ CONFIG_ARCH_MXC=y CONFIG_SOC_IMX1=y CONFIG_SOC_IMX25=y CONFIG_SOC_IMX27=y -CONFIG_AEABI=y CONFIG_PM_DEBUG=y CONFIG_KPROBES=y CONFIG_MODULES=y diff --git a/arch/arm/configs/integrator_defconfig b/arch/arm/configs/integrator_defconfig index 61711d4bbf74..82180381bf3c 100644 --- a/arch/arm/configs/integrator_defconfig +++ b/arch/arm/configs/integrator_defconfig @@ -13,8 +13,6 @@ CONFIG_ARCH_INTEGRATOR=y CONFIG_ARCH_INTEGRATOR_AP=y CONFIG_INTEGRATOR_IMPD1=y CONFIG_ARCH_INTEGRATOR_CP=y -CONFIG_AEABI=y -# CONFIG_ATAGS is not set CONFIG_CMDLINE="console=ttyAM0,38400n8 root=/dev/nfs ip=bootp" CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y diff --git a/arch/arm/configs/ixp4xx_defconfig b/arch/arm/configs/ixp4xx_defconfig index 418ef909572b..122ca7354986 100644 --- a/arch/arm/configs/ixp4xx_defconfig +++ b/arch/arm/configs/ixp4xx_defconfig @@ -9,7 +9,6 @@ CONFIG_EXPERT=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_IXP4XX=y CONFIG_CPU_BIG_ENDIAN=y -CONFIG_AEABI=y CONFIG_CMDLINE="console=ttyS0,115200" CONFIG_STRICT_KERNEL_RWX=y CONFIG_STRICT_MODULE_RWX=y diff --git a/arch/arm/configs/jornada720_defconfig b/arch/arm/configs/jornada720_defconfig index d57285cfefb2..a96cfb81aba5 100644 --- a/arch/arm/configs/jornada720_defconfig +++ b/arch/arm/configs/jornada720_defconfig @@ -1,12 +1,13 @@ CONFIG_SYSVIPC=y CONFIG_LOG_BUF_SHIFT=14 +CONFIG_EXPERT=y CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_SA1100=y CONFIG_SA1100_JORNADA720=y CONFIG_SA1100_JORNADA720_SSP=y -CONFIG_FPE_NWFPE=y CONFIG_PM=y +CONFIG_ATAGS=y CONFIG_MODULES=y CONFIG_NET=y CONFIG_PACKET=y diff --git a/arch/arm/configs/keystone_defconfig b/arch/arm/configs/keystone_defconfig index b0cadd878152..af91b9a420c9 100644 --- a/arch/arm/configs/keystone_defconfig +++ b/arch/arm/configs/keystone_defconfig @@ -22,7 +22,6 @@ CONFIG_PCI_KEYSTONE=y CONFIG_SMP=y CONFIG_HOTPLUG_CPU=y CONFIG_ARM_PSCI=y -CONFIG_AEABI=y CONFIG_HIGHMEM=y CONFIG_VFP=y CONFIG_NEON=y diff --git a/arch/arm/configs/lpc32xx_defconfig b/arch/arm/configs/lpc32xx_defconfig index b9e2e603cd95..c0b45eea1b0f 100644 --- a/arch/arm/configs/lpc32xx_defconfig +++ b/arch/arm/configs/lpc32xx_defconfig @@ -10,7 +10,6 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_EXPERT=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_LPC32XX=y -CONFIG_AEABI=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_CMDLINE="console=ttyS0,115200n81 root=/dev/ram0" diff --git a/arch/arm/configs/mmp2_defconfig b/arch/arm/configs/mmp2_defconfig index 0ea608c75f22..2ca166d4e78f 100644 --- a/arch/arm/configs/mmp2_defconfig +++ b/arch/arm/configs/mmp2_defconfig @@ -4,7 +4,6 @@ CONFIG_PREEMPT=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_MMP=y -CONFIG_AEABI=y CONFIG_MACH_MMP2_DT=y CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS2,38400 mem=128M user_debug=255 earlyprintk" CONFIG_VFP=y diff --git a/arch/arm/configs/moxart_defconfig b/arch/arm/configs/moxart_defconfig index e2d9f3610063..699d7ad98dd2 100644 --- a/arch/arm/configs/moxart_defconfig +++ b/arch/arm/configs/moxart_defconfig @@ -16,8 +16,6 @@ CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_MOXART=y CONFIG_MACH_UC7112LX=y -CONFIG_AEABI=y -# CONFIG_ATAGS is not set CONFIG_ARM_APPENDED_DTB=y # CONFIG_SWAP is not set # CONFIG_COMPAT_BRK is not set diff --git a/arch/arm/configs/mps2_defconfig b/arch/arm/configs/mps2_defconfig index e995e50537ef..cacf3876f6e4 100644 --- a/arch/arm/configs/mps2_defconfig +++ b/arch/arm/configs/mps2_defconfig @@ -16,7 +16,6 @@ CONFIG_ARCH_MPS2=y CONFIG_SET_MEM_PARAM=y CONFIG_DRAM_BASE=0x21000000 CONFIG_DRAM_SIZE=0x1000000 -# CONFIG_ATAGS is not set # CONFIG_SUSPEND is not set # CONFIG_BLOCK is not set CONFIG_BINFMT_FLAT=y diff --git a/arch/arm/configs/multi_v4t_defconfig b/arch/arm/configs/multi_v4t_defconfig index 1a86dc305523..7b592345db21 100644 --- a/arch/arm/configs/multi_v4t_defconfig +++ b/arch/arm/configs/multi_v4t_defconfig @@ -17,8 +17,6 @@ CONFIG_INTEGRATOR_IMPD1=y CONFIG_INTEGRATOR_CM720T=y CONFIG_INTEGRATOR_CM920T=y CONFIG_INTEGRATOR_CM922T_XA10=y -CONFIG_AEABI=y -# CONFIG_ATAGS is not set CONFIG_CPU_IDLE=y CONFIG_ARM_CPUIDLE=y CONFIG_ARM_CLPS711X_CPUIDLE=y diff --git a/arch/arm/configs/multi_v5_defconfig b/arch/arm/configs/multi_v5_defconfig index d237ea8ea327..a0d2fb2fcf9a 100644 --- a/arch/arm/configs/multi_v5_defconfig +++ b/arch/arm/configs/multi_v5_defconfig @@ -22,21 +22,11 @@ CONFIG_ARCH_NPCM=y CONFIG_ARCH_WPCM450=y CONFIG_ARCH_ORION5X=y CONFIG_MACH_RD88F5182_DT=y -CONFIG_MACH_KUROBOX_PRO=y -CONFIG_MACH_DNS323=y -CONFIG_MACH_TS209=y -CONFIG_MACH_TERASTATION_PRO2=y -CONFIG_MACH_LINKSTATION_PRO=y CONFIG_MACH_LINKSTATION_MINI=y -CONFIG_MACH_TS409=y -CONFIG_MACH_TS78XX=y -CONFIG_MACH_MV2120=y CONFIG_MACH_D2NET_DT=y -CONFIG_MACH_NET2BIG=y CONFIG_MACH_MSS2_DT=y CONFIG_ARCH_SUNXI=y CONFIG_ARCH_VERSATILE=y -CONFIG_AEABI=y CONFIG_HIGHMEM=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y diff --git a/arch/arm/configs/mv78xx0_defconfig b/arch/arm/configs/mv78xx0_defconfig index 1174893102bd..e3cc8de7c1c2 100644 --- a/arch/arm/configs/mv78xx0_defconfig +++ b/arch/arm/configs/mv78xx0_defconfig @@ -11,9 +11,8 @@ CONFIG_ARCH_MULTI_V5=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_MV78XX0=y CONFIG_MACH_TERASTATION_WXL=y -CONFIG_AEABI=y CONFIG_HIGHMEM=y -CONFIG_FPE_NWFPE=y +CONFIG_ATAGS=y CONFIG_VFP=y CONFIG_KPROBES=y CONFIG_MODULES=y diff --git a/arch/arm/configs/mvebu_v5_defconfig b/arch/arm/configs/mvebu_v5_defconfig index 781f8f72df5f..dbc6c511e70b 100644 --- a/arch/arm/configs/mvebu_v5_defconfig +++ b/arch/arm/configs/mvebu_v5_defconfig @@ -10,19 +10,9 @@ CONFIG_ARCH_MVEBU=y CONFIG_MACH_KIRKWOOD=y CONFIG_ARCH_ORION5X=y CONFIG_MACH_RD88F5182_DT=y -CONFIG_MACH_KUROBOX_PRO=y -CONFIG_MACH_DNS323=y -CONFIG_MACH_TS209=y -CONFIG_MACH_TERASTATION_PRO2=y -CONFIG_MACH_LINKSTATION_PRO=y CONFIG_MACH_LINKSTATION_MINI=y -CONFIG_MACH_TS409=y -CONFIG_MACH_TS78XX=y -CONFIG_MACH_MV2120=y CONFIG_MACH_D2NET_DT=y -CONFIG_MACH_NET2BIG=y CONFIG_MACH_MSS2_DT=y -CONFIG_AEABI=y CONFIG_HIGHMEM=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig index 603fb003b223..b0b5eb33d01e 100644 --- a/arch/arm/configs/mxs_defconfig +++ b/arch/arm/configs/mxs_defconfig @@ -17,7 +17,6 @@ CONFIG_BLK_DEV_INITRD=y CONFIG_PERF_EVENTS=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_MXS=y -CONFIG_AEABI=y CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y diff --git a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig index 8a5dcca743fc..164643f1b6c0 100644 --- a/arch/arm/configs/neponset_defconfig +++ b/arch/arm/configs/neponset_defconfig @@ -1,16 +1,19 @@ CONFIG_SYSVIPC=y CONFIG_LOG_BUF_SHIFT=14 CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_SA1100=y CONFIG_SA1100_ASSABET=y CONFIG_ASSABET_NEPONSET=y +CONFIG_ATAGS=y CONFIG_ZBOOT_ROM_TEXT=0x80000 CONFIG_ZBOOT_ROM_BSS=0xc1000000 CONFIG_ZBOOT_ROM=y CONFIG_CMDLINE="console=ttySA0,38400n8 cpufreq=221200 rw root=/dev/mtdblock2 mtdparts=sa1100:512K(boot),1M(kernel),2560K(initrd),4M(root) mem=32M noinitrd initrd=0xc0800000,3M" CONFIG_FPE_NWFPE=y +# CONFIG_AEABI is not set CONFIG_PM=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y diff --git a/arch/arm/configs/netwinder_defconfig b/arch/arm/configs/netwinder_defconfig index e639e6ad02cb..77d4a2b5916b 100644 --- a/arch/arm/configs/netwinder_defconfig +++ b/arch/arm/configs/netwinder_defconfig @@ -1,9 +1,12 @@ CONFIG_SYSVIPC=y CONFIG_LOG_BUF_SHIFT=14 +CONFIG_EXPERT=y CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_FOOTBRIDGE=y CONFIG_ARCH_NETWINDER=y +# CONFIG_AEABI is not set +CONFIG_ATAGS=y CONFIG_DEPRECATED_PARAM_STRUCT=y CONFIG_CMDLINE="root=0x801" CONFIG_FPE_NWFPE=y diff --git a/arch/arm/configs/nhk8815_defconfig b/arch/arm/configs/nhk8815_defconfig index 696b4fbc2412..7a307bd93730 100644 --- a/arch/arm/configs/nhk8815_defconfig +++ b/arch/arm/configs/nhk8815_defconfig @@ -12,7 +12,6 @@ CONFIG_KALLSYMS_ALL=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_NOMADIK=y CONFIG_MACH_NOMADIK_8815NHK=y -CONFIG_AEABI=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_SWAP is not set diff --git a/arch/arm/configs/omap1_defconfig b/arch/arm/configs/omap1_defconfig index 7bf58e8a5ab5..fcbaaf37bc9b 100644 --- a/arch/arm/configs/omap1_defconfig +++ b/arch/arm/configs/omap1_defconfig @@ -28,9 +28,8 @@ CONFIG_MACH_OMAP_PALMTE=y CONFIG_MACH_SX1=y CONFIG_MACH_NOKIA770=y CONFIG_MACH_AMS_DELTA=y -CONFIG_AEABI=y +CONFIG_ATAGS=y CONFIG_CMDLINE="root=1f03 rootfstype=jffs2" -CONFIG_FPE_NWFPE=y # CONFIG_SUSPEND is not set CONFIG_PM=y CONFIG_MODULES=y diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig index f5be2e26d9ae..f47a84ac872f 100644 --- a/arch/arm/configs/orion5x_defconfig +++ b/arch/arm/configs/orion5x_defconfig @@ -10,20 +10,9 @@ CONFIG_ARCH_MULTI_V5=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_ORION5X=y CONFIG_MACH_RD88F5182_DT=y -CONFIG_MACH_KUROBOX_PRO=y -CONFIG_MACH_DNS323=y -CONFIG_MACH_TS209=y -CONFIG_MACH_TERASTATION_PRO2=y -CONFIG_MACH_LINKSTATION_PRO=y CONFIG_MACH_LINKSTATION_MINI=y -CONFIG_MACH_TS409=y -CONFIG_MACH_TS78XX=y -CONFIG_MACH_MV2120=y -CONFIG_MACH_NET2BIG=y -CONFIG_AEABI=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y -CONFIG_FPE_NWFPE=y CONFIG_VFP=y CONFIG_KPROBES=y CONFIG_MODULES=y diff --git a/arch/arm/configs/pxa168_defconfig b/arch/arm/configs/pxa168_defconfig index 8cbca84fe33a..d6af01434f04 100644 --- a/arch/arm/configs/pxa168_defconfig +++ b/arch/arm/configs/pxa168_defconfig @@ -3,11 +3,9 @@ CONFIG_SYSVIPC=y CONFIG_NO_HZ_IDLE=y CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT=y -CONFIG_AEABI=y CONFIG_LOG_BUF_SHIFT=14 CONFIG_ARCH_MMP=y CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.2.100:/nfsroot/ ip=192.168.2.101:192.168.2.100::255.255.255.0::eth0:on console=ttyS0,115200 mem=128M" -CONFIG_FPE_NWFPE=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y diff --git a/arch/arm/configs/pxa3xx_defconfig b/arch/arm/configs/pxa3xx_defconfig index fb272e3a2337..2a777698d06f 100644 --- a/arch/arm/configs/pxa3xx_defconfig +++ b/arch/arm/configs/pxa3xx_defconfig @@ -7,9 +7,7 @@ CONFIG_KALLSYMS_ALL=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_PXA=y CONFIG_MACH_PXA3XX_DT=y -CONFIG_AEABI=y CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS0,115200 mem=64M debug" -CONFIG_FPE_NWFPE=y CONFIG_MODULES=y CONFIG_NET=y CONFIG_PACKET=y diff --git a/arch/arm/configs/pxa910_defconfig b/arch/arm/configs/pxa910_defconfig index 71ed0d73f8a9..9e7b11d1e723 100644 --- a/arch/arm/configs/pxa910_defconfig +++ b/arch/arm/configs/pxa910_defconfig @@ -10,8 +10,6 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set -CONFIG_AEABI=y -CONFIG_FPE_NWFPE=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y diff --git a/arch/arm/configs/pxa_defconfig b/arch/arm/configs/pxa_defconfig index 66cc149c5ca4..e7a7ed2b7ef7 100644 --- a/arch/arm/configs/pxa_defconfig +++ b/arch/arm/configs/pxa_defconfig @@ -16,11 +16,6 @@ CONFIG_PROFILING=y CONFIG_KEXEC=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_PXA=y -CONFIG_ARCH_GUMSTIX=y -CONFIG_PXA_SHARPSL=y -CONFIG_MACH_AKITA=y -CONFIG_MACH_BORZOI=y -CONFIG_AEABI=y CONFIG_ARCH_FORCE_MAX_ORDER=8 CONFIG_CMDLINE="root=/dev/ram0 ro" CONFIG_CPU_FREQ=y diff --git a/arch/arm/configs/rpc_defconfig b/arch/arm/configs/rpc_defconfig index 46df453e224e..edb52d56f679 100644 --- a/arch/arm/configs/rpc_defconfig +++ b/arch/arm/configs/rpc_defconfig @@ -2,11 +2,14 @@ CONFIG_SYSVIPC=y CONFIG_LOG_BUF_SHIFT=14 CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y CONFIG_ARCH_MULTI_V4=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_RPC=y CONFIG_CPU_SA110=y CONFIG_FPE_NWFPE=y +# CONFIG_AEABI is not set +CONFIG_ATAGS=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_PARTITION_ADVANCED=y diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig index 7bf28a83946a..a0707707d960 100644 --- a/arch/arm/configs/s3c6400_defconfig +++ b/arch/arm/configs/s3c6400_defconfig @@ -2,8 +2,10 @@ CONFIG_BLK_DEV_INITRD=y CONFIG_KALLSYMS_ALL=y CONFIG_ARCH_MULTI_V6=y # CONFIG_ARCH_MULTI_V7 is not set +CONFIG_EXPERT=y CONFIG_ARCH_S3C64XX=y CONFIG_MACH_WLF_CRAGG_6410=y +CONFIG_ATAGS=y CONFIG_CMDLINE="console=ttySAC0,115200 root=/dev/ram init=/linuxrc initrd=0x51000000,6M ramdisk_size=6144" CONFIG_VFP=y CONFIG_MODULES=y diff --git a/arch/arm/configs/sama5_defconfig b/arch/arm/configs/sama5_defconfig index bd7f0b5f7d66..1eafad9139f1 100644 --- a/arch/arm/configs/sama5_defconfig +++ b/arch/arm/configs/sama5_defconfig @@ -13,7 +13,6 @@ CONFIG_SOC_SAMA5D3=y CONFIG_SOC_SAMA5D4=y # CONFIG_ATMEL_CLOCKSOURCE_PIT is not set CONFIG_UACCESS_WITH_MEMCPY=y -# CONFIG_ATAGS is not set CONFIG_CMDLINE="console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw" CONFIG_VFP=y CONFIG_NEON=y diff --git a/arch/arm/configs/sama7_defconfig b/arch/arm/configs/sama7_defconfig index cc7f6daf9fc7..4af87c57483d 100644 --- a/arch/arm/configs/sama7_defconfig +++ b/arch/arm/configs/sama7_defconfig @@ -20,7 +20,6 @@ CONFIG_ATMEL_CLOCKSOURCE_TCB=y # CONFIG_CPU_SW_DOMAIN_PAN is not set CONFIG_ARCH_FORCE_MAX_ORDER=14 CONFIG_UACCESS_WITH_MEMCPY=y -# CONFIG_ATAGS is not set CONFIG_CMDLINE="console=ttyS0,115200 earlyprintk ignore_loglevel" CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y diff --git a/arch/arm/configs/spear13xx_defconfig b/arch/arm/configs/spear13xx_defconfig index 6712ae741c19..648260f536a1 100644 --- a/arch/arm/configs/spear13xx_defconfig +++ b/arch/arm/configs/spear13xx_defconfig @@ -9,7 +9,6 @@ CONFIG_MACH_SPEAR1340=y CONFIG_SMP=y # CONFIG_SMP_ON_UP is not set # CONFIG_ARM_CPU_TOPOLOGY is not set -CONFIG_AEABI=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_VFP=y diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig index 8f8a058294fb..c7cf089001bf 100644 --- a/arch/arm/configs/spitz_defconfig +++ b/arch/arm/configs/spitz_defconfig @@ -10,8 +10,8 @@ CONFIG_ARCH_PXA=y CONFIG_PXA_SHARPSL=y CONFIG_MACH_AKITA=y CONFIG_MACH_BORZOI=y +CONFIG_ATAGS=y CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" -CONFIG_FPE_NWFPE=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y diff --git a/arch/arm/configs/stm32_defconfig b/arch/arm/configs/stm32_defconfig index 82190b155b14..7366aade19ad 100644 --- a/arch/arm/configs/stm32_defconfig +++ b/arch/arm/configs/stm32_defconfig @@ -20,7 +20,6 @@ CONFIG_ARCH_STM32=y CONFIG_CPU_V7M_NUM_IRQ=240 CONFIG_SET_MEM_PARAM=y CONFIG_DRAM_BASE=0x90000000 -# CONFIG_ATAGS is not set CONFIG_XIP_KERNEL=y CONFIG_XIP_PHYS_ADDR=0x08008000 # CONFIG_SUSPEND is not set diff --git a/arch/arm/configs/versatile_defconfig b/arch/arm/configs/versatile_defconfig index 849118cbbb44..bb9eb9ccbbde 100644 --- a/arch/arm/configs/versatile_defconfig +++ b/arch/arm/configs/versatile_defconfig @@ -6,8 +6,6 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_BLK_DEV_INITRD=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_VERSATILE=y -CONFIG_AEABI=y -CONFIG_OABI_COMPAT=y CONFIG_CMDLINE="root=1f03 mem=32M" CONFIG_FPE_NWFPE=y CONFIG_VFP=y diff --git a/arch/arm/configs/vt8500_v6_v7_defconfig b/arch/arm/configs/vt8500_v6_v7_defconfig index 41607a84abc8..2925a1f1dbb6 100644 --- a/arch/arm/configs/vt8500_v6_v7_defconfig +++ b/arch/arm/configs/vt8500_v6_v7_defconfig @@ -8,7 +8,6 @@ CONFIG_ARM_ERRATA_720789=y CONFIG_ARM_ERRATA_754322=y CONFIG_ARM_ERRATA_775420=y CONFIG_HAVE_ARM_ARCH_TIMER=y -CONFIG_AEABI=y CONFIG_HIGHMEM=y CONFIG_HIGHPTE=y CONFIG_ARM_APPENDED_DTB=y diff --git a/arch/arm/configs/wpcm450_defconfig b/arch/arm/configs/wpcm450_defconfig index 67b64a378166..7512ec4292a0 100644 --- a/arch/arm/configs/wpcm450_defconfig +++ b/arch/arm/configs/wpcm450_defconfig @@ -13,9 +13,7 @@ CONFIG_PROFILING=y CONFIG_ARCH_NPCM=y CONFIG_ARCH_WPCM450=y CONFIG_CPU_DCACHE_WRITETHROUGH=y -CONFIG_AEABI=y CONFIG_UACCESS_WITH_MEMCPY=y -# CONFIG_ATAGS is not set CONFIG_ARM_APPENDED_DTB=y CONFIG_CPU_IDLE=y CONFIG_KPROBES=y diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index c5ef27e3cd8f..cb0e3ff8e0ca 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig @@ -15,13 +15,15 @@ menuconfig ARCH_AT91 if ARCH_AT91 config SOC_SAMV7 - bool "SAM Cortex-M7 family" if ARM_SINGLE_ARMV7M + bool "SAM Cortex-M7 family (DEPRECATED)" if ARM_SINGLE_ARMV7M select COMMON_CLK_AT91 select PINCTRL_AT91 help Select this if you are using an SoC from Microchip's SAME7, SAMS7 or SAMV7 families. + This platform is scheduled for removal in early 2027 + config SOC_SAMA5D2 bool "SAMA5D2 family" depends on ARCH_MULTI_V7 diff --git a/arch/arm/mach-axxia/Kconfig b/arch/arm/mach-axxia/Kconfig index d3eae6037913..f773a66c1402 100644 --- a/arch/arm/mach-axxia/Kconfig +++ b/arch/arm/mach-axxia/Kconfig @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 config ARCH_AXXIA - bool "LSI Axxia platforms" + bool "LSI Axxia platforms (DEPRECATED)" depends on ARCH_MULTI_V7 && ARM_LPAE select ARM_AMBA select ARM_GIC @@ -13,3 +13,5 @@ config ARCH_AXXIA The LSI Axxia platforms require a Flattened Device Tree to be passed to the kernel. + + This platform is scheduled for removal in early 2027 diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index 706f8241b5e7..611cce70c5bb 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c @@ -9,7 +9,7 @@ * 2009 (c) MontaVista Software, Inc. */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/init.h> #include <linux/io.h> #include <linux/mfd/da8xx-cfgchip.h> diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig index 996888ffcfe7..f547120e223e 100644 --- a/arch/arm/mach-dove/Kconfig +++ b/arch/arm/mach-dove/Kconfig @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 menuconfig ARCH_DOVE - bool "Marvell Dove" if ARCH_MULTI_V7 + bool "Marvell Dove (DEPRECATED)" if ARCH_MULTI_V7 depends on ATAGS select CPU_PJ4 select GPIOLIB @@ -11,7 +11,11 @@ menuconfig ARCH_DOVE select PM_GENERIC_DOMAINS if PM select PCI_QUIRKS if PCI help - Support for the Marvell Dove SoC 88AP510 + Support for the Marvell Dove SoC 88AP510 using board files. + + Support for this machine will be removed in early 2027, unless + there is a strong reason to keep it. Users should migrate to + the devicetree-enabled version (CONFIG_MACH_DOVE) instead. if ARCH_DOVE diff --git a/arch/arm/mach-dove/mpp.c b/arch/arm/mach-dove/mpp.c index 93cb137da5f8..e41bd473abe9 100644 --- a/arch/arm/mach-dove/mpp.c +++ b/arch/arm/mach-dove/mpp.c @@ -6,7 +6,7 @@ */ #include <linux/kernel.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/io.h> #include <plat/mpp.h> #include <plat/orion-gpio.h> diff --git a/arch/arm/mach-footbridge/Kconfig b/arch/arm/mach-footbridge/Kconfig index 78189997caa1..96a74d447028 100644 --- a/arch/arm/mach-footbridge/Kconfig +++ b/arch/arm/mach-footbridge/Kconfig @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only menuconfig ARCH_FOOTBRIDGE - bool "FootBridge Implementations" + bool "FootBridge Implementations (DEPRECATED)" depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5) depends on !(ARCH_MOXART || ARCH_GEMINI || ARCH_SA1100) depends on ATAGS @@ -12,7 +12,10 @@ menuconfig ARCH_FOOTBRIDGE select NEED_MACH_MEMORY_H help Support for systems based on the DC21285 companion chip - ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. + ("FootBridge"), used in the EBSA285 and the Rebel NetWinder. + + Support for these machines will go away in 2027, + unless there are any remaining users that speak up. if ARCH_FOOTBRIDGE diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index a361840d7a04..3f0521c652cb 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -40,14 +40,19 @@ if ARCH_MULTI_V6 comment "ARM1136 platforms" config SOC_IMX31 - bool "i.MX31 support" - select CPU_V6 + bool "i.MX31 support (DEPRECATED)" + depends on !SMP + select CPU_ARM1136R0 select MXC_AVIC help This enables support for Freescale i.MX31 processor + This SoC is scheduled for removal in early 2027, + since it uses the ARM1136r0 CPU revision. + config SOC_IMX35 bool "i.MX35 support" + select CPU_ARM1136R1 select MXC_AVIC help This enables support for Freescale i.MX35 processor @@ -214,12 +219,14 @@ config SOC_IMX7ULP This enables support for Freescale i.MX7 Ultra Low Power processor. config SOC_IMXRT - bool "i.MXRT support" + bool "i.MXRT support (DEPRECATED)" depends on ARM_SINGLE_ARMV7M select ARMV7M_SYSTICK if ARM_SINGLE_ARMV7M help This enables support for Freescale i.MXRT Crossover processor. + This platform is scheduled for removal in early 2027 + config SOC_VF610 bool "Vybrid Family VF610 support" select ARM_GIC if ARCH_MULTI_V7 diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig index 7f812020e082..39d0e9a97c86 100644 --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig @@ -2,7 +2,6 @@ menuconfig ARCH_IXP4XX bool "IXP4xx-based platforms" depends on ARCH_MULTI_V5 - depends on CPU_BIG_ENDIAN select ARM_APPENDED_DTB # Old Redboot bootloaders deployed select CPU_XSCALE select GPIO_IXP4XX @@ -12,7 +11,7 @@ menuconfig ARCH_IXP4XX select I2C_IOP3XX select IXP4XX_IRQ select IXP4XX_TIMER - select USB_EHCI_BIG_ENDIAN_DESC - select USB_EHCI_BIG_ENDIAN_MMIO + select USB_EHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN + select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN help Support for Intel's IXP4XX (XScale) family of processors. diff --git a/arch/arm/mach-lpc32xx/common.c b/arch/arm/mach-lpc32xx/common.c index 304ea61a0716..35ed3569c5a3 100644 --- a/arch/arm/mach-lpc32xx/common.c +++ b/arch/arm/mach-lpc32xx/common.c @@ -106,7 +106,7 @@ void __init lpc32xx_map_io(void) iotable_init(lpc32xx_io_desc, ARRAY_SIZE(lpc32xx_io_desc)); } -static int __init lpc32xx_check_uid(void) +void __init lpc32xx_check_uid(void) { u32 uid[4]; @@ -119,7 +119,4 @@ static int __init lpc32xx_check_uid(void) system_serial_low = uid[0]; system_serial_high = uid[1]; } - - return 1; } -arch_initcall(lpc32xx_check_uid); diff --git a/arch/arm/mach-lpc32xx/common.h b/arch/arm/mach-lpc32xx/common.h index 32f0ad217807..06b20bea324e 100644 --- a/arch/arm/mach-lpc32xx/common.h +++ b/arch/arm/mach-lpc32xx/common.h @@ -16,6 +16,8 @@ * Other arch specific structures and functions */ extern void __init lpc32xx_map_io(void); +extern void __init lpc32xx_check_uid(void); +extern void __init lpc32xx_pm_init(void); extern void __init lpc32xx_serial_init(void); /* diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c index 66701bf43248..fffce1fb8717 100644 --- a/arch/arm/mach-lpc32xx/phy3250.c +++ b/arch/arm/mach-lpc32xx/phy3250.c @@ -8,72 +8,14 @@ * Copyright (C) 2010 NXP Semiconductors */ -#include <linux/amba/pl08x.h> -#include <linux/mtd/lpc32xx_mlc.h> -#include <linux/mtd/lpc32xx_slc.h> -#include <linux/of_platform.h> - #include <asm/mach/arch.h> #include "common.h" -static struct pl08x_channel_data pl08x_slave_channels[] = { - { - .bus_id = "nand-slc", - .min_signal = 1, /* SLC NAND Flash */ - .max_signal = 1, - .periph_buses = PL08X_AHB1, - }, - { - .bus_id = "nand-mlc", - .min_signal = 12, /* MLC NAND Flash */ - .max_signal = 12, - .periph_buses = PL08X_AHB1, - }, -}; - -static int pl08x_get_signal(const struct pl08x_channel_data *cd) -{ - return cd->min_signal; -} - -static void pl08x_put_signal(const struct pl08x_channel_data *cd, int ch) -{ -} - -static struct pl08x_platform_data pl08x_pd = { - /* Some reasonable memcpy defaults */ - .memcpy_burst_size = PL08X_BURST_SZ_256, - .memcpy_bus_width = PL08X_BUS_WIDTH_32_BITS, - .slave_channels = &pl08x_slave_channels[0], - .num_slave_channels = ARRAY_SIZE(pl08x_slave_channels), - .get_xfer_signal = pl08x_get_signal, - .put_xfer_signal = pl08x_put_signal, - .lli_buses = PL08X_AHB1, - .mem_buses = PL08X_AHB1, -}; - -static struct lpc32xx_slc_platform_data lpc32xx_slc_data = { - .dma_filter = pl08x_filter_id, -}; - -static struct lpc32xx_mlc_platform_data lpc32xx_mlc_data = { - .dma_filter = pl08x_filter_id, -}; - -static const struct of_dev_auxdata lpc32xx_auxdata_lookup[] __initconst = { - OF_DEV_AUXDATA("arm,pl080", 0x31000000, "pl08xdmac", &pl08x_pd), - OF_DEV_AUXDATA("nxp,lpc3220-slc", 0x20020000, "20020000.flash", - &lpc32xx_slc_data), - OF_DEV_AUXDATA("nxp,lpc3220-mlc", 0x200a8000, "200a8000.flash", - &lpc32xx_mlc_data), - { } -}; - static void __init lpc3250_machine_init(void) { + lpc32xx_check_uid(); + lpc32xx_pm_init(); lpc32xx_serial_init(); - - of_platform_default_populate(NULL, lpc32xx_auxdata_lookup, NULL); } static const char *const lpc32xx_dt_compat[] __initconst = { diff --git a/arch/arm/mach-lpc32xx/pm.c b/arch/arm/mach-lpc32xx/pm.c index 2572bd89a5e8..9b5c5e1462ed 100644 --- a/arch/arm/mach-lpc32xx/pm.c +++ b/arch/arm/mach-lpc32xx/pm.c @@ -120,7 +120,7 @@ static const struct platform_suspend_ops lpc32xx_pm_ops = { #define EMC_DYN_MEM_CTRL_OFS 0x20 #define EMC_SRMMC (1 << 3) #define EMC_CTRL_REG io_p2v(LPC32XX_EMC_BASE + EMC_DYN_MEM_CTRL_OFS) -static int __init lpc32xx_pm_init(void) +void __init lpc32xx_pm_init(void) { /* * Setup SDRAM self-refresh clock to automatically disable o @@ -129,7 +129,4 @@ static int __init lpc32xx_pm_init(void) __raw_writel(__raw_readl(EMC_CTRL_REG) | EMC_SRMMC, EMC_CTRL_REG); suspend_set_ops(&lpc32xx_pm_ops); - - return 0; } -arch_initcall(lpc32xx_pm_init); diff --git a/arch/arm/mach-mv78xx0/Kconfig b/arch/arm/mach-mv78xx0/Kconfig index 670e6587827e..98b35f5d05ba 100644 --- a/arch/arm/mach-mv78xx0/Kconfig +++ b/arch/arm/mach-mv78xx0/Kconfig @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only menuconfig ARCH_MV78XX0 - bool "Marvell MV78xx0" + bool "Marvell MV78xx0 (DEPRECATED)" depends on ARCH_MULTI_V5 depends on CPU_LITTLE_ENDIAN depends on ATAGS @@ -14,6 +14,8 @@ menuconfig ARCH_MV78XX0 Support for the following Marvell MV78xx0 series SoCs: MV781x0, MV782x0. + This platform is scheduled for removal in early 2027. + if ARCH_MV78XX0 config MACH_TERASTATION_WXL diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c index 62e982f74bc2..3b2e381b7383 100644 --- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c +++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c @@ -14,7 +14,7 @@ #include <linux/mv643xx_eth.h> #include <linux/ethtool.h> #include <linux/i2c.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio_keys.h> #include <linux/input.h> #include <asm/mach-types.h> diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c index a34b6855fb19..6e42f6446637 100644 --- a/arch/arm/mach-mv78xx0/irq.c +++ b/arch/arm/mach-mv78xx0/irq.c @@ -4,7 +4,7 @@ * * MV78xx0 IRQ handling. */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/irq.h> #include <linux/io.h> diff --git a/arch/arm/mach-mv78xx0/mpp.c b/arch/arm/mach-mv78xx0/mpp.c index aff0e612cbba..32bf590d79fe 100644 --- a/arch/arm/mach-mv78xx0/mpp.c +++ b/arch/arm/mach-mv78xx0/mpp.c @@ -4,7 +4,7 @@ * * MPP functions for Marvell MV78x00 SoCs */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/io.h> diff --git a/arch/arm/mach-mvebu/pm.c b/arch/arm/mach-mvebu/pm.c index b149d9b77505..616a7fb22d86 100644 --- a/arch/arm/mach-mvebu/pm.c +++ b/arch/arm/mach-mvebu/pm.c @@ -9,7 +9,7 @@ #include <linux/cpu_pm.h> #include <linux/delay.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/io.h> #include <linux/kernel.h> #include <linux/mbus.h> diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index f639d5004351..c8231a480052 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c @@ -9,7 +9,7 @@ #include <linux/clkdev.h> #include <linux/delay.h> #include <linux/err.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/init.h> #include <linux/reboot.h> #include <linux/micrel_phy.h> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index f3f19bcfca2c..79f8afe3a6bf 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -8,8 +8,9 @@ config OMAP_HWMOD config ARCH_OMAP2 bool "TI OMAP2" depends on ARCH_MULTI_V6 + depends on !SMP select ARCH_OMAP2PLUS - select CPU_V6 + select CPU_ARM1136R0 select OMAP_HWMOD select SOC_HAS_OMAP2_SDRC @@ -206,18 +207,24 @@ comment "OMAP Core Type" depends on ARCH_OMAP2 config SOC_OMAP2420 - bool "OMAP2420 support" + bool "OMAP2420 support (DEPRECATED)" depends on ARCH_OMAP2 default y select OMAP_DM_SYSTIMER select OMAP_DM_TIMER select SOC_HAS_OMAP2_SDRC + help + This SoC is scheduled for removal in early 2027, + since it uses the ARM1136r0 CPU revision. config SOC_OMAP2430 - bool "OMAP2430 support" + bool "OMAP2430 support (DEPRECATED)" depends on ARCH_OMAP2 default y select SOC_HAS_OMAP2_SDRC + help + This SoC is scheduled for removal in early 2027, + since it uses the ARM1136r0 CPU revision. config SOC_OMAP3430 bool "OMAP3430 support" @@ -248,11 +255,14 @@ config MACH_NOKIA_N810_WIMAX bool config MACH_NOKIA_N8X0 - bool "Nokia N800/N810" + bool "Nokia N800/N810 (DEPRECATED)" depends on SOC_OMAP2420 default y select MACH_NOKIA_N810 select MACH_NOKIA_N810_WIMAX + help + This machine is scheduled for removal in early 2027, + since it uses the ARM1136r0 CPU revision. endmenu diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig index cef19bea6164..c61999d01c80 100644 --- a/arch/arm/mach-orion5x/Kconfig +++ b/arch/arm/mach-orion5x/Kconfig @@ -19,7 +19,7 @@ menuconfig ARCH_ORION5X if ARCH_ORION5X config ARCH_ORION5X_DT - bool "Marvell Orion5x Flattened Device Tree" + def_bool y select ORION_CLK select ORION_IRQCHIP select ORION_TIMER @@ -38,37 +38,49 @@ config MACH_RD88F5182_DT Orion-NAS (88F5182) RD2, Flattened Device Tree. config MACH_KUROBOX_PRO - bool "KuroBox Pro" + bool "KuroBox Pro (DEPRECATED)" select I2C_BOARDINFO if I2C depends on ATAGS help Say 'Y' here if you want your kernel to support the KuroBox Pro platform. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_DNS323 - bool "D-Link DNS-323" + bool "D-Link DNS-323 (DEPRECATED)" select I2C_BOARDINFO if I2C depends on ATAGS help Say 'Y' here if you want your kernel to support the D-Link DNS-323 platform. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_TS209 - bool "QNAP TS-109/TS-209" + bool "QNAP TS-109/TS-209 (DEPRECATED)" depends on ATAGS help Say 'Y' here if you want your kernel to support the QNAP TS-109/TS-209 platform. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_TERASTATION_PRO2 - bool "Buffalo Terastation Pro II/Live" + bool "Buffalo Terastation Pro II/Live (DEPRECATED)" depends on ATAGS help Say 'Y' here if you want your kernel to support the Buffalo Terastation Pro II/Live platform. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_LINKSTATION_PRO - bool "Buffalo Linkstation Pro/Live" + bool "Buffalo Linkstation Pro/Live (DEPRECATED)" depends on ATAGS select I2C_BOARDINFO if I2C help @@ -76,6 +88,9 @@ config MACH_LINKSTATION_PRO Buffalo Linkstation Pro/Live platform. Both v1 and v2 devices are supported. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_LINKSTATION_MINI bool "Buffalo Linkstation Mini (Flattened Device Tree)" select ARCH_ORION5X_DT @@ -84,26 +99,35 @@ config MACH_LINKSTATION_MINI Buffalo Linkstation Mini (LS-WSGL) platform. config MACH_TS409 - bool "QNAP TS-409" + bool "QNAP TS-409 (DEPRECATED)" depends on ATAGS help Say 'Y' here if you want your kernel to support the QNAP TS-409 platform. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_TS78XX - bool "Technologic Systems TS-78xx" + bool "Technologic Systems TS-78xx (DEPRECATED)" depends on ATAGS help Say 'Y' here if you want your kernel to support the Technologic Systems TS-78xx platform. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_MV2120 - bool "HP Media Vault mv2120" + bool "HP Media Vault mv2120 (DEPRECATED)" depends on ATAGS help Say 'Y' here if you want your kernel to support the HP Media Vault mv2120 or mv5100. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_D2NET_DT bool "LaCie d2 Network / Big Disk Network (Flattened Device Tree)" select ARCH_ORION5X_DT @@ -112,13 +136,16 @@ config MACH_D2NET_DT LaCie d2 Network NAS. config MACH_NET2BIG - bool "LaCie 2Big Network" + bool "LaCie 2Big Network (DEPRECATED)" depends on ATAGS select I2C_BOARDINFO if I2C help Say 'Y' here if you want your kernel to support the LaCie 2Big Network NAS. + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + config MACH_MSS2_DT bool "Maxtor Shared Storage II (Flattened Device Tree)" select ARCH_ORION5X_DT diff --git a/arch/arm/mach-orion5x/board-d2net.c b/arch/arm/mach-orion5x/board-d2net.c index 09bf366d05ff..7cf09da9d9e7 100644 --- a/arch/arm/mach-orion5x/board-d2net.c +++ b/arch/arm/mach-orion5x/board-d2net.c @@ -13,7 +13,7 @@ #include <linux/pci.h> #include <linux/irq.h> #include <linux/leds.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> diff --git a/arch/arm/mach-orion5x/board-rd88f5182.c b/arch/arm/mach-orion5x/board-rd88f5182.c index 1c14e49a90a6..9e2fe74ec68a 100644 --- a/arch/arm/mach-orion5x/board-rd88f5182.c +++ b/arch/arm/mach-orion5x/board-rd88f5182.c @@ -6,7 +6,7 @@ * * Maintainer: Ronen Shitrit <rshitrit@marvell.com> */ -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/of.h> diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index fcd38ff7ca45..7b81b08b0dda 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c @@ -13,7 +13,7 @@ * License, or (at your option) any later version. * */ -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> #include <linux/kernel.h> #include <linux/init.h> diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c index e17727e53cb4..689bec1ebe89 100644 --- a/arch/arm/mach-orion5x/irq.c +++ b/arch/arm/mach-orion5x/irq.c @@ -6,7 +6,7 @@ * * Maintainer: Tzachi Perelstein <tzachi@marvell.com> */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/irq.h> #include <linux/io.h> diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c index 339b10891808..e61b9ab06943 100644 --- a/arch/arm/mach-orion5x/kurobox_pro-setup.c +++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c @@ -4,7 +4,7 @@ * * Maintainer: Ronen Shitrit <rshitrit@marvell.com> */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/platform_device.h> diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c index 5b0249f109cd..b15fe5b7a0f9 100644 --- a/arch/arm/mach-orion5x/mv2120-setup.c +++ b/arch/arm/mach-orion5x/mv2120-setup.c @@ -7,7 +7,7 @@ * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. */ -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> #include <linux/kernel.h> #include <linux/init.h> diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c index 4afd9b4c71a9..f04571e79805 100644 --- a/arch/arm/mach-orion5x/net2big-setup.c +++ b/arch/arm/mach-orion5x/net2big-setup.c @@ -17,7 +17,7 @@ #include <linux/input.h> #include <linux/i2c.h> #include <linux/ata_platform.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> #include <linux/delay.h> #include <asm/mach-types.h> diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c index a9f01859d101..c3db3376950a 100644 --- a/arch/arm/mach-orion5x/terastation_pro2-setup.c +++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c @@ -4,7 +4,7 @@ * * Maintainer: Sylver Bruneau <sylver.bruneau@googlemail.com> */ -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/platform_device.h> diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c index de9092e992c5..25cd50306c65 100644 --- a/arch/arm/mach-orion5x/ts209-setup.c +++ b/arch/arm/mach-orion5x/ts209-setup.c @@ -4,7 +4,7 @@ * * Maintainer: Byron Bradley <byron.bbradley@gmail.com> */ -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/platform_device.h> diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c index 725688aa5cba..f92acef0b45f 100644 --- a/arch/arm/mach-orion5x/ts409-setup.c +++ b/arch/arm/mach-orion5x/ts409-setup.c @@ -7,7 +7,7 @@ * Copyright (C) 2008 Sylver Bruneau <sylver.bruneau@gmail.com> * Copyright (C) 2008 Martin Michlmayr <tbm@cyrius.com> */ -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> #include <linux/kernel.h> #include <linux/init.h> diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index c478fb8a6f78..2fb29b9ef744 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig @@ -55,12 +55,15 @@ if ATAGS comment "Legacy board files" config ARCH_GUMSTIX - bool "Gumstix XScale 255 boards" + bool "Gumstix XScale 255 boards (DEPRECATED)" select PXA25x help Say Y here if you intend to run this kernel on Basix, Connex, ws-200ax, ws-400ax systems + Support for this machine will go away in early 2027, + unless it gets converted to device tree. + choice prompt "Gumstix Carrier/Expansion Board" depends on ARCH_GUMSTIX @@ -74,7 +77,7 @@ config GUMSTIX_AM300EPD endchoice config PXA_SHARPSL - bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models" + bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models (DEPRECATED)" select SHARP_PARAM select SHARP_SCOOP help @@ -84,6 +87,9 @@ config PXA_SHARPSL SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa) handheld computer. + Support for these machines will go away in early 2027, + unless they get converted to device tree. + config PXA_SHARPSL_DETECT_MACH_ID bool "Detect machine ID at run-time in the decompressor" depends on PXA_SHARPSL diff --git a/arch/arm/mach-pxa/am200epd.c b/arch/arm/mach-pxa/am200epd.c index cac0bb09db14..4814f3cfe775 100644 --- a/arch/arm/mach-pxa/am200epd.c +++ b/arch/arm/mach-pxa/am200epd.c @@ -28,7 +28,7 @@ #include <linux/init.h> #include <linux/platform_device.h> #include <linux/irq.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include "pxa25x.h" #include "gumstix.h" diff --git a/arch/arm/mach-pxa/am300epd.c b/arch/arm/mach-pxa/am300epd.c index 4b55bc89db8f..435fb72da7de 100644 --- a/arch/arm/mach-pxa/am300epd.c +++ b/arch/arm/mach-pxa/am300epd.c @@ -26,7 +26,7 @@ #include <linux/init.h> #include <linux/platform_device.h> #include <linux/irq.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include "gumstix.h" #include "mfp-pxa25x.h" diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index 02fdde7e3e34..f181e7b7c6be 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c @@ -13,7 +13,7 @@ * initialization stuff for PXA machines which can be overridden later if * need be. */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c index 6074815a4bca..7ab0cb015d1b 100644 --- a/arch/arm/mach-pxa/gumstix.c +++ b/arch/arm/mach-pxa/gumstix.c @@ -22,7 +22,7 @@ #include <linux/mtd/partitions.h> #include <linux/gpio/machine.h> #include <linux/gpio/property.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/err.h> #include <linux/clk.h> diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c index d1347055fbe4..566fb4e2adba 100644 --- a/arch/arm/mach-pxa/mfp-pxa2xx.c +++ b/arch/arm/mach-pxa/mfp-pxa2xx.c @@ -9,7 +9,7 @@ * on PXA3xx, what's more important, the low power pin state and * wakeup detection are also supported by the same framework. */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/gpio-pxa.h> #include <linux/module.h> #include <linux/kernel.h> diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index a4e878be004a..a273f0af095e 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c @@ -15,7 +15,7 @@ */ #include <linux/dmaengine.h> #include <linux/dma/pxa-dma.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/gpio-pxa.h> #include <linux/module.h> #include <linux/kernel.h> diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 1d34de7e5fbe..814e0a12f38a 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c @@ -10,7 +10,7 @@ */ #include <linux/dmaengine.h> #include <linux/dma/pxa-dma.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/gpio-pxa.h> #include <linux/module.h> #include <linux/kernel.h> diff --git a/arch/arm/mach-pxa/reset.c b/arch/arm/mach-pxa/reset.c index 27293549f8ad..49d2e46a1fae 100644 --- a/arch/arm/mach-pxa/reset.c +++ b/arch/arm/mach-pxa/reset.c @@ -2,7 +2,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/delay.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/io.h> #include <asm/proc-fns.h> #include <asm/system_misc.h> diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c index 71b282b146d0..a611eea70e5a 100644 --- a/arch/arm/mach-pxa/sharpsl_pm.c +++ b/arch/arm/mach-pxa/sharpsl_pm.c @@ -19,7 +19,7 @@ #include <linux/delay.h> #include <linux/leds.h> #include <linux/suspend.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/io.h> #include <asm/mach-types.h> diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 5091b601c4e1..5eaf38243b9e 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -12,7 +12,7 @@ #include <linux/platform_device.h> #include <linux/delay.h> #include <linux/gpio_keys.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> #include <linux/gpio/property.h> #include <linux/leds.h> diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c index 03b4b347f11a..806847c36549 100644 --- a/arch/arm/mach-pxa/spitz_pm.c +++ b/arch/arm/mach-pxa/spitz_pm.c @@ -10,7 +10,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/delay.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio-pxa.h> #include <linux/interrupt.h> #include <linux/platform_device.h> diff --git a/arch/arm/mach-rpc/Kconfig b/arch/arm/mach-rpc/Kconfig index 55f6d829b677..60b3823b690c 100644 --- a/arch/arm/mach-rpc/Kconfig +++ b/arch/arm/mach-rpc/Kconfig @@ -1,5 +1,5 @@ config ARCH_RPC - bool "RiscPC" + bool "RiscPC (DEPRECATED)" depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5) depends on !(ARCH_FOOTBRIDGE || ARCH_SA1100 || ARCH_MOXART || ARCH_GEMINI) depends on !CC_IS_CLANG && GCC_VERSION < 90100 && GCC_VERSION >= 60000 @@ -19,3 +19,6 @@ config ARCH_RPC help On the Acorn Risc-PC, Linux can support the internal IDE disk and CD-ROM interface, serial and parallel port, and the floppy drive. + + Support for these machines will go away in 2027, + unless there are any remaining users that speak up. diff --git a/arch/arm/mach-s3c/Kconfig.s3c64xx b/arch/arm/mach-s3c/Kconfig.s3c64xx index 3f97fba8e4f5..cf59147dc9ca 100644 --- a/arch/arm/mach-s3c/Kconfig.s3c64xx +++ b/arch/arm/mach-s3c/Kconfig.s3c64xx @@ -23,10 +23,17 @@ menuconfig ARCH_S3C64XX help Samsung S3C64XX series based systems - The platform is deprecated and scheduled for removal. Please reach to - the maintainers of the platform and linux-samsung-soc@vger.kernel.org if - you still use it. - Without such feedback, the platform will be removed after 2024. + The use of ATAGS based board files is on its way out, and + the only remaining S3C64xx machine in the kernel (Wolfson + Cragganmore 6410) relies on this, without any realistic way + to migrate it to devicetree. + + Support for S3C64XX will be kept until the 2027 LTS kernel + release and may be removed in early 2028. + + Please reach out to the maintainers of the platform and + linux-samsung-soc@vger.kernel.org if you use any additional + s3c64xx machines based on devicetree. if ARCH_S3C64XX diff --git a/arch/arm/mach-s3c/dev-audio-s3c64xx.c b/arch/arm/mach-s3c/dev-audio-s3c64xx.c index 7ce119dc3a72..8884374dbcdc 100644 --- a/arch/arm/mach-s3c/dev-audio-s3c64xx.c +++ b/arch/arm/mach-s3c/dev-audio-s3c64xx.c @@ -7,7 +7,7 @@ #include <linux/string.h> #include <linux/platform_device.h> #include <linux/dma-mapping.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/export.h> #include "irqs.h" diff --git a/arch/arm/mach-s3c/devs.c b/arch/arm/mach-s3c/devs.c index bab2abd8a34a..572b156644bd 100644 --- a/arch/arm/mach-s3c/devs.c +++ b/arch/arm/mach-s3c/devs.c @@ -5,7 +5,7 @@ // // Base Samsung platform device definitions -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/types.h> #include <linux/interrupt.h> diff --git a/arch/arm/mach-s3c/mach-crag6410.c b/arch/arm/mach-s3c/mach-crag6410.c index c4040aad1ed3..57176719d8a6 100644 --- a/arch/arm/mach-s3c/mach-crag6410.c +++ b/arch/arm/mach-s3c/mach-crag6410.c @@ -15,7 +15,7 @@ #include <linux/io.h> #include <linux/init.h> #include <linux/input-event-codes.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> #include <linux/leds.h> #include <linux/delay.h> diff --git a/arch/arm/mach-s3c/pm-gpio.c b/arch/arm/mach-s3c/pm-gpio.c index cfdbc2337998..fd5897cc26c7 100644 --- a/arch/arm/mach-s3c/pm-gpio.c +++ b/arch/arm/mach-s3c/pm-gpio.c @@ -11,7 +11,7 @@ #include <linux/device.h> #include <linux/init.h> #include <linux/io.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include "gpio-samsung.h" diff --git a/arch/arm/mach-s3c/pm-s3c64xx.c b/arch/arm/mach-s3c/pm-s3c64xx.c index 284d5f462513..a73b8bd12949 100644 --- a/arch/arm/mach-s3c/pm-s3c64xx.c +++ b/arch/arm/mach-s3c/pm-s3c64xx.c @@ -11,7 +11,7 @@ #include <linux/suspend.h> #include <linux/serial_core.h> #include <linux/io.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/pm_domain.h> #include "map.h" diff --git a/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c b/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c index c3269cd6a848..20ae926e12db 100644 --- a/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c +++ b/arch/arm/mach-s3c/setup-fb-24bpp-s3c64xx.c @@ -9,7 +9,7 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include "fb.h" #include "gpio-cfg.h" diff --git a/arch/arm/mach-s3c/setup-i2c0-s3c64xx.c b/arch/arm/mach-s3c/setup-i2c0-s3c64xx.c index a6ef8d2bc995..520e97dc8754 100644 --- a/arch/arm/mach-s3c/setup-i2c0-s3c64xx.c +++ b/arch/arm/mach-s3c/setup-i2c0-s3c64xx.c @@ -9,7 +9,7 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> struct platform_device; /* don't need the contents */ diff --git a/arch/arm/mach-s3c/setup-i2c1-s3c64xx.c b/arch/arm/mach-s3c/setup-i2c1-s3c64xx.c index 0fe37363d26e..26f7ae455328 100644 --- a/arch/arm/mach-s3c/setup-i2c1-s3c64xx.c +++ b/arch/arm/mach-s3c/setup-i2c1-s3c64xx.c @@ -9,7 +9,7 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> struct platform_device; /* don't need the contents */ diff --git a/arch/arm/mach-s3c/setup-keypad-s3c64xx.c b/arch/arm/mach-s3c/setup-keypad-s3c64xx.c index 8463ad37c6ab..2e1367878fb1 100644 --- a/arch/arm/mach-s3c/setup-keypad-s3c64xx.c +++ b/arch/arm/mach-s3c/setup-keypad-s3c64xx.c @@ -5,7 +5,7 @@ // // GPIO configuration for S3C64XX KeyPad device -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include "gpio-cfg.h" #include "keypad.h" #include "gpio-samsung.h" diff --git a/arch/arm/mach-s3c/setup-sdhci-gpio-s3c64xx.c b/arch/arm/mach-s3c/setup-sdhci-gpio-s3c64xx.c index 646ff949acd5..728b66f80493 100644 --- a/arch/arm/mach-s3c/setup-sdhci-gpio-s3c64xx.c +++ b/arch/arm/mach-s3c/setup-sdhci-gpio-s3c64xx.c @@ -11,7 +11,7 @@ #include <linux/interrupt.h> #include <linux/platform_device.h> #include <linux/io.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include "gpio-cfg.h" #include "sdhci.h" diff --git a/arch/arm/mach-s3c/setup-spi-s3c64xx.c b/arch/arm/mach-s3c/setup-spi-s3c64xx.c index 497aff71c29c..8d15b13ed7d5 100644 --- a/arch/arm/mach-s3c/setup-spi-s3c64xx.c +++ b/arch/arm/mach-s3c/setup-spi-s3c64xx.c @@ -3,7 +3,7 @@ // Copyright (C) 2011 Samsung Electronics Ltd. // http://www.samsung.com/ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/platform_data/spi-s3c64xx.h> #include "gpio-cfg.h" #include "gpio-samsung.h" diff --git a/arch/arm/mach-sa1100/Kconfig b/arch/arm/mach-sa1100/Kconfig index e23700e0d6c8..d50721e39641 100644 --- a/arch/arm/mach-sa1100/Kconfig +++ b/arch/arm/mach-sa1100/Kconfig @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only menuconfig ARCH_SA1100 - bool "SA11x0 Implementations" + bool "SA11x0 Implementations (DEPRECATED)" depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5) depends on !(ARCH_MOXART || ARCH_GEMINI) depends on ATAGS @@ -20,6 +20,9 @@ menuconfig ARCH_SA1100 help Support for StrongARM 11x0 based boards. + Support for these machines will go away in 2027, + unless there are any remaining users that speak up. + if ARCH_SA1100 config SA1100_ASSABET diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c index 2b833aa0212b..b001f0b6a3fa 100644 --- a/arch/arm/mach-sa1100/assabet.c +++ b/arch/arm/mach-sa1100/assabet.c @@ -13,8 +13,10 @@ #include <linux/gpio/driver.h> #include <linux/gpio/gpio-reg.h> #include <linux/gpio/machine.h> -#include <linux/gpio_keys.h> +#include <linux/gpio/property.h> +#include <linux/input.h> #include <linux/ioport.h> +#include <linux/property.h> #include <linux/platform_data/sa11x0-serial.h> #include <linux/regulator/fixed.h> #include <linux/regulator/machine.h> @@ -467,28 +469,53 @@ static const struct gpio_led_platform_data assabet_leds_pdata __initconst = { .leds = assabet_leds, }; -static struct gpio_keys_button assabet_keys_buttons[] = { - { - .gpio = 0, - .irq = IRQ_GPIO0, - .desc = "gpio0", - .wakeup = 1, - .can_disable = 1, - .debounce_interval = 5, - }, { - .gpio = 1, - .irq = IRQ_GPIO1, - .desc = "gpio1", - .wakeup = 1, - .can_disable = 1, - .debounce_interval = 5, - }, +static const struct software_node assabet_gpio_keys_node = { + .name = "assabet-gpio-keys", +}; + +static const struct property_entry assabet_key0_props[] = { + PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED), + PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node, + 0, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_STRING("label", "gpio0"), + PROPERTY_ENTRY_BOOL("wakeup-source"), + PROPERTY_ENTRY_BOOL("linux,can-disable"), + PROPERTY_ENTRY_U32("debounce-interval", 5), + { } +}; + +static const struct software_node assabet_key0_node = { + .parent = &assabet_gpio_keys_node, + .properties = assabet_key0_props, +}; + +static const struct property_entry assabet_key1_props[] = { + PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED), + PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node, + 1, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_STRING("label", "gpio1"), + PROPERTY_ENTRY_BOOL("wakeup-source"), + PROPERTY_ENTRY_BOOL("linux,can-disable"), + PROPERTY_ENTRY_U32("debounce-interval", 5), + { } +}; + +static const struct software_node assabet_key1_node = { + .parent = &assabet_gpio_keys_node, + .properties = assabet_key1_props, +}; + +static const struct software_node * const assabet_gpio_keys_swnodes[] __initconst = { + &assabet_gpio_keys_node, + &assabet_key0_node, + &assabet_key1_node, + NULL }; -static const struct gpio_keys_platform_data assabet_keys_pdata = { - .buttons = assabet_keys_buttons, - .nbuttons = ARRAY_SIZE(assabet_keys_buttons), - .rep = 0, +static const struct platform_device_info assabet_gpio_keys_dev_info __initconst = { + .name = "gpio-keys", + .id = PLATFORM_DEVID_NONE, + .swnode = &assabet_gpio_keys_node, }; static struct gpiod_lookup_table assabet_uart1_gpio_table = { @@ -571,10 +598,8 @@ static void __init assabet_init(void) } - platform_device_register_resndata(NULL, "gpio-keys", 0, - NULL, 0, - &assabet_keys_pdata, - sizeof(assabet_keys_pdata)); + software_node_register_node_group(assabet_gpio_keys_swnodes); + platform_device_register_full(&assabet_gpio_keys_dev_info); gpiod_add_lookup_table(&assabet_leds_gpio_table); gpio_led_register_device(-1, &assabet_leds_pdata); diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index 466d755d5702..d1931f51c900 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c @@ -27,10 +27,11 @@ #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/timer.h> -#include <linux/gpio_keys.h> +#include <linux/gpio/property.h> #include <linux/input.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio/machine.h> +#include <linux/property.h> #include <linux/power/gpio-charger.h> #include <video/sa1100fb.h> @@ -228,43 +229,57 @@ struct platform_device collie_locomo_device = { .resource = locomo_resources, }; -static struct gpio_keys_button collie_gpio_keys[] = { - { - .type = EV_PWR, - .code = KEY_RESERVED, - .gpio = COLLIE_GPIO_ON_KEY, - .desc = "On key", - .wakeup = 1, - .active_low = 1, - }, - { - .type = EV_PWR, - .code = KEY_WAKEUP, - .gpio = COLLIE_GPIO_WAKEUP, - .desc = "Sync", - .wakeup = 1, - .active_low = 1, - }, +static const struct software_node collie_gpio_keys_node = { + .name = "collie-gpio-keys", }; -static struct gpio_keys_platform_data collie_gpio_keys_data = { - .buttons = collie_gpio_keys, - .nbuttons = ARRAY_SIZE(collie_gpio_keys), +static const struct property_entry collie_on_key_props[] = { + PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED), + PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node, + COLLIE_GPIO_ON_KEY, GPIO_ACTIVE_LOW), + PROPERTY_ENTRY_STRING("label", "On key"), + PROPERTY_ENTRY_U32("linux,input-type", EV_PWR), + PROPERTY_ENTRY_BOOL("wakeup-source"), + { } }; -static struct platform_device collie_gpio_keys_device = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &collie_gpio_keys_data, - }, +static const struct software_node collie_on_key_node = { + .parent = &collie_gpio_keys_node, + .properties = collie_on_key_props, +}; + +static const struct property_entry collie_wakeup_key_props[] = { + PROPERTY_ENTRY_U32("linux,code", KEY_WAKEUP), + PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node, + COLLIE_GPIO_WAKEUP, GPIO_ACTIVE_LOW), + PROPERTY_ENTRY_STRING("label", "Sync"), + PROPERTY_ENTRY_U32("linux,input-type", EV_PWR), + PROPERTY_ENTRY_BOOL("wakeup-source"), + { } +}; + +static const struct software_node collie_wakeup_key_node = { + .parent = &collie_gpio_keys_node, + .properties = collie_wakeup_key_props, +}; + +static const struct software_node * const collie_gpio_keys_swnodes[] __initconst = { + &collie_gpio_keys_node, + &collie_on_key_node, + &collie_wakeup_key_node, + NULL +}; + +static const struct platform_device_info collie_gpio_keys_dev_info __initconst = { + .name = "gpio-keys", + .id = PLATFORM_DEVID_NONE, + .swnode = &collie_gpio_keys_node, }; static struct platform_device *devices[] __initdata = { &collie_locomo_device, &colliescoop_device, &collie_power_device, - &collie_gpio_keys_device, }; static struct mtd_partition collie_partitions[] = { @@ -384,6 +399,9 @@ static void __init collie_init(void) printk(KERN_WARNING "collie: Unable to register LoCoMo device\n"); } + software_node_register_node_group(collie_gpio_keys_swnodes); + platform_device_register_full(&collie_gpio_keys_dev_info); + sa11x0_register_lcd(&collie_lcd_info); sa11x0_register_mtd(&collie_flash_data, collie_flash_resources, ARRAY_SIZE(collie_flash_resources)); diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index 99ff55e8131d..a995625ab1a0 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c @@ -6,7 +6,7 @@ * * Code common to all SA11x0 machines. */ -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/gpio/machine.h> #include <linux/module.h> #include <linux/kernel.h> diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h index 5fe0d4fc0f8c..3cfe3b647711 100644 --- a/arch/arm/mach-sa1100/generic.h +++ b/arch/arm/mach-sa1100/generic.h @@ -48,6 +48,9 @@ int sa11xx_clk_init(void); struct gpiod_lookup_table; void sa11x0_register_pcmcia(int socket, struct gpiod_lookup_table *); +struct software_node; +extern const struct software_node sa1100_gpiochip_node; + struct fixed_voltage_config; struct regulator_consumer_supply; int sa11x0_register_fixed_regulator(int n, struct fixed_voltage_config *cfg, diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c index 1cfc0b1fa41c..59e9251a138e 100644 --- a/arch/arm/mach-sa1100/h3600.c +++ b/arch/arm/mach-sa1100/h3600.c @@ -8,7 +8,7 @@ #include <linux/init.h> #include <linux/kernel.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <video/sa1100fb.h> diff --git a/arch/arm/mach-sa1100/h3xxx.c b/arch/arm/mach-sa1100/h3xxx.c index d685f03f51f3..6f4c5d2be569 100644 --- a/arch/arm/mach-sa1100/h3xxx.c +++ b/arch/arm/mach-sa1100/h3xxx.c @@ -8,9 +8,12 @@ #include <linux/kernel.h> #include <linux/gpio/machine.h> -#include <linux/gpio.h> +#include <linux/gpio/legacy.h> #include <linux/gpio_keys.h> +#include <linux/gpio/property.h> +#include <linux/gpio/consumer.h> #include <linux/input.h> +#include <linux/property.h> #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/platform_data/gpio-htc-egpio.h> @@ -168,35 +171,48 @@ static struct platform_device h3xxx_egpio = { * GPIO keys */ -static struct gpio_keys_button h3xxx_button_table[] = { - { - .code = KEY_POWER, - .gpio = H3XXX_GPIO_PWR_BUTTON, - .desc = "Power Button", - .active_low = 1, - .type = EV_KEY, - .wakeup = 1, - }, { - .code = KEY_ENTER, - .gpio = H3XXX_GPIO_ACTION_BUTTON, - .active_low = 1, - .desc = "Action button", - .type = EV_KEY, - .wakeup = 0, - }, +static const struct software_node h3xxx_gpio_keys_node = { + .name = "h3xxx-gpio-keys", }; -static struct gpio_keys_platform_data h3xxx_keys_data = { - .buttons = h3xxx_button_table, - .nbuttons = ARRAY_SIZE(h3xxx_button_table), +static const struct property_entry h3xxx_power_key_props[] = { + PROPERTY_ENTRY_U32("linux,code", KEY_POWER), + PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node, + H3XXX_GPIO_PWR_BUTTON, GPIO_ACTIVE_LOW), + PROPERTY_ENTRY_STRING("label", "Power Button"), + PROPERTY_ENTRY_BOOL("wakeup-source"), + { } }; -static struct platform_device h3xxx_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &h3xxx_keys_data, - }, +static const struct software_node h3xxx_power_key_node = { + .parent = &h3xxx_gpio_keys_node, + .properties = h3xxx_power_key_props, +}; + +static const struct property_entry h3xxx_action_key_props[] = { + PROPERTY_ENTRY_U32("linux,code", KEY_ENTER), + PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node, + H3XXX_GPIO_ACTION_BUTTON, GPIO_ACTIVE_LOW), + PROPERTY_ENTRY_STRING("label", "Action button"), + { } +}; + +static const struct software_node h3xxx_action_key_node = { + .parent = &h3xxx_gpio_keys_node, + .properties = h3xxx_action_key_props, +}; + +static const struct software_node * const h3xxx_gpio_keys_swnodes[] __initconst = { + &h3xxx_gpio_keys_node, + &h3xxx_power_key_node, + &h3xxx_action_key_node, + NULL +}; + +static const struct platform_device_info h3xxx_gpio_keys_dev_info __initconst = { + .name = "gpio-keys", + .id = PLATFORM_DEVID_NONE, + .swnode = &h3xxx_gpio_keys_node, }; static struct resource h3xxx_micro_resources[] = { @@ -214,7 +230,6 @@ struct platform_device h3xxx_micro_asic = { static struct platform_device *h3xxx_devices[] = { &h3xxx_egpio, - &h3xxx_keys, &h3xxx_micro_asic, }; @@ -240,6 +255,8 @@ void __init h3xxx_mach_init(void) sa1100_register_uart_fns(&h3xxx_port_fns); sa11x0_register_mtd(&h3xxx_flash_data, &h3xxx_flash_resource, 1); platform_add_devices(h3xxx_devices, ARRAY_SIZE(h3xxx_devices)); + software_node_register_node_group(h3xxx_gpio_keys_swnodes); + platform_device_register_full(&h3xxx_gpio_keys_dev_info); } static struct map_desc h3600_io_desc[] __initdata = { diff --git a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c index 747a96c58df1..647e5f9f6aa8 100644 --- a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c +++ b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c @@ -140,6 +140,10 @@ static struct notifier_block regulator_quirk_nb = { static int __init rcar_gen2_regulator_quirk(void) { + static const char *const boards[] __initconst = { + "renesas,koelsch", "renesas,lager", "renesas,porter", + "renesas,stout", "renesas,gose", NULL + }; struct regulator_quirk *quirk, *pos, *tmp; struct of_phandle_args *args; const struct of_device_id *id; @@ -147,11 +151,7 @@ static int __init rcar_gen2_regulator_quirk(void) u32 mon, addr; int ret; - if (!of_machine_is_compatible("renesas,koelsch") && - !of_machine_is_compatible("renesas,lager") && - !of_machine_is_compatible("renesas,porter") && - !of_machine_is_compatible("renesas,stout") && - !of_machine_is_compatible("renesas,gose")) + if (!of_machine_compatible_match(boards)) return -ENODEV; for_each_matching_node_and_match(np, rcar_gen2_quirk_match, &id) { diff --git a/arch/arm/mach-shmobile/setup-rcar-gen2.c b/arch/arm/mach-shmobile/setup-rcar-gen2.c index 3cd34a42e39b..514558905919 100644 --- a/arch/arm/mach-shmobile/setup-rcar-gen2.c +++ b/arch/arm/mach-shmobile/setup-rcar-gen2.c @@ -56,6 +56,10 @@ static unsigned int __init get_extal_freq(void) static void __init rcar_gen2_timer_init(void) { + static const char *const fixed_freq_socs[] __initconst = { + "renesas,r8a7745", "renesas,r8a77470", "renesas,r8a7792", + "renesas,r8a7794", NULL + }; bool need_update = true; void __iomem *base; u32 freq; @@ -76,10 +80,7 @@ static void __init rcar_gen2_timer_init(void) secure_cntvoff_init(); - if (of_machine_is_compatible("renesas,r8a7745") || - of_machine_is_compatible("renesas,r8a77470") || - of_machine_is_compatible("renesas,r8a7792") || - of_machine_is_compatible("renesas,r8a7794")) { + if (of_machine_compatible_match(fixed_freq_socs)) { freq = 260000000 / 8; /* ZS / 8 */ } else { /* At Linux boot time the r8a7790 arch timer comes up diff --git a/arch/arm/mach-stm32/Kconfig b/arch/arm/mach-stm32/Kconfig index 630b992f32b1..4ac3384e397a 100644 --- a/arch/arm/mach-stm32/Kconfig +++ b/arch/arm/mach-stm32/Kconfig @@ -14,30 +14,32 @@ menuconfig ARCH_STM32 select STM32_EXTI if ARM_SINGLE_ARMV7M select STM32_FIREWALL help - Support for STMicroelectronics STM32 processors. + Support for STMicroelectronics STM32MP1 processors using Cortex-A7 + cores. Note that support for the earlier Cortex-M based variants + is deprecated and scheduled for removal in early 2027. if ARCH_STM32 if ARM_SINGLE_ARMV7M config MACH_STM32F429 - bool "STMicroelectronics STM32F429" + bool "STMicroelectronics STM32F429 (DEPRECATED)" default y config MACH_STM32F469 - bool "STMicroelectronics STM32F469" + bool "STMicroelectronics STM32F469 (DEPRECATED)" default y config MACH_STM32F746 - bool "STMicroelectronics STM32F746" + bool "STMicroelectronics STM32F746 (DEPRECATED)" default y config MACH_STM32F769 - bool "STMicroelectronics STM32F769" + bool "STMicroelectronics STM32F769 (DEPRECATED)" default y config MACH_STM32H743 - bool "STMicroelectronics STM32H743" + bool "STMicroelectronics STM32H743 (DEPRECATED)" default y endif # ARMv7-M diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig index 513618078440..1ee9b6608d71 100644 --- a/arch/arm/mach-versatile/Kconfig +++ b/arch/arm/mach-versatile/Kconfig @@ -110,10 +110,14 @@ config INTEGRATOR_CM1026EJS select CPU_ARM1026 config INTEGRATOR_CM1136JFS - bool "Integrator/CM1136JF-S core module" + bool "Integrator/CM1136JF-S core module (DEPRECATED)" depends on ARCH_INTEGRATOR_AP depends on ARCH_MULTI_V6 - select CPU_V6 + depends on !SMP + select CPU_ARM1136R0 + help + This machine is scheduled for removal in early 2027, + since it uses the ARM1136r0 CPU revision. config ARCH_INTEGRATOR_CP bool "Support Integrator/CP platform" @@ -135,7 +139,7 @@ config INTEGRATOR_CTB36 bool "Integrator/CTB36 (ARM1136JF-S) core tile" depends on ARCH_INTEGRATOR_CP depends on ARCH_MULTI_V6 - select CPU_V6 + select CPU_ARM1136R1 config ARCH_CINTEGRATOR depends on ARCH_INTEGRATOR_CP @@ -182,7 +186,7 @@ config MACH_REALVIEW_EB config REALVIEW_EB_ARM1136 bool "Support ARM1136J(F)-S Tile" depends on MACH_REALVIEW_EB && ARCH_MULTI_V6 - select CPU_V6 + select CPU_ARM1136R1 help Enable support for the ARM1136 tile fitted to the Realview(R) Emulation Baseboard platform. @@ -201,11 +205,10 @@ config REALVIEW_EB_A9MP Enable support for the Cortex-A9MPCore tile fitted to the Realview(R) Emulation Baseboard platform. -# ARMv6 CPU without K extensions, but does have the new exclusive ops config MACH_REALVIEW_PB1176 bool "Support RealView(R) Platform Baseboard for ARM1176JZF-S" depends on ARCH_MULTI_V6 - select CPU_V6 + select CPU_ARM1176 select HAVE_TCM help Include support for the ARM(R) RealView(R) Platform Baseboard for diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 871bd58d2ccc..048edb011511 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig @@ -376,6 +376,7 @@ config CPU_PJ4B # ARMv6 config CPU_V6 bool + depends on !SMP select CPU_32v6 select CPU_ABRT_EV6 select CPU_CACHE_V6 @@ -386,7 +387,6 @@ config CPU_V6 select CPU_PABRT_V6 select CPU_THUMB_CAPABLE select CPU_TLB_V6 if MMU - select SMP_ON_UP if SMP # ARMv6k config CPU_V6K @@ -403,6 +403,30 @@ config CPU_V6K select CPU_THUMB_CAPABLE select CPU_TLB_V6 if MMU +config CPU_ARM1136R0 + bool + select CPU_V6 + depends on !SMP + help + These early revisions of ARM1136 lack support for the + ARMv6k extensions for multiprocessing. + Support for this revision is scheduled for removal + from the kernel in early 2027. + +config CPU_ARM1136R1 + bool + select CPU_V6K + help + Later revisions of ARM1136 add ARMv6k (atomics, barriers + and TLS register) in addition to the features from r0. + +config CPU_ARM1176 + bool + select CPU_V6K + help + ARM1176 implements ARMv6k, VMSAv7 and Trustzone in + addition to the ARMv6 baseline. + # ARMv7 and ARMv8 architectures config CPU_V7 bool @@ -754,7 +778,8 @@ config CPU_LITTLE_ENDIAN space builds. config CPU_BIG_ENDIAN - bool "Build big-endian kernel" + bool "Build big-endian kernel (DEPRECATED)" + depends on ARCH_MULTI_V5 || BROKEN depends on !LD_IS_LLD help Say Y if you plan on running a kernel in big-endian mode. diff --git a/arch/arm/plat-orion/mpp.c b/arch/arm/plat-orion/mpp.c index 8a6880d528b6..673ecedc721d 100644 --- a/arch/arm/plat-orion/mpp.c +++ b/arch/arm/plat-orion/mpp.c @@ -12,7 +12,7 @@ #include <linux/init.h> #include <linux/mbus.h> #include <linux/io.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <plat/orion-gpio.h> #include <plat/mpp.h> diff --git a/arch/arm64/boot/dts/renesas/r8a774a1.dtsi b/arch/arm64/boot/dts/renesas/r8a774a1.dtsi index 36675f5bcdea..e66d86db6e6c 100644 --- a/arch/arm64/boot/dts/renesas/r8a774a1.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a774a1.dtsi @@ -262,7 +262,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a774b1.dtsi b/arch/arm64/boot/dts/renesas/r8a774b1.dtsi index ceef0104f75e..62c6703917db 100644 --- a/arch/arm64/boot/dts/renesas/r8a774b1.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a774b1.dtsi @@ -146,7 +146,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a774e1.dtsi b/arch/arm64/boot/dts/renesas/r8a774e1.dtsi index 9df5f1a42400..0ae9bb72d2dd 100644 --- a/arch/arm64/boot/dts/renesas/r8a774e1.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a774e1.dtsi @@ -326,7 +326,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a77960.dtsi b/arch/arm64/boot/dts/renesas/r8a77960.dtsi index ad36aa8e7543..4f9989b5e77a 100644 --- a/arch/arm64/boot/dts/renesas/r8a77960.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a77960.dtsi @@ -311,7 +311,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a77961.dtsi b/arch/arm64/boot/dts/renesas/r8a77961.dtsi index 9d76e39eab72..ad4491ba948f 100644 --- a/arch/arm64/boot/dts/renesas/r8a77961.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a77961.dtsi @@ -311,7 +311,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a77965-salvator-x.dts b/arch/arm64/boot/dts/renesas/r8a77965-salvator-x.dts index f84c64ed4df7..af8cfdccd210 100644 --- a/arch/arm64/boot/dts/renesas/r8a77965-salvator-x.dts +++ b/arch/arm64/boot/dts/renesas/r8a77965-salvator-x.dts @@ -30,3 +30,7 @@ clock-names = "du.0", "du.1", "du.3", "dclkin.0", "dclkin.1", "dclkin.3"; }; + +&gpu { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/renesas/r8a77965-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a77965-salvator-xs.dts index a1d3c8d531cf..f0d9c0124f69 100644 --- a/arch/arm64/boot/dts/renesas/r8a77965-salvator-xs.dts +++ b/arch/arm64/boot/dts/renesas/r8a77965-salvator-xs.dts @@ -30,3 +30,7 @@ clock-names = "du.0", "du.1", "du.3", "dclkin.0", "dclkin.1", "dclkin.3"; }; + +&gpu { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/renesas/r8a77965-ulcb.dts b/arch/arm64/boot/dts/renesas/r8a77965-ulcb.dts index 71704b67a20e..127eb2ea3c92 100644 --- a/arch/arm64/boot/dts/renesas/r8a77965-ulcb.dts +++ b/arch/arm64/boot/dts/renesas/r8a77965-ulcb.dts @@ -31,3 +31,7 @@ clock-names = "du.0", "du.1", "du.3", "dclkin.0", "dclkin.1", "dclkin.3"; }; + +&gpu { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/renesas/r8a77965.dtsi b/arch/arm64/boot/dts/renesas/r8a77965.dtsi index 611a9335c63a..70708f5cf746 100644 --- a/arch/arm64/boot/dts/renesas/r8a77965.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a77965.dtsi @@ -182,7 +182,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a77970.dtsi b/arch/arm64/boot/dts/renesas/r8a77970.dtsi index 1f6676e2795a..f7f1f280fa0b 100644 --- a/arch/arm64/boot/dts/renesas/r8a77970.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a77970.dtsi @@ -91,7 +91,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a77980.dtsi b/arch/arm64/boot/dts/renesas/r8a77980.dtsi index 86b7792d68fa..514dafe34478 100644 --- a/arch/arm64/boot/dts/renesas/r8a77980.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a77980.dtsi @@ -120,7 +120,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a77995.dtsi b/arch/arm64/boot/dts/renesas/r8a77995.dtsi index 5f3fcef7560c..522a49db0258 100644 --- a/arch/arm64/boot/dts/renesas/r8a77995.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a77995.dtsi @@ -85,7 +85,7 @@ clock-frequency = <0>; }; - soc { + soc: soc { compatible = "simple-bus"; bootph-all; diff --git a/arch/arm64/boot/dts/renesas/r8a779g0.dtsi b/arch/arm64/boot/dts/renesas/r8a779g0.dtsi index 82a7278836e5..8a291447b904 100644 --- a/arch/arm64/boot/dts/renesas/r8a779g0.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a779g0.dtsi @@ -589,6 +589,23 @@ status = "disabled"; }; + mfis: system-controller@e6260000 { + compatible = "renesas,r8a779g0-mfis"; + reg = <0 0xe6260000 0 0x10000>; + reg-names = "common"; + interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 916 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 918 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 920 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 922 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "ch0e", "ch1e", "ch2e", "ch3e", "ch4e", "ch5e", + "ch6e", "ch7e", "ch8e", "ch9e", "ch10e", "ch11e"; + #hwlock-cells = <1>; + #mbox-cells = <2>; + status = "disabled"; + }; + tsn0: ethernet@e6460000 { compatible = "renesas,r8a779g0-ethertsn", "renesas,rcar-gen4-ethertsn"; reg = <0 0xe6460000 0 0x7000>, diff --git a/arch/arm64/boot/dts/renesas/r8a78000.dtsi b/arch/arm64/boot/dts/renesas/r8a78000.dtsi index 7780fb4e8351..fb71974ef390 100644 --- a/arch/arm64/boot/dts/renesas/r8a78000.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi @@ -143,6 +143,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x0>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_0>; }; @@ -150,6 +151,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_1>; }; @@ -157,6 +159,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_2>; }; @@ -164,6 +167,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_3>; }; @@ -171,6 +175,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x10000>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_4>; }; @@ -178,6 +183,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x10100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_5>; }; @@ -185,6 +191,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x10200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_6>; }; @@ -192,6 +199,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x10300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_7>; }; @@ -199,6 +207,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x20000>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_8>; }; @@ -206,6 +215,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x20100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_9>; }; @@ -213,6 +223,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x20200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_10>; }; @@ -220,6 +231,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x20300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_11>; }; @@ -227,6 +239,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x30000>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_12>; }; @@ -234,6 +247,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x30100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_13>; }; @@ -241,6 +255,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x30200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_14>; }; @@ -248,6 +263,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x30300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_15>; }; @@ -255,6 +271,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x40000>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_16>; }; @@ -262,6 +279,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x40100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_17>; }; @@ -269,6 +287,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x40200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_18>; }; @@ -276,6 +295,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x40300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_19>; }; @@ -283,6 +303,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x50000>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_20>; }; @@ -290,6 +311,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x50100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_21>; }; @@ -297,6 +319,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x50200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_22>; }; @@ -304,6 +327,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x50300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_23>; }; @@ -311,6 +335,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x60000>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_24>; }; @@ -318,6 +343,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x60100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_25>; }; @@ -325,6 +351,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x60200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_26>; }; @@ -332,6 +359,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x60300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_27>; }; @@ -339,6 +367,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x70000>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_28>; }; @@ -346,6 +375,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x70100>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_29>; }; @@ -353,6 +383,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x70200>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_30>; }; @@ -360,6 +391,7 @@ compatible = "arm,cortex-a720ae"; reg = <0x0 0x70300>; device_type = "cpu"; + enable-method = "psci"; next-level-cache = <&L2_CA720_31>; }; diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index 03bdee870528..c63a857f0e5b 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -358,6 +358,75 @@ status = "disabled"; }; + rspi0: spi@100b0000 { + compatible = "renesas,r9a08g046-rspi"; + reg = <0 0x100b0000 0 0x1000>; + interrupts = <GIC_SPI 440 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 441 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 442 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 443 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 444 IRQ_TYPE_EDGE_RISING>; + interrupt-names = "idle", "error", "end", "rx", "tx"; + clocks = <&cpg CPG_MOD R9A08G046_RSPI0_PCLK>, + <&cpg CPG_MOD R9A08G046_RSPI0_TCLK>; + clock-names = "pclk", "tclk"; + resets = <&cpg R9A08G046_RSPI0_PRESETN>, + <&cpg R9A08G046_RSPI0_TRESETN>; + reset-names = "presetn", "tresetn"; + dmas = <&dmac 0x26f2>, <&dmac 0x26f1>; + dma-names = "rx", "tx"; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + rspi1: spi@100e9000 { + compatible = "renesas,r9a08g046-rspi"; + reg = <0 0x100e9000 0 0x1000>; + interrupts = <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 447 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 448 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>; + interrupt-names = "idle", "error", "end", "rx", "tx"; + clocks = <&cpg CPG_MOD R9A08G046_RSPI1_PCLK>, + <&cpg CPG_MOD R9A08G046_RSPI1_TCLK>; + clock-names = "pclk", "tclk"; + resets = <&cpg R9A08G046_RSPI1_PRESETN>, + <&cpg R9A08G046_RSPI1_TRESETN>; + reset-names = "presetn", "tresetn"; + dmas = <&dmac 0x26f6>, <&dmac 0x26f5>; + dma-names = "rx", "tx"; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + rspi2: spi@100ea000 { + compatible = "renesas,r9a08g046-rspi"; + reg = <0 0x100ea000 0 0x1000>; + interrupts = <GIC_SPI 450 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 451 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 452 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 453 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 454 IRQ_TYPE_EDGE_RISING>; + interrupt-names = "idle", "error", "end", "rx", "tx"; + clocks = <&cpg CPG_MOD R9A08G046_RSPI2_PCLK>, + <&cpg CPG_MOD R9A08G046_RSPI2_TCLK>; + clock-names = "pclk", "tclk"; + resets = <&cpg R9A08G046_RSPI2_PRESETN>, + <&cpg R9A08G046_RSPI2_TRESETN>; + reset-names = "presetn", "tresetn"; + dmas = <&dmac 0x26fa>, <&dmac 0x26f9>; + dma-names = "rx", "tx"; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + rsci0: serial@100b8000 { compatible = "renesas,r9a08g046-rsci"; reg = <0 0x100b8000 0 0x1000>; diff --git a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts index 32d3b08a3cf3..5289efd1a430 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts +++ b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts @@ -13,6 +13,7 @@ #define SW_DPI_EN 0 #define SW_GPIO4 1 #define SW_I3C_EN 0 +#define SW_SER0_PMOD 1 #define PMOD_GPIO4 0 #define PMOD_GPIO6 0 @@ -37,6 +38,9 @@ aliases { i2c2 = &i2c2; i2c3 = &i2c3; + serial0 = &rsci2; + serial1 = &rsci3; + serial2 = &rsci1; serial3 = &scif0; }; @@ -134,6 +138,38 @@ <RZG3L_PORT_PINMUX(2, 1, 4)>; /* RIIC3_SDA */ }; + rsci1_pins: rsci1 { + pinmux = <RZG3L_PORT_PINMUX(D, 4, 5)>, /* RSCI1_RXD_MISO_SCL */ + <RZG3L_PORT_PINMUX(D, 5, 5)>, /* RSCI1_TXD_MOSI_SDA */ + <RZG3L_PORT_PINMUX(D, 6, 6)>, /* RSCI1_CTS */ + <RZG3L_PORT_PINMUX(D, 7, 5)>; /* RSCI1_SS_CTS#_RTS# */ + bias-pull-up; + }; + + rsci2_pins: rsci2 { + pinmux = <RZG3L_PORT_PINMUX(7, 6, 5)>, /* RSCI2_RXD_MISO_SCL */ + <RZG3L_PORT_PINMUX(7, 7, 5)>, /* RSCI2_TXD_MOSI_SDA */ + <RZG3L_PORT_PINMUX(8, 0, 6)>, /* RSCI2_CTS */ + <RZG3L_PORT_PINMUX(8, 1, 5)>; /* RSCI2_SS_CTS#_RTS# */ + bias-pull-up; + power-source = <1800>; + }; + + rsci3_pins: rsci3 { + pinmux = <RZG3L_PORT_PINMUX(8, 2, 5)>, /* RSCI3_RXD_MISO_SCL */ + <RZG3L_PORT_PINMUX(8, 3, 5)>; /* RSCI3_TXD_MOSI_SDA */ + bias-pull-up; + power-source = <1800>; + }; + + rspi2_pins: rspi2 { + pinmux = <RZG3L_PORT_PINMUX(6, 0, 2)>, /* RSPI2_MISO */ + <RZG3L_PORT_PINMUX(6, 1, 2)>, /* RSPI2_MOSI */ + <RZG3L_PORT_PINMUX(6, 2, 2)>, /* RSPI2_SCK */ + <RZG3L_PORT_PINMUX(6, 3, 2)>; /* RSPI2_SSLA */ + power-source = <1800>; + }; + scif0_pins: scif0 { pins = "SCIF0_TXD", "SCIF0_RXD"; power-source = <1800>; @@ -147,6 +183,48 @@ }; }; +#if SW_SER0_PMOD +&rsci1 { + pinctrl-0 = <&rsci1_pins>; + pinctrl-names = "default"; + + uart-has-rtscts; + + status = "okay"; +}; +#endif + +#if !SW_DPI_EN +&rsci2 { + pinctrl-0 = <&rsci2_pins>; + pinctrl-names = "default"; + + uart-has-rtscts; + + status = "okay"; +}; +#endif + +#if (!SW_DPI_EN) +&rsci3 { + pinctrl-0 = <&rsci3_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; +#endif + +#if !SW_DPI_EN +&rspi2 { + pinctrl-0 = <&rspi2_pins>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + + status = "okay"; +}; +#endif + &scif0 { pinctrl-0 = <&scif0_pins>; pinctrl-names = "default"; diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi index b48da8534a3d..73757e8e2197 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi @@ -21,6 +21,20 @@ clock-frequency = <0>; }; + audio_clkb: audio-b-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + + audio_clkc: audio-c-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + /* * The default cluster table is based on the assumption that the PLLCA55 clock * frequency is set to 1.7GHz. The PLLCA55 clock frequency can be set to @@ -271,8 +285,10 @@ cpg: clock-controller@10420000 { compatible = "renesas,r9a09g047-cpg"; reg = <0 0x10420000 0 0x10000>; - clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>; - clock-names = "audio_extal", "rtxin", "qextal"; + clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>, + <&audio_clkb>, <&audio_clkc>; + clock-names = "audio_extal", "rtxin", "qextal", + "audio_clkb", "audio_clkc"; #clock-cells = <2>; #reset-cells = <1>; #power-domain-cells = <0>; @@ -896,6 +912,506 @@ status = "disabled"; }; + snd_rzg3e: sound@13c00000 { + compatible = "renesas,r9a09g047-sound"; + reg = <0 0x13c00000 0 0x20000>, /* SCU */ + <0 0x13c20000 0 0x10000>, /* ADG */ + <0 0x13c30000 0 0x1000>, /* SSIU */ + <0 0x13c31000 0 0x1f000>, /* SSI */ + <0 0x13c50000 0 0x10000>; /* Audio DMAC peri peri */ + reg-names = "scu", "adg", "ssiu", "ssi", "audmapp"; + clocks = <&cpg CPG_MOD 0xf5>, + <&cpg CPG_MOD 0x181>, <&cpg CPG_MOD 0x182>, + <&cpg CPG_MOD 0x183>, <&cpg CPG_MOD 0x184>, + <&cpg CPG_MOD 0x185>, <&cpg CPG_MOD 0x186>, + <&cpg CPG_MOD 0x187>, <&cpg CPG_MOD 0x188>, + <&cpg CPG_MOD 0x189>, <&cpg CPG_MOD 0x18a>, + <&cpg CPG_MOD 0x174>, <&cpg CPG_MOD 0x175>, + <&cpg CPG_MOD 0x176>, <&cpg CPG_MOD 0x177>, + <&cpg CPG_MOD 0x178>, <&cpg CPG_MOD 0x179>, + <&cpg CPG_MOD 0x17a>, <&cpg CPG_MOD 0x17b>, + <&cpg CPG_MOD 0x17c>, <&cpg CPG_MOD 0x17d>, + <&cpg CPG_MOD 0x172>, <&cpg CPG_MOD 0x173>, + <&cpg CPG_MOD 0x172>, <&cpg CPG_MOD 0x173>, + <&cpg CPG_MOD 0x170>, <&cpg CPG_MOD 0x171>, + <&cpg CPG_MOD 0xfb>, <&cpg CPG_MOD 0xfc>, + <&cpg CPG_MOD 0xfd>, <&cpg CPG_MOD 0xfa>, + <&cpg CPG_MOD 0x180>, + <&cpg CPG_MOD 0xf6>, <&cpg CPG_MOD 0xf7>, + <&cpg CPG_MOD 0x17e>, + <&cpg CPG_MOD 0x160>, <&cpg CPG_MOD 0x161>, + <&cpg CPG_MOD 0x162>, <&cpg CPG_MOD 0x163>, + <&cpg CPG_MOD 0x164>, <&cpg CPG_MOD 0x165>, + <&cpg CPG_MOD 0x166>, <&cpg CPG_MOD 0x167>, + <&cpg CPG_MOD 0x168>, <&cpg CPG_MOD 0x169>, + <&cpg CPG_MOD 0xf8>, <&cpg CPG_MOD 0xf9>; + clock-names = "ssi-all", + "ssi-0", "ssi-1", + "ssi-2", "ssi-3", + "ssi-4", "ssi-5", + "ssi-6", "ssi-7", + "ssi-8", "ssi-9", + "src-0", "src-1", + "src-2", "src-3", + "src-4", "src-5", + "src-6", "src-7", + "src-8", "src-9", + "mix-0", "mix-1", + "ctu-0", "ctu-1", + "dvc-0", "dvc-1", + "audio-clka", "audio-clkb", + "audio-clkc", "audio-clki", + "ssif_supply", + "scu", "scu_x2", + "scu_supply", + "adg-ssi-0", "adg-ssi-1", + "adg-ssi-2", "adg-ssi-3", + "adg-ssi-4", "adg-ssi-5", + "adg-ssi-6", "adg-ssi-7", + "adg-ssi-8", "adg-ssi-9", + "audmapp", "adg"; + power-domains = <&cpg>; + resets = <&cpg 0xe1>, + <&cpg 0xe2>, <&cpg 0xe3>, + <&cpg 0xe4>, <&cpg 0xe5>, + <&cpg 0xe6>, <&cpg 0xe7>, + <&cpg 0xe8>, <&cpg 0xe9>, + <&cpg 0xea>, <&cpg 0xeb>, + <&cpg 0xec>, <&cpg 0xee>, + <&cpg 0xed>; + reset-names = "ssi-all", + "ssi-0", "ssi-1", + "ssi-2", "ssi-3", + "ssi-4", "ssi-5", + "ssi-6", "ssi-7", + "ssi-8", "ssi-9", + "scu", "adg", + "audmapp"; + status = "disabled"; + + ctu { + ctu00: ctu-0 { }; + ctu01: ctu-1 { }; + ctu02: ctu-2 { }; + ctu03: ctu-3 { }; + ctu10: ctu-4 { }; + ctu11: ctu-5 { }; + ctu12: ctu-6 { }; + ctu13: ctu-7 { }; + }; + + dvc { + dvc0: dvc-0 { + dmas = <&dmac0 0x1db3>, <&dmac1 0x1db3>, + <&dmac2 0x1db3>, <&dmac3 0x1db3>, + <&dmac4 0x1db3>; + dma-names = "tx", "tx", "tx", "tx", "tx"; + }; + dvc1: dvc-1 { + dmas = <&dmac0 0x1db4>, <&dmac1 0x1db4>, + <&dmac2 0x1db4>, <&dmac3 0x1db4>, + <&dmac4 0x1db4>; + dma-names = "tx", "tx", "tx", "tx", "tx"; + }; + }; + + mix { + mix0: mix-0 { }; + mix1: mix-1 { }; + }; + + src { + src0: src-0 { + interrupts = <GIC_SPI 902 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1d9f>, <&dmac0 0x1da9>, + <&dmac1 0x1d9f>, <&dmac1 0x1da9>, + <&dmac2 0x1d9f>, <&dmac2 0x1da9>, + <&dmac3 0x1d9f>, <&dmac3 0x1da9>, + <&dmac4 0x1d9f>, <&dmac4 0x1da9>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src1: src-1 { + interrupts = <GIC_SPI 903 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da0>, <&dmac0 0x1daa>, + <&dmac1 0x1da0>, <&dmac1 0x1daa>, + <&dmac2 0x1da0>, <&dmac2 0x1daa>, + <&dmac3 0x1da0>, <&dmac3 0x1daa>, + <&dmac4 0x1da0>, <&dmac4 0x1daa>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src2: src-2 { + interrupts = <GIC_SPI 904 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da1>, <&dmac0 0x1dab>, + <&dmac1 0x1da1>, <&dmac1 0x1dab>, + <&dmac2 0x1da1>, <&dmac2 0x1dab>, + <&dmac3 0x1da1>, <&dmac3 0x1dab>, + <&dmac4 0x1da1>, <&dmac4 0x1dab>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src3: src-3 { + interrupts = <GIC_SPI 905 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da2>, <&dmac0 0x1dac>, + <&dmac1 0x1da2>, <&dmac1 0x1dac>, + <&dmac2 0x1da2>, <&dmac2 0x1dac>, + <&dmac3 0x1da2>, <&dmac3 0x1dac>, + <&dmac4 0x1da2>, <&dmac4 0x1dac>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src4: src-4 { + interrupts = <GIC_SPI 906 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da3>, <&dmac0 0x1dad>, + <&dmac1 0x1da3>, <&dmac1 0x1dad>, + <&dmac2 0x1da3>, <&dmac2 0x1dad>, + <&dmac3 0x1da3>, <&dmac3 0x1dad>, + <&dmac4 0x1da3>, <&dmac4 0x1dad>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src5: src-5 { + interrupts = <GIC_SPI 907 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da4>, <&dmac0 0x1dae>, + <&dmac1 0x1da4>, <&dmac1 0x1dae>, + <&dmac2 0x1da4>, <&dmac2 0x1dae>, + <&dmac3 0x1da4>, <&dmac3 0x1dae>, + <&dmac4 0x1da4>, <&dmac4 0x1dae>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src6: src-6 { + interrupts = <GIC_SPI 908 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da5>, <&dmac0 0x1daf>, + <&dmac1 0x1da5>, <&dmac1 0x1daf>, + <&dmac2 0x1da5>, <&dmac2 0x1daf>, + <&dmac3 0x1da5>, <&dmac3 0x1daf>, + <&dmac4 0x1da5>, <&dmac4 0x1daf>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src7: src-7 { + interrupts = <GIC_SPI 909 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da6>, <&dmac0 0x1db0>, + <&dmac1 0x1da6>, <&dmac1 0x1db0>, + <&dmac2 0x1da6>, <&dmac2 0x1db0>, + <&dmac3 0x1da6>, <&dmac3 0x1db0>, + <&dmac4 0x1da6>, <&dmac4 0x1db0>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src8: src-8 { + interrupts = <GIC_SPI 910 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da7>, <&dmac0 0x1db1>, + <&dmac1 0x1da7>, <&dmac1 0x1db1>, + <&dmac2 0x1da7>, <&dmac2 0x1db1>, + <&dmac3 0x1da7>, <&dmac3 0x1db1>, + <&dmac4 0x1da7>, <&dmac4 0x1db1>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + src9: src-9 { + interrupts = <GIC_SPI 911 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da8>, <&dmac0 0x1db2>, + <&dmac1 0x1da8>, <&dmac1 0x1db2>, + <&dmac2 0x1da8>, <&dmac2 0x1db2>, + <&dmac3 0x1da8>, <&dmac3 0x1db2>, + <&dmac4 0x1da8>, <&dmac4 0x1db2>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", + "rx", "tx"; + }; + }; + + ssi { + ssi0: ssi-0 { + interrupts = <GIC_SPI 889 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi1: ssi-1 { + interrupts = <GIC_SPI 890 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi2: ssi-2 { + interrupts = <GIC_SPI 891 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi3: ssi-3 { + interrupts = <GIC_SPI 892 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi4: ssi-4 { + interrupts = <GIC_SPI 893 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi5: ssi-5 { + interrupts = <GIC_SPI 894 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi6: ssi-6 { + interrupts = <GIC_SPI 895 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi7: ssi-7 { + interrupts = <GIC_SPI 896 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi8: ssi-8 { + interrupts = <GIC_SPI 897 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi9: ssi-9 { + interrupts = <GIC_SPI 898 IRQ_TYPE_LEVEL_HIGH>; + }; + }; + + ssiu { + ssiu00: ssiu-0 { + dmas = <&dmac0 0x1d61>, <&dmac0 0x1d62>, + <&dmac1 0x1d61>, <&dmac1 0x1d62>, + <&dmac2 0x1d61>, <&dmac2 0x1d62>, + <&dmac3 0x1d61>, <&dmac3 0x1d62>, + <&dmac4 0x1d61>, <&dmac4 0x1d62>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu01: ssiu-1 { + dmas = <&dmac0 0x1d63>, <&dmac0 0x1d64>, + <&dmac1 0x1d63>, <&dmac1 0x1d64>, + <&dmac2 0x1d63>, <&dmac2 0x1d64>, + <&dmac3 0x1d63>, <&dmac3 0x1d64>, + <&dmac4 0x1d63>, <&dmac4 0x1d64>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu02: ssiu-2 { + dmas = <&dmac0 0x1d65>, <&dmac0 0x1d66>, + <&dmac1 0x1d65>, <&dmac1 0x1d66>, + <&dmac2 0x1d65>, <&dmac2 0x1d66>, + <&dmac3 0x1d65>, <&dmac3 0x1d66>, + <&dmac4 0x1d65>, <&dmac4 0x1d66>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu03: ssiu-3 { + dmas = <&dmac0 0x1d67>, <&dmac0 0x1d68>, + <&dmac1 0x1d67>, <&dmac1 0x1d68>, + <&dmac2 0x1d67>, <&dmac2 0x1d68>, + <&dmac3 0x1d67>, <&dmac3 0x1d68>, + <&dmac4 0x1d67>, <&dmac4 0x1d68>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu10: ssiu-4 { + dmas = <&dmac0 0x1d69>, <&dmac0 0x1d6a>, + <&dmac1 0x1d69>, <&dmac1 0x1d6a>, + <&dmac2 0x1d69>, <&dmac2 0x1d6a>, + <&dmac3 0x1d69>, <&dmac3 0x1d6a>, + <&dmac4 0x1d69>, <&dmac4 0x1d6a>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu11: ssiu-5 { + dmas = <&dmac0 0x1d6b>, <&dmac0 0x1d6c>, + <&dmac1 0x1d6b>, <&dmac1 0x1d6c>, + <&dmac2 0x1d6b>, <&dmac2 0x1d6c>, + <&dmac3 0x1d6b>, <&dmac3 0x1d6c>, + <&dmac4 0x1d6b>, <&dmac4 0x1d6c>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu12: ssiu-6 { + dmas = <&dmac0 0x1d6d>, <&dmac0 0x1d6e>, + <&dmac1 0x1d6d>, <&dmac1 0x1d6e>, + <&dmac2 0x1d6d>, <&dmac2 0x1d6e>, + <&dmac3 0x1d6d>, <&dmac3 0x1d6e>, + <&dmac4 0x1d6d>, <&dmac4 0x1d6e>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu13: ssiu-7 { + dmas = <&dmac0 0x1d6f>, <&dmac0 0x1d70>, + <&dmac1 0x1d6f>, <&dmac1 0x1d70>, + <&dmac2 0x1d6f>, <&dmac2 0x1d70>, + <&dmac3 0x1d6f>, <&dmac3 0x1d70>, + <&dmac4 0x1d6f>, <&dmac4 0x1d70>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu20: ssiu-8 { + dmas = <&dmac0 0x1d71>, <&dmac0 0x1d72>, + <&dmac1 0x1d71>, <&dmac1 0x1d72>, + <&dmac2 0x1d71>, <&dmac2 0x1d72>, + <&dmac3 0x1d71>, <&dmac3 0x1d72>, + <&dmac4 0x1d71>, <&dmac4 0x1d72>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu21: ssiu-9 { + dmas = <&dmac0 0x1d73>, <&dmac0 0x1d74>, + <&dmac1 0x1d73>, <&dmac1 0x1d74>, + <&dmac2 0x1d73>, <&dmac2 0x1d74>, + <&dmac3 0x1d73>, <&dmac3 0x1d74>, + <&dmac4 0x1d73>, <&dmac4 0x1d74>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu22: ssiu-10 { + dmas = <&dmac0 0x1d75>, <&dmac0 0x1d76>, + <&dmac1 0x1d75>, <&dmac1 0x1d76>, + <&dmac2 0x1d75>, <&dmac2 0x1d76>, + <&dmac3 0x1d75>, <&dmac3 0x1d76>, + <&dmac4 0x1d75>, <&dmac4 0x1d76>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu23: ssiu-11 { + dmas = <&dmac0 0x1d77>, <&dmac0 0x1d78>, + <&dmac1 0x1d77>, <&dmac1 0x1d78>, + <&dmac2 0x1d77>, <&dmac2 0x1d78>, + <&dmac3 0x1d77>, <&dmac3 0x1d78>, + <&dmac4 0x1d77>, <&dmac4 0x1d78>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu30: ssiu-12 { + dmas = <&dmac0 0x1d79>, <&dmac0 0x1d7a>, + <&dmac1 0x1d79>, <&dmac1 0x1d7a>, + <&dmac2 0x1d79>, <&dmac2 0x1d7a>, + <&dmac3 0x1d79>, <&dmac3 0x1d7a>, + <&dmac4 0x1d79>, <&dmac4 0x1d7a>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu31: ssiu-13 { + dmas = <&dmac0 0x1d7b>, <&dmac0 0x1d7c>, + <&dmac1 0x1d7b>, <&dmac1 0x1d7c>, + <&dmac2 0x1d7b>, <&dmac2 0x1d7c>, + <&dmac3 0x1d7b>, <&dmac3 0x1d7c>, + <&dmac4 0x1d7b>, <&dmac4 0x1d7c>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu32: ssiu-14 { + dmas = <&dmac0 0x1d7d>, <&dmac0 0x1d7e>, + <&dmac1 0x1d7d>, <&dmac1 0x1d7e>, + <&dmac2 0x1d7d>, <&dmac2 0x1d7e>, + <&dmac3 0x1d7d>, <&dmac3 0x1d7e>, + <&dmac4 0x1d7d>, <&dmac4 0x1d7e>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu33: ssiu-15 { + dmas = <&dmac0 0x1d7f>, <&dmac0 0x1d80>, + <&dmac1 0x1d7f>, <&dmac1 0x1d80>, + <&dmac2 0x1d7f>, <&dmac2 0x1d80>, + <&dmac3 0x1d7f>, <&dmac3 0x1d80>, + <&dmac4 0x1d7f>, <&dmac4 0x1d80>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu40: ssiu-16 { + dmas = <&dmac0 0x1d81>, <&dmac0 0x1d82>, + <&dmac1 0x1d81>, <&dmac1 0x1d82>, + <&dmac2 0x1d81>, <&dmac2 0x1d82>, + <&dmac3 0x1d81>, <&dmac3 0x1d82>, + <&dmac4 0x1d81>, <&dmac4 0x1d82>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu41: ssiu-17 { + dmas = <&dmac0 0x1d83>, <&dmac0 0x1d84>, + <&dmac1 0x1d83>, <&dmac1 0x1d84>, + <&dmac2 0x1d83>, <&dmac2 0x1d84>, + <&dmac3 0x1d83>, <&dmac3 0x1d84>, + <&dmac4 0x1d83>, <&dmac4 0x1d84>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu42: ssiu-18 { + dmas = <&dmac0 0x1d85>, <&dmac0 0x1d86>, + <&dmac1 0x1d85>, <&dmac1 0x1d86>, + <&dmac2 0x1d85>, <&dmac2 0x1d86>, + <&dmac3 0x1d85>, <&dmac3 0x1d86>, + <&dmac4 0x1d85>, <&dmac4 0x1d86>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu43: ssiu-19 { + dmas = <&dmac0 0x1d87>, <&dmac0 0x1d88>, + <&dmac1 0x1d87>, <&dmac1 0x1d88>, + <&dmac2 0x1d87>, <&dmac2 0x1d88>, + <&dmac3 0x1d87>, <&dmac3 0x1d88>, + <&dmac4 0x1d87>, <&dmac4 0x1d88>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu50: ssiu-20 { + dmas = <&dmac0 0x1d89>, <&dmac0 0x1d8a>, + <&dmac1 0x1d89>, <&dmac1 0x1d8a>, + <&dmac2 0x1d89>, <&dmac2 0x1d8a>, + <&dmac3 0x1d89>, <&dmac3 0x1d8a>, + <&dmac4 0x1d89>, <&dmac4 0x1d8a>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu60: ssiu-21 { + dmas = <&dmac0 0x1d8b>, <&dmac0 0x1d8c>, + <&dmac1 0x1d8b>, <&dmac1 0x1d8c>, + <&dmac2 0x1d8b>, <&dmac2 0x1d8c>, + <&dmac3 0x1d8b>, <&dmac3 0x1d8c>, + <&dmac4 0x1d8b>, <&dmac4 0x1d8c>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu70: ssiu-22 { + dmas = <&dmac0 0x1d8d>, <&dmac0 0x1d8e>, + <&dmac1 0x1d8d>, <&dmac1 0x1d8e>, + <&dmac2 0x1d8d>, <&dmac2 0x1d8e>, + <&dmac3 0x1d8d>, <&dmac3 0x1d8e>, + <&dmac4 0x1d8d>, <&dmac4 0x1d8e>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu80: ssiu-23 { + dmas = <&dmac0 0x1d8f>, <&dmac0 0x1d90>, + <&dmac1 0x1d8f>, <&dmac1 0x1d90>, + <&dmac2 0x1d8f>, <&dmac2 0x1d90>, + <&dmac3 0x1d8f>, <&dmac3 0x1d90>, + <&dmac4 0x1d8f>, <&dmac4 0x1d90>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu90: ssiu-24 { + dmas = <&dmac0 0x1d91>, <&dmac0 0x1d92>, + <&dmac1 0x1d91>, <&dmac1 0x1d92>, + <&dmac2 0x1d91>, <&dmac2 0x1d92>, + <&dmac3 0x1d91>, <&dmac3 0x1d92>, + <&dmac4 0x1d91>, <&dmac4 0x1d92>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu91: ssiu-25 { + dmas = <&dmac0 0x1d93>, <&dmac0 0x1d94>, + <&dmac1 0x1d93>, <&dmac1 0x1d94>, + <&dmac2 0x1d93>, <&dmac2 0x1d94>, + <&dmac3 0x1d93>, <&dmac3 0x1d94>, + <&dmac4 0x1d93>, <&dmac4 0x1d94>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu92: ssiu-26 { + dmas = <&dmac0 0x1d95>, <&dmac0 0x1d96>, + <&dmac1 0x1d95>, <&dmac1 0x1d96>, + <&dmac2 0x1d95>, <&dmac2 0x1d96>, + <&dmac3 0x1d95>, <&dmac3 0x1d96>, + <&dmac4 0x1d95>, <&dmac4 0x1d96>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + ssiu93: ssiu-27 { + dmas = <&dmac0 0x1d97>, <&dmac0 0x1d98>, + <&dmac1 0x1d97>, <&dmac1 0x1d98>, + <&dmac2 0x1d97>, <&dmac2 0x1d98>, + <&dmac3 0x1d97>, <&dmac3 0x1d98>, + <&dmac4 0x1d97>, <&dmac4 0x1d98>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", + "tx", "rx"; + }; + }; + }; + wdt1: watchdog@14400000 { compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt"; reg = <0 0x14400000 0 0x400>; @@ -931,7 +1447,7 @@ reg = <0 0x13400000 0 0x10000>; ranges = <0x02000000 0 0x30000000 0 0x30000000 0 0x08000000>, <0x43000000 4 0x40000000 4 0x40000000 6 0x00000000>; - dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 2 0x00000000>; + dma-ranges = <0x43000000 0 0x40000000 0 0x40000000 2 0x00000000>; bus-range = <0x0 0xff>; interrupts = <GIC_SPI 800 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 801 IRQ_TYPE_LEVEL_HIGH>, @@ -1265,6 +1781,7 @@ clocks = <&cpg CPG_MOD 0xa3>, <&cpg CPG_MOD 0xa5>, <&cpg CPG_MOD 0xa4>, <&cpg CPG_MOD 0xa6>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <200000000>; resets = <&cpg 0xa7>; power-domains = <&cpg>; status = "disabled"; @@ -1285,6 +1802,7 @@ clocks = <&cpg CPG_MOD 0xa7>, <&cpg CPG_MOD 0xa9>, <&cpg CPG_MOD 0xa8>, <&cpg CPG_MOD 0xaa>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <200000000>; resets = <&cpg 0xa8>; power-domains = <&cpg>; status = "disabled"; @@ -1305,6 +1823,7 @@ clocks = <&cpg CPG_MOD 0xab>, <&cpg CPG_MOD 0xad>, <&cpg CPG_MOD 0xac>, <&cpg CPG_MOD 0xae>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <200000000>; resets = <&cpg 0xa9>; power-domains = <&cpg>; status = "disabled"; diff --git a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts index 6372f582a7c4..4eed095b683b 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts @@ -32,6 +32,37 @@ #include "rzg3e-smarc-som.dtsi" #include "renesas-smarc2.dtsi" +/* + * SSI-DA7212 + * + * These commands are required when Playback/Capture + * + * amixer -q cset name='Aux Switch' on + * amixer -q cset name='Mixin Left Aux Left Switch' on + * amixer -q cset name='Mixin Right Aux Right Switch' on + * amixer -q cset name='ADC Switch' on + * amixer -q cset name='Mixout Right Mixin Right Switch' off + * amixer -q cset name='Mixout Left Mixin Left Switch' off + * amixer -q cset name='Headphone Volume' 70% + * amixer -q cset name='Headphone Switch' on + * amixer -q cset name='Mixout Left DAC Left Switch' on + * amixer -q cset name='Mixout Right DAC Right Switch' on + * amixer -q cset name='DAC Left Source MUX' 'DAI Input Left' + * amixer -q cset name='DAC Right Source MUX' 'DAI Input Right' + * amixer -q sset 'Mic 1 Amp Source MUX' 'MIC_P' + * amixer -q sset 'Mic 2 Amp Source MUX' 'MIC_P' + * amixer -q sset 'Mixin Left Mic 1' on + * amixer -q sset 'Mixin Right Mic 2' on + * amixer -q sset 'Mic 1' 90% on + * amixer -q sset 'Mic 2' 90% on + * amixer -q sset 'Lineout' 80% on + * amixer -q set "Headphone" 100% on + * + * When Capture chained with DVC, use this command to amplify sound + * amixer set 'DVC In',0 80% + * For playback, use: amixer set 'DVC Out',0 80% + */ + / { model = "Renesas SMARC EVK version 2 based on r9a09g047e57"; compatible = "renesas,smarc2-evk", "renesas,rzg3e-smarcm", @@ -55,6 +86,22 @@ gpios-states = <0>; states = <3300000 0>, <1800000 1>; }; + + sound_card: sound { + compatible = "audio-graph-card"; + + label = "snd-rzg3e"; + + dais = <&rsnd_port0>; /* DA7212 */ + }; +}; + +&audio_clkb { + clock-frequency = <11289600>; +}; + +&audio_clkc { + clock-frequency = <12288000>; }; &canfd { @@ -99,6 +146,35 @@ pinctrl-names = "default"; }; +&i2c1 { + da7212: codec@1a { + compatible = "dlg,da7212"; + #sound-dai-cells = <0>; + reg = <0x1a>; + + clocks = <&versa3 1>; + clock-names = "mclk"; + + dlg,micbias1-lvl = <2500>; + dlg,micbias2-lvl = <2500>; + dlg,dmic-data-sel = "lrise_rfall"; + dlg,dmic-samplephase = "between_clkedge"; + dlg,dmic-clkrate = <3000000>; + + VDDA-supply = <®_1p8v>; + VDDSP-supply = <®_3p3v>; + VDDMIC-supply = <®_3p3v>; + VDDIO-supply = <®_1p8v>; + + port { + da7212_endpoint: endpoint { + remote-endpoint = <&rsnd_endpoint0>; + mclk-fs = <256>; + }; + }; + }; +}; + &keys { pinctrl-0 = <&nmi_pins>; pinctrl-names = "default"; @@ -237,7 +313,7 @@ }; #endif -#if (!SW_LCD_EN) && (SW_SER0_PMOD) +#if !SW_LCD_EN &rsci4 { pinctrl-0 = <&rsci4_pins>; pinctrl-names = "default"; @@ -280,6 +356,42 @@ vqmmc-supply = <&vqmmc_sd1_pvdd>; }; +&snd_rzg3e { + pinctrl-0 = <&sound_clk_pins &sound_pins>; + pinctrl-names = "default"; + + status = "okay"; + + /* audio_clkout */ + #clock-cells = <0>; + clock-frequency = <11289600>; + + /* Multi DAI */ + #sound-dai-cells = <1>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + rsnd_port0: port@0 { + reg = <0>; + rsnd_endpoint0: endpoint { + remote-endpoint = <&da7212_endpoint>; + + dai-format = "i2s"; + bitclock-master = <&rsnd_endpoint0>; + frame-master = <&rsnd_endpoint0>; + + playback = <&ssi3>, <&src1>, <&dvc1>; + capture = <&ssi4>, <&src0>, <&dvc0>; + }; + }; + }; +}; + +&ssi4 { + shared-pin; +}; + &usb3_phy { status = "okay"; }; diff --git a/arch/arm64/boot/dts/renesas/r9a09g056.dtsi b/arch/arm64/boot/dts/renesas/r9a09g056.dtsi index d6c8c39df2a4..76fa34ff3d07 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g056.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g056.dtsi @@ -39,6 +39,20 @@ clock-frequency = <0>; }; + audio_clkb: audio-b-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + + audio_clkc: audio-c-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + /* * The default cluster table is based on the assumption that the PLLCA55 clock * frequency is set to 1.7GHz. The PLLCA55 clock frequency can be set to @@ -294,8 +308,10 @@ cpg: clock-controller@10420000 { compatible = "renesas,r9a09g056-cpg"; reg = <0 0x10420000 0 0x10000>; - clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>; - clock-names = "audio_extal", "rtxin", "qextal"; + clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>, + <&audio_clkb>, <&audio_clkc>; + clock-names = "audio_extal", "rtxin", "qextal", + "audio_clkb", "audio_clkc"; #clock-cells = <2>; #reset-cells = <1>; #power-domain-cells = <0>; @@ -1049,7 +1065,7 @@ reg = <0 0x13400000 0 0x10000>; ranges = <0x02000000 0 0x30000000 0 0x30000000 0 0x8000000>, <0x43000000 4 0x40000000 4 0x40000000 6 0x00000000>; - dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 2 0x00000000>; + dma-ranges = <0x43000000 0 0x40000000 0 0x40000000 2 0x00000000>; bus-range = <0x0 0xff>; interrupts = <GIC_SPI 800 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 801 IRQ_TYPE_LEVEL_HIGH>, diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi index 1e94366bb7ee..639693d464a7 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi @@ -21,6 +21,20 @@ clock-frequency = <0>; }; + audio_clkb: audio-b-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + + audio_clkc: audio-c-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + /* * The default cluster table is based on the assumption that the PLLCA55 clock * frequency is set to 1.7GHz. The PLLCA55 clock frequency can be set to @@ -276,8 +290,10 @@ cpg: clock-controller@10420000 { compatible = "renesas,r9a09g057-cpg"; reg = <0 0x10420000 0 0x10000>; - clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>; - clock-names = "audio_extal", "rtxin", "qextal"; + clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>, + <&audio_clkb>, <&audio_clkc>; + clock-names = "audio_extal", "rtxin", "qextal", + "audio_clkb", "audio_clkc"; #clock-cells = <2>; #reset-cells = <1>; #power-domain-cells = <0>; @@ -1025,6 +1041,146 @@ status = "disabled"; }; + pcie0: pcie@13400000 { + compatible = "renesas,r9a09g057-pcie"; + reg = <0 0x13400000 0 0x10000>; + ranges = <0x02000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>, + <0x43000000 0x4 0x40000000 0x4 0x40000000 0x6 0x00000000>; + dma-ranges = <0x43000000 0x0 0x40000000 0x0 0x40000000 0x4 0x00000000>; + bus-range = <0x0 0xff>; + interrupts = <GIC_SPI 800 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 801 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 802 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 806 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 792 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 793 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 794 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 795 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 796 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 797 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 799 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 805 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 807 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 791 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 798 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 808 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 809 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 812 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 813 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "serr", "serr_cor", "serr_nonfatal", + "serr_fatal", "axi_err", "inta", + "intb", "intc", "intd", "msi", + "link_bandwidth", "pm_pme", "dma", + "pcie_evt", "msg", "all", + "link_equalization_request", + "turn_off_event", "pmu_poweroff", + "d3_event_f0", "d3_event_f1", + "cfg_pmcsr_writeclear_f0", + "cfg_pmcsr_writeclear_f1"; + #interrupt-cells = <1>; + interrupt-controller; + interrupt-map-mask = <0 0 0 7>; + interrupt-map = <0 0 0 1 &pcie0 0 0 0 0>, /* INTA */ + <0 0 0 2 &pcie0 0 0 0 1>, /* INTB */ + <0 0 0 3 &pcie0 0 0 0 2>, /* INTC */ + <0 0 0 4 &pcie0 0 0 0 3>; /* INTD */ + clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>; + clock-names = "aclk", "pmu"; + resets = <&cpg 0xb2>; + reset-names = "aresetn"; + power-domains = <&cpg>; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + num-lanes = <2>; + renesas,sysc = <&sys 0>; + status = "disabled"; + + pcie_port0: pcie@0,0 { + reg = <0x0 0x0 0x0 0x0 0x0>; + ranges; + device_type = "pci"; + vendor-id = <0x1912>; + device-id = <0x003b>; + #address-cells = <3>; + #size-cells = <2>; + }; + }; + + pcie1: pcie@13410000 { + compatible = "renesas,r9a09g057-pcie"; + reg = <0 0x13410000 0 0x10000>; + ranges = <0x02000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>, + <0x43000000 0xa 0x40000000 0xa 0x40000000 0x5 0xc0000000>; + dma-ranges = <0x43000000 0x0 0x40000000 0x0 0x40000000 0x4 0x00000000>; + bus-range = <0x0 0xff>; + interrupts = <GIC_SPI 823 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 824 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 825 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 826 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 829 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 815 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 816 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 817 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 818 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 819 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 820 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 827 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 828 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 830 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 814 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 821 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 831 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 832 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 833 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 835 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "serr", "serr_cor", "serr_nonfatal", + "serr_fatal", "axi_err", "inta", + "intb", "intc", "intd", "msi", + "link_bandwidth", "pm_pme", "dma", + "pcie_evt", "msg", "all", + "link_equalization_request", + "turn_off_event", "pmu_poweroff", + "d3_event_f0", "d3_event_f1", + "cfg_pmcsr_writeclear_f0", + "cfg_pmcsr_writeclear_f1"; + #interrupt-cells = <1>; + interrupt-controller; + interrupt-map-mask = <0 0 0 7>; + interrupt-map = <0 0 0 1 &pcie1 0 0 0 0>, /* INTA */ + <0 0 0 2 &pcie1 0 0 0 1>, /* INTB */ + <0 0 0 3 &pcie1 0 0 0 2>, /* INTC */ + <0 0 0 4 &pcie1 0 0 0 3>; /* INTD */ + clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>; + clock-names = "aclk", "pmu"; + resets = <&cpg 0xb2>; + reset-names = "aresetn"; + power-domains = <&cpg>; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + num-lanes = <2>; + renesas,sysc = <&sys 1>; + status = "disabled"; + + pcie_port1: pcie@0,0 { + reg = <0x0 0x0 0x0 0x0 0x0>; + ranges; + device_type = "pci"; + vendor-id = <0x1912>; + device-id = <0x003b>; + #address-cells = <3>; + #size-cells = <2>; + }; + }; + i2c0: i2c@14400400 { compatible = "renesas,riic-r9a09g057"; reg = <0 0x14400400 0 0x400>; diff --git a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts index 3c1ddacc0944..637fc92dcc26 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts @@ -384,6 +384,18 @@ status = "okay"; }; +&pcie0 { + pinctrl-0 = <&pcie0_pins>; + pinctrl-names = "default"; + num-lanes = <4>; + status = "okay"; +}; + +&pcie_port0 { + clocks = <&versa3 5>; + clock-names = "ref"; +}; + &pinctrl { eth0_pins: eth0 { pins = "ET0_TXC_TXCLK"; @@ -430,6 +442,12 @@ <RZV2H_PORT_PINMUX(0, 7, 1)>; /* I2C8_SCL */ }; + pcie0_pins: pcie0 { + pins = "PCIE0_RSTOUTB"; + slew-rate = <0>; + renesas,output-impedance = <2>; + }; + scif_pins: scif { pins = "SCIF_TXD", "SCIF_RXD"; renesas,output-impedance = <1>; diff --git a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts index e9ed2de128f6..572be8aa6d7e 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts @@ -256,60 +256,112 @@ /* * GMAC1 Pin Configuration: * - * SW2[8] ON - use pins P33_2-P33_7, P34_0-P34_5, P34_7 and - * P35_0-P35_2 for Ethernet port 3 + * SW2[8] ON - use pins P33_2-P33_7 and P34_0-P34_5 for Ethernet port 3 */ - gmac1_pins: gmac1-pins { - pinmux = <RZT2H_PORT_PINMUX(33, 2, 0xf)>, /* ETH3_TXCLK */ - <RZT2H_PORT_PINMUX(33, 3, 0xf)>, /* ETH3_TXD0 */ - <RZT2H_PORT_PINMUX(33, 4, 0xf)>, /* ETH3_TXD1 */ - <RZT2H_PORT_PINMUX(33, 5, 0xf)>, /* ETH3_TXD2 */ - <RZT2H_PORT_PINMUX(33, 6, 0xf)>, /* ETH3_TXD3 */ - <RZT2H_PORT_PINMUX(33, 7, 0xf)>, /* ETH3_TXEN */ - <RZT2H_PORT_PINMUX(34, 0, 0xf)>, /* ETH3_RXCLK */ - <RZT2H_PORT_PINMUX(34, 1, 0xf)>, /* ETH3_RXD0 */ - <RZT2H_PORT_PINMUX(34, 2, 0xf)>, /* ETH3_RXD1 */ - <RZT2H_PORT_PINMUX(34, 3, 0xf)>, /* ETH3_RXD2 */ - <RZT2H_PORT_PINMUX(34, 4, 0xf)>, /* ETH3_RXD3 */ - <RZT2H_PORT_PINMUX(34, 5, 0xf)>, /* ETH3_RXDV */ - <RZT2H_PORT_PINMUX(34, 7, 0xf)>, /* ETH3_TXER */ - <RZT2H_PORT_PINMUX(35, 0, 0xf)>, /* ETH3_RXER */ - <RZT2H_PORT_PINMUX(35, 1, 0xf)>, /* ETH3_CRS */ - <RZT2H_PORT_PINMUX(35, 2, 0xf)>, /* ETH3_COL */ - <RZT2H_PORT_PINMUX(26, 1, 0x10)>, /* GMAC1_MDC */ - <RZT2H_PORT_PINMUX(26, 2, 0x10)>, /* GMAC1_MDIO */ - <RZT2H_PORT_PINMUX(34, 6, 0x2)>, /* ETH3_REFCLK */ - <RZT2H_PORT_PINMUX(27, 2, 0x0)>; /* IRQ3 */ + gmac1_pins: gmac1-group { + irq-pins { + pinmux = <RZT2H_PORT_PINMUX(27, 2, 0x0)>; /* IRQ3 */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + md-pins { + pinmux = <RZT2H_PORT_PINMUX(26, 1, 0x10)>, /* GMAC1_MDC */ + <RZT2H_PORT_PINMUX(26, 2, 0x10)>; /* GMAC1_MDIO */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + refclk-pins { + pinmux = <RZT2H_PORT_PINMUX(34, 6, 0x2)>; /* ETH3_REFCLK */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + }; + + rx-pins { + pinmux = <RZT2H_PORT_PINMUX(34, 0, 0xf)>, /* ETH3_RXCLK */ + <RZT2H_PORT_PINMUX(34, 1, 0xf)>, /* ETH3_RXD0 */ + <RZT2H_PORT_PINMUX(34, 2, 0xf)>, /* ETH3_RXD1 */ + <RZT2H_PORT_PINMUX(34, 3, 0xf)>, /* ETH3_RXD2 */ + <RZT2H_PORT_PINMUX(34, 4, 0xf)>, /* ETH3_RXD3 */ + <RZT2H_PORT_PINMUX(34, 5, 0xf)>; /* ETH3_RXDV */ + input-schmitt-disable; + }; + + txclk-pins { + pinmux = <RZT2H_PORT_PINMUX(33, 2, 0xf)>; /* ETH3_TXCLK */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + input-schmitt-disable; + }; + + txd-en-pins { + pinmux = <RZT2H_PORT_PINMUX(33, 3, 0xf)>, /* ETH3_TXD0 */ + <RZT2H_PORT_PINMUX(33, 4, 0xf)>, /* ETH3_TXD1 */ + <RZT2H_PORT_PINMUX(33, 5, 0xf)>, /* ETH3_TXD2 */ + <RZT2H_PORT_PINMUX(33, 6, 0xf)>, /* ETH3_TXD3 */ + <RZT2H_PORT_PINMUX(33, 7, 0xf)>; /* ETH3_TXEN */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + }; }; /* * GMAC2 Pin Configuration: * * SW2[6] OFF - connect MDC/MDIO of Ethernet port 2 to GMAC2 - * SW2[7] ON - use pins P29_1-P29_7, P30_0-P30_4, and P31_2-P31_5 - * for Ethernet port 2 + * SW2[7] ON - use pins P29_1-P29_7 and P30_0-P30_4 for Ethernet port 2 */ - gmac2_pins: gmac2-pins { - pinmux = <RZT2H_PORT_PINMUX(29, 1, 0xf)>, /* ETH2_TXCLK */ - <RZT2H_PORT_PINMUX(29, 2, 0xf)>, /* ETH2_TXD0 */ - <RZT2H_PORT_PINMUX(29, 3, 0xf)>, /* ETH2_TXD1 */ - <RZT2H_PORT_PINMUX(29, 4, 0xf)>, /* ETH2_TXD2 */ - <RZT2H_PORT_PINMUX(29, 5, 0xf)>, /* ETH2_TXD3 */ - <RZT2H_PORT_PINMUX(29, 6, 0xf)>, /* ETH2_TXEN */ - <RZT2H_PORT_PINMUX(29, 7, 0xf)>, /* ETH2_RXCLK */ - <RZT2H_PORT_PINMUX(30, 0, 0xf)>, /* ETH2_RXD0 */ - <RZT2H_PORT_PINMUX(30, 1, 0xf)>, /* ETH2_RXD1 */ - <RZT2H_PORT_PINMUX(30, 2, 0xf)>, /* ETH2_RXD2 */ - <RZT2H_PORT_PINMUX(30, 3, 0xf)>, /* ETH2_RXD3 */ - <RZT2H_PORT_PINMUX(30, 4, 0xf)>, /* ETH2_RXDV */ - <RZT2H_PORT_PINMUX(31, 2, 0xf)>, /* ETH2_TXER */ - <RZT2H_PORT_PINMUX(31, 3, 0xf)>, /* ETH2_RXER */ - <RZT2H_PORT_PINMUX(31, 4, 0xf)>, /* ETH2_CRS */ - <RZT2H_PORT_PINMUX(31, 5, 0xf)>, /* ETH2_COL */ - <RZT2H_PORT_PINMUX(30, 5, 0x10)>, /* GMAC2_MDC */ - <RZT2H_PORT_PINMUX(30, 6, 0x10)>, /* GMAC2_MDIO */ - <RZT2H_PORT_PINMUX(31, 0, 0x2)>, /* ETH2_REFCLK */ - <RZT2H_PORT_PINMUX(31, 1, 0x0)>; /* IRQ13 */ + gmac2_pins: gmac2-group { + irq-pins { + pinmux = <RZT2H_PORT_PINMUX(31, 1, 0x0)>; /* IRQ13 */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + md-pins { + pinmux = <RZT2H_PORT_PINMUX(30, 5, 0x10)>, /* GMAC2_MDC */ + <RZT2H_PORT_PINMUX(30, 6, 0x10)>; /* GMAC2_MDIO */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + refclk-pins { + pinmux = <RZT2H_PORT_PINMUX(31, 0, 0x2)>; /* ETH2_REFCLK */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + }; + + rx-pins { + pinmux = <RZT2H_PORT_PINMUX(29, 7, 0xf)>, /* ETH2_RXCLK */ + <RZT2H_PORT_PINMUX(30, 0, 0xf)>, /* ETH2_RXD0 */ + <RZT2H_PORT_PINMUX(30, 1, 0xf)>, /* ETH2_RXD1 */ + <RZT2H_PORT_PINMUX(30, 2, 0xf)>, /* ETH2_RXD2 */ + <RZT2H_PORT_PINMUX(30, 3, 0xf)>, /* ETH2_RXD3 */ + <RZT2H_PORT_PINMUX(30, 4, 0xf)>; /* ETH2_RXDV */ + input-schmitt-disable; + }; + + txclk-pins { + pinmux = <RZT2H_PORT_PINMUX(29, 1, 0xf)>; /* ETH2_TXCLK */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + input-schmitt-disable; + }; + + txd-en-pins { + pinmux = <RZT2H_PORT_PINMUX(29, 2, 0xf)>, /* ETH2_TXD0 */ + <RZT2H_PORT_PINMUX(29, 3, 0xf)>, /* ETH2_TXD1 */ + <RZT2H_PORT_PINMUX(29, 4, 0xf)>, /* ETH2_TXD2 */ + <RZT2H_PORT_PINMUX(29, 5, 0xf)>, /* ETH2_TXD3 */ + <RZT2H_PORT_PINMUX(29, 6, 0xf)>; /* ETH2_TXEN */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + }; }; /* diff --git a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts index ef6cc7497c2c..4e57d4fe195c 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts @@ -339,63 +339,113 @@ /* * GMAC1 Pin Configuration: * - * DSW5[8] ON - use pins P00_0-P00_2, P33_2-P33_7, P34_0-P34_6 - * for Ethernet port 3 - * DSW12[1] OFF; DSW12[2] ON - use pin P00_3 for Ethernet port 3 + * DSW5[8] ON - use pins P33_2-P33_7 and P34_0-P34_6 for Ethernet port 3 */ - gmac1_pins: gmac1-pins { - pinmux = <RZT2H_PORT_PINMUX(33, 2, 0xf)>, /* ETH3_TXCLK */ - <RZT2H_PORT_PINMUX(33, 3, 0xf)>, /* ETH3_TXD0 */ - <RZT2H_PORT_PINMUX(33, 4, 0xf)>, /* ETH3_TXD0 */ - <RZT2H_PORT_PINMUX(33, 5, 0xf)>, /* ETH3_TXD2 */ - <RZT2H_PORT_PINMUX(33, 6, 0xf)>, /* ETH3_TXD3 */ - <RZT2H_PORT_PINMUX(33, 7, 0xf)>, /* ETH3_TXEN */ - <RZT2H_PORT_PINMUX(34, 0, 0xf)>, /* ETH3_RXCLK */ - <RZT2H_PORT_PINMUX(34, 1, 0xf)>, /* ETH3_RXD0 */ - <RZT2H_PORT_PINMUX(34, 2, 0xf)>, /* ETH3_RXD1 */ - <RZT2H_PORT_PINMUX(34, 3, 0xf)>, /* ETH3_RXD2 */ - <RZT2H_PORT_PINMUX(34, 4, 0xf)>, /* ETH3_RXD3 */ - <RZT2H_PORT_PINMUX(34, 5, 0xf)>, /* ETH3_RXDV */ - <RZT2H_PORT_PINMUX(0, 0, 0xf)>, /* ETH3_TXER */ - <RZT2H_PORT_PINMUX(0, 1, 0xf)>, /* ETH3_RXER */ - <RZT2H_PORT_PINMUX(0, 2, 0xf)>, /* ETH3_CRS */ - <RZT2H_PORT_PINMUX(0, 3, 0xf)>, /* ETH3_COL */ - <RZT2H_PORT_PINMUX(26, 1, 0x10)>, /* GMAC1_MDC */ - <RZT2H_PORT_PINMUX(26, 2, 0x10)>, /* GMAC1_MDIO */ - <RZT2H_PORT_PINMUX(34, 6, 0x2)>, /* ETH3_REFCLK */ - <RZT2H_PORT_PINMUX(17, 3, 0x0)>; /* IRQ15 */ + gmac1_pins: gmac1-group { + irq-pins { + pinmux = <RZT2H_PORT_PINMUX(17, 3, 0x0)>; /* IRQ15 */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + md-pins { + pinmux = <RZT2H_PORT_PINMUX(26, 1, 0x10)>, /* GMAC1_MDC */ + <RZT2H_PORT_PINMUX(26, 2, 0x10)>; /* GMAC1_MDIO */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + refclk-pins { + pinmux = <RZT2H_PORT_PINMUX(34, 6, 0x2)>; /* ETH3_REFCLK */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + }; + + rx-pins { + pinmux = <RZT2H_PORT_PINMUX(34, 0, 0xf)>, /* ETH3_RXCLK */ + <RZT2H_PORT_PINMUX(34, 1, 0xf)>, /* ETH3_RXD0 */ + <RZT2H_PORT_PINMUX(34, 2, 0xf)>, /* ETH3_RXD1 */ + <RZT2H_PORT_PINMUX(34, 3, 0xf)>, /* ETH3_RXD2 */ + <RZT2H_PORT_PINMUX(34, 4, 0xf)>, /* ETH3_RXD3 */ + <RZT2H_PORT_PINMUX(34, 5, 0xf)>; /* ETH3_RXDV */ + input-schmitt-disable; + }; + + txclk-pins { + pinmux = <RZT2H_PORT_PINMUX(33, 2, 0xf)>; /* ETH3_TXCLK */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + input-schmitt-disable; + }; + + txd-en-pins { + pinmux = <RZT2H_PORT_PINMUX(33, 3, 0xf)>, /* ETH3_TXD0 */ + <RZT2H_PORT_PINMUX(33, 4, 0xf)>, /* ETH3_TXD1 */ + <RZT2H_PORT_PINMUX(33, 5, 0xf)>, /* ETH3_TXD2 */ + <RZT2H_PORT_PINMUX(33, 6, 0xf)>, /* ETH3_TXD3 */ + <RZT2H_PORT_PINMUX(33, 7, 0xf)>; /* ETH3_TXEN */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + }; }; /* * GMAC2 Pin Configuration: * * DSW5[6] OFF - connect MDC/MDIO of Ethernet port 2 to GMAC2 - * DSW5[7] ON - use pins P29_1-P29_7, P30_0-P30_4, P30_7, - * P31_2, P31_4 and P31_5 are used for Ethernet port 2 + * DSW5[7] ON - use pins P29_1-P29_7 and P30_0-P30_4 for Ethernet port 2 * DSW13[7] OFF; DSW13[8] ON - use pin P13_7 for IRQ14 */ - gmac2_pins: gmac2-pins { - pinmux = <RZT2H_PORT_PINMUX(29, 1, 0xf)>, /* ETH2_TXCLK */ - <RZT2H_PORT_PINMUX(29, 2, 0xf)>, /* ETH2_TXD0 */ - <RZT2H_PORT_PINMUX(29, 3, 0xf)>, /* ETH2_TXD1 */ - <RZT2H_PORT_PINMUX(29, 4, 0xf)>, /* ETH2_TXD2 */ - <RZT2H_PORT_PINMUX(29, 5, 0xf)>, /* ETH2_TXD3 */ - <RZT2H_PORT_PINMUX(29, 6, 0xf)>, /* ETH2_TXEN */ - <RZT2H_PORT_PINMUX(29, 7, 0xf)>, /* ETH2_RXCLK */ - <RZT2H_PORT_PINMUX(30, 0, 0xf)>, /* ETH2_RXD0 */ - <RZT2H_PORT_PINMUX(30, 1, 0xf)>, /* ETH2_RXD1 */ - <RZT2H_PORT_PINMUX(30, 2, 0xf)>, /* ETH2_RXD2 */ - <RZT2H_PORT_PINMUX(30, 3, 0xf)>, /* ETH2_RXD3 */ - <RZT2H_PORT_PINMUX(30, 4, 0xf)>, /* ETH2_RXDV */ - <RZT2H_PORT_PINMUX(31, 2, 0xf)>, /* ETH2_TXER */ - <RZT2H_PORT_PINMUX(31, 1, 0xf)>, /* ETH2_RXER */ - <RZT2H_PORT_PINMUX(31, 4, 0xf)>, /* ETH2_CRS */ - <RZT2H_PORT_PINMUX(31, 5, 0xf)>, /* ETH2_COL */ - <RZT2H_PORT_PINMUX(30, 5, 0x10)>, /* GMAC2_MDC */ - <RZT2H_PORT_PINMUX(30, 6, 0x10)>, /* GMAC2_MDIO */ - <RZT2H_PORT_PINMUX(31, 0, 0x2)>, /* ETH2_REFCLK */ - <RZT2H_PORT_PINMUX(13, 7, 0x0)>; /* IRQ14 */ + gmac2_pins: gmac2-group { + irq-pins { + pinmux = <RZT2H_PORT_PINMUX(13, 7, 0x0)>; /* IRQ14 */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + md-pins { + pinmux = <RZT2H_PORT_PINMUX(30, 5, 0x10)>, /* GMAC2_MDC */ + <RZT2H_PORT_PINMUX(30, 6, 0x10)>; /* GMAC2_MDIO */ + drive-strength-microamp = <5000>; + slew-rate = <0>; + input-schmitt-disable; + }; + + refclk-pins { + pinmux = <RZT2H_PORT_PINMUX(31, 0, 0x2)>; /* ETH2_REFCLK */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + }; + rx-pins { + pinmux = <RZT2H_PORT_PINMUX(29, 7, 0xf)>, /* ETH2_RXCLK */ + <RZT2H_PORT_PINMUX(30, 0, 0xf)>, /* ETH2_RXD0 */ + <RZT2H_PORT_PINMUX(30, 1, 0xf)>, /* ETH2_RXD1 */ + <RZT2H_PORT_PINMUX(30, 2, 0xf)>, /* ETH2_RXD2 */ + <RZT2H_PORT_PINMUX(30, 3, 0xf)>, /* ETH2_RXD3 */ + <RZT2H_PORT_PINMUX(30, 4, 0xf)>; /* ETH2_RXDV */ + input-schmitt-disable; + }; + + txclk-pins { + pinmux = <RZT2H_PORT_PINMUX(29, 1, 0xf)>; /* ETH2_TXCLK */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + input-schmitt-disable; + }; + + txd-en-pins { + pinmux = <RZT2H_PORT_PINMUX(29, 2, 0xf)>, /* ETH2_TXD0 */ + <RZT2H_PORT_PINMUX(29, 3, 0xf)>, /* ETH2_TXD1 */ + <RZT2H_PORT_PINMUX(29, 4, 0xf)>, /* ETH2_TXD2 */ + <RZT2H_PORT_PINMUX(29, 5, 0xf)>, /* ETH2_TXD3 */ + <RZT2H_PORT_PINMUX(29, 6, 0xf)>; /* ETH2_TXEN */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + }; }; /* diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi index 2e1d9686df88..0e6dc84e0199 100644 --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi @@ -32,6 +32,7 @@ aliases { ethernet0 = ð0; ethernet1 = ð1; + i2c1 = &i2c1; i2c2 = &i2c2; mmc0 = &sdhi0; mmc2 = &sdhi2; @@ -77,6 +78,12 @@ regulator-always-on; }; + x2: x2-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + /* 32.768kHz crystal */ x3: x3-clock { compatible = "fixed-clock"; @@ -112,6 +119,12 @@ mali-supply = <®_vdd0p8v_others>; }; +&i2c1 { + pinctrl-0 = <&i2c1_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + &i2c2 { pinctrl-0 = <&i2c2_pins>; pinctrl-names = "default"; @@ -130,6 +143,20 @@ interrupts-extended = <&pinctrl RZG3E_GPIO(S, 1) IRQ_TYPE_EDGE_FALLING>; }; + + versa3: clock-generator@68 { + compatible = "renesas,5p35023"; + reg = <0x68>; + #clock-cells = <1>; + clocks = <&x2>; + + assigned-clocks = <&versa3 0>, <&versa3 1>, + <&versa3 2>, <&versa3 3>, + <&versa3 4>; + assigned-clock-rates = <24000000>, <12288000>, + <11289600>, <12288000>, + <25000000>; + }; }; &i3c { @@ -234,6 +261,11 @@ }; }; + i2c1_pins: i2c1 { + pinmux = <RZG3E_PORT_PINMUX(3, 2, 1)>, /* SCL1 */ + <RZG3E_PORT_PINMUX(3, 3, 1)>; /* SDA1 */ + }; + i2c2_pins: i2c { pinmux = <RZG3E_PORT_PINMUX(3, 4, 1)>, /* SCL2 */ <RZG3E_PORT_PINMUX(3, 5, 1)>; /* SDA2 */ @@ -320,6 +352,18 @@ }; }; + sound_clk_pins: sound-clk { + pinmux = <RZG3E_PORT_PINMUX(4, 2, 8)>, /* AUDIO_CLKB */ + <RZG3E_PORT_PINMUX(4, 3, 8)>; /* AUDIO_CLKC */ + }; + + sound_pins: sound { + pinmux = <RZG3E_PORT_PINMUX(0, 2, 9)>, /* SSI3_SDATA */ + <RZG3E_PORT_PINMUX(0, 3, 9)>, /* SSI3_SCK */ + <RZG3E_PORT_PINMUX(0, 4, 9)>, /* SSI3_WS */ + <RZG3E_PORT_PINMUX(0, 5, 9)>; /* SSI4_SDATA */ + }; + xspi_pins: xspi0 { pinmux = <RZG3E_PORT_PINMUX(M, 0, 0)>, /* XSPI0_IO0 */ <RZG3E_PORT_PINMUX(M, 1, 0)>, /* XSPI0_IO1 */ diff --git a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi index e86e6d3aa8a3..ffcc0960903b 100644 --- a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi +++ b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi @@ -29,6 +29,17 @@ stdout-path = "serial0:115200n8"; }; + memory@c8000000 { + device_type = "memory"; + /* first 128MiB is reserved for secure area. */ + reg = <0x0 0xc8000000 0x0 0x38000000>; + }; + + memory@240000000 { + device_type = "memory"; + reg = <0x2 0x40000000 0x1 0xc0000000>; + }; + reg_1p8v: regulator-1p8v { compatible = "regulator-fixed"; regulator-name = "fixed-1.8V"; @@ -257,6 +268,9 @@ sci0_pins: sci0-pins { pinmux = <RZT2H_PORT_PINMUX(27, 4, 0x14)>, <RZT2H_PORT_PINMUX(27, 5, 0x14)>; + drive-strength-microamp = <9000>; + slew-rate = <1>; + input-schmitt-disable; }; #if SD0_EMMC diff --git a/arch/riscv/boot/dts/canaan/Makefile b/arch/riscv/boot/dts/canaan/Makefile index 987d1f0c41f0..7d54ea5c6f3d 100644 --- a/arch/riscv/boot/dts/canaan/Makefile +++ b/arch/riscv/boot/dts/canaan/Makefile @@ -1,6 +1,8 @@ # SPDX-License-Identifier: GPL-2.0 dtb-$(CONFIG_ARCH_CANAAN) += canaan_kd233.dtb dtb-$(CONFIG_ARCH_CANAAN) += k210_generic.dtb +dtb-$(CONFIG_ARCH_CANAAN) += k230-canmv.dtb +dtb-$(CONFIG_ARCH_CANAAN) += k230-evb.dtb dtb-$(CONFIG_ARCH_CANAAN) += sipeed_maix_bit.dtb dtb-$(CONFIG_ARCH_CANAAN) += sipeed_maix_dock.dtb dtb-$(CONFIG_ARCH_CANAAN) += sipeed_maix_go.dtb diff --git a/arch/riscv/boot/dts/canaan/k230-canmv.dts b/arch/riscv/boot/dts/canaan/k230-canmv.dts new file mode 100644 index 000000000000..2ba555f6de13 --- /dev/null +++ b/arch/riscv/boot/dts/canaan/k230-canmv.dts @@ -0,0 +1,343 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name> + */ + +#include "k230.dtsi" + +/ { + model = "Canaan CanMV-K230"; + compatible = "canaan,canmv-k230", "canaan,kendryte-k230"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + ddr: memory@0 { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x20000000>; + }; + + timerx_pulse_in: clock-50000000 { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; +}; + +&uart0 { + status = "okay"; +}; + +&pinctrl { + jtag_pins: jtag-pins { + jtag-tck-cfg { + pinmux = <K230_PINMUX(2, 1)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + input-enable; + bias-pull-down; + input-schmitt-enable; + }; + + jtag-tdi-cfg { + pinmux = <K230_PINMUX(3, 1)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + input-enable; + bias-disable; + }; + + jtag-tdo-cfg { + pinmux = <K230_PINMUX(4, 1)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + output-enable; + bias-disable; + }; + + jtag-tms-cfg { + pinmux = <K230_PINMUX(5, 1)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + input-enable; + bias-pull-up; + }; + }; + + uart2_pins: uart2-pins { + uart2-pins-cfg { + pinmux = <K230_PINMUX(5, 3)>, /* uart2 txd */ + <K230_PINMUX(6, 3)>; /* uart2 rxd */ + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-disable; + }; + }; + + pwm2_pins: pwm2-pins { + pwm2-pin-cfg { + pinmux = <K230_PINMUX(7, 1)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-disable; + input-schmitt-enable; + }; + }; + + pwm3_pins: pwm3-pins { + pwm3-pin-cfg { + pinmux = <K230_PINMUX(8, 1)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-disable; + input-schmitt-enable; + }; + }; + + pwm4_pins: pwm4-pins { + pwm4-pin-cfg { + pinmux = <K230_PINMUX(9, 1)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-disable; + input-schmitt-enable; + }; + }; + + iis_pins: iis-pins { + iis-clk-cfg { + pinmux = <K230_PINMUX(32, 2)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + output-enable; + bias-disable; + }; + + iis-ws-cfg { + pinmux = <K230_PINMUX(33, 2)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + output-enable; + bias-disable; + }; + + iis-din0-cfg { + pinmux = <K230_PINMUX(34, 2)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + input-enable; + bias-disable; + }; + + iis-dout0-cfg { + pinmux = <K230_PINMUX(35, 2)>; + slew-rate = <0>; + drive-strength = <4>; + power-source = <K230_MSC_1V8>; + output-enable; + bias-disable; + }; + }; + + uart4_pins: uart4-pins { + uart4-txd-cfg { + pinmux = <K230_PINMUX(36, 4)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + output-enable; + bias-disable; + input-schmitt-enable; + }; + + uart4-rxd-cfg { + pinmux = <K230_PINMUX(37, 4)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + bias-disable; + input-schmitt-enable; + }; + }; + + uart0_pins: uart0-pins { + uart0-txd-cfg { + pinmux = <K230_PINMUX(38, 1)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + output-enable; + bias-disable; + input-schmitt-enable; + }; + + uart0-rxd-cfg { + pinmux = <K230_PINMUX(39, 1)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + bias-disable; + input-schmitt-enable; + }; + }; + + iic1_pins: iic1-pins { + iic1-pins-cfg { + pinmux = <K230_PINMUX(40, 2)>, /* iic1 scl */ + <K230_PINMUX(41, 2)>; /* iic1 sda */ + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-pull-up; + input-schmitt-enable; + }; + }; + + iic3_pins: iic3-pins { + iic3-pins-cfg { + pinmux = <K230_PINMUX(44, 2)>, /* iic3 scl */ + <K230_PINMUX(45, 2)>; /* iic3 sda */ + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-pull-up; + input-schmitt-enable; + }; + }; + + iic4_pins: iic4-pins { + iic4-pins-cfg { + pinmux = <K230_PINMUX(46, 3)>, /* iic4 scl */ + <K230_PINMUX(47, 3)>; /* iic4 sda */ + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-pull-up; + input-schmitt-enable; + }; + }; + + iic0_pins: iic0-pins { + iic0-pins-cfg { + pinmux = <K230_PINMUX(48, 3)>, /* iic0 scl */ + <K230_PINMUX(49, 3)>; /* iic0 sda */ + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_1V8>; + input-enable; + output-enable; + bias-pull-up; + input-schmitt-enable; + }; + }; + + uart3_pins: uart3-pins { + uart3-txd-cfg { + pinmux = <K230_PINMUX(50, 1)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_3V3>; + output-enable; + bias-disable; + input-schmitt-enable; + }; + + uart3-rxd-cfg { + pinmux = <K230_PINMUX(51, 1)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_3V3>; + input-enable; + bias-disable; + input-schmitt-enable; + }; + }; + + key_pins: key-pins { + key-pins-cfg { + pinmux = <K230_PINMUX(52, 0)>, /* key0 */ + <K230_PINMUX(53, 0)>; /* key1 */ + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_3V3>; + input-enable; + output-enable; + bias-disable; + input-schmitt-enable; + }; + }; + + mmc1_pins: mmc1-pins { + mmc1-cmd-cfg { + pinmux = <K230_PINMUX(54, 2)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_3V3>; + input-enable; + output-enable; + bias-pull-up; + input-schmitt-enable; + }; + + mmc1-clk-cfg { + pinmux = <K230_PINMUX(55, 2)>; + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_3V3>; + output-enable; + bias-disable; + input-schmitt-enable; + }; + + mmc1-data-cfg { + pinmux = <K230_PINMUX(56, 2)>, /* mmc1 data0 */ + <K230_PINMUX(57, 2)>, /* mmc1 data1 */ + <K230_PINMUX(58, 2)>, /* mmc1 data2 */ + <K230_PINMUX(59, 2)>; /* mmc1 data3 */ + slew-rate = <0>; + drive-strength = <7>; + power-source = <K230_MSC_3V3>; + input-enable; + output-enable; + bias-pull-up; + input-schmitt-enable; + }; + }; +}; + +&sysclk { + clocks = <&osc24m>, <&timerx_pulse_in>; + clock-names = "osc24m", "timer-pulse-in"; +}; diff --git a/arch/riscv/boot/dts/canaan/k230-evb.dts b/arch/riscv/boot/dts/canaan/k230-evb.dts new file mode 100644 index 000000000000..4246e4bba6cc --- /dev/null +++ b/arch/riscv/boot/dts/canaan/k230-evb.dts @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name> + */ + +#include "k230.dtsi" + +/ { + model = "Kendryte K230 EVB"; + compatible = "canaan,k230-usip-lp3-evb", "canaan,kendryte-k230"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + ddr: memory@0 { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x20000000>; + }; + + timerx_pulse_in: clock-50000000 { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; +}; + +&uart0 { + status = "okay"; +}; + +&sysclk { + clocks = <&osc24m>, <&timerx_pulse_in>; + clock-names = "osc24m", "timer-pulse-in"; +}; diff --git a/arch/riscv/boot/dts/canaan/k230-pinctrl.h b/arch/riscv/boot/dts/canaan/k230-pinctrl.h new file mode 100644 index 000000000000..63dd999ca55b --- /dev/null +++ b/arch/riscv/boot/dts/canaan/k230-pinctrl.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */ +/* + * Copyright (C) 2024 Canaan Bright Sight Co. Ltd + * Copyright (C) 2024 Ze Huang <18771902331@163.com> + */ + +#ifndef _K230_PINCTRL_H +#define _K230_PINCTRL_H + +#define K230_MSC_3V3 0 +#define K230_MSC_1V8 1 + +#define BANK_VOLTAGE_DEFAULT K230_MSC_1V8 +#define BANK_VOLTAGE_IO50_IO61 K230_MSC_3V3 + +#define K230_PINMUX(pin, mode) (((pin) << 8) | (mode)) + +#endif /* _K230_PINCTRL_H */ diff --git a/arch/riscv/boot/dts/canaan/k230.dtsi b/arch/riscv/boot/dts/canaan/k230.dtsi new file mode 100644 index 000000000000..6dcb628a960b --- /dev/null +++ b/arch/riscv/boot/dts/canaan/k230.dtsi @@ -0,0 +1,167 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name> + */ + +#include <dt-bindings/clock/canaan,k230-clk.h> +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/reset/canaan,k230-rst.h> +#include "k230-pinctrl.h" + +/dts-v1/; +/ { + #address-cells = <2>; + #size-cells = <2>; + compatible = "canaan,kendryte-k230"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + timebase-frequency = <27000000>; + + cpu@0 { + compatible = "thead,c908", "riscv"; + device_type = "cpu"; + reg = <0>; + riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicsr_zifencei_zihpm_zfh_zba_zbb_zbc_zbs_zvfh_svpbmt"; + riscv,isa-base = "rv64i"; + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicsr", "zifencei", + "zihpm", "zfh", "zba", "zbb", "zbc", "zbs", "zvfh", + "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + d-cache-block-size = <64>; + d-cache-sets = <128>; + d-cache-size = <32768>; + i-cache-block-size = <64>; + i-cache-sets = <128>; + i-cache-size = <32768>; + next-level-cache = <&l2_cache>; + mmu-type = "riscv,sv39"; + + cpu0_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + l2_cache: l2-cache { + compatible = "cache"; + cache-block-size = <64>; + cache-level = <2>; + cache-size = <262144>; + cache-sets = <256>; + cache-unified; + }; + }; + + osc24m: clock-24000000 { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + clock-output-names = "osc24m"; + }; + + soc { + compatible = "simple-bus"; + interrupt-parent = <&plic>; + #address-cells = <2>; + #size-cells = <2>; + dma-noncoherent; + ranges; + + plic: interrupt-controller@f00000000 { + compatible = "canaan,k230-plic", "thead,c900-plic"; + reg = <0xf 0x00000000 0x0 0x04000000>; + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>; + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <2>; + riscv,ndev = <208>; + }; + + clint: timer@f04000000 { + compatible = "canaan,k230-clint", "thead,c900-clint"; + reg = <0xf 0x04000000 0x0 0x00010000>; + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>; + }; + + rst: reset-controller@91101000 { + compatible = "canaan,k230-rst"; + reg = <0x0 0x91101000 0x0 0x1000>; + #reset-cells = <1>; + }; + + pinctrl: pinctrl@91105000 { + compatible = "canaan,k230-pinctrl"; + reg = <0x0 0x91105000 0x0 0x100>; + }; + + sysclk: clock-controller@91102000 { + compatible = "canaan,k230-clk"; + reg = <0x0 0x91102000 0x0 0x40>, + <0x0 0x91100000 0x0 0x108>; + clocks = <&osc24m>; + clock-names = "osc24m"; + #clock-cells = <1>; + }; + + uart0: serial@91400000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x91400000 0x0 0x1000>; + clocks = <&sysclk K230_LS_UART0_RATE>; + interrupts = <16 IRQ_TYPE_LEVEL_HIGH>; + reg-io-width = <4>; + reg-shift = <2>; + resets = <&rst RST_UART0>; + status = "disabled"; + }; + + uart1: serial@91401000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x91401000 0x0 0x1000>; + clocks = <&sysclk K230_LS_UART1_RATE>; + interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; + reg-io-width = <4>; + reg-shift = <2>; + resets = <&rst RST_UART1>; + status = "disabled"; + }; + + uart2: serial@91402000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x91402000 0x0 0x1000>; + clocks = <&sysclk K230_LS_UART2_RATE>; + interrupts = <18 IRQ_TYPE_LEVEL_HIGH>; + reg-io-width = <4>; + reg-shift = <2>; + resets = <&rst RST_UART2>; + status = "disabled"; + }; + + uart3: serial@91403000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x91403000 0x0 0x1000>; + clocks = <&sysclk K230_LS_UART3_RATE>; + interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; + reg-io-width = <4>; + reg-shift = <2>; + resets = <&rst RST_UART3>; + status = "disabled"; + }; + + uart4: serial@91404000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x91404000 0x0 0x1000>; + clocks = <&sysclk K230_LS_UART4_RATE>; + interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; + reg-io-width = <4>; + reg-shift = <2>; + resets = <&rst RST_UART4>; + status = "disabled"; + }; + }; +}; diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig index ed605b5e3162..04ae305d5511 100644 --- a/arch/riscv/configs/defconfig +++ b/arch/riscv/configs/defconfig @@ -175,6 +175,8 @@ CONFIG_PINCTRL_SOPHGO_SG2002=y CONFIG_GPIO_DWAPB=y CONFIG_GPIO_SIFIVE=y CONFIG_GPIO_SPACEMIT_K1=y +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCA953X_IRQ=y CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_SENSORS_SFCTEMP=m CONFIG_CPU_THERMAL=y diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c index 793be9eabaed..e060edbe7e83 100644 --- a/drivers/firmware/arm_scmi/bus.c +++ b/drivers/firmware/arm_scmi/bus.c @@ -7,7 +7,6 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -#include <linux/atomic.h> #include <linux/types.h> #include <linux/module.h> #include <linux/of.h> @@ -33,8 +32,8 @@ struct scmi_requested_dev { struct list_head node; }; -/* Track globally the creation of SCMI SystemPower related devices */ -static atomic_t scmi_syspower_registered = ATOMIC_INIT(0); +/* Track globally the SCMI SystemPower protocol device. */ +static struct scmi_device *scmi_syspower_registered; /** * scmi_protocol_device_request - Helper to request a device @@ -136,17 +135,6 @@ out: return ret; } -static int scmi_protocol_table_register(const struct scmi_device_id *id_table) -{ - int ret = 0; - const struct scmi_device_id *entry; - - for (entry = id_table; entry->name && ret == 0; entry++) - ret = scmi_protocol_device_request(entry); - - return ret; -} - /** * scmi_protocol_device_unrequest - Helper to unrequest a device * @@ -159,6 +147,7 @@ static int scmi_protocol_table_register(const struct scmi_device_id *id_table) */ static void scmi_protocol_device_unrequest(const struct scmi_device_id *id_table) { + struct scmi_requested_dev *rdev, *victim = NULL; struct list_head *phead; pr_debug("Unrequesting SCMI device (%s) for protocol %x\n", @@ -167,29 +156,48 @@ static void scmi_protocol_device_unrequest(const struct scmi_device_id *id_table mutex_lock(&scmi_requested_devices_mtx); phead = idr_find(&scmi_requested_devices, id_table->protocol_id); if (phead) { - struct scmi_requested_dev *victim, *tmp; - - list_for_each_entry_safe(victim, tmp, phead, node) { - if (!strcmp(victim->id_table->name, id_table->name)) { - list_del(&victim->node); - - mutex_unlock(&scmi_requested_devices_mtx); - blocking_notifier_call_chain(&scmi_requested_devices_nh, - SCMI_BUS_NOTIFY_DEVICE_UNREQUEST, - (void *)victim->id_table); - kfree(victim); - mutex_lock(&scmi_requested_devices_mtx); + list_for_each_entry(rdev, phead, node) { + if (!strcmp(rdev->id_table->name, id_table->name)) { + victim = rdev; + list_del(&rdev->node); break; } } - if (list_empty(phead)) { + if (victim && list_empty(phead)) { idr_remove(&scmi_requested_devices, id_table->protocol_id); kfree(phead); } } mutex_unlock(&scmi_requested_devices_mtx); + + if (victim) { + blocking_notifier_call_chain(&scmi_requested_devices_nh, + SCMI_BUS_NOTIFY_DEVICE_UNREQUEST, + (void *)victim->id_table); + kfree(victim); + } +} + +static int scmi_protocol_table_register(const struct scmi_device_id *id_table) +{ + const struct scmi_device_id *entry; + int ret; + + for (entry = id_table; entry->name; entry++) { + ret = scmi_protocol_device_request(entry); + if (ret) + goto err_unrequest; + } + + return 0; + +err_unrequest: + while (entry != id_table) + scmi_protocol_device_unrequest(--entry); + + return ret; } static void @@ -201,21 +209,33 @@ scmi_protocol_table_unregister(const struct scmi_device_id *id_table) scmi_protocol_device_unrequest(entry); } -static int scmi_dev_match_by_id_table(struct scmi_device *scmi_dev, - const struct scmi_device_id *id_table) +static bool scmi_device_is_transport(const struct scmi_device *scmi_dev) +{ + return !strncmp(scmi_dev->name, SCMI_TRANSPORT_DEVNAME_PREFIX, + strlen(SCMI_TRANSPORT_DEVNAME_PREFIX)); +} + +static int __scmi_dev_match_by_id_table(struct scmi_device *scmi_dev, + const struct scmi_device_id *id_table, + bool skip_transport) { if (!id_table || !id_table->name) return 0; - /* Always skip transport devices from matching */ for (; id_table->protocol_id && id_table->name; id_table++) if (id_table->protocol_id == scmi_dev->protocol_id && - strncmp(scmi_dev->name, "__scmi_transport_device", 23) && + !(skip_transport && scmi_device_is_transport(scmi_dev)) && !strcmp(id_table->name, scmi_dev->name)) return 1; return 0; } +static int scmi_dev_match_by_id_table(struct scmi_device *scmi_dev, + const struct scmi_device_id *id_table) +{ + return __scmi_dev_match_by_id_table(scmi_dev, id_table, true); +} + static int scmi_dev_match_id(struct scmi_device *scmi_dev, const struct scmi_driver *scmi_drv) { @@ -235,11 +255,12 @@ static int scmi_match_by_id_table(struct device *dev, const void *data) struct scmi_device *scmi_dev = to_scmi_dev(dev); const struct scmi_device_id *id_table = data; - return scmi_dev_match_by_id_table(scmi_dev, id_table); + return __scmi_dev_match_by_id_table(scmi_dev, id_table, false); } -static struct scmi_device *scmi_child_dev_find(struct device *parent, - int prot_id, const char *name) +/* Returns a device_find_child() reference which must be dropped by caller. */ +static struct scmi_device * +scmi_child_dev_find_get(struct device *parent, int prot_id, const char *name) { struct scmi_device_id id_table[2] = { 0 }; struct device *dev; @@ -251,9 +272,6 @@ static struct scmi_device *scmi_child_dev_find(struct device *parent, if (!dev) return NULL; - /* Drop the refcnt bumped implicitly by device_find_child */ - put_device(dev); - return to_scmi_dev(dev); } @@ -377,10 +395,14 @@ int scmi_driver_register(struct scmi_driver *driver, struct module *owner, driver->driver.mod_name = mod_name; retval = driver_register(&driver->driver); - if (!retval) - pr_debug("Registered new scmi driver %s\n", driver->name); + if (retval) { + scmi_protocol_table_unregister(driver->id_table); + return retval; + } - return retval; + pr_debug("Registered new scmi driver %s\n", driver->name); + + return 0; } EXPORT_SYMBOL_GPL(scmi_driver_register); @@ -391,10 +413,23 @@ void scmi_driver_unregister(struct scmi_driver *driver) } EXPORT_SYMBOL_GPL(scmi_driver_unregister); +static void scmi_device_release_resources(struct scmi_device *scmi_dev) +{ + if (scmi_dev->protocol_id == SCMI_PROTOCOL_SYSTEM) + cmpxchg(&scmi_syspower_registered, scmi_dev, NULL); + + if (scmi_dev->id) { + ida_free(&scmi_bus_id, scmi_dev->id); + scmi_dev->id = 0; + } +} + static void scmi_device_release(struct device *dev) { struct scmi_device *scmi_dev = to_scmi_dev(dev); + scmi_device_release_resources(scmi_dev); + of_node_put(dev->of_node); kfree_const(scmi_dev->name); kfree(scmi_dev); } @@ -406,11 +441,9 @@ static void __scmi_device_destroy(struct scmi_device *scmi_dev) dev_name(&scmi_dev->dev), scmi_dev->protocol_id, scmi_dev->name); - if (scmi_dev->protocol_id == SCMI_PROTOCOL_SYSTEM) - atomic_set(&scmi_syspower_registered, 0); - - ida_free(&scmi_bus_id, scmi_dev->id); - device_unregister(&scmi_dev->dev); + device_del(&scmi_dev->dev); + scmi_device_release_resources(scmi_dev); + put_device(&scmi_dev->dev); } static struct scmi_device * @@ -419,6 +452,7 @@ __scmi_device_create(struct device_node *np, struct device *parent, { int id, retval; struct scmi_device *scmi_dev; + bool syspower = (protocol == SCMI_PROTOCOL_SYSTEM); /* * If the same protocol/name device already exist under the same parent @@ -427,45 +461,41 @@ __scmi_device_create(struct device_node *np, struct device *parent, * each DT defined protocol at probe time, and the concurrent * registration of SCMI drivers. */ - scmi_dev = scmi_child_dev_find(parent, protocol, name); - if (scmi_dev) + scmi_dev = scmi_child_dev_find_get(parent, protocol, name); + if (scmi_dev) { + put_device(&scmi_dev->dev); return scmi_dev; - - /* - * Ignore any possible subsequent failures while creating the device - * since we are doomed anyway at that point; not using a mutex which - * spans across this whole function to keep things simple and to avoid - * to serialize all the __scmi_device_create calls across possibly - * different SCMI server instances (parent) - */ - if (protocol == SCMI_PROTOCOL_SYSTEM && - atomic_cmpxchg(&scmi_syspower_registered, 0, 1)) { - dev_warn(parent, - "SCMI SystemPower protocol device must be unique !\n"); - return NULL; } scmi_dev = kzalloc_obj(*scmi_dev); if (!scmi_dev) return NULL; - scmi_dev->name = kstrdup_const(name ?: "unknown", GFP_KERNEL); - if (!scmi_dev->name) { + scmi_dev->protocol_id = protocol; + + /* + * Reserve the singleton SystemPower protocol device using the device + * pointer itself, so delayed release of an older device cannot clear + * a reservation owned by a newer device. + */ + if (syspower && cmpxchg(&scmi_syspower_registered, NULL, scmi_dev)) { + dev_warn(parent, + "SCMI SystemPower protocol device must be unique !\n"); kfree(scmi_dev); return NULL; } + scmi_dev->name = kstrdup_const(name ?: "unknown", GFP_KERNEL); + if (!scmi_dev->name) + goto free_dev; + id = ida_alloc_min(&scmi_bus_id, 1, GFP_KERNEL); - if (id < 0) { - kfree_const(scmi_dev->name); - kfree(scmi_dev); - return NULL; - } + if (id < 0) + goto free_name; scmi_dev->id = id; - scmi_dev->protocol_id = protocol; scmi_dev->dev.parent = parent; - device_set_node(&scmi_dev->dev, of_fwnode_handle(np)); + device_set_node(&scmi_dev->dev, of_fwnode_handle(of_node_get(np))); scmi_dev->dev.bus = &scmi_bus_type; scmi_dev->dev.release = scmi_device_release; dev_set_name(&scmi_dev->dev, "scmi_dev.%d", id); @@ -479,8 +509,14 @@ __scmi_device_create(struct device_node *np, struct device *parent, return scmi_dev; put_dev: + scmi_device_release_resources(scmi_dev); put_device(&scmi_dev->dev); - ida_free(&scmi_bus_id, id); + return NULL; +free_name: + kfree_const(scmi_dev->name); +free_dev: + scmi_device_release_resources(scmi_dev); + kfree(scmi_dev); return NULL; } @@ -561,9 +597,11 @@ void scmi_device_destroy(struct device *parent, int protocol, const char *name) { struct scmi_device *scmi_dev; - scmi_dev = scmi_child_dev_find(parent, protocol, name); - if (scmi_dev) + scmi_dev = scmi_child_dev_find_get(parent, protocol, name); + if (scmi_dev) { __scmi_device_destroy(scmi_dev); + put_device(&scmi_dev->dev); + } } EXPORT_SYMBOL_GPL(scmi_device_destroy); diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h index b9723c105fc1..fe8c22cfb9f7 100644 --- a/drivers/firmware/arm_scmi/common.h +++ b/drivers/firmware/arm_scmi/common.h @@ -34,6 +34,8 @@ #define SCMI_SHMEM_MAX_PAYLOAD_SIZE 104 +#define SCMI_TRANSPORT_DEVNAME_PREFIX "__scmi_transport_device" + enum scmi_error_codes { SCMI_SUCCESS = 0, /* Success */ SCMI_ERR_SUPPORT = -1, /* Not supported */ diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 3e0d975ec94c..ef29fd223287 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -33,6 +33,7 @@ #include <linux/of.h> #include <linux/platform_device.h> #include <linux/processor.h> +#include <linux/rcupdate.h> #include <linux/refcount.h> #include <linux/slab.h> #include <linux/xarray.h> @@ -2628,21 +2629,31 @@ static int scmi_handle_put(const struct scmi_handle *handle) return 0; } -static void scmi_device_link_add(struct device *consumer, +static bool scmi_device_link_add(struct device *consumer, struct device *supplier) { struct device_link *link; link = device_link_add(consumer, supplier, DL_FLAG_AUTOREMOVE_CONSUMER); - WARN_ON(!link); + return !WARN_ON(!link); +} + +static void scmi_clear_handle(struct scmi_device *scmi_dev) +{ + if (!scmi_dev->handle) + return; + + scmi_handle_put(scmi_dev->handle); + scmi_dev->handle = NULL; } static void scmi_set_handle(struct scmi_device *scmi_dev) { scmi_dev->handle = scmi_handle_get(&scmi_dev->dev); - if (scmi_dev->handle) - scmi_device_link_add(&scmi_dev->dev, scmi_dev->handle->dev); + if (scmi_dev->handle && + !scmi_device_link_add(&scmi_dev->dev, scmi_dev->handle->dev)) + scmi_clear_handle(scmi_dev); } static int __scmi_xfer_info_init(struct scmi_info *sinfo, @@ -2751,6 +2762,9 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node, idx = tx ? 0 : 1; idr = tx ? &info->tx_idr : &info->rx_idr; + if (idr_find(idr, prot_id)) + return -EEXIST; + if (!info->desc->ops->chan_available(of_node, idx)) { cinfo = idr_find(idr, SCMI_PROTOCOL_BASE); if (unlikely(!cinfo)) /* Possible only if platform has no Rx */ @@ -2768,7 +2782,7 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node, cinfo->no_completion_irq = info->desc->no_completion_irq; /* Create a unique name for this transport device */ - snprintf(name, 32, "__scmi_transport_device_%s_%02X", + snprintf(name, sizeof(name), SCMI_TRANSPORT_DEVNAME_PREFIX "_%s_%02X", idx ? "rx" : "tx", prot_id); /* Create a uniquely named, dedicated transport device for this chan */ tdev = scmi_device_create(of_node, info->dev, prot_id, name); @@ -2778,13 +2792,12 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node, devm_kfree(info->dev, cinfo); return -EINVAL; } - of_node_get(of_node); cinfo->id = prot_id; cinfo->dev = &tdev->dev; + cinfo->handle = &info->handle; ret = info->desc->ops->chan_setup(cinfo, info->dev, tx); if (ret) { - of_node_put(of_node); scmi_device_destroy(info->dev, prot_id, name); devm_kfree(info->dev, cinfo); return ret; @@ -2807,14 +2820,13 @@ idr_alloc: "unable to allocate SCMI idr slot err %d\n", ret); /* Destroy channel and device only if created by this call. */ if (tdev) { - of_node_put(of_node); + info->desc->ops->chan_free(prot_id, cinfo, idr); scmi_device_destroy(info->dev, prot_id, name); devm_kfree(info->dev, cinfo); } return ret; } - cinfo->handle = &info->handle; return 0; } @@ -2872,9 +2884,11 @@ static int scmi_channels_setup(struct scmi_info *info) if (of_property_read_u32(child, "reg", &prot_id)) continue; - if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) + if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) { dev_err(info->dev, "Out of range protocol %d\n", prot_id); + continue; + } ret = scmi_txrx_setup(info, child, prot_id); if (ret) @@ -2884,7 +2898,7 @@ static int scmi_channels_setup(struct scmi_info *info) return 0; } -static int scmi_chan_destroy(int id, void *p, void *idr) +static int scmi_chan_destroy(int id, void *p, void *data) { struct scmi_chan_info *cinfo = p; @@ -2892,13 +2906,10 @@ static int scmi_chan_destroy(int id, void *p, void *idr) struct scmi_info *info = handle_to_scmi_info(cinfo->handle); struct scmi_device *sdev = to_scmi_dev(cinfo->dev); - of_node_put(cinfo->dev->of_node); - scmi_device_destroy(info->dev, id, sdev->name); + scmi_device_destroy(info->dev, cinfo->id, sdev->name); cinfo->dev = NULL; } - idr_remove(idr, id); - return 0; } @@ -2925,6 +2936,7 @@ static int scmi_bus_notifier(struct notifier_block *nb, { struct scmi_info *info = bus_nb_to_scmi_info(nb); struct scmi_device *sdev = to_scmi_dev(data); + const char *status; /* Skip devices of different SCMI instances */ if (sdev->dev.parent != info->dev) @@ -2934,18 +2946,22 @@ static int scmi_bus_notifier(struct notifier_block *nb, case BUS_NOTIFY_BIND_DRIVER: /* setup handle now as the transport is ready */ scmi_set_handle(sdev); + status = "about to be BOUND."; + break; + case BUS_NOTIFY_DRIVER_NOT_BOUND: + scmi_clear_handle(sdev); + status = "NOT BOUND."; break; case BUS_NOTIFY_UNBOUND_DRIVER: - scmi_handle_put(sdev->handle); - sdev->handle = NULL; + scmi_clear_handle(sdev); + status = "UNBOUND."; break; default: return NOTIFY_DONE; } dev_dbg(info->dev, "Device %s (%s) is now %s\n", dev_name(&sdev->dev), - sdev->name, action == BUS_NOTIFY_BIND_DRIVER ? - "about to be BOUND." : "UNBOUND."); + sdev->name, status); return NOTIFY_OK; } @@ -2957,7 +2973,9 @@ static int scmi_device_request_notifier(struct notifier_block *nb, struct scmi_device_id *id_table = data; struct scmi_info *info = req_nb_to_scmi_info(nb); + rcu_read_lock(); np = idr_find(&info->active_protocols, id_table->protocol_id); + rcu_read_unlock(); if (!np) return NOTIFY_DONE; @@ -3263,7 +3281,7 @@ static int scmi_probe(struct platform_device *pdev) ret = scmi_channels_setup(info); if (ret) { err_str = "failed to setup channels\n"; - goto clear_ida; + goto clear_txrx_setup; } ret = bus_register_notifier(&scmi_bus_type, &info->bus_nb); @@ -3325,7 +3343,7 @@ static int scmi_probe(struct platform_device *pdev) dev_err(dev, "%s", err_str); return 0; } - goto notification_exit; + goto raw_mode_cleanup; } mutex_lock(&scmi_list_mutex); @@ -3340,8 +3358,10 @@ static int scmi_probe(struct platform_device *pdev) if (of_property_read_u32(child, "reg", &prot_id)) continue; - if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) + if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) { dev_err(dev, "Out of range protocol %d\n", prot_id); + continue; + } if (!scmi_is_protocol_implemented(handle, prot_id)) { dev_err(dev, "SCMI protocol %d not implemented\n", @@ -3367,18 +3387,18 @@ static int scmi_probe(struct platform_device *pdev) return 0; -notification_exit: +raw_mode_cleanup: if (IS_ENABLED(CONFIG_ARM_SCMI_RAW_MODE_SUPPORT)) scmi_raw_mode_cleanup(info->raw); - scmi_notification_exit(&info->handle); clear_dev_req_notifier: blocking_notifier_chain_unregister(&scmi_requested_devices_nh, &info->dev_req_nb); clear_bus_notifier: bus_unregister_notifier(&scmi_bus_type, &info->bus_nb); clear_txrx_setup: + scmi_notification_quiesce(&info->handle); scmi_cleanup_txrx_channels(info); -clear_ida: + scmi_notification_exit(&info->handle); ida_free(&scmi_id, info->id); out_err: @@ -3401,6 +3421,12 @@ static void scmi_remove(struct platform_device *pdev) list_del(&info->node); mutex_unlock(&scmi_list_mutex); + blocking_notifier_chain_unregister(&scmi_requested_devices_nh, + &info->dev_req_nb); + + /* Stop transport callbacks before tearing down notifications. */ + scmi_notification_quiesce(&info->handle); + scmi_cleanup_txrx_channels(info); scmi_notification_exit(&info->handle); mutex_lock(&info->protocols_mtx); @@ -3411,13 +3437,8 @@ static void scmi_remove(struct platform_device *pdev) of_node_put(child); idr_destroy(&info->active_protocols); - blocking_notifier_chain_unregister(&scmi_requested_devices_nh, - &info->dev_req_nb); bus_unregister_notifier(&scmi_bus_type, &info->bus_nb); - /* Safe to free channels since no more users */ - scmi_cleanup_txrx_channels(info); - ida_free(&scmi_id, info->id); } diff --git a/drivers/firmware/arm_scmi/notify.c b/drivers/firmware/arm_scmi/notify.c index 0a192cf2deab..fb60fb07c0ed 100644 --- a/drivers/firmware/arm_scmi/notify.c +++ b/drivers/firmware/arm_scmi/notify.c @@ -209,11 +209,11 @@ struct scmi_registered_events_desc; * @init_work: A work item to perform final initializations of pending handlers * @notify_wq: A reference to the allocated Kernel cmwq * @pending_mtx: A mutex to protect @pending_events_handlers + * @pending_events_handlers: An hashtable containing all pending events' + * handlers descriptors * @registered_protocols: A statically allocated array containing pointers to * all the registered protocol-level specific information * related to events' handling - * @pending_events_handlers: An hashtable containing all pending events' - * handlers descriptors * * Each platform instance, represented by a handle, has its own instance of * the notification subsystem represented by this structure. @@ -225,8 +225,8 @@ struct scmi_notify_instance { struct workqueue_struct *notify_wq; /* lock to protect pending_events_handlers */ struct mutex pending_mtx; - struct scmi_registered_events_desc **registered_protocols; DECLARE_HASHTABLE(pending_events_handlers, SCMI_PENDING_HASH_SZ); + struct scmi_registered_events_desc *registered_protocols[SCMI_MAX_PROTO]; }; /** @@ -276,13 +276,13 @@ struct scmi_registered_event; * @eh_sz: Size of the pre-allocated buffer @eh * @in_flight: A reference to an in flight &struct scmi_registered_event * @num_events: Number of events in @registered_events - * @registered_events: A dynamically allocated array holding all the registered - * events' descriptors, whose fixed-size is determined at - * compile time. * @registered_mtx: A mutex to protect @registered_events_handlers * @ph: SCMI protocol handle reference * @registered_events_handlers: An hashtable containing all events' handlers * descriptors registered for this protocol + * @registered_events: A dynamically allocated array holding all the registered + * events' descriptors, whose fixed-size is determined at + * compile time. * * All protocols that register at least one event have their protocol-specific * information stored here, together with the embedded allocated events_queue. @@ -302,11 +302,11 @@ struct scmi_registered_events_desc { size_t eh_sz; void *in_flight; int num_events; - struct scmi_registered_event **registered_events; /* mutex to protect registered_events_handlers */ struct mutex registered_mtx; const struct scmi_protocol_handle *ph; DECLARE_HASHTABLE(registered_events_handlers, SCMI_REGISTERED_HASH_SZ); + struct scmi_registered_event *registered_events[] __counted_by(num_events); }; /** @@ -338,9 +338,9 @@ struct scmi_registered_event { void *report; u32 num_sources; bool not_supported_by_platform; - refcount_t *sources; /* locking to serialize the access to sources */ struct mutex sources_mtx; + refcount_t sources[] __counted_by(num_sources); }; /** @@ -706,9 +706,13 @@ scmi_allocate_registered_events_desc(struct scmi_notify_instance *ni, if (WARN_ON(ni->registered_protocols[proto_id])) return ERR_PTR(-EINVAL); - pd = devm_kzalloc(ni->handle->dev, sizeof(*pd), GFP_KERNEL); + pd = devm_kzalloc(ni->handle->dev, + struct_size(pd, registered_events, num_events), + GFP_KERNEL); if (!pd) return ERR_PTR(-ENOMEM); + + pd->num_events = num_events; pd->id = proto_id; pd->ops = ops; pd->ni = ni; @@ -722,12 +726,6 @@ scmi_allocate_registered_events_desc(struct scmi_notify_instance *ni, return ERR_PTR(-ENOMEM); pd->eh_sz = eh_sz; - pd->registered_events = devm_kcalloc(ni->handle->dev, num_events, - sizeof(char *), GFP_KERNEL); - if (!pd->registered_events) - return ERR_PTR(-ENOMEM); - pd->num_events = num_events; - /* Initialize per protocol handlers table */ mutex_init(&pd->registered_mtx); hash_init(pd->registered_events_handlers); @@ -796,18 +794,16 @@ int scmi_register_protocol_events(const struct scmi_handle *handle, u8 proto_id, int id; struct scmi_registered_event *r_evt; - r_evt = devm_kzalloc(ni->handle->dev, sizeof(*r_evt), + r_evt = devm_kzalloc(ni->handle->dev, + struct_size(r_evt, sources, num_sources), GFP_KERNEL); if (!r_evt) return -ENOMEM; + + r_evt->num_sources = num_sources; r_evt->proto = pd; r_evt->evt = evt; - r_evt->sources = devm_kcalloc(ni->handle->dev, num_sources, - sizeof(refcount_t), GFP_KERNEL); - if (!r_evt->sources) - return -ENOMEM; - r_evt->num_sources = num_sources; mutex_init(&r_evt->sources_mtx); r_evt->report = devm_kzalloc(ni->handle->dev, @@ -1673,11 +1669,6 @@ int scmi_notification_init(struct scmi_handle *handle) ni->gid = gid; ni->handle = handle; - ni->registered_protocols = devm_kcalloc(handle->dev, SCMI_MAX_PROTO, - sizeof(char *), GFP_KERNEL); - if (!ni->registered_protocols) - goto err; - ni->notify_wq = alloc_workqueue(dev_name(handle->dev), WQ_UNBOUND | WQ_FREEZABLE | WQ_SYSFS, 0); @@ -1707,6 +1698,25 @@ err: } /** + * scmi_notification_quiesce() - Stop notification late initialization + * @handle: The handle identifying the platform instance to quiesce + * + * Prevent new late-init work from being queued and wait for any already queued + * or running late-init work to complete before transport channels are torn + * down. + */ +void scmi_notification_quiesce(struct scmi_handle *handle) +{ + struct scmi_notify_instance *ni; + + ni = scmi_notification_instance_data_get(handle); + if (!ni) + return; + + disable_work_sync(&ni->init_work); +} + +/** * scmi_notification_exit() - Shutdown and clean Notification core * @handle: The handle identifying the platform instance to shutdown */ @@ -1717,6 +1727,8 @@ void scmi_notification_exit(struct scmi_handle *handle) ni = scmi_notification_instance_data_get(handle); if (!ni) return; + + scmi_notification_quiesce(handle); scmi_notification_instance_data_set(handle, NULL); /* Destroy while letting pending work complete */ diff --git a/drivers/firmware/arm_scmi/notify.h b/drivers/firmware/arm_scmi/notify.h index 76758a736cf4..f18f98c5ab3b 100644 --- a/drivers/firmware/arm_scmi/notify.h +++ b/drivers/firmware/arm_scmi/notify.h @@ -82,6 +82,7 @@ struct scmi_protocol_events { }; int scmi_notification_init(struct scmi_handle *handle); +void scmi_notification_quiesce(struct scmi_handle *handle); void scmi_notification_exit(struct scmi_handle *handle); int scmi_register_protocol_events(const struct scmi_handle *handle, u8 proto_id, const struct scmi_protocol_handle *ph, diff --git a/drivers/firmware/arm_scmi/transports/mailbox.c b/drivers/firmware/arm_scmi/transports/mailbox.c index ae0f67e6cc45..308736c3ead9 100644 --- a/drivers/firmware/arm_scmi/transports/mailbox.c +++ b/drivers/firmware/arm_scmi/transports/mailbox.c @@ -211,13 +211,18 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev, cl->tx_block = false; cl->knows_txdone = tx; + cinfo->transport_info = smbox; + smbox->cinfo = cinfo; + mutex_init(&smbox->chan_lock); + smbox->chan = mbox_request_channel(cl, tx ? 0 : p2a_chan); if (IS_ERR(smbox->chan)) { ret = PTR_ERR(smbox->chan); + smbox->chan = NULL; if (ret != -EPROBE_DEFER) dev_err(cdev, "failed to request SCMI %s mailbox\n", desc); - return ret; + goto err_clear_cinfo; } /* Additional unidirectional channel for TX if needed */ @@ -225,9 +230,10 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev, smbox->chan_receiver = mbox_request_channel(cl, a2p_rx_chan); if (IS_ERR(smbox->chan_receiver)) { ret = PTR_ERR(smbox->chan_receiver); + smbox->chan_receiver = NULL; if (ret != -EPROBE_DEFER) dev_err(cdev, "failed to request SCMI Tx Receiver mailbox\n"); - return ret; + goto err_free_chan; } } @@ -235,17 +241,23 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev, smbox->chan_platform_receiver = mbox_request_channel(cl, p2a_rx_chan); if (IS_ERR(smbox->chan_platform_receiver)) { ret = PTR_ERR(smbox->chan_platform_receiver); + smbox->chan_platform_receiver = NULL; if (ret != -EPROBE_DEFER) dev_err(cdev, "failed to request SCMI P2A Receiver mailbox\n"); - return ret; + goto err_free_chan; } } - cinfo->transport_info = smbox; - smbox->cinfo = cinfo; - mutex_init(&smbox->chan_lock); - return 0; + +err_free_chan: + mbox_free_channel(smbox->chan); +err_clear_cinfo: + cinfo->transport_info = NULL; + smbox->cinfo = NULL; + devm_iounmap(dev, smbox->shmem); + devm_kfree(dev, smbox); + return ret; } static int mailbox_chan_free(int id, void *p, void *data) diff --git a/drivers/firmware/arm_scmi/transports/smc.c b/drivers/firmware/arm_scmi/transports/smc.c index 21abb571e4f2..1fce3ccdeb7f 100644 --- a/drivers/firmware/arm_scmi/transports/smc.c +++ b/drivers/firmware/arm_scmi/transports/smc.c @@ -172,6 +172,13 @@ static int smc_chan_setup(struct scmi_chan_info *cinfo, struct device *dev, scmi_info->param_page = SHMEM_PAGE(res.start); scmi_info->param_offset = SHMEM_OFFSET(res.start); } + + scmi_info->func_id = func_id; + scmi_info->cap_id = cap_id; + scmi_info->cinfo = cinfo; + smc_channel_lock_init(scmi_info); + cinfo->transport_info = scmi_info; + /* * If there is an interrupt named "a2p", then the service and * completion of a message is signaled by an interrupt rather than by @@ -183,18 +190,14 @@ static int smc_chan_setup(struct scmi_chan_info *cinfo, struct device *dev, IRQF_NO_SUSPEND, dev_name(dev), scmi_info); if (ret) { dev_err(dev, "failed to setup SCMI smc irq\n"); + cinfo->transport_info = NULL; + scmi_info->cinfo = NULL; return ret; } } else { cinfo->no_completion_irq = true; } - scmi_info->func_id = func_id; - scmi_info->cap_id = cap_id; - scmi_info->cinfo = cinfo; - smc_channel_lock_init(scmi_info); - cinfo->transport_info = scmi_info; - return 0; } diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c index 1938ffa2f4f3..ffa73dd3b982 100644 --- a/drivers/gpio/gpio-sa1100.c +++ b/drivers/gpio/gpio-sa1100.c @@ -13,6 +13,11 @@ #include <mach/hardware.h> #include <mach/irqs.h> #include <mach/generic.h> +#include <linux/property.h> + +const struct software_node sa1100_gpiochip_node = { + .name = "sa1100-gpio", +}; struct sa1100_gpio_chip { struct gpio_chip chip; @@ -317,6 +322,7 @@ static const int sa1100_gpio_irqs[] __initconst = { void __init sa1100_init_gpio(void) { struct sa1100_gpio_chip *sgc = &sa1100_gpio_chip; + struct gpio_chip *gc = &sgc->chip; int i; /* clear all GPIO edge detects */ @@ -324,7 +330,9 @@ void __init sa1100_init_gpio(void) writel_relaxed(0, sgc->membase + R_GRER); writel_relaxed(-1, sgc->membase + R_GEDR); - gpiochip_add_data(&sa1100_gpio_chip.chip, NULL); + software_node_register(&sa1100_gpiochip_node); + gc->fwnode = software_node_fwnode(&sa1100_gpiochip_node); + gpiochip_add_data(gc, NULL); sa1100_gpio_irqdomain = irq_domain_create_simple(NULL, 28, IRQ_GPIO0, diff --git a/drivers/soc/ixp4xx/ixp4xx-npe.c b/drivers/soc/ixp4xx/ixp4xx-npe.c index 33e2e0366f19..0b3cc471ed62 100644 --- a/drivers/soc/ixp4xx/ixp4xx-npe.c +++ b/drivers/soc/ixp4xx/ixp4xx-npe.c @@ -752,6 +752,7 @@ static const struct of_device_id ixp4xx_npe_of_match[] = { }, {}, }; +MODULE_DEVICE_TABLE(of, ixp4xx_npe_of_match); static struct platform_driver ixp4xx_npe_driver = { .driver = { diff --git a/drivers/soc/ixp4xx/ixp4xx-qmgr.c b/drivers/soc/ixp4xx/ixp4xx-qmgr.c index 475e229039e3..492a31660535 100644 --- a/drivers/soc/ixp4xx/ixp4xx-qmgr.c +++ b/drivers/soc/ixp4xx/ixp4xx-qmgr.c @@ -421,19 +421,13 @@ static int ixp4xx_qmgr_probe(struct platform_device *pdev) err = devm_request_irq(dev, irq1, handler1, 0, "IXP4xx Queue Manager", NULL); - if (err) { - dev_err(dev, "failed to request IRQ%i (%i)\n", - irq1, err); + if (err) return err; - } err = devm_request_irq(dev, irq2, handler2, 0, "IXP4xx Queue Manager", NULL); - if (err) { - dev_err(dev, "failed to request IRQ%i (%i)\n", - irq2, err); + if (err) return err; - } used_sram_bitmap[0] = 0xF; /* 4 first pages reserved for config */ spin_lock_init(&qmgr_lock); @@ -454,6 +448,7 @@ static const struct of_device_id ixp4xx_qmgr_of_match[] = { }, {}, }; +MODULE_DEVICE_TABLE(of, ixp4xx_qmgr_of_match); static struct platform_driver ixp4xx_qmgr_driver = { .driver = { diff --git a/drivers/soc/renesas/Kconfig b/drivers/soc/renesas/Kconfig index 2ab150d04bb1..fdf18ed2dfc2 100644 --- a/drivers/soc/renesas/Kconfig +++ b/drivers/soc/renesas/Kconfig @@ -356,7 +356,6 @@ config ARCH_R8A779H0 config ARCH_R8A78000 bool "ARM64 Platform support for R8A78000 (R-Car X5H)" default y if ARCH_RENESAS - default ARCH_RENESAS select ARCH_RCAR_GEN5 help This enables support for the Renesas R-Car X5H SoC. |
