This adds support for the Analog Devices SC573 EZKIT. Signed-off-by: Vasileios Bimpikas <vasileios.bimpi...@analog.com> Signed-off-by: Utsav Agarwal <utsav.agar...@analog.com> Signed-off-by: Arturs Artamonovs <arturs.artamon...@analog.com> Signed-off-by: Nathan Barrett-Morrison <nathan.morri...@timesys.com> Signed-off-by: Greg Malysa <malysag...@gmail.com> ---
arch/arm/dts/sc573-ezkit.dts | 227 ++++++++++++++++++++++++++ arch/arm/dts/sc57x.dtsi | 123 +++++++++++++- board/adi/sc573-ezkit/Makefile | 6 + board/adi/sc573-ezkit/sc573-ezkit.c | 21 +++ board/adi/sc573-ezkit/sc573-ezkit.env | 17 +- configs/sc573-ezkit_defconfig | 102 ++++++++++++ 6 files changed, 486 insertions(+), 10 deletions(-) create mode 100644 board/adi/sc573-ezkit/Makefile create mode 100644 board/adi/sc573-ezkit/sc573-ezkit.c create mode 100644 configs/sc573-ezkit_defconfig diff --git a/arch/arm/dts/sc573-ezkit.dts b/arch/arm/dts/sc573-ezkit.dts index 0dc2962618c..d6374f919f2 100644 --- a/arch/arm/dts/sc573-ezkit.dts +++ b/arch/arm/dts/sc573-ezkit.dts @@ -5,9 +5,236 @@ /dts-v1/; +#include "sc5xx.dtsi" #include "sc57x.dtsi" / { model = "ADI SC573-EZKIT"; compatible = "adi,sc573-ezkit", "adi,sc57x"; }; + +&i2c0 { + gpio_expander1: mcp23017@21 { + compatible = "microchip,mcp23017"; + reg = <0x21>; + gpio-controller; + #gpio-cells = <2>; + bootph-pre-ram; + + eeprom { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~eeprom-en"; + bootph-pre-ram; + }; + + uart0-flow-en { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~uart0-flow-en"; + bootph-pre-ram; + }; + + mlb { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~mlb-en"; + bootph-pre-ram; + }; + + can0 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~can0-en"; + bootph-pre-ram; + }; + + can1 { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~can1-en"; + bootph-pre-ram; + }; + + adau1962 { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "~adau1962-en"; + bootph-pre-ram; + }; + + adau1979 { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "~adau1979-en"; + bootph-pre-ram; + }; + + sd-wp-en { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~sd-wp-en"; + bootph-pre-ram; + }; + + spi2flash-cs { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "~spi2flash-cs"; + bootph-pre-ram; + }; + + spi2d2-d3 { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "~spi2d2-d3-en"; + bootph-pre-ram; + }; + + spdif-opt { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~spdif-optical-en"; + bootph-pre-ram; + }; + + spdif-dig { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + 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; + + pushbutton3 { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~pushbutton3-en"; + bootph-pre-ram; + }; + + pushbutton2 { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~pushbutton2-en"; + bootph-pre-ram; + }; + + pushbutton1 { + gpio-hog; + gpios = <2 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~pushbutton1-en"; + bootph-pre-ram; + }; + + leds { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~leds-en"; + bootph-pre-ram; + }; + + flg0 { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~flg0_loop"; + bootph-pre-ram; + }; + + flg1 { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~flg1_loop"; + bootph-pre-ram; + }; + + flg2 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~flg2_loop"; + bootph-pre-ram; + }; + + flg3 { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~flg3_loop"; + bootph-pre-ram; + }; + + adau1977 { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~adau1977_en"; + bootph-pre-ram; + }; + + adau1977_fault_rst { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~adau1977_fault_rst_en"; + bootph-pre-ram; + }; + + thumbwheel { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~thumbwheel_oe"; + bootph-pre-ram; + }; + + engine_rpm { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "~engine_rpm_oe"; + bootph-pre-ram; + }; + }; +}; + +ð0 { + snps,reset-gpio = <&gpio0 ADI_ADSP_PIN('A', 5) GPIO_ACTIVE_LOW>; +}; + +&gpio0 { + emac0_phy_pwdn { + gpio-hog; + output-high; + gpios = <ADI_ADSP_PIN('A', 4) GPIO_ACTIVE_HIGH>; + }; +}; + +&mmc { + status = "okay"; +}; diff --git a/arch/arm/dts/sc57x.dtsi b/arch/arm/dts/sc57x.dtsi index ddfcae8d190..030769b9621 100644 --- a/arch/arm/dts/sc57x.dtsi +++ b/arch/arm/dts/sc57x.dtsi @@ -3,19 +3,134 @@ * (C) Copyright 2024 - Analog Devices, Inc. */ -#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 { + 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 124 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "mc", "dma"; + status = "okay"; + }; + + }; }; &timer0 { clocks = <&clk ADSP_SC57X_CLK_CGU0_SCLK0>; }; + +&pinctrl0 { + mmc_default: mmc_pins { + adi,pins = <ADI_ADSP_PIN('E', 12) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('E', 13) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('E', 14) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('E', 15) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('F', 0) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('F', 1) ADI_ADSP_PINFUNC_ALT0>, + <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', 7) ADI_ADSP_PINFUNC_ALT2>, + <ADI_ADSP_PIN('C', 12) ADI_ADSP_PINFUNC_ALT1>; + }; + + eth0_default: eth0_pins { + adi,pins = <ADI_ADSP_PIN('B', 7) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 8) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 6) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 5) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('A', 13) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('A', 12) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('A', 14) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('A', 15) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 9) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 4) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 0) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 2) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('A', 10) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('A', 11) ADI_ADSP_PINFUNC_ALT0>; + }; + + uart0_default: uart0_pins { + bootph-pre-ram; + adi,pins = <ADI_ADSP_PIN('F', 8) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('F', 9) ADI_ADSP_PINFUNC_ALT0>; + }; + + spi2_default: spi2_pins { + adi,pins = <ADI_ADSP_PIN('B', 14) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 10) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 11) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 12) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 13) ADI_ADSP_PINFUNC_ALT0>, + <ADI_ADSP_PIN('B', 15) ADI_ADSP_PINFUNC_ALT0>; + }; +}; + +&pinctrl0 { + adi,npins = <92>; +}; + +&gpio0 { + adi,ngpios = <92>; +}; + +&clk{ + compatible = "adi,sc57x-clocks"; +}; + +&uart0{ + clocks = <&clk ADSP_SC57X_CLK_CGU0_SCLK0>; +}; + +&spi2{ + clocks = <&clk ADSP_SC57X_CLK_CGU0_SCLK1>; + reg = <0x31044000 0x1000>; +}; + +&wdog{ + clocks = <&clk ADSP_SC57X_CLK_CGU0_SCLK0>; +}; + +ð0{ + reg = <0x3100C000 0x1000>; +}; + +&mmc{ + clocks = <&dummy>, <&clk ADSP_SC57X_CLK_CGU0_SCLK0>; +}; + +&i2c0{ + clocks = <&clk ADSP_SC57X_CLK_CGU0_SCLK0>; +}; + +&i2c1{ + clocks = <&clk ADSP_SC57X_CLK_CGU0_SCLK0>; +}; + +&i2c2{ + clocks = <&clk ADSP_SC57X_CLK_CGU0_SCLK0>; +}; diff --git a/board/adi/sc573-ezkit/Makefile b/board/adi/sc573-ezkit/Makefile new file mode 100644 index 00000000000..0ea725b992b --- /dev/null +++ b/board/adi/sc573-ezkit/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# +# (C) Copyright 2025 - Analog Devices, Inc. +# + +obj-y += sc573-ezkit.o diff --git a/board/adi/sc573-ezkit/sc573-ezkit.c b/board/adi/sc573-ezkit/sc573-ezkit.c new file mode 100644 index 00000000000..288c2670761 --- /dev/null +++ b/board/adi/sc573-ezkit/sc573-ezkit.c @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * (C) Copyright 2025 - Analog Devices, Inc. + */ + +#include <phy.h> +#include <asm/u-boot.h> +#include <asm/arch-adi/sc5xx/sc5xx.h> +#include <asm/arch-adi/sc5xx/soc.h> + +int board_phy_config(struct phy_device *phydev) +{ + fixup_dp83867_phy(phydev); + return 0; +} + +int board_init(void) +{ + sc5xx_enable_rgmii(); + return 0; +} diff --git a/board/adi/sc573-ezkit/sc573-ezkit.env b/board/adi/sc573-ezkit/sc573-ezkit.env index 26f7b6cb799..d53a72dca57 100644 --- a/board/adi/sc573-ezkit/sc573-ezkit.env +++ b/board/adi/sc573-ezkit/sc573-ezkit.env @@ -4,10 +4,15 @@ * (C) Copyright 2024 - Analog Devices, Inc. */ -#include <env/adi/adi_boot.env> - -adi_stage2_offset=0x20000 -adi_image_offset=0xE0000 -adi_rfs_offset=0x6E0000 -loadaddr=0x83000000 +adi_stage2_offset=CONFIG_SC5XX_UBOOT_OFFSET +adi_image_offset=CONFIG_SC5XX_FITIMAGE_OFFSET +adi_rfs_offset=CONFIG_SC5XX_ROOTFS_OFFSET jffs2file=adsp-sc5xx-__stringify(CONFIG_ADI_IMAGE)-adsp-sc573-ezkit.jffs2 +loadaddr=CONFIG_SC5XX_LOADADDR + +#define USE_NFS +#define USE_SPI +#define USE_RAM +#define USE_MMC + +#include <env/adi/adi_boot.env> diff --git a/configs/sc573-ezkit_defconfig b/configs/sc573-ezkit_defconfig new file mode 100644 index 00000000000..e1e59b359aa --- /dev/null +++ b/configs/sc573-ezkit_defconfig @@ -0,0 +1,102 @@ +CONFIG_ARM=y +CONFIG_SYS_ARM_CACHE_WRITETHROUGH=y +CONFIG_ARCH_SC5XX=y +CONFIG_SYS_MALLOC_LEN=0x100000 +CONFIG_SPL_GPIO=y +CONFIG_ENV_SIZE=0x4000 +CONFIG_ENV_OFFSET=0xD0000 +CONFIG_ENV_SECT_SIZE=0x4000 +CONFIG_DM_GPIO=y +CONFIG_SPL_SERIAL=y +CONFIG_SPL_SYS_MALLOC_F_LEN=0x10000 +CONFIG_SC5XX_UBOOT_OFFSET=0x20000 +CONFIG_SC5XX_FITIMAGE_OFFSET=0xE0000 +CONFIG_SC5XX_ROOTFS_OFFSET=0x6E0000 +CONFIG_SC5XX_LOADADDR=0x83000000 +# CONFIG_PACK_FITIMAGE is not set +# CONFIG_PACK_ROOTFS is not set +CONFIG_WATCHDOG_TIMEOUT_MSECS=60000 +CONFIG_CGU0_CLKOUTSEL=7 +# CONFIG_EFI_LOADER is not set +CONFIG_FIT=y +CONFIG_FIT_SIGNATURE=y +CONFIG_LEGACY_IMAGE_FORMAT=y +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="run ramboot" +CONFIG_SYS_CBSIZE=512 +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +CONFIG_SPL_I2C=y +CONFIG_CMD_BOOTZ=y +# CONFIG_BOOTM_NETBSD is not set +# CONFIG_BOOTM_PLAN9 is not set +# CONFIG_BOOTM_RTEMS is not set +# CONFIG_BOOTM_VXWORKS is not set +# CONFIG_CMD_ELF is not set +CONFIG_CMD_DM=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +# CONFIG_CMD_PINMUX is not set +CONFIG_CMD_SPI=y +CONFIG_CMD_USB=y +CONFIG_SYS_DISABLE_AUTOLOAD=y +CONFIG_CMD_DHCP=y +CONFIG_CMD_DNS=y +CONFIG_CMD_MII=y +# CONFIG_CMD_MDIO is not set +CONFIG_CMD_PING=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y +CONFIG_CMD_FS_GENERIC=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_OF_EMBED=y +CONFIG_ENV_OVERWRITE=y +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_USE_HOSTNAME=y +CONFIG_HOSTNAME="sc57x" +CONFIG_NET_RETRY_COUNT=20 +CONFIG_IP_DEFRAG=y +CONFIG_USE_GATEWAYIP=y +CONFIG_GATEWAYIP="192.168.0.1" +CONFIG_USE_IPADDR=y +CONFIG_IPADDR="192.168.0.15" +CONFIG_USE_NETMASK=y +CONFIG_NETMASK="255.255.255.0" +CONFIG_USE_ROOTPATH=y +CONFIG_ROOTPATH="/romfs" +CONFIG_USE_SERVERIP=y +CONFIG_SERVERIP="192.168.0.2" +CONFIG_SPL_CLK=y +CONFIG_SPL_CLK_CCF=y +CONFIG_GPIO_HOG=y +CONFIG_SPL_GPIO_HOG=y +CONFIG_DM_GPIO_LOOKUP_LABEL=y +CONFIG_SPL_DM_GPIO_LOOKUP_LABEL=y +CONFIG_MCP230XX_GPIO=y +CONFIG_DM_I2C=y +CONFIG_DM_I2C_GPIO=y +CONFIG_SYS_I2C_ADI=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_SNPS=y +CONFIG_MTD=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_ETH_DESIGNWARE=y +CONFIG_DW_ALTDESCRIPTOR=y +CONFIG_PINCTRL=y +# CONFIG_PINCTRL_GENERIC is not set +CONFIG_SPL_PINCTRL=y +# CONFIG_SPL_PINCTRL_GENERIC is not set +CONFIG_SPECIFY_CONSOLE_INDEX=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_ADI_SPI3=y +CONFIG_SPL_TIMER=y +CONFIG_USB=y +CONFIG_USB_MUSB_HOST=y +CONFIG_USB_MUSB_SC5XX=y +CONFIG_USB_MUSB_PIO_ONLY=y +CONFIG_USB_STORAGE=y +CONFIG_FAT_WRITE=y +# CONFIG_REGEX is not set -- 2.45.2