]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ARM: dts: mxs: support i.MX28 Amarula rmm board
authorDario Binacchi <dario.binacchi@amarulasolutions.com>
Fri, 20 Jun 2025 08:06:19 +0000 (10:06 +0200)
committerShawn Guo <shawnguo@kernel.org>
Tue, 1 Jul 2025 10:12:43 +0000 (18:12 +0800)
The board includes the following resources:
 - 256 Mbytes NAND Flash
 - 128 Mbytes DRAM DDR2
 - CAN
 - USB 2.0 high-speed/full-speed
 - Ethernet MAC

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/boot/dts/nxp/mxs/Makefile
arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts [new file with mode: 0644]

index 96dd31ea19ba25d9eec759140b754d8a2c93d17d..d72ba702b6fa64d3fc34a588b597fe9efe434bb2 100644 (file)
@@ -5,6 +5,7 @@ dtb-$(CONFIG_ARCH_MXS) += \
        imx23-sansa.dtb \
        imx23-stmp378x_devb.dtb \
        imx23-xfi3.dtb \
+       imx28-amarula-rmm.dtb \
        imx28-apf28.dtb \
        imx28-apf28dev.dtb \
        imx28-apx4devkit.dtb \
diff --git a/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts b/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts
new file mode 100644 (file)
index 0000000..af59211
--- /dev/null
@@ -0,0 +1,300 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
+ */
+
+/dts-v1/;
+
+#include "imx28.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       compatible = "amarula,imx28-rmm", "fsl,imx28";
+       model = "Amarula i.MX28 rmm";
+
+       memory@40000000 {
+               reg = <0x40000000 0x08000000>;
+               device_type = "memory";
+       };
+
+       backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm 4 5000000 0>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <255>;
+               default-brightness-level = <255>;
+               power-supply = <&reg_5v>;
+       };
+
+       beeper {
+               compatible = "pwm-beeper";
+               pwms = <&pwm 7 100000 0>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&leds_pins>;
+
+               led-0 {
+                       gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+
+               led-1 {
+                       gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+
+               led-2 {
+                       gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_5v: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_fec_3v3: regulator-fec-3v3 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&fec_3v3_enable_pin>;
+               regulator-name = "fec-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&gpio3 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <300000>;
+               vin-supply = <&reg_5v>;
+       };
+
+       reg_usb0_vbus: regulator-usb0-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb0_vbus_enable_pin>;
+               regulator-name = "usb0_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio2 5 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       reg_usb1_vbus: regulator-usb1-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb1_vbus_enable_pin>;
+               regulator-name = "usb1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio2 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+};
+
+&auart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart0_2pins_a>;
+       status = "okay";
+};
+
+&auart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart1_pins_a>;
+       status = "okay";
+};
+
+&can0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can0_pins_a>;
+       status = "okay";
+};
+
+&duart {
+       pinctrl-names = "default";
+       pinctrl-0 = <&duart_pins_b>;
+       status = "okay";
+};
+
+&duart_pins_b {
+       fsl,voltage = <MXS_VOLTAGE_LOW>;
+};
+
+&gpmi {
+       #size-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       touchscreen: touchscreen@38 {
+               compatible = "edt,edt-ft5306";
+               reg = <0x38>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&edt_ft5x06_pins &edt_ft5x06_wake_pin>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <19 IRQ_TYPE_EDGE_RISING>;
+               reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+               wake-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&lradc {
+       status = "okay";
+};
+
+&mac0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mac0_pins_a>;
+       phy-mode = "rmii";
+       phy-supply = <&reg_fec_3v3>;
+       phy-handle = <&ethphy>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       max-speed = <100>;
+                       reset-gpios = <&gpio3 28 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <4000>;
+                       reset-deassert-us = <4000>;
+               };
+       };
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&hog_pins_a>;
+
+       edt_ft5x06_pins: edt-ft5x06@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_GPMI_RDY1__GPIO_0_21 /* Reset */
+                       MX28_PAD_GPMI_CE3N__GPIO_0_19 /* Interrupt */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_ENABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       edt_ft5x06_wake_pin: edt-ft5x06-wake@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_GPMI_CE2N__GPIO_0_18>;
+               fsl,drive-strength = <MXS_DRIVE_16mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       fec_3v3_enable_pin: fec-3v3-enable@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SPDIF__GPIO_3_27>;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       hog_pins_a: hog@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_SSP2_SS1__GPIO_2_20  /* External power */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       leds_pins: leds@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_SSP0_DATA7__GPIO_2_7
+                       MX28_PAD_PWM0__GPIO_3_16
+                       MX28_PAD_PWM1__GPIO_3_17
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       usb0_vbus_enable_pin: usb0-vbus-enable@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SSP0_DATA5__GPIO_2_5>;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       usb1_vbus_enable_pin: usb1-vbus-enable@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SSP0_DATA6__GPIO_2_6>;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm4_pins_a &pwm7_pins_a>;
+       status = "okay";
+};
+
+/* microSD */
+&ssp0 {
+       compatible = "fsl,imx28-mmc";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_sck_cfg>;
+       broken-cd;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&usb0 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb0_vbus>;
+       status = "okay";
+};
+
+&usb1 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb1_vbus>;
+       status = "okay";
+};
+
+&usbphy0 {
+       status = "okay";
+};
+
+&usbphy1 {
+       status = "okay";
+};