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