arch: arm: Add Analog Devices SC5xx machine type
Add support for the SC5xx machine type from Analog Devices. This includes support for the SC57x, SC58x, SC59x, and SC59x-64 SoCs, which have many common features such as common ADI IP blocks, and SHARC DSP cores. This commit introduces core functionality required for all boards using an SC5xx SoC, such as: - SPL configuration - Required CPU hooks such as reset - Boot ROM interaction to load the stage 2 bootloader in the reference configuration. Other options are possible but not officially supported at this time - SoC-common configuration expected to be reused by all boards - Early initialization for system clocks and DDR controller Co-developed-by: Greg Malysa <greg.malysa@timesys.com> Signed-off-by: Greg Malysa <greg.malysa@timesys.com> Co-developed-by: Ian Roberts <ian.roberts@timesys.com> Signed-off-by: Ian Roberts <ian.roberts@timesys.com> Signed-off-by: Vasileios Bimpikas <vasileios.bimpikas@analog.com> Signed-off-by: Utsav Agarwal <utsav.agarwal@analog.com> Signed-off-by: Arturs Artamonovs <arturs.artamonovs@analog.com> Signed-off-by: Nathan Barrett-Morrison <nathan.morrison@timesys.com>
This commit is contained in:
committed by
Tom Rini
parent
054eb87743
commit
48a0b0b4b7
Vendored
+122
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* A target board needs to set these variables for the commands below to work:
|
||||
*
|
||||
* - adi_stage2_offset, the location of stage2-boot.ldr on the SPI flash
|
||||
* - adi_image_offset, location of the fitImage on the SPI flash
|
||||
* - adi_rfs_offset, location of the RFS on the SPI flash
|
||||
* - loadaddr, where you want to load things
|
||||
* - jffs2file, name of the jffs2 file for update, ex adsp-sc5xx-tiny-adsp-sc573.jffs2
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SC59X_64
|
||||
#define EARLY_PRINTK earlycon=adi_uart,0x31003000
|
||||
#else
|
||||
#define EARLY_PRINTK earlyprintk=serial,uart0,CONFIG_BAUDRATE
|
||||
#endif
|
||||
|
||||
/* Config options */
|
||||
imagefile=fitImage
|
||||
ethaddr=02:80:ad:20:31:e8
|
||||
eth1addr=02:80:ad:20:31:e9
|
||||
uart_console=CONFIG_UART_CONSOLE
|
||||
#ifdef CONFIG_SC59X_64
|
||||
fdt_high=0xffffffffffffffff
|
||||
initrd_high=0xffffffffffffffff
|
||||
#else
|
||||
fdt_high=0xffffffff
|
||||
initrd_high=0xffffffff
|
||||
#endif
|
||||
|
||||
/* Helper routines */
|
||||
init_ethernet=mii info;
|
||||
dhcp;
|
||||
setenv serverip ${tftpserverip}
|
||||
|
||||
/* Args for each boot mode */
|
||||
adi_bootargs=EARLY_PRINTK console=ttySC0,CONFIG_BAUDRATE vmalloc=512M
|
||||
ramargs=setenv bootargs ${adi_bootargs}
|
||||
|
||||
addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off
|
||||
|
||||
/* Boot modes are selectable and should be defined in the board env before including */
|
||||
#if defined(USE_NFS)
|
||||
// rootpath is set by CONFIG_ROOTPATH
|
||||
nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}${rootpath},tcp,nfsvers=3 ${adi_bootargs}
|
||||
nfsboot=run init_ethernet;
|
||||
tftp ${loadaddr} ${tftp_dir_prefix}${imagefile};
|
||||
run nfsargs;
|
||||
run addip;
|
||||
bootm ${loadaddr}
|
||||
#endif
|
||||
|
||||
#if defined(USE_MMC)
|
||||
mmcargs=setenv bootargs root=/dev/mmcblk0p1 rw rootfstype=ext4 rootwait ${adi_bootargs}
|
||||
mmcboot=mmc rescan;
|
||||
ext4load mmc 0:1 ${loadaddr} /boot/${imagefile};
|
||||
run mmcargs;
|
||||
bootm ${loadaddr}
|
||||
#endif
|
||||
|
||||
#if defined(USE_SPI) || defined(USE_OSPI)
|
||||
spiargs=setenv bootargs root=/dev/mtdblock4 rw rootfstype=jffs2 ${adi_bootargs}
|
||||
spiboot=run spiargs;
|
||||
sf probe ${sfdev};
|
||||
sf read ${loadaddr} ${adi_image_offset} ${imagesize};
|
||||
bootm ${loadaddr}
|
||||
#endif
|
||||
|
||||
#if defined(USE_OSPI)
|
||||
ospiboot=run spiboot
|
||||
#endif
|
||||
|
||||
#if defined(USE_RAM)
|
||||
ramboot=run init_ethernet;
|
||||
tftp ${loadaddr} ${tfpt_dir_prefix}${imagefile};
|
||||
run ramargs;
|
||||
bootm ${loadaddr}
|
||||
#endif
|
||||
|
||||
/* Update commands */
|
||||
stage1file=stage1-boot.ldr
|
||||
stage2file=stage2-boot.ldr
|
||||
|
||||
#if defined(USE_SPI) || defined(USE_OSPI)
|
||||
update_spi_uboot_stage1=tftp ${loadaddr} ${tftp_dir_prefix}${stage1file};
|
||||
sf probe ${sfdev};
|
||||
sf update ${loadaddr} 0x0 ${filesize}
|
||||
update_spi_uboot_stage2=tftp ${loadaddr} ${tftp_dir_prefix}${stage2file};
|
||||
sf probe ${sfdev};
|
||||
sf update ${loadaddr} ${adi_stage2_offset} ${filesize}
|
||||
update_spi_uboot=run update_spi_uboot_stage1;
|
||||
run update_spi_uboot_stage2;
|
||||
update_spi_fit=tftp ${loadaddr} ${tftp_dir_prefix}${imagefile};
|
||||
sf probe ${sfdev};
|
||||
sf update ${loadaddr} ${adi_image_offset} ${filesize};
|
||||
setenv imagesize ${filesize}
|
||||
update_spi_rfs=tftp ${loadaddr} ${tftp_dir_prefix}${jffs2file};
|
||||
sf probe ${sfdev};
|
||||
sf update ${loadaddr} ${adi_rfs_offset} ${filesize}
|
||||
|
||||
start_update_spi=run init_ethernet;
|
||||
run update_spi_uboot;
|
||||
run update_spi_fit;
|
||||
run update_spi_rfs;
|
||||
start_update_spi_uboot_only=run init_ethernet;
|
||||
run update_spi_uboot;
|
||||
#endif
|
||||
|
||||
#if defined(USE_SPI)
|
||||
update_spi=setenv sfdev CONFIG_SC_BOOT_SPI_BUS:CONFIG_SC_BOOT_SPI_SSEL;
|
||||
setenv bootcmd run spiboot;
|
||||
setenv argscmd spiargs;
|
||||
run start_update_spi;
|
||||
saveenv
|
||||
#endif
|
||||
|
||||
#if defined(USE_OSPI)
|
||||
update_ospi=setenv sfdev CONFIG_SC_BOOT_OSPI_BUS:CONFIG_SC_BOOT_OSPI_SSEL;
|
||||
setenv bootcmd run ospiboot;
|
||||
setenv argscmd spiargs;
|
||||
run start_update_spi;
|
||||
saveenv
|
||||
#endif
|
||||
Reference in New Issue
Block a user