summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorGreg Malysa <[email protected]>2025-12-11 03:03:59 -0500
committerTom Rini <[email protected]>2026-01-23 14:20:59 -0600
commite382cb2be4ef6f205b6f3231801ee2d7d24d2906 (patch)
treeec85c1f055e61a3458fae35c74d54c9fd2523c83 /arch
parent34d41f8da617ad9ca4527fac7764671159463b4f (diff)
board: adi: Add support for SC589 boards
This adds support for the Analog Devices SC589-EZKIT and SC589-mini. Signed-off-by: Vasileios Bimpikas <[email protected]> Signed-off-by: Utsav Agarwal <[email protected]> Signed-off-by: Arturs Artamonovs <[email protected]> Signed-off-by: Nathan Barrett-Morrison <[email protected]> Signed-off-by: Caleb Ethridge <[email protected]> Signed-off-by: Philip Molloy <[email protected]> Signed-off-by: Greg Malysa <[email protected]>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/dts/sc589-ezkit.dts198
-rw-r--r--arch/arm/dts/sc589-mini.dts18
-rw-r--r--arch/arm/dts/sc58x.dtsi164
3 files changed, 376 insertions, 4 deletions
diff --git a/arch/arm/dts/sc589-ezkit.dts b/arch/arm/dts/sc589-ezkit.dts
index 8a1c0ce0862..39ac7a4fd6e 100644
--- a/arch/arm/dts/sc589-ezkit.dts
+++ b/arch/arm/dts/sc589-ezkit.dts
@@ -8,6 +8,204 @@
#include "sc58x.dtsi"
/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
model = "ADI SC589-EZKIT";
compatible = "adi,sc589-ezkit", "adi,sc58x";
};
+
+&i2c0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio_expander1: mcp23017@21 {
+ compatible = "microchip,mcp23017";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ bootph-pre-ram;
+
+ eeprom {
+ gpio-hog;
+ gpios = <0 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "eeprom-en";
+ bootph-pre-ram;
+ };
+
+ uart0-flow-en {
+ gpio-hog;
+ gpios = <1 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "uart0-flow-en";
+ bootph-pre-ram;
+ };
+
+ uart0-en {
+ gpio-hog;
+ gpios = <2 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "uart0-en";
+ bootph-pre-ram;
+ };
+
+ eth0 {
+ gpio-hog;
+ gpios = <3 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "eth0-en";
+ bootph-pre-ram;
+ };
+
+ eth1 {
+ gpio-hog;
+ gpios = <4 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "eth1-en";
+ bootph-pre-ram;
+ };
+
+ mlb {
+ gpio-hog;
+ gpios = <5 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "mlb-en";
+ bootph-pre-ram;
+ };
+
+ can0 {
+ gpio-hog;
+ gpios = <6 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "can0-en";
+ bootph-pre-ram;
+ };
+
+ can1 {
+ gpio-hog;
+ gpios = <7 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "can1-en";
+ bootph-pre-ram;
+ };
+
+ adau1962 {
+ gpio-hog;
+ gpios = <8 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "adau1962-en";
+ bootph-pre-ram;
+ };
+
+ adau1979 {
+ gpio-hog;
+ gpios = <9 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "adau1979-en";
+ bootph-pre-ram;
+ };
+
+ sd_wp {
+ gpio-hog;
+ gpios = <11 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "sd-wp-en";
+ bootph-pre-ram;
+ };
+
+ spi2d2-d3 {
+ gpio-hog;
+ gpios = <12 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "spi2d2-d3-en";
+ bootph-pre-ram;
+ };
+
+ spi2flash-cs {
+ gpio-hog;
+ gpios = <13 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "spi2flash-cs";
+ bootph-pre-ram;
+ };
+
+ spdif-opt {
+ gpio-hog;
+ gpios = <14 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "spdif-optical-en";
+ bootph-pre-ram;
+ };
+
+ spdif-dig {
+ gpio-hog;
+ gpios = <15 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "spdif-digital-en";
+ bootph-pre-ram;
+ };
+ };
+
+ gpio_expander2: mcp23017@22 {
+ compatible = "microchip,mcp23017";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ bootph-pre-ram;
+
+ pushbutton1 {
+ gpio-hog;
+ gpios = <0 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "pushbutton1-en";
+ bootph-pre-ram;
+ };
+
+ pushbutton2 {
+ gpio-hog;
+ gpios = <1 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "pushbutton2-en";
+ bootph-pre-ram;
+ };
+
+ led10 {
+ gpio-hog;
+ gpios = <2 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "led10-en";
+ bootph-pre-ram;
+ };
+
+ led11 {
+ gpio-hog;
+ gpios = <3 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "led11-en";
+ bootph-pre-ram;
+ };
+
+ led12 {
+ gpio-hog;
+ gpios = <4 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "led12-en";
+ bootph-pre-ram;
+ };
+ };
+};
+
+&eth0 {
+ snps,reset-gpio = <&gpio0 ADI_ADSP_PIN('B', 14) GPIO_ACTIVE_LOW>;
+};
+
+&gpio0 {
+ emac0_phy_pwdn {
+ gpio-hog;
+ output-high;
+ gpios = <ADI_ADSP_PIN('C', 15) GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&mmc {
+ status = "okay";
+};
diff --git a/arch/arm/dts/sc589-mini.dts b/arch/arm/dts/sc589-mini.dts
index 605f7a17bfc..a7650bae12c 100644
--- a/arch/arm/dts/sc589-mini.dts
+++ b/arch/arm/dts/sc589-mini.dts
@@ -8,6 +8,22 @@
#include "sc58x.dtsi"
/ {
- model = "ADI SC598-MINI";
+ model = "ADI SC589-MINI";
compatible = "adi,sc589-mini", "adi,sc58x";
};
+
+&eth0 {
+ snps,reset-gpio = <&gpio0 ADI_ADSP_PIN('B', 7) GPIO_ACTIVE_LOW>;
+};
+
+&gpio0 {
+ emac0_phy_pwdn {
+ gpio-hog;
+ output-high;
+ gpios = <ADI_ADSP_PIN('F', 6) GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&mmc {
+ status = "okay";
+};
diff --git a/arch/arm/dts/sc58x.dtsi b/arch/arm/dts/sc58x.dtsi
index 66145315ab7..7b07589de47 100644
--- a/arch/arm/dts/sc58x.dtsi
+++ b/arch/arm/dts/sc58x.dtsi
@@ -6,18 +6,176 @@
#include "sc5xx.dtsi"
/ {
- gic: interrupt-controller@310b2000 {
- compatible = "arm,cortex-a5-gic";
+ gic: interrupt-controller@310B2000 {
+ compatible = "arm,cortex-a5-gic", "arm,cortex-a9-gic";
#interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller;
reg = <0x310B2000 0x1000>,
<0x310B4000 0x100>;
};
+
+ soc {
+ rcu: rcu@0x3108B000 {
+ compatible = "adi,reset-controller";
+ reg = <0x3108B000 0x1000>;
+ adi,sharc-min = <1>;
+ adi,sharc-max = <2>;
+ adi,enable-reboot;
+ status = "disabled";
+ };
+
+ mmc: mmc0@31010000 {
+ compatible = "snps,dw-mshc";
+ reg = <0x31010000 0x400>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&mmc_default>;
+ bus-width = <4>;
+ fifo-depth = <128>;
+ clock-names = "biu", "ciu";
+ max-frequency = <52000000>;
+ status = "disabled";
+ };
+
+ usb0: musb@310c1000 {
+ compatible = "adi,sc5xx-musb";
+ reg = <0x310c1000 0x390>;
+ interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "mc", "dma";
+ status = "okay";
+ };
+
+ usb1: musb@310c2000 {
+ compatible = "adi,sc5xx-musb";
+ reg = <0x310c2000 0x390>;
+ interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "mc", "dma";
+ status = "disabled";
+ };
+
+ sharc1: sharc@0x28240000 {
+ compatible = "adi,sc5xx-rproc";
+ reg = <0x28240000 0x100>;
+ coreid = <1>;
+ adi,rcu = <&rcu>;
+ status = "disabled";
+ };
+
+ sharc2: sharc@0x28a40000 {
+ compatible = "adi,sc5xx-rproc";
+ reg = <0x28a40000 0x100>;
+ coreid = <2>;
+ adi,rcu = <&rcu>;
+ status = "disabled";
+ };
+ };
};
&timer0 {
reg = <0x31001004 0x100>,
- <0x31001060 0x100>;
+ <0x31001060 0x100>;
+ clocks = <&clk ADSP_SC58X_CLK_CGU0_SCLK0>;
+};
+
+&pinctrl0 {
+ mmc_default: mmc_pins {
+ bootph-pre-ram;
+ adi,pins = <ADI_ADSP_PIN('F', 2) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 3) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 4) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 5) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 10) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 11) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 12) ADI_ADSP_PINFUNC_ALT0>;
+ };
+
+ eth0_default: eth0_pins {
+ adi,pins = <ADI_ADSP_PIN('A', 0) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 1) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 2) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 3) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 4) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 5) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 6) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 7) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 8) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 9) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 10) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 11) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 12) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('A', 13) ADI_ADSP_PINFUNC_ALT0>;
+ };
+
+ uart0_default: uart0_pins {
+ bootph-pre-ram;
+ adi,pins = <ADI_ADSP_PIN('C', 13) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 14) ADI_ADSP_PINFUNC_ALT0>;
+ };
+
+ spi2_default: spi2_pins {
+ adi,pins = <ADI_ADSP_PIN('C', 1) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 2) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 3) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 4) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 5) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 6) ADI_ADSP_PINFUNC_ALT0>;
+ };
+};
+
+&pinctrl0 {
+ adi,npins = <102>;
+};
+
+&gpio0 {
+ adi,ngpios = <102>;
+};
+
+&clk {
+ compatible = "adi,sc58x-clocks";
+};
+
+&uart0 {
+ clocks = <&clk ADSP_SC58X_CLK_CGU0_SCLK0>;
+};
+
+&spi2 {
+ clocks = <&clk ADSP_SC58X_CLK_CGU0_SCLK1>;
+ reg = <0x31044000 0x1000>;
+
+ flash1: is25lp512@1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor", "is25lp512";
+ reg = <1>;
+ spi-tx-bus-width = <4>;
+ spi-rx-bus-width = <4>;
+ spi-max-frequency = <10000000>;
+ bootph-pre-ram;
+ };
+};
+
+&wdog {
+ clocks = <&clk ADSP_SC58X_CLK_CGU0_SCLK0>;
+};
+
+&eth0 {
+ reg = <0x3100C000 0x1000>;
+};
+
+&mmc {
+ clocks = <&dummy>, <&clk ADSP_SC58X_CLK_CGU0_SCLK0>;
+};
+
+&i2c0 {
+ clocks = <&clk ADSP_SC58X_CLK_CGU0_SCLK0>;
+};
+
+&i2c1 {
+ clocks = <&clk ADSP_SC58X_CLK_CGU0_SCLK0>;
+};
+
+&i2c2 {
clocks = <&clk ADSP_SC58X_CLK_CGU0_SCLK0>;
};