/
0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch
177 lines (164 loc) · 6.67 KB
/
0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
From 67248791f42f7b29ba0ea15287cd1d6d195ff867 Mon Sep 17 00:00:00 2001
From: Robert Nelson <robertcnelson@gmail.com>
Date: Fri, 5 Aug 2016 16:27:55 -0500
Subject: [PATCH 2/2] NFM: Production: eeprom: assume device is BeagleBone
Black
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
---
board/ti/am335x/board.c | 61 ++++++++++++++++++++++++++------------------
board/ti/am335x/board.h | 6 +++++
board/ti/am335x/mux.c | 7 +++--
include/configs/am335x_evm.h | 2 ++
4 files changed, 49 insertions(+), 27 deletions(-)
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index e5608ac..5bef3b9 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -232,7 +232,7 @@ void am33xx_spl_board_init(void)
/* Get the frequency */
dpll_mpu_opp100.m = am335x_get_efuse_mpu_max_freq(cdev);
- if (board_is_bone(&header) || board_is_bone_lt(&header)) {
+ if (board_is_bone(&header) || board_is_bone_lt(&header) || board_is_blank_bone_lt(&header)) {
/* BeagleBone PMIC Code */
int usb_cur_lim;
@@ -266,7 +266,7 @@ void am33xx_spl_board_init(void)
* Override what we have detected since we know if we have
* a Beaglebone Black it supports 1GHz.
*/
- if (board_is_bone_lt(&header))
+ if (board_is_bone_lt(&header) || board_is_blank_bone_lt(&header))
dpll_mpu_opp100.m = MPUPLL_M_1000;
/*
@@ -376,7 +376,7 @@ const struct dpll_params *get_dpll_ddr_params(void)
if (board_is_evm_sk(&header))
return &dpll_ddr_evm_sk;
- else if (board_is_bone_lt(&header))
+ else if (board_is_bone_lt(&header) || board_is_blank_bone_lt(&header))
return &dpll_ddr_bone_black;
else if (board_is_evm_15_or_later(&header))
return &dpll_ddr_evm_sk;
@@ -462,7 +462,7 @@ void sdram_init(void)
if (board_is_evm_sk(&header))
config_ddr(303, &ioregs_evmsk, &ddr3_data,
&ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0);
- else if (board_is_bone_lt(&header))
+ else if (board_is_bone_lt(&header) || board_is_blank_bone_lt(&header))
config_ddr(400, &ioregs_bonelt,
&ddr3_beagleblack_data,
&ddr3_beagleblack_cmd_ctrl_data,
@@ -517,29 +517,40 @@ int board_late_init(void)
char safe_string[HDR_NAME_LEN + 1];
struct am335x_baseboard_id header;
- if (read_eeprom(&header) < 0)
+ if (read_eeprom(&header) < 0) {
puts("Could not get board ID.\n");
- /* Now set variables based on the header. */
- strncpy(safe_string, (char *)header.name, sizeof(header.name));
- safe_string[sizeof(header.name)] = 0;
- setenv("board_name", safe_string);
-
- /* BeagleBone Green eeprom, board_rev: 0x1a 0x00 0x00 0x00 */
- if ( (header.version[0] == 0x1a) && (header.version[1] == 0x00) &&
- (header.version[2] == 0x00) && (header.version[3] == 0x00) ) {
- setenv("board_rev", "BBG1");
- } else if ( (header.version[0] == 0x30) && (header.version[1] == 0x30) &&
- (header.version[2] == 0x41) && (header.version[3] == 0x35) ) {
- setenv("board_rev", "SE0A");
- header.version[0] = 0x53;
- header.version[1] = 0x45;
- header.version[2] = 0x30;
- header.version[3] = 0x41;
- } else {
+ /* Now set variables based on the header. */
+ strncpy(safe_string, (char *)header.name, sizeof(header.name));
+ safe_string[sizeof(header.name)] = 0;
+ setenv("board_name", safe_string);
strncpy(safe_string, (char *)header.version, sizeof(header.version));
safe_string[sizeof(header.version)] = 0;
- setenv("board_rev", safe_string);
+
+ setenv("board_name", "A335BNLT");
+ setenv("board_rev", "EMMC");
+ } else {
+ /* Now set variables based on the header. */
+ strncpy(safe_string, (char *)header.name, sizeof(header.name));
+ safe_string[sizeof(header.name)] = 0;
+ setenv("board_name", safe_string);
+
+ /* BeagleBone Green eeprom, board_rev: 0x1a 0x00 0x00 0x00 */
+ if ( (header.version[0] == 0x1a) && (header.version[1] == 0x00) &&
+ (header.version[2] == 0x00) && (header.version[3] == 0x00) ) {
+ setenv("board_rev", "BBG1");
+ } else if ( (header.version[0] == 0x30) && (header.version[1] == 0x30) &&
+ (header.version[2] == 0x41) && (header.version[3] == 0x35) ) {
+ setenv("board_rev", "SE0A");
+ header.version[0] = 0x53;
+ header.version[1] = 0x45;
+ header.version[2] = 0x30;
+ header.version[3] = 0x41;
+ } else {
+ strncpy(safe_string, (char *)header.version, sizeof(header.version));
+ safe_string[sizeof(header.version)] = 0;
+ setenv("board_rev", safe_string);
+ }
}
#endif
@@ -650,10 +661,10 @@ int board_eth_init(bd_t *bis)
}
if (read_eeprom(&header) < 0)
- puts("Could not get board ID.\n");
+ puts("Could not get board ID, assuming BeagleBone Black.\n");
if (board_is_bone(&header) || (board_is_bone_lt(&header) && !board_is_bone_lt_enhanced(&header)) ||
- board_is_idk(&header)) {
+ board_is_idk(&header) || board_is_blank_bone_lt(&header)) {
writel(MII_MODE_ENABLE, &cdev->miisel);
cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
PHY_INTERFACE_MODE_MII;
diff --git a/board/ti/am335x/board.h b/board/ti/am335x/board.h
index f083483..87fd6b6 100644
--- a/board/ti/am335x/board.h
+++ b/board/ti/am335x/board.h
@@ -39,6 +39,12 @@ static inline int board_is_bone_lt(struct am335x_baseboard_id *header)
return !strncmp(header->name, "A335BNLT", HDR_NAME_LEN);
}
+static inline int board_is_blank_bone_lt(struct am335x_baseboard_id *header)
+{
+ // Just invert of board_is_bone_lt
+ return strncmp(header->name, "A335BNLT", HDR_NAME_LEN);
+}
+
static inline int board_is_bone_lt_enhanced(struct am335x_baseboard_id *header)
{
return (board_is_bone_lt(header) &&
diff --git a/board/ti/am335x/mux.c b/board/ti/am335x/mux.c
index e12d769..a4ba3dd 100644
--- a/board/ti/am335x/mux.c
+++ b/board/ti/am335x/mux.c
@@ -371,7 +371,10 @@ void enable_board_pin_mux(struct am335x_baseboard_id *header)
configure_module_pin_mux(mmc1_pin_mux);
#endif
} else {
- puts("Unknown board, cannot configure pinmux.");
- hang();
+ puts("Unknown board: assuming BeagleBone Black.");
+ /* Beaglebone LT pinmux */
+ configure_module_pin_mux(mii1_pin_mux);
+ configure_module_pin_mux(mmc0_pin_mux);
+ configure_module_pin_mux(mmc1_pin_mux);
}
}
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index c31b373..3d04dc8 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -215,6 +215,8 @@
"setenv fdtfile am335x-boneblack-wireless.dtb; setenv fdtbase am335x-boneblack-wireless; " \
"elif test $board_rev = BWA3; then " \
"setenv fdtfile am335x-boneblack-wireless.dtb; setenv fdtbase am335x-boneblack-wireless; " \
+ "elif test $board_rev = EMMC; then " \
+ "setenv fdtfile am335x-boneblack-emmc-overlay.dtb; setenv fdtbase am335x-boneblack-emmc-overlay; " \
"else " \
"setenv fdtfile am335x-boneblack.dtb; setenv fdtbase am335x-boneblack; " \
"fi; " \
--
2.8.1