summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorGreg Malysa <[email protected]>2025-12-11 03:04:02 -0500
committerTom Rini <[email protected]>2026-01-23 14:20:59 -0600
commitbe7937847b7ca0e1ac44a1982c58343a3a8ad0f3 (patch)
treed890e74b3d189e0e1f19cb18f701685368378b91 /arch
parentc9e893d6266dc83dd053998cdf73957b623e2eb5 (diff)
board: adi: Add support for SC594
This adds support for the Analog Devices SC594 SOM and configurations for using it with both the SOMCRR-EZKIT and SOMCRR-EZLITE. 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/sc594-som-ezkit.dts126
-rw-r--r--arch/arm/dts/sc594-som-ezlite.dts83
-rw-r--r--arch/arm/dts/sc594-som.dtsi193
3 files changed, 399 insertions, 3 deletions
diff --git a/arch/arm/dts/sc594-som-ezkit.dts b/arch/arm/dts/sc594-som-ezkit.dts
index e744a3a4edb..c8a01fba527 100644
--- a/arch/arm/dts/sc594-som-ezkit.dts
+++ b/arch/arm/dts/sc594-som-ezkit.dts
@@ -11,3 +11,129 @@
model = "ADI SC594-SOM-EZKIT";
compatible = "adi,sc594-som-ezkit", "adi,sc59x";
};
+
+&i2c2 {
+ gpio_expander2: mcp23017@22 {
+ compatible = "microchip,mcp23017";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ bootph-pre-ram;
+
+ eeprom {
+ gpio-hog;
+ gpios = <0 GPIO_ACTIVE_HIGH>;
+ output-low;
+ line-name = "eeprom-en";
+ bootph-pre-ram;
+ };
+
+ pushbutton {
+ gpio-hog;
+ gpios = <1 GPIO_ACTIVE_HIGH>;
+ output-low;
+ line-name = "pushbutton-en";
+ bootph-pre-ram;
+ };
+
+ microsd {
+ gpio-hog;
+ gpios = <2 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "microsd-spi";
+ bootph-pre-ram;
+ };
+
+ adau-reset {
+ gpio-hog;
+ gpios = <5 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "adau-reset";
+ bootph-pre-ram;
+ };
+
+ adau1962 {
+ gpio-hog;
+ gpios = <6 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "adau1962-en";
+ bootph-pre-ram;
+ };
+
+ adau1979 {
+ gpio-hog;
+ gpios = <7 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "adau1979-en";
+ bootph-pre-ram;
+ };
+
+ octal {
+ gpio-hog;
+ gpios = <8 GPIO_ACTIVE_HIGH>;
+ output-low;
+ line-name = "octal-spi-cs-en";
+ bootph-pre-ram;
+ };
+
+ spdif-dig {
+ gpio-hog;
+ gpios = <9 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "spdif-digital-en";
+ bootph-pre-ram;
+ };
+
+ spdif-opt {
+ gpio-hog;
+ gpios = <10 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "spdif-optical-en";
+ bootph-pre-ram;
+ };
+
+ audio-jack {
+ gpio-hog;
+ gpios = <11 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "audio-jack-sel";
+ bootph-pre-ram;
+ };
+
+ mlb {
+ gpio-hog;
+ gpios = <12 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "mlb-en";
+ bootph-pre-ram;
+ };
+
+ eth1 {
+ gpio-hog;
+ gpios = <13 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "eth1-en";
+ bootph-pre-ram;
+ };
+
+ eth1-reset {
+ gpio-hog;
+ gpios = <14 GPIO_ACTIVE_LOW>;
+ /*
+ * USB0 lines are shared with Eth1 so Eth PHY must be held in reset
+ * when using the USB
+ */
+ output-high;
+ line-name = "eth1-reset";
+ bootph-pre-ram;
+ };
+
+ gige-reset {
+ gpio-hog;
+ gpios = <15 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "gige-reset";
+ bootph-pre-ram;
+ };
+ };
+};
diff --git a/arch/arm/dts/sc594-som-ezlite.dts b/arch/arm/dts/sc594-som-ezlite.dts
index 7d81b40fe8a..970d3b1a377 100644
--- a/arch/arm/dts/sc594-som-ezlite.dts
+++ b/arch/arm/dts/sc594-som-ezlite.dts
@@ -11,3 +11,86 @@
model = "ADI SC594-SOM-EZLITE";
compatible = "adi,sc594-som-ezlite", "adi,sc59x";
};
+
+&i2c2 {
+ gpio_expander: adp5588@30 {
+ compatible = "adi,adp5588";
+ reg = <0x30>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ bootph-pre-ram;
+
+ usb-spi0 {
+ gpio-hog;
+ gpios = <8 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "usb_spi0_en";
+ bootph-pre-ram;
+ };
+
+ usb-spi1 {
+ gpio-hog;
+ gpios = <9 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "usb_spi1_en";
+ bootph-pre-ram;
+ };
+
+ usb-qspi-en {
+ gpio-hog;
+ gpios = <10 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "usb_qspi_en";
+ bootph-pre-ram;
+ };
+
+ usb-qspi-reset {
+ gpio-hog;
+ gpios = <11 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "usb_qspi_reset";
+ bootph-pre-ram;
+ };
+
+ eth0-reset {
+ gpio-hog;
+ gpios = <12 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "eth0-reset";
+ bootph-pre-ram;
+ };
+
+ adau1372-pwrdwn {
+ gpio-hog;
+ gpios = <13 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "adau1372_pwrdwn";
+ bootph-pre-ram;
+ };
+
+ led1 {
+ gpio-hog;
+ gpios = <15 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "led1-en";
+ bootph-pre-ram;
+ };
+
+ led2 {
+ gpio-hog;
+ gpios = <16 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "led2-en";
+ bootph-pre-ram;
+ };
+
+ led3 {
+ gpio-hog;
+ gpios = <17 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "led3-en";
+ bootph-pre-ram;
+ };
+
+ };
+};
diff --git a/arch/arm/dts/sc594-som.dtsi b/arch/arm/dts/sc594-som.dtsi
index e15473f8e8f..1c2adc601dd 100644
--- a/arch/arm/dts/sc594-som.dtsi
+++ b/arch/arm/dts/sc594-som.dtsi
@@ -6,14 +6,201 @@
/dts-v1/;
#include "sc5xx.dtsi"
+#include "sc59x.dtsi"
+
+/{
+ 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>;
+ };
+};
&timer0 {
clocks = <&clk ADSP_SC594_CLK_CGU0_SCLK0>;
};
+&pinctrl0 {
+ soc_defaults: soc_pins {
+ bootph-pre-ram;
+ adi,pins = <ADI_ADSP_PIN('A', 14) ADI_ADSP_PINFUNC_ALT0>, /* i2c */
+ <ADI_ADSP_PIN('A', 15) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 2) ADI_ADSP_PINFUNC_ALT0>, /* emmc */
+ <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', 6) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 7) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 8) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('F', 9) 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>;
+ };
+
+ ospi_default: ospi_pins {
+ bootph-pre-ram;
+ adi,pins = <ADI_ADSP_PIN('C', 8) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 9) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 10) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 11) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 12) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 13) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 14) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('C', 15) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('D', 0) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('D', 1) ADI_ADSP_PINFUNC_ALT0>,
+ <ADI_ADSP_PIN('D', 4) ADI_ADSP_PINFUNC_ALT2>;
+ };
+};
+
&clk {
compatible = "adi,sc594-clocks";
- reg = <0x3108d000 0x1000>,
- <0x3108e000 0x1000>,
- <0x3108f000 0x1000>;
+};
+
+&uart0 {
+ clocks = <&clk ADSP_SC594_CLK_CGU0_SCLK0>;
+};
+
+&wdog {
+ clocks = <&clk ADSP_SC594_CLK_CGU0_SCLK0>;
+};
+
+&i2c0 {
+ clocks = <&clk ADSP_SC594_CLK_CGU0_SCLK0>;
+};
+
+&i2c1 {
+ clocks = <&clk ADSP_SC594_CLK_CGU0_SCLK0>;
+};
+
+&i2c2 {
+ clocks = <&clk ADSP_SC594_CLK_CGU0_SCLK0>;
+
+ som_gpio_expander: mcp23017@21 {
+ compatible = "microchip,mcp23017";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ bootph-pre-ram;
+
+ led1 {
+ gpio-hog;
+ gpios = <0 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "led1-en";
+ bootph-pre-ram;
+ };
+
+ led2 {
+ gpio-hog;
+ gpios = <1 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "led2-en";
+ bootph-pre-ram;
+ };
+
+ led3 {
+ gpio-hog;
+ gpios = <2 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "led3-en";
+ bootph-pre-ram;
+ };
+
+ spi2flash-cs {
+ gpio-hog;
+ gpios = <3 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "spi2flash-cs";
+ bootph-pre-ram;
+ };
+
+ spi2d2-d3 {
+ gpio-hog;
+ gpios = <4 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "spi2d2-d3-en";
+ bootph-pre-ram;
+ };
+
+ uart0 {
+ gpio-hog;
+ gpios = <5 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "uart0-en";
+ bootph-pre-ram;
+ };
+
+ uart0-flow-en {
+ gpio-hog;
+ gpios = <6 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "uart0-flow-en";
+ bootph-pre-ram;
+ };
+
+ ospiflash-cs {
+ gpio-hog;
+ gpios = <7 GPIO_ACTIVE_LOW>;
+ output-high;
+ line-name = "ospiflash-cs";
+ bootph-pre-ram;
+ };
+ };
+};
+
+&ospi {
+ status = "okay";
+
+ clocks = <&clk ADSP_SC594_CLK_OSPI>;
+
+ flash0: is25lx256@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor", "is25lx256";
+ reg = <0>;
+
+ spi-max-frequency = <100000000>;
+ cdns,spi-calib-frequency = <10000000>;
+
+ spi-tx-bus-width = <8>;
+ spi-rx-bus-width = <8>;
+
+ tshsl-ns = <50>;
+ tsd2d-ns = <50>;
+ tchsh-ns = <4>;
+ tslch-ns = <4>;
+ bootph-pre-ram;
+
+ cdns,phy;
+ };
+};
+
+&spi2 {
+ clocks = <&clk ADSP_SC594_CLK_SPI>;
+
+ 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;
+ };
+};
+
+&usb0_phy {
+ status = "okay";
+ clocks = <&clk ADSP_SC594_CLK_CGU0_SCLK0>;
+ clock-names = "sclk0";
+};
+
+&usb0 {
+ status = "okay";
};