mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
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: Marek Vasut <marex@denx.de> Cc: Andreas Bießmann <andreas.devel@googlemail.com> Cc: Wenyou Yang <wenyou.yang@atmel.com> Reviewed-by: Andreas Bießmann <andreas@biessmann.org> [minor compile fix for SAMA5D2] Signed-off-by: Andreas Bießmann <andreas@biessmann.org>
This commit is contained in:
parent
885fc03aab
commit
1c24f13f69
4 changed files with 39 additions and 21 deletions
|
@ -10,8 +10,8 @@ obj-$(CONFIG_AT91SAM9M10G45) += mpddrc.o spl_at91.o
|
|||
obj-$(CONFIG_AT91SAM9N12) += 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_SAMA5D3) += mpddrc.o spl_atmel.o
|
||||
obj-$(CONFIG_SAMA5D4) += mpddrc.o spl_atmel.o matrix.o atmel_sfr.o
|
||||
obj-$(CONFIG_SAMA5D3) += bootparams_atmel.o mpddrc.o spl_atmel.o
|
||||
obj-$(CONFIG_SAMA5D4) += bootparams_atmel.o mpddrc.o spl_atmel.o matrix.o atmel_sfr.o
|
||||
obj-y += spl.o
|
||||
endif
|
||||
|
||||
|
|
25
arch/arm/mach-at91/include/mach/sama5_boot.h
Normal file
25
arch/arm/mach-at91/include/mach/sama5_boot.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* 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 @@
|
|||
/* No PMECC 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__
|
||||
unsigned int get_chip_id(void);
|
||||
unsigned int get_extension_chip_id(void);
|
||||
|
|
|
@ -23,20 +23,22 @@ void at91_disable_wdt(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SAMA5D2)
|
||||
#if defined(CONFIG_SAMA5D2) || defined(CONFIG_SAMA5D3) || \
|
||||
defined(CONFIG_SAMA5D4)
|
||||
#include <asm/arch/sama5_boot.h>
|
||||
struct {
|
||||
u32 r4;
|
||||
} bootrom_stash __attribute__((section(".data")));
|
||||
|
||||
u32 spl_boot_device(void)
|
||||
{
|
||||
u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_FROM_OFF) &
|
||||
ATMEL_SAMA5D2_BOOT_FROM_MASK;
|
||||
u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_DEV_ID_OFF) &
|
||||
ATMEL_SAMA5D2_BOOT_DEV_ID_MASK;
|
||||
u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_FROM_OFF) &
|
||||
ATMEL_SAMA5_BOOT_FROM_MASK;
|
||||
u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_DEV_ID_OFF) &
|
||||
ATMEL_SAMA5_BOOT_DEV_ID_MASK;
|
||||
|
||||
#if defined(CONFIG_SYS_USE_MMC)
|
||||
if (dev == ATMEL_SAMA5D2_BOOT_FROM_MCI) {
|
||||
if (dev == ATMEL_SAMA5_BOOT_FROM_MCI) {
|
||||
if (off == 0)
|
||||
return BOOT_DEVICE_MMC1;
|
||||
if (off == 1)
|
||||
|
@ -47,10 +49,13 @@ u32 spl_boot_device(void)
|
|||
#endif
|
||||
|
||||
#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;
|
||||
#endif
|
||||
|
||||
if (dev == ATMEL_SAMA5_BOOT_FROM_SAMBA)
|
||||
return BOOT_DEVICE_USB;
|
||||
|
||||
printf("ERROR: SMC/TWI/QSPI boot device not supported!\n"
|
||||
" Boot device %i, controller number %i\n", dev, off);
|
||||
|
||||
|
|
Loading…
Reference in a new issue