From: Frank Li <Frank.li@oss.nxp.com>
To: Arnd Bergmann <arnd@kernel.org>
Cc: Krzysztof Kozlowski <krzk@kernel.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Linus Walleij <linusw@kernel.org>,
Russell King <linux@armlinux.org.uk>,
Drew Fustini <fustini@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
Liviu Dudau <liviu.dudau@arm.com>,
Sudeep Holla <sudeep.holla@kernel.org>,
Lorenzo Pieralisi <lpieralisi@kernel.org>,
Frank Li <Frank.Li@nxp.com>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
Vladimir Zapolskiy <vz@mleia.com>, Stefan Agner <stefan@agner.ch>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Aaro Koskinen <aaro.koskinen@iki.fi>,
Andreas Kemnade <andreas@kemnade.info>,
Kevin Hilman <khilman@baylibre.com>,
Roger Quadros <rogerq@kernel.org>,
Tony Lindgren <tony@atomide.com>,
Nicolas Ferre <nicolas.ferre@microchip.com>,
Claudiu Beznea <claudiu.beznea@tuxon.dev>,
Andrew Lunn <andrew@lunn.ch>,
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
Gregory Clement <gregory.clement@bootlin.com>,
Robert Jarzmik <robert.jarzmik@free.fr>,
Kristoffer Ericson <kristoffer.ericson@gmail.com>,
Ethan Nelson-Moore <enelsonmoore@gmail.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Alexander Sverdlin <alexander.sverdlin@siemens.com>,
Shawn Guo <shawnguo@kernel.org>,
Karl Mehltretter <kmehltretter@gmail.com>,
"David Hildenbrand (Arm)" <david@kernel.org>,
Nicolas Pitre <npitre@baylibre.com>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
imx@lists.linux.dev, linux-stm32@st-md-mailman.stormreply.com,
linux-omap@vger.kernel.org,
Krzysztof Kozlowski <krzk+dt@kernel.org>
Subject: Re: [PATCH 07/13] ARM: imx: remove i.MX31 SoC support
Date: Thu, 10 Sep 2026 10:11:52 -0500 [thread overview]
Message-ID: <aqLIuIwpToxyehkv@SMW015318> (raw)
In-Reply-To: <20260908152808.3928630-8-arnd@kernel.org>
On Tue, Sep 08, 2026 at 05:27:57PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The Freescale i.MX31 was an early SoC based on the ARM1136r0 CPU core. It
> was used in the Bug Labs modular computer but ultimately much less
> popular than most other i.MX SoCs.
>
> As the ARM1136r0 support is causing a lot of extra maintenance effort
> to keep alive and there are no known users, remove i.MX31 in order to
> allow removing support for that CPU core altogether.
>
> The related i.MX35 is based on a slightly newer ARM1136r1 CPU core that
> does not have this problem, so there is no reason to remove that.
>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: imx@lists.linux.dev
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
Acked-by: Frank Li <Frank.Li@nxp.com>
> arch/arm/Kconfig.debug | 9 -
> arch/arm/boot/dts/nxp/imx/Makefile | 3 -
> arch/arm/boot/dts/nxp/imx/imx31-bug.dts | 22 --
> arch/arm/boot/dts/nxp/imx/imx31-lite.dts | 178 -----------
> arch/arm/boot/dts/nxp/imx/imx31.dtsi | 371 -----------------------
> arch/arm/configs/imx_v6_v7_defconfig | 1 -
> arch/arm/mach-imx/Kconfig | 11 -
> arch/arm/mach-imx/Makefile | 1 -
> arch/arm/mach-imx/cpu-imx31.c | 72 -----
> arch/arm/mach-imx/mach-imx31.c | 18 --
> arch/arm/mach-imx/mm-imx3.c | 44 ---
> 11 files changed, 730 deletions(-)
> delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-bug.dts
> delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-lite.dts
> delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31.dtsi
> delete mode 100644 arch/arm/mach-imx/cpu-imx31.c
> delete mode 100644 arch/arm/mach-imx/mach-imx31.c
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index e2fc89055463..52387fe2a057 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -424,13 +424,6 @@ choice
> Say Y here if you want kernel low-level debugging support
> on i.MX28.
>
> - config DEBUG_IMX31_UART
> - bool "i.MX31 Debug UART"
> - depends on SOC_IMX31
> - help
> - Say Y here if you want kernel low-level debugging support
> - on i.MX31.
> -
> config DEBUG_IMX35_UART
> bool "i.MX35 Debug UART"
> depends on SOC_IMX35
> @@ -1411,7 +1404,6 @@ config DEBUG_IMX_UART_PORT
> depends on DEBUG_IMX1_UART || \
> DEBUG_IMX25_UART || \
> DEBUG_IMX27_UART || \
> - DEBUG_IMX31_UART || \
> DEBUG_IMX35_UART || \
> DEBUG_IMX50_UART || \
> DEBUG_IMX51_UART || \
> @@ -1468,7 +1460,6 @@ config DEBUG_LL_INCLUDE
> default "debug/imx.S" if DEBUG_IMX1_UART || \
> DEBUG_IMX25_UART || \
> DEBUG_IMX27_UART || \
> - DEBUG_IMX31_UART || \
> DEBUG_IMX35_UART || \
> DEBUG_IMX50_UART || \
> DEBUG_IMX51_UART || \
> diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
> index 1a2539fa19b4..e0747cb6e772 100644
> --- a/arch/arm/boot/dts/nxp/imx/Makefile
> +++ b/arch/arm/boot/dts/nxp/imx/Makefile
> @@ -16,9 +16,6 @@ dtb-$(CONFIG_SOC_IMX27) += \
> imx27-pdk.dtb \
> imx27-phytec-phycore-rdk.dtb \
> imx27-phytec-phycard-s-rdk.dtb
> -dtb-$(CONFIG_SOC_IMX31) += \
> - imx31-bug.dtb \
> - imx31-lite.dtb
> dtb-$(CONFIG_SOC_IMX35) += \
> imx35-eukrea-mbimxsd35-baseboard.dtb \
> imx35-pdk.dtb
> diff --git a/arch/arm/boot/dts/nxp/imx/imx31-bug.dts b/arch/arm/boot/dts/nxp/imx/imx31-bug.dts
> deleted file mode 100644
> index d87eee3f9b3c..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imx31-bug.dts
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * Copyright 2012 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
> - */
> -
> -/dts-v1/;
> -#include "imx31.dtsi"
> -
> -/ {
> - model = "Buglabs i.MX31 Bug 1.x";
> - compatible = "buglabs,imx31-bug", "fsl,imx31";
> -
> - memory@80000000 {
> - device_type = "memory";
> - reg = <0x80000000 0x8000000>; /* 128M */
> - };
> -};
> -
> -&uart5 {
> - uart-has-rtscts;
> - status = "okay";
> -};
> diff --git a/arch/arm/boot/dts/nxp/imx/imx31-lite.dts b/arch/arm/boot/dts/nxp/imx/imx31-lite.dts
> deleted file mode 100644
> index 630f8fa69ba8..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imx31-lite.dts
> +++ /dev/null
> @@ -1,178 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -//
> -// Copyright (C) 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
> -
> -/dts-v1/;
> -
> -#include "imx31.dtsi"
> -
> -#include <dt-bindings/gpio/gpio.h>
> -#include <dt-bindings/interrupt-controller/irq.h>
> -
> -/ {
> - model = "LogicPD i.MX31 Lite";
> - compatible = "logicpd,imx31-lite", "fsl,imx31";
> -
> - chosen {
> - stdout-path = &uart1;
> - };
> -
> - memory@80000000 {
> - device_type = "memory";
> - reg = <0x80000000 0x8000000>;
> - };
> -
> - leds {
> - compatible = "gpio-leds";
> -
> - led0 {
> - gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
> - };
> -
> - led1 {
> - gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> - };
> - };
> -};
> -
> -&ata {
> - status = "okay";
> -};
> -
> -&nfc {
> - nand-bus-width = <8>;
> - nand-ecc-mode = "hw";
> - nand-on-flash-bbt;
> - status = "okay";
> -};
> -
> -&sdhci1 {
> - bus-width = <4>;
> - cd-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
> - wp-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
> - status = "okay";
> -};
> -
> -&spi2 {
> - status = "okay";
> -
> - pmic@0 {
> - compatible = "fsl,mc13783";
> - reg = <0>;
> - spi-cs-high;
> - spi-max-frequency = <1000000>;
> - interrupt-parent = <&gpio1>;
> - interrupts = <3 IRQ_TYPE_EDGE_RISING>;
> -
> - fsl,mc13xxx-uses-adc;
> - fsl,mc13xxx-uses-rtc;
> -
> - regulators {
> - sw1a { /* QVCC */
> - regulator-min-microvolt = <1200000>;
> - regulator-max-microvolt = <1500000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> -
> - sw1b { /* QVCC */
> - regulator-min-microvolt = <1200000>;
> - regulator-max-microvolt = <1500000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> -
> - sw2a { /* 1.8V_DDR, NVCC2, NVCC21 and NVCC22 */
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <1800000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> -
> - sw2b { /* NVCC10 */
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <1800000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> -
> - violo { /* NVCC1 and NVCC7 */
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <1800000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> -
> - viohi { /* VIOHI */
> - regulator-min-microvolt = <2775000>;
> - regulator-max-microvolt = <2775000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> -
> - vaudio { /* VAUDIO */
> - regulator-min-microvolt = <2775000>;
> - regulator-max-microvolt = <2775000>;
> - };
> -
> - vcam { /* NVCC4 */
> - regulator-min-microvolt = <2800000>;
> - regulator-max-microvolt = <2800000>;
> - };
> -
> - vgen { /* NVCC5 / NVCC8 and NVCC6 / NVCC9 */
> - regulator-min-microvolt = <2775000>;
> - regulator-max-microvolt = <2775000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> -
> - vmmc2 { /* NVCC3 */
> - regulator-min-microvolt = <1600000>;
> - regulator-max-microvolt = <3000000>;
> - regulator-always-on;
> - regulator-boot-on;
> - };
> - };
> - };
> -};
> -
> -&uart1 {
> - uart-has-rtscts;
> - status = "okay";
> -};
> -
> -/* Routed to the extension board */
> -&uart2 {
> - uart-has-rtscts;
> - status = "okay";
> -};
> -
> -/* Routed to the extension board */
> -&uart3 {
> - uart-has-rtscts;
> - status = "okay";
> -};
> -
> -&weim {
> - status = "okay";
> -
> - flash@0,0 {
> - compatible = "cfi-flash";
> - reg = <0 0x0 0x200000>;
> - bank-width = <2>;
> - linux,mtd-name = "physmap-flash.0";
> - fsl,weim-cs-timing = <0x0000cf03 0xa0330d01 0x00220800>;
> - };
> -
> - ethernet@4,0 {
> - compatible = "smsc,lan9117", "smsc,lan9115";
> - reg = <4 0x0 0x100>;
> - interrupt-parent = <&gpio1>;
> - interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
> - phy-mode = "mii";
> - reg-io-width = <2>;
> - smsc,irq-push-pull;
> - fsl,weim-cs-timing = <0x00008701 0x04000541 0x00010000>;
> - };
> -};
> diff --git a/arch/arm/boot/dts/nxp/imx/imx31.dtsi b/arch/arm/boot/dts/nxp/imx/imx31.dtsi
> deleted file mode 100644
> index c58f855ea851..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imx31.dtsi
> +++ /dev/null
> @@ -1,371 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -//
> -// Copyright 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
> -// Copyright 2012 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
> -
> -/ {
> - #address-cells = <1>;
> - #size-cells = <1>;
> - /*
> - * The decompressor and also some bootloaders rely on a
> - * pre-existing /chosen node to be available to insert the
> - * command line and merge other ATAGS info.
> - */
> - chosen {};
> -
> - aliases {
> - gpio0 = &gpio1;
> - gpio1 = &gpio2;
> - gpio2 = &gpio3;
> - i2c0 = &i2c1;
> - i2c1 = &i2c2;
> - i2c2 = &i2c3;
> - serial0 = &uart1;
> - serial1 = &uart2;
> - serial2 = &uart3;
> - serial3 = &uart4;
> - serial4 = &uart5;
> - spi0 = &spi1;
> - spi1 = &spi2;
> - spi2 = &spi3;
> - };
> -
> - cpus {
> - #address-cells = <1>;
> - #size-cells = <0>;
> -
> - cpu@0 {
> - compatible = "arm,arm1136jf-s";
> - device_type = "cpu";
> - reg = <0>;
> - };
> - };
> -
> - avic: interrupt-controller@68000000 {
> - compatible = "fsl,imx31-avic", "fsl,avic";
> - interrupt-controller;
> - #interrupt-cells = <1>;
> - reg = <0x68000000 0x100000>;
> - };
> -
> - soc: soc {
> - #address-cells = <1>;
> - #size-cells = <1>;
> - compatible = "simple-bus";
> - interrupt-parent = <&avic>;
> - ranges;
> -
> - iram: sram@1fffc000 {
> - compatible = "mmio-sram";
> - reg = <0x1fffc000 0x4000>;
> - #address-cells = <1>;
> - #size-cells = <1>;
> - ranges = <0 0x1fffc000 0x4000>;
> - };
> -
> - aips1: bus@43f00000 { /* AIPS1 */
> - compatible = "fsl,aips-bus", "simple-bus";
> - #address-cells = <1>;
> - #size-cells = <1>;
> - reg = <0x43f00000 0x100000>;
> - ranges;
> -
> - i2c1: i2c@43f80000 {
> - compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
> - reg = <0x43f80000 0x4000>;
> - interrupts = <10>;
> - clocks = <&clks 33>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - status = "disabled";
> - };
> -
> - i2c3: i2c@43f84000 {
> - compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
> - reg = <0x43f84000 0x4000>;
> - interrupts = <3>;
> - clocks = <&clks 35>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - status = "disabled";
> - };
> -
> - ata: ata@43f8c000 {
> - compatible = "fsl,imx31-pata", "fsl,imx27-pata";
> - reg = <0x43f8c000 0x4000>;
> - interrupts = <15>;
> - clocks = <&clks 26>;
> - status = "disabled";
> - };
> -
> - uart1: serial@43f90000 {
> - compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> - reg = <0x43f90000 0x4000>;
> - interrupts = <45>;
> - clocks = <&clks 10>, <&clks 30>;
> - clock-names = "ipg", "per";
> - status = "disabled";
> - };
> -
> - uart2: serial@43f94000 {
> - compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> - reg = <0x43f94000 0x4000>;
> - interrupts = <32>;
> - clocks = <&clks 10>, <&clks 31>;
> - clock-names = "ipg", "per";
> - status = "disabled";
> - };
> -
> - i2c2: i2c@43f98000 {
> - compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
> - reg = <0x43f98000 0x4000>;
> - interrupts = <4>;
> - clocks = <&clks 34>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - status = "disabled";
> - };
> -
> - spi1: spi@43fa4000 {
> - compatible = "fsl,imx31-cspi";
> - reg = <0x43fa4000 0x4000>;
> - interrupts = <14>;
> - clocks = <&clks 10>, <&clks 53>;
> - clock-names = "ipg", "per";
> - dmas = <&sdma 8 8 0>, <&sdma 9 8 0>;
> - dma-names = "rx", "tx";
> - #address-cells = <1>;
> - #size-cells = <0>;
> - status = "disabled";
> - };
> -
> - kpp: kpp@43fa8000 {
> - compatible = "fsl,imx31-kpp", "fsl,imx21-kpp";
> - reg = <0x43fa8000 0x4000>;
> - interrupts = <24>;
> - clocks = <&clks 46>;
> - status = "disabled";
> - };
> -
> - uart4: serial@43fb0000 {
> - compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> - reg = <0x43fb0000 0x4000>;
> - clocks = <&clks 10>, <&clks 49>;
> - clock-names = "ipg", "per";
> - interrupts = <46>;
> - status = "disabled";
> - };
> -
> - uart5: serial@43fb4000 {
> - compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> - reg = <0x43fb4000 0x4000>;
> - interrupts = <47>;
> - clocks = <&clks 10>, <&clks 50>;
> - clock-names = "ipg", "per";
> - status = "disabled";
> - };
> - };
> -
> - spba-bus@50000000 {
> - compatible = "fsl,spba-bus", "simple-bus";
> - #address-cells = <1>;
> - #size-cells = <1>;
> - reg = <0x50000000 0x100000>;
> - ranges;
> -
> - sdhci1: mmc@50004000 {
> - compatible = "fsl,imx31-mmc";
> - reg = <0x50004000 0x4000>;
> - interrupts = <9>;
> - clocks = <&clks 10>, <&clks 20>;
> - clock-names = "ipg", "per";
> - dmas = <&sdma 20 3 0>;
> - dma-names = "rx-tx";
> - status = "disabled";
> - };
> -
> - sdhci2: mmc@50008000 {
> - compatible = "fsl,imx31-mmc";
> - reg = <0x50008000 0x4000>;
> - interrupts = <8>;
> - clocks = <&clks 10>, <&clks 21>;
> - clock-names = "ipg", "per";
> - dmas = <&sdma 21 3 0>;
> - dma-names = "rx-tx";
> - status = "disabled";
> - };
> -
> - uart3: serial@5000c000 {
> - compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> - reg = <0x5000c000 0x4000>;
> - interrupts = <18>;
> - clocks = <&clks 10>, <&clks 48>;
> - clock-names = "ipg", "per";
> - status = "disabled";
> - };
> -
> - spi2: spi@50010000 {
> - compatible = "fsl,imx31-cspi";
> - reg = <0x50010000 0x4000>;
> - interrupts = <13>;
> - clocks = <&clks 10>, <&clks 54>;
> - clock-names = "ipg", "per";
> - dmas = <&sdma 6 8 0>, <&sdma 7 8 0>;
> - dma-names = "rx", "tx";
> - #address-cells = <1>;
> - #size-cells = <0>;
> - status = "disabled";
> - };
> -
> - iim: efuse@5001c000 {
> - compatible = "fsl,imx31-iim";
> - reg = <0x5001c000 0x1000>;
> - interrupts = <19>;
> - clocks = <&clks 25>;
> - };
> - };
> -
> - bus@53f00000 { /* AIPS2 */
> - compatible = "fsl,aips-bus", "simple-bus";
> - #address-cells = <1>;
> - #size-cells = <1>;
> - reg = <0x53f00000 0x100000>;
> - ranges;
> -
> - clks: ccm@53f80000 {
> - compatible = "fsl,imx31-ccm";
> - reg = <0x53f80000 0x4000>;
> - interrupts = <31>, <53>;
> - #clock-cells = <1>;
> - };
> -
> - spi3: spi@53f84000 {
> - compatible = "fsl,imx31-cspi";
> - reg = <0x53f84000 0x4000>;
> - interrupts = <17>;
> - clocks = <&clks 10>, <&clks 28>;
> - clock-names = "ipg", "per";
> - dmas = <&sdma 10 8 0>, <&sdma 11 8 0>;
> - dma-names = "rx", "tx";
> - #address-cells = <1>;
> - #size-cells = <0>;
> - status = "disabled";
> - };
> -
> - gpt: timer@53f90000 {
> - compatible = "fsl,imx31-gpt";
> - reg = <0x53f90000 0x4000>;
> - interrupts = <29>;
> - clocks = <&clks 10>, <&clks 22>;
> - clock-names = "ipg", "per";
> - };
> -
> - gpio3: gpio@53fa4000 {
> - compatible = "fsl,imx31-gpio";
> - reg = <0x53fa4000 0x4000>;
> - interrupts = <56>;
> - gpio-controller;
> - #gpio-cells = <2>;
> - interrupt-controller;
> - #interrupt-cells = <2>;
> - };
> -
> - rng@53fb0000 {
> - compatible = "fsl,imx31-rnga";
> - reg = <0x53fb0000 0x4000>;
> - interrupts = <22>;
> - clocks = <&clks 29>;
> - };
> -
> - gpio1: gpio@53fcc000 {
> - compatible = "fsl,imx31-gpio";
> - reg = <0x53fcc000 0x4000>;
> - interrupts = <52>;
> - gpio-controller;
> - #gpio-cells = <2>;
> - interrupt-controller;
> - #interrupt-cells = <2>;
> - };
> -
> - gpio2: gpio@53fd0000 {
> - compatible = "fsl,imx31-gpio";
> - reg = <0x53fd0000 0x4000>;
> - interrupts = <51>;
> - gpio-controller;
> - #gpio-cells = <2>;
> - interrupt-controller;
> - #interrupt-cells = <2>;
> - };
> -
> - sdma: dma-controller@53fd4000 {
> - compatible = "fsl,imx31-sdma";
> - reg = <0x53fd4000 0x4000>;
> - interrupts = <34>;
> - clocks = <&clks 10>, <&clks 27>;
> - clock-names = "ipg", "ahb";
> - #dma-cells = <3>;
> - fsl,sdma-ram-script-name = "imx/sdma/sdma-imx31.bin";
> - };
> -
> - rtc: rtc@53fd8000 {
> - compatible = "fsl,imx31-rtc", "fsl,imx21-rtc";
> - reg = <0x53fd8000 0x4000>;
> - interrupts = <25>;
> - clocks = <&clks 2>, <&clks 40>;
> - clock-names = "ref", "ipg";
> - };
> -
> - wdog: watchdog@53fdc000 {
> - compatible = "fsl,imx31-wdt", "fsl,imx21-wdt";
> - reg = <0x53fdc000 0x4000>;
> - clocks = <&clks 41>;
> - interrupts = <55>;
> - };
> -
> - pwm: pwm@53fe0000 {
> - compatible = "fsl,imx31-pwm", "fsl,imx27-pwm";
> - reg = <0x53fe0000 0x4000>;
> - interrupts = <26>;
> - clocks = <&clks 10>, <&clks 42>;
> - clock-names = "ipg", "per";
> - #pwm-cells = <3>;
> - status = "disabled";
> - };
> - };
> -
> - emi-bus@b8000000 { /* External Memory Interface */
> - compatible = "simple-bus";
> - reg = <0xb8000000 0x5000>;
> - ranges;
> - #address-cells = <1>;
> - #size-cells = <1>;
> -
> - nfc: nand-controller@b8000000 {
> - compatible = "fsl,imx31-nand", "fsl,imx27-nand";
> - reg = <0xb8000000 0x1000>;
> - interrupts = <33>;
> - clocks = <&clks 9>;
> - dmas = <&sdma 30 17 0>;
> - dma-names = "rx-tx";
> - #address-cells = <1>;
> - #size-cells = <1>;
> - status = "disabled";
> - };
> -
> - weim: memory-controller@b8002000 {
> - compatible = "fsl,imx31-weim", "fsl,imx27-weim";
> - reg = <0xb8002000 0x1000>;
> - clocks = <&clks 56>;
> - #address-cells = <2>;
> - #size-cells = <1>;
> - ranges = <0 0 0xa0000000 0x08000000
> - 1 0 0xa8000000 0x08000000
> - 2 0 0xb0000000 0x02000000
> - 3 0 0xb2000000 0x02000000
> - 4 0 0xb4000000 0x02000000
> - 5 0 0xb6000000 0x02000000>;
> - status = "disabled";
> - };
> - };
> - };
> -};
> diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
> index ed588add8d31..6ac42c06c1e9 100644
> --- a/arch/arm/configs/imx_v6_v7_defconfig
> +++ b/arch/arm/configs/imx_v6_v7_defconfig
> @@ -15,7 +15,6 @@ CONFIG_PERF_EVENTS=y
> CONFIG_KEXEC=y
> CONFIG_ARCH_MULTI_V6=y
> CONFIG_ARCH_MXC=y
> -CONFIG_SOC_IMX31=y
> CONFIG_SOC_IMX35=y
> CONFIG_SOC_IMX50=y
> CONFIG_SOC_IMX51=y
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index 3f0521c652cb..77704c6a70ba 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -39,17 +39,6 @@ if ARCH_MULTI_V6
>
> comment "ARM1136 platforms"
>
> -config SOC_IMX31
> - 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
> diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
> index 5c650bf40e02..fa0144f0882d 100644
> --- a/arch/arm/mach-imx/Makefile
> +++ b/arch/arm/mach-imx/Makefile
> @@ -5,7 +5,6 @@ obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o
>
> obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o mach-imx27.o
>
> -obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o mach-imx31.o
> obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o mach-imx35.o
>
> imx5-pm-$(CONFIG_PM) += pm-imx5.o
> diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c
> deleted file mode 100644
> index e81ef9e36a1f..000000000000
> --- a/arch/arm/mach-imx/cpu-imx31.c
> +++ /dev/null
> @@ -1,72 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * MX31 CPU type detection
> - *
> - * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
> - */
> -
> -#include <linux/module.h>
> -#include <linux/of_address.h>
> -#include <linux/io.h>
> -
> -#include "common.h"
> -#include "hardware.h"
> -#include "iim.h"
> -
> -static int mx31_cpu_rev = -1;
> -
> -static struct {
> - u8 srev;
> - const char *name;
> - unsigned int rev;
> -} mx31_cpu_type[] = {
> - { .srev = 0x00, .name = "i.MX31(L)", .rev = IMX_CHIP_REVISION_1_0 },
> - { .srev = 0x10, .name = "i.MX31", .rev = IMX_CHIP_REVISION_1_1 },
> - { .srev = 0x11, .name = "i.MX31L", .rev = IMX_CHIP_REVISION_1_1 },
> - { .srev = 0x12, .name = "i.MX31", .rev = IMX_CHIP_REVISION_1_1 },
> - { .srev = 0x13, .name = "i.MX31L", .rev = IMX_CHIP_REVISION_1_1 },
> - { .srev = 0x14, .name = "i.MX31", .rev = IMX_CHIP_REVISION_1_2 },
> - { .srev = 0x15, .name = "i.MX31L", .rev = IMX_CHIP_REVISION_1_2 },
> - { .srev = 0x28, .name = "i.MX31", .rev = IMX_CHIP_REVISION_2_0 },
> - { .srev = 0x29, .name = "i.MX31L", .rev = IMX_CHIP_REVISION_2_0 },
> -};
> -
> -static int mx31_read_cpu_rev(void)
> -{
> - void __iomem *iim_base;
> - struct device_node *np;
> - u32 i, srev;
> - int rev = IMX_CHIP_REVISION_UNKNOWN;
> -
> - np = of_find_compatible_node(NULL, NULL, "fsl,imx31-iim");
> - iim_base = of_iomap(np, 0);
> - of_node_put(np);
> - BUG_ON(!iim_base);
> -
> - /* read SREV register from IIM module */
> - srev = imx_readl(iim_base + MXC_IIMSREV);
> - srev &= 0xff;
> -
> - for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
> - if (srev == mx31_cpu_type[i].srev) {
> - rev = mx31_cpu_type[i].rev;
> - imx_print_silicon_rev(mx31_cpu_type[i].name,
> - mx31_cpu_type[i].rev);
> - goto out;
> - }
> -
> - imx_print_silicon_rev("i.MX31", IMX_CHIP_REVISION_UNKNOWN);
> -
> -out:
> - iounmap(iim_base);
> - return rev;
> -}
> -
> -int mx31_revision(void)
> -{
> - if (mx31_cpu_rev == -1)
> - mx31_cpu_rev = mx31_read_cpu_rev();
> -
> - return mx31_cpu_rev;
> -}
> -EXPORT_SYMBOL(mx31_revision);
> diff --git a/arch/arm/mach-imx/mach-imx31.c b/arch/arm/mach-imx/mach-imx31.c
> deleted file mode 100644
> index e9a1092b6093..000000000000
> --- a/arch/arm/mach-imx/mach-imx31.c
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * Copyright 2012 Sascha Hauer, Pengutronix
> - */
> -
> -#include <asm/mach/arch.h>
> -#include "common.h"
> -
> -static const char * const imx31_dt_board_compat[] __initconst = {
> - "fsl,imx31",
> - NULL
> -};
> -
> -DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
> - .map_io = mx31_map_io,
> - .init_early = imx31_init_early,
> - .dt_compat = imx31_dt_board_compat,
> -MACHINE_END
> diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c
> index 9b0b014d7fe2..42e73518004a 100644
> --- a/arch/arm/mach-imx/mm-imx3.c
> +++ b/arch/arm/mach-imx/mm-imx3.c
> @@ -69,49 +69,6 @@ static void __iomem *imx3_ioremap_caller(phys_addr_t phys_addr, size_t size,
> return __arm_ioremap_caller(phys_addr, size, mtype, caller);
> }
>
> -#ifdef CONFIG_SOC_IMX31
> -static struct map_desc mx31_io_desc[] __initdata = {
> - imx_map_entry(MX31, X_MEMC, MT_DEVICE),
> - imx_map_entry(MX31, AVIC, MT_DEVICE_NONSHARED),
> - imx_map_entry(MX31, AIPS1, MT_DEVICE_NONSHARED),
> - imx_map_entry(MX31, AIPS2, MT_DEVICE_NONSHARED),
> - imx_map_entry(MX31, SPBA0, MT_DEVICE_NONSHARED),
> -};
> -
> -/*
> - * This function initializes the memory map. It is called during the
> - * system startup to create static physical to virtual memory mappings
> - * for the IO modules.
> - */
> -void __init mx31_map_io(void)
> -{
> - iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc));
> -}
> -
> -static void imx31_idle(void)
> -{
> - int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR);
> - reg &= ~MXC_CCM_CCMR_LPM_MASK;
> - imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR);
> -
> - imx3_idle();
> -}
> -
> -void __init imx31_init_early(void)
> -{
> - struct device_node *np;
> -
> - mxc_set_cpu_type(MXC_CPU_MX31);
> - arch_ioremap_caller = imx3_ioremap_caller;
> - arm_pm_idle = imx31_idle;
> - np = of_find_compatible_node(NULL, NULL, "fsl,imx31-ccm");
> - mx3_ccm_base = of_iomap(np, 0);
> - of_node_put(np);
> - BUG_ON(!mx3_ccm_base);
> -}
> -#endif /* ifdef CONFIG_SOC_IMX31 */
> -
> -#ifdef CONFIG_SOC_IMX35
> static struct map_desc mx35_io_desc[] __initdata = {
> imx_map_entry(MX35, X_MEMC, MT_DEVICE),
> imx_map_entry(MX35, AVIC, MT_DEVICE_NONSHARED),
> @@ -147,4 +104,3 @@ void __init imx35_init_early(void)
> of_node_put(np);
> BUG_ON(!mx3_ccm_base);
> }
> -#endif /* ifdef CONFIG_SOC_IMX35 */
> --
> 2.53.0
>
>
next prev parent reply other threads:[~2026-09-10 15:12 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
2026-09-08 15:27 ` [PATCH 01/13] ARM: remove sa1100 platform Arnd Bergmann
2026-09-08 16:26 ` Guenter Roeck
2026-09-08 17:23 ` Linus Walleij
2026-09-08 19:39 ` Karl Mehltretter
2026-09-08 20:09 ` Arnd Bergmann
2026-09-08 20:36 ` Nicolas Pitre
2026-09-08 21:26 ` David Laight
2026-09-08 21:32 ` Arnd Bergmann
2026-09-08 15:27 ` [PATCH 02/13] ARM: remove footbridge Arnd Bergmann
2026-09-08 17:27 ` Linus Walleij
2026-09-09 15:09 ` Ralph Siemsen
2026-09-08 15:27 ` [PATCH 03/13] ARM: remove riscpc Arnd Bergmann
2026-09-09 8:04 ` Thomas Zimmermann
2026-09-09 16:42 ` Bart Van Assche
2026-09-09 20:09 ` Arnd Bergmann
2026-09-08 15:27 ` [PATCH 04/13] ARM: remove legacy pxa board files Arnd Bergmann
2026-09-08 17:30 ` Linus Walleij
2026-09-08 18:32 ` Daniel Mack
2026-09-08 15:27 ` [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all " Arnd Bergmann
2026-09-08 15:34 ` Mark Brown
2026-09-08 16:12 ` Ulf Hansson
2026-09-08 16:18 ` Andrew Lunn
2026-09-08 17:33 ` Linus Walleij
2026-09-08 20:14 ` Niklas Cassel
2026-09-09 12:54 ` Gregory CLEMENT
2026-09-08 15:27 ` [PATCH 06/13] ARM: omap2: remove omap24xx support Arnd Bergmann
2026-09-08 17:18 ` Aaro Koskinen
2026-09-08 17:35 ` Linus Walleij
2026-09-08 19:21 ` Karl Mehltretter
2026-09-08 19:42 ` Arnd Bergmann
2026-09-09 8:06 ` Thomas Zimmermann
2026-09-08 15:27 ` [PATCH 07/13] ARM: imx: remove i.MX31 SoC support Arnd Bergmann
2026-09-09 8:24 ` Vladimir Zapolskiy
2026-09-09 8:26 ` Daniel Baluta
2026-09-10 15:11 ` Frank Li [this message]
2026-09-08 15:27 ` [PATCH 08/13] ARM: imx: remove nommu support Arnd Bergmann
2026-09-09 20:17 ` Fabio Estevam
2026-09-09 20:21 ` Fabio Estevam
2026-09-10 13:08 ` Jesse T
2026-09-10 16:08 ` Giulio Benetti
2026-09-10 15:14 ` Frank Li
2026-09-08 15:27 ` [PATCH 09/13] ARM: lpc18xx: remove entire platform Arnd Bergmann
2026-09-08 17:36 ` Linus Walleij
2026-09-09 8:28 ` Vladimir Zapolskiy
2026-09-08 15:28 ` [PATCH 10/13] ARM: stm32: remove stm32f4/f7/h7 MCU support Arnd Bergmann
2026-09-08 17:36 ` Linus Walleij
2026-09-08 15:28 ` [PATCH 11/13] ARM: versatile: remove mps2 support Arnd Bergmann
2026-09-08 15:41 ` Vladimir Murzin
2026-09-08 17:37 ` Linus Walleij
2026-09-08 19:49 ` Sudeep Holla
2026-09-08 19:51 ` Arnd Bergmann
2026-09-08 19:58 ` Sudeep Holla
2026-09-08 19:54 ` Sudeep Holla
2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
2026-09-08 17:39 ` Linus Walleij
2026-09-08 19:58 ` Sverdlin, Alexander
2026-09-08 21:09 ` Rob Herring
2026-09-08 21:30 ` Arnd Bergmann
2026-09-10 12:25 ` Nicolas Ferre
2026-09-09 12:41 ` Alexandre Belloni
2026-09-10 12:23 ` Nicolas Ferre
2026-09-08 15:28 ` [PATCH 13/13] ARM: axxia: remove entire platform Arnd Bergmann
2026-09-08 17:40 ` Linus Walleij
2026-09-08 18:23 ` Krzysztof Kozlowski
2026-09-08 20:02 ` Sverdlin, Alexander
2026-09-08 16:53 ` [PATCH 00/13] ARM: deprecated platform removal Randy Dunlap
2026-09-08 16:56 ` Randy Dunlap
2026-09-08 18:33 ` Arnd Bergmann
2026-09-08 18:39 ` Randy Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aqLIuIwpToxyehkv@SMW015318 \
--to=frank.li@oss.nxp.com \
--cc=Frank.Li@nxp.com \
--cc=aaro.koskinen@iki.fi \
--cc=alexander.sverdlin@siemens.com \
--cc=alexandre.belloni@bootlin.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andreas@kemnade.info \
--cc=andrew@lunn.ch \
--cc=arnd@arndb.de \
--cc=arnd@kernel.org \
--cc=claudiu.beznea@tuxon.dev \
--cc=conor+dt@kernel.org \
--cc=david@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=enelsonmoore@gmail.com \
--cc=festevam@gmail.com \
--cc=fustini@kernel.org \
--cc=geert@linux-m68k.org \
--cc=gregory.clement@bootlin.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=khilman@baylibre.com \
--cc=kmehltretter@gmail.com \
--cc=kristoffer.ericson@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux@armlinux.org.uk \
--cc=liviu.dudau@arm.com \
--cc=lpieralisi@kernel.org \
--cc=mcoquelin.stm32@gmail.com \
--cc=nicolas.ferre@microchip.com \
--cc=npitre@baylibre.com \
--cc=robert.jarzmik@free.fr \
--cc=robh@kernel.org \
--cc=rogerq@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=sebastian.hesselbarth@gmail.com \
--cc=shawnguo@kernel.org \
--cc=stefan@agner.ch \
--cc=sudeep.holla@kernel.org \
--cc=tony@atomide.com \
--cc=vz@mleia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®