提交 1c24f13f 编写于 作者: M Marek Vasut 提交者: Andreas Bießmann

ARM: at91: sama5: Extend boot device autodetection

Extend the boot device autodetection from SAMA5D2 only to the entire
SAMA5Dx family of microcontrollers.
Signed-off-by: NMarek Vasut <marex@denx.de>
Cc: Andreas Bießmann <andreas.devel@googlemail.com>
Cc: Wenyou Yang <wenyou.yang@atmel.com>
Reviewed-by: NAndreas Bießmann <andreas@biessmann.org>
[minor compile fix for SAMA5D2]
Signed-off-by: NAndreas Bießmann <andreas@biessmann.org>
上级 885fc03a
...@@ -10,8 +10,8 @@ obj-$(CONFIG_AT91SAM9M10G45) += mpddrc.o spl_at91.o ...@@ -10,8 +10,8 @@ obj-$(CONFIG_AT91SAM9M10G45) += mpddrc.o spl_at91.o
obj-$(CONFIG_AT91SAM9N12) += mpddrc.o spl_at91.o obj-$(CONFIG_AT91SAM9N12) += mpddrc.o spl_at91.o
obj-$(CONFIG_AT91SAM9X5) += mpddrc.o spl_at91.o obj-$(CONFIG_AT91SAM9X5) += mpddrc.o spl_at91.o
obj-$(CONFIG_SAMA5D2) += bootparams_atmel.o mpddrc.o spl_atmel.o matrix.o atmel_sfr.o obj-$(CONFIG_SAMA5D2) += bootparams_atmel.o mpddrc.o spl_atmel.o matrix.o atmel_sfr.o
obj-$(CONFIG_SAMA5D3) += mpddrc.o spl_atmel.o obj-$(CONFIG_SAMA5D3) += bootparams_atmel.o mpddrc.o spl_atmel.o
obj-$(CONFIG_SAMA5D4) += mpddrc.o spl_atmel.o matrix.o atmel_sfr.o obj-$(CONFIG_SAMA5D4) += bootparams_atmel.o mpddrc.o spl_atmel.o matrix.o atmel_sfr.o
obj-y += spl.o obj-y += spl.o
endif endif
......
/*
* Boot mode definitions for the SAMA5Dx SoC
*
* Copyright (C) 2016 Marek Vasut <marex@denx.de>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __SAMA5_BOOT_H
#define __SAMA5_BOOT_H
/* Boot modes stored by BootROM in r4 */
#define ATMEL_SAMA5_BOOT_FROM_OFF 0
#define ATMEL_SAMA5_BOOT_FROM_MASK 0xf
#define ATMEL_SAMA5_BOOT_FROM_SPI (0 << 0)
#define ATMEL_SAMA5_BOOT_FROM_MCI (1 << 0)
#define ATMEL_SAMA5_BOOT_FROM_SMC (2 << 0)
#define ATMEL_SAMA5_BOOT_FROM_TWI (3 << 0)
#define ATMEL_SAMA5_BOOT_FROM_QSPI (4 << 0)
#define ATMEL_SAMA5_BOOT_FROM_SAMBA (7 << 0)
#define ATMEL_SAMA5_BOOT_DEV_ID_OFF 4
#define ATMEL_SAMA5_BOOT_DEV_ID_MASK 0xf
#endif /* __SAMA5_BOOT_H */
...@@ -230,18 +230,6 @@ ...@@ -230,18 +230,6 @@
/* No PMECC Galois table in ROM */ /* No PMECC Galois table in ROM */
#define NO_GALOIS_TABLE_IN_ROM #define NO_GALOIS_TABLE_IN_ROM
/* Boot modes stored by BootROM in r4 */
#define ATMEL_SAMA5D2_BOOT_FROM_OFF 0
#define ATMEL_SAMA5D2_BOOT_FROM_MASK 0xf
#define ATMEL_SAMA5D2_BOOT_FROM_SPI (0 << 0)
#define ATMEL_SAMA5D2_BOOT_FROM_MCI (1 << 0)
#define ATMEL_SAMA5D2_BOOT_FROM_SMC (2 << 0)
#define ATMEL_SAMA5D2_BOOT_FROM_TWI (3 << 0)
#define ATMEL_SAMA5D2_BOOT_FROM_QSPI (4 << 0)
#define ATMEL_SAMA5D2_BOOT_DEV_ID_OFF 4
#define ATMEL_SAMA5D2_BOOT_DEV_ID_MASK 0xf
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
unsigned int get_chip_id(void); unsigned int get_chip_id(void);
unsigned int get_extension_chip_id(void); unsigned int get_extension_chip_id(void);
......
...@@ -23,20 +23,22 @@ void at91_disable_wdt(void) ...@@ -23,20 +23,22 @@ void at91_disable_wdt(void)
} }
#endif #endif
#if defined(CONFIG_SAMA5D2) #if defined(CONFIG_SAMA5D2) || defined(CONFIG_SAMA5D3) || \
defined(CONFIG_SAMA5D4)
#include <asm/arch/sama5_boot.h>
struct { struct {
u32 r4; u32 r4;
} bootrom_stash __attribute__((section(".data"))); } bootrom_stash __attribute__((section(".data")));
u32 spl_boot_device(void) u32 spl_boot_device(void)
{ {
u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_FROM_OFF) & u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_FROM_OFF) &
ATMEL_SAMA5D2_BOOT_FROM_MASK; ATMEL_SAMA5_BOOT_FROM_MASK;
u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_DEV_ID_OFF) & u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_DEV_ID_OFF) &
ATMEL_SAMA5D2_BOOT_DEV_ID_MASK; ATMEL_SAMA5_BOOT_DEV_ID_MASK;
#if defined(CONFIG_SYS_USE_MMC) #if defined(CONFIG_SYS_USE_MMC)
if (dev == ATMEL_SAMA5D2_BOOT_FROM_MCI) { if (dev == ATMEL_SAMA5_BOOT_FROM_MCI) {
if (off == 0) if (off == 0)
return BOOT_DEVICE_MMC1; return BOOT_DEVICE_MMC1;
if (off == 1) if (off == 1)
...@@ -47,10 +49,13 @@ u32 spl_boot_device(void) ...@@ -47,10 +49,13 @@ u32 spl_boot_device(void)
#endif #endif
#if defined(CONFIG_SYS_USE_SERIALFLASH) || defined(CONFIG_SYS_USE_SPIFLASH) #if defined(CONFIG_SYS_USE_SERIALFLASH) || defined(CONFIG_SYS_USE_SPIFLASH)
if (dev == ATMEL_SAMA5D2_BOOT_FROM_SPI) if (dev == ATMEL_SAMA5_BOOT_FROM_SPI)
return BOOT_DEVICE_SPI; return BOOT_DEVICE_SPI;
#endif #endif
if (dev == ATMEL_SAMA5_BOOT_FROM_SAMBA)
return BOOT_DEVICE_USB;
printf("ERROR: SMC/TWI/QSPI boot device not supported!\n" printf("ERROR: SMC/TWI/QSPI boot device not supported!\n"
" Boot device %i, controller number %i\n", dev, off); " Boot device %i, controller number %i\n", dev, off);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册