summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2021-10-21 14:52:15 +0300
committerTom Rini <trini@konsulko.com>2021-10-21 14:52:15 +0300
commitf200a4bcecf1be6d8b546f0eb6af6403c93d80dd (patch)
tree5c5dfde8a916fd40ce0455ed1a7ead151719ecbb /board
parent79b8849d4c1e73df2a79a1d5a5f6166d0dd67a12 (diff)
parentbd4064ff8a82460d6a497faf66ac5830ffe452b1 (diff)
downloadu-boot-f200a4bcecf1be6d8b546f0eb6af6403c93d80dd.tar.xz
Merge https://source.denx.de/u-boot/custodians/u-boot-marvell
- Turris MOX and Omnia changes, mostly moving to Kconfig (Marek) - a37xx: pci: Misc smaller fixes (Pali) - cmd: tlv_eeprom: Fix building with DEBUG enabled (Sven) - termios_linux.h: Fix tcsendbreak() implementation (Pali) - mvebu: Add missing "if SPL" (Tom)
Diffstat (limited to 'board')
-rw-r--r--board/CZ.NIC/turris_mox/turris_mox.c86
-rw-r--r--board/CZ.NIC/turris_omnia/turris_omnia.c26
2 files changed, 58 insertions, 54 deletions
diff --git a/board/CZ.NIC/turris_mox/turris_mox.c b/board/CZ.NIC/turris_mox/turris_mox.c
index 428cd23a19..2202eb8cfb 100644
--- a/board/CZ.NIC/turris_mox/turris_mox.c
+++ b/board/CZ.NIC/turris_mox/turris_mox.c
@@ -359,20 +359,22 @@ static int get_reset_gpio(struct gpio_desc *reset_gpio)
int misc_init_r(void)
{
- int ret;
- u8 mac1[6], mac2[6];
+ u8 mac[2][6];
+ int i, ret;
- ret = mbox_sp_get_board_info(NULL, mac1, mac2, NULL, NULL);
+ ret = mbox_sp_get_board_info(NULL, mac[0], mac[1], NULL, NULL);
if (ret < 0) {
printf("Cannot read data from OTP!\n");
return 0;
}
- if (is_valid_ethaddr(mac1) && !env_get("ethaddr"))
- eth_env_set_enetaddr("ethaddr", mac1);
+ for (i = 0; i < 2; ++i) {
+ u8 oldmac[6];
- if (is_valid_ethaddr(mac2) && !env_get("eth1addr"))
- eth_env_set_enetaddr("eth1addr", mac2);
+ if (is_valid_ethaddr(mac[i]) &&
+ !eth_env_get_enetaddr_by_index("eth", i, oldmac))
+ eth_env_set_enetaddr_by_index("eth", i, mac[i]);
+ }
return 0;
}
@@ -485,44 +487,34 @@ static void handle_reset_button(void)
}
}
-static void mox_print_info(void)
+int show_board_info(void)
{
- int ret, board_version, ram_size;
- u64 serial_number;
+ int i, ret, board_version, ram_size, is_sd;
const char *pub_key;
+ const u8 *topology;
+ u64 serial_number;
+
+ printf("Model: CZ.NIC Turris Mox Board\n");
ret = mbox_sp_get_board_info(&serial_number, NULL, NULL, &board_version,
&ram_size);
- if (ret < 0)
- return;
-
- printf("Turris Mox:\n");
- printf(" Board version: %i\n", board_version);
- printf(" RAM size: %i MiB\n", ram_size);
- printf(" Serial Number: %016llX\n", serial_number);
+ if (ret < 0) {
+ printf(" Cannot read board info: %i\n", ret);
+ } else {
+ printf(" Board version: %i\n", board_version);
+ printf(" RAM size: %i MiB\n", ram_size);
+ printf(" Serial Number: %016llX\n", serial_number);
+ }
pub_key = mox_sp_get_ecdsa_public_key();
if (pub_key)
printf(" ECDSA Public Key: %s\n", pub_key);
else
- printf("Cannot read ECDSA Public Key\n");
-}
-
-int last_stage_init(void)
-{
- int ret, i;
- const u8 *topology;
- int is_sd;
- struct mii_dev *bus;
- struct gpio_desc reset_gpio = {};
-
- mox_print_info();
+ printf(" Cannot read ECDSA Public Key\n");
ret = mox_get_topology(&topology, &module_count, &is_sd);
- if (ret) {
+ if (ret)
printf("Cannot read module topology!\n");
- return 0;
- }
printf(" SD/eMMC version: %s\n", is_sd ? "SD" : "eMMC");
@@ -554,8 +546,7 @@ int last_stage_init(void)
}
}
- /* now check if modules are connected in supported mode */
-
+ /* check if modules are connected in supported mode */
for (i = 0; i < module_count; ++i) {
switch (topology[i]) {
case MOX_MODULE_SFP:
@@ -616,10 +607,19 @@ int last_stage_init(void)
}
}
- /* now configure modules */
+ if (module_count)
+ printf("\n");
+
+ return 0;
+}
+
+int last_stage_init(void)
+{
+ struct gpio_desc reset_gpio = {};
+ /* configure modules */
if (get_reset_gpio(&reset_gpio) < 0)
- return 0;
+ goto handle_reset_btn;
if (peridot > 0) {
if (configure_peridots(&reset_gpio) < 0) {
@@ -633,16 +633,19 @@ int last_stage_init(void)
mdelay(50);
}
+ /*
+ * check if the addresses are set by reading Scratch & Misc register
+ * 0x70 of Peridot (and potentially Topaz) modules
+ */
if (peridot || topaz) {
- /*
- * now check if the addresses are set by reading Scratch & Misc
- * register 0x70 of Peridot (and potentially Topaz) modules
- */
+ struct mii_dev *bus;
bus = miiphy_get_dev_by_name("neta@30000");
if (!bus) {
printf("Cannot get MDIO bus device!\n");
} else {
+ int i;
+
for (i = 0; i < peridot; ++i)
check_switch_address(bus, 0x10 + i);
@@ -653,8 +656,7 @@ int last_stage_init(void)
}
}
- printf("\n");
-
+handle_reset_btn:
handle_reset_button();
return 0;
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index a48e1f5c30..39051a803a 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -468,7 +468,7 @@ static struct udevice *get_atsha204a_dev(void)
return dev;
}
-int checkboard(void)
+int show_board_info(void)
{
u32 version_num, serial_num;
int err = 1;
@@ -496,7 +496,7 @@ int checkboard(void)
}
out:
- printf("Turris Omnia:\n");
+ printf("Model: Turris Omnia\n");
printf(" RAM size: %i MiB\n", omnia_get_ram_size_gb() * 1024);
if (err)
printf(" Serial Number: unknown\n");
@@ -518,6 +518,15 @@ static void increment_mac(u8 *mac)
}
}
+static void set_mac_if_invalid(int i, u8 *mac)
+{
+ u8 oldmac[6];
+
+ if (is_valid_ethaddr(mac) &&
+ !eth_env_get_enetaddr_by_index("eth", i, oldmac))
+ eth_env_set_enetaddr_by_index("eth", i, mac);
+}
+
int misc_init_r(void)
{
int err;
@@ -550,18 +559,11 @@ int misc_init_r(void)
mac[4] = mac1[2];
mac[5] = mac1[3];
- if (is_valid_ethaddr(mac))
- eth_env_set_enetaddr("eth1addr", mac);
-
+ set_mac_if_invalid(1, mac);
increment_mac(mac);
-
- if (is_valid_ethaddr(mac))
- eth_env_set_enetaddr("eth2addr", mac);
-
+ set_mac_if_invalid(2, mac);
increment_mac(mac);
-
- if (is_valid_ethaddr(mac))
- eth_env_set_enetaddr("ethaddr", mac);
+ set_mac_if_invalid(0, mac);
out:
return 0;