1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
Index: at91bootstrap-3.5.3/board/at91sam9x5ek/at91sam9x5eknf_uboot_defconfig
===================================================================
--- at91bootstrap-3.5.3.orig/board/at91sam9x5ek/at91sam9x5eknf_uboot_defconfig 2013-04-11 05:07:35.000000000 -0500
+++ at91bootstrap-3.5.3/board/at91sam9x5ek/at91sam9x5eknf_uboot_defconfig 2013-04-29 15:13:01.390913836 -0500
@@ -42,7 +42,8 @@
ALLOW_PIO3=y
CONFIG_HAS_PIO3=y
CPU_HAS_PMECC=y
-CONFIG_LOAD_ONE_WIRE=y
+# MTS: don't load one wire
+# CONFIG_LOAD_ONE_WIRE is not set
# CONFIG_MMC_SUPPORT is not set
#
@@ -81,8 +82,8 @@
#
# PMECC Configuration
#
-CONFIG_PMECC_CORRECT_BITS_2=y
-# CONFIG_PMECC_CORRECT_BITS_4 is not set
+# CONFIG_PMECC_CORRECT_BITS_2 is not set
+CONFIG_PMECC_CORRECT_BITS_4=y
# CONFIG_PMECC_CORRECT_BITS_8 is not set
# CONFIG_PMECC_CORRECT_BITS_12 is not set
# CONFIG_PMECC_CORRECT_BITS_24 is not set
@@ -116,4 +117,5 @@
# CONFIG_USER_HW_INIT is not set
CONFIG_THUMB=y
CONFIG_SCLK=y
-CONFIG_DISABLE_WATCHDOG=y
+# MTS: don't disable watchdog
+# CONFIG_DISABLE_WATCHDOG is not set
Index: at91bootstrap-3.5.3/board/at91sam9x5ek/at91sam9x5ek.c
===================================================================
--- at91bootstrap-3.5.3.orig/board/at91sam9x5ek/at91sam9x5ek.c 2019-04-04 15:49:54.143358228 -0500
+++ at91bootstrap-3.5.3/board/at91sam9x5ek/at91sam9x5ek.c 2019-04-04 17:31:57.691176941 -0500
@@ -53,6 +53,31 @@
extern void hw_init_hook(void);
#endif
+
+static void initialize_mt_gpio(void)
+{
+ /* Configure DBGU pins */
+ const struct pio_desc mt_gpio_pins[] = {
+ /* Misc. pins -- Pins PD15-PD18 belong to PERIPH
+ * B A20-A25 until bootstrap shuts them down.
+ * This code prevents these pins from being used
+ * during boot, since we do not
+ * need these pins to boot the system and we
+ * do not want resets to toggle needlessly.
+ */
+ {"GNSS-RESET",AT91C_PIN_PD(15), 1, PIO_PULLUP, PIO_OUTPUT},
+ {"SECURE-RESET",AT91C_PIN_PD(16), 1, PIO_PULLUP, PIO_OUTPUT},
+ {"MTQ-RESET",AT91C_PIN_PD(17), 1, PIO_PULLUP, PIO_OUTPUT},
+ {"USBHUB-RESET",AT91C_PIN_PD(18), 1, PIO_PULLUP, PIO_OUTPUT},
+ {"GNSS-INT",AT91C_PIN_PD(19), 1, PIO_PULLUP, PIO_OUTPUT},
+ {"WIFI-BT-LPMODE",AT91C_PIN_PD(20), 0, PIO_PULLUP, PIO_INPUT},
+ {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A},
+ };
+
+ pio_configure(mt_gpio_pins);
+}
+
+
static void at91_dbgu_hw_init(void)
{
/* Configure DBGU pins */
@@ -198,6 +223,9 @@
slowclk_enable_osc32();
#endif
+ /* Initialize MT GPIO */
+ initialize_mt_gpio();
+
/* Initialize dbgu */
initialize_dbgu();
@@ -322,10 +350,8 @@
reg = readl(AT91C_BASE_CCFG + CCFG_EBICSA);
reg |= AT91C_EBI_CS3A_SM;
- if (get_cm_rev() == 'A')
- reg &= ~AT91C_EBI_NFD0_ON_D16;
- else
- reg |= (AT91C_EBI_DDR_MP_EN | AT91C_EBI_NFD0_ON_D16);
+ /* MTR */
+ reg |= (AT91C_EBI_DDR_MP_EN | AT91C_EBI_NFD0_ON_D16);
reg &= ~AT91C_EBI_DRV;
writel(reg, AT91C_BASE_CCFG + CCFG_EBICSA);
@@ -355,9 +381,7 @@
AT91C_BASE_SMC + SMC_CTRL3);
/* Configure the PIO controller */
- if (get_cm_rev() == 'A')
- pio_configure(nand_pins_lo);
- else
+ /* MTR2 */
pio_configure(nand_pins_hi);
writel((1 << AT91C_ID_PIOC_D), (PMC_PCER + AT91C_BASE_PMC));
|