]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
c5e8885a BS |
2 | /* |
3 | * Copyright (C) 2013 Atmel Corporation | |
4 | * Bo Shen <[email protected]> | |
c5e8885a BS |
5 | */ |
6 | ||
7 | #include <common.h> | |
29a4a9f1 | 8 | #include <hang.h> |
c5e8885a BS |
9 | #include <asm/io.h> |
10 | #include <asm/arch/at91_common.h> | |
c5e8885a BS |
11 | #include <asm/arch/at91_wdt.h> |
12 | #include <asm/arch/clk.h> | |
13 | #include <spl.h> | |
14 | ||
1473f6ac | 15 | #if !defined(CONFIG_WDT_AT91) |
5abc00d0 | 16 | void at91_disable_wdt(void) |
c5e8885a BS |
17 | { |
18 | struct at91_wdt *wdt = (struct at91_wdt *)ATMEL_BASE_WDT; | |
19 | ||
20 | writel(AT91_WDT_MR_WDDIS, &wdt->mr); | |
21 | } | |
49b461f3 | 22 | #endif |
c5e8885a | 23 | |
1c24f13f MV |
24 | #if defined(CONFIG_SAMA5D2) || defined(CONFIG_SAMA5D3) || \ |
25 | defined(CONFIG_SAMA5D4) | |
26 | #include <asm/arch/sama5_boot.h> | |
bb0c63a5 MV |
27 | struct { |
28 | u32 r4; | |
29 | } bootrom_stash __attribute__((section(".data"))); | |
30 | ||
31 | u32 spl_boot_device(void) | |
32 | { | |
1c24f13f MV |
33 | u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_FROM_OFF) & |
34 | ATMEL_SAMA5_BOOT_FROM_MASK; | |
35 | u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_DEV_ID_OFF) & | |
36 | ATMEL_SAMA5_BOOT_DEV_ID_MASK; | |
bb0c63a5 | 37 | |
a35c3402 | 38 | #if defined(CONFIG_SYS_USE_MMC) || defined(CONFIG_SD_BOOT) |
1c24f13f | 39 | if (dev == ATMEL_SAMA5_BOOT_FROM_MCI) { |
c00d7c33 WY |
40 | #if defined(CONFIG_SPL_OF_CONTROL) |
41 | return BOOT_DEVICE_MMC1; | |
42 | #else | |
bb0c63a5 MV |
43 | if (off == 0) |
44 | return BOOT_DEVICE_MMC1; | |
45 | if (off == 1) | |
46 | return BOOT_DEVICE_MMC2; | |
47 | printf("ERROR: MMC controller %i not present!\n", dev); | |
48 | hang(); | |
c00d7c33 | 49 | #endif |
bb0c63a5 MV |
50 | } |
51 | #endif | |
52 | ||
a35c3402 WY |
53 | #if defined(CONFIG_SYS_USE_SERIALFLASH) || \ |
54 | defined(CONFIG_SYS_USE_SPIFLASH) || \ | |
55 | defined(CONFIG_SPI_BOOT) | |
1c24f13f | 56 | if (dev == ATMEL_SAMA5_BOOT_FROM_SPI) |
bb0c63a5 MV |
57 | return BOOT_DEVICE_SPI; |
58 | #endif | |
dfd6d3a9 WY |
59 | if (dev == ATMEL_SAMA5_BOOT_FROM_QSPI) |
60 | return BOOT_DEVICE_SPI; | |
bb0c63a5 | 61 | |
c00d7c33 WY |
62 | if (dev == ATMEL_SAMA5_BOOT_FROM_SMC) |
63 | return BOOT_DEVICE_NAND; | |
64 | ||
1c24f13f MV |
65 | if (dev == ATMEL_SAMA5_BOOT_FROM_SAMBA) |
66 | return BOOT_DEVICE_USB; | |
67 | ||
bb0c63a5 MV |
68 | printf("ERROR: SMC/TWI/QSPI boot device not supported!\n" |
69 | " Boot device %i, controller number %i\n", dev, off); | |
70 | ||
71 | return BOOT_DEVICE_NONE; | |
72 | } | |
73 | #else | |
c5e8885a BS |
74 | u32 spl_boot_device(void) |
75 | { | |
a35c3402 | 76 | #if defined(CONFIG_SYS_USE_MMC) || defined(CONFIG_SD_BOOT) |
c5e8885a | 77 | return BOOT_DEVICE_MMC1; |
a35c3402 | 78 | #elif defined(CONFIG_SYS_USE_NANDFLASH) || defined(CONFIG_NAND_BOOT) |
27019e4a | 79 | return BOOT_DEVICE_NAND; |
a35c3402 WY |
80 | #elif defined(CONFIG_SYS_USE_SERIALFLASH) || \ |
81 | defined(CONFIG_SYS_USE_SPIFLASH) || \ | |
82 | defined(CONFIG_SPI_BOOT) | |
8a45b0ba | 83 | return BOOT_DEVICE_SPI; |
c5e8885a BS |
84 | #endif |
85 | return BOOT_DEVICE_NONE; | |
86 | } | |
bb0c63a5 | 87 | #endif |