aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmjad Ouled-Ameur <aouledameur@baylibre.com>2021-10-29 16:08:17 +0200
committerTom Rini <trini@konsulko.com>2022-01-15 10:42:51 -0500
commit05a38bdf43625c3b110d70f863aab9fb1d387730 (patch)
tree1197729c759b61a07238b916cec94da3c34ea64b
parent8aef15a6bcbf52f3c781162924ee5a1fbe51ebac (diff)
downloadu-boot-WIP/2022-01-15-TI-platform-updates.zip
u-boot-WIP/2022-01-15-TI-platform-updates.tar.gz
u-boot-WIP/2022-01-15-TI-platform-updates.tar.bz2
board: ti: am335x: Choose CPSW or PRUSS configuration based on jumper settingWIP/2022-01-15-TI-platform-updates
The am335x-ice-v2 board's Ethernet ports can be configured in 'MII' or 'RMII' mode to be connected to 'PRUSS' or 'CPSW' Ethernet subsystems. This patch sets the environment variable 'ice_mii' to 'mii' or 'rmii' accordingly. Based on that we choose the appropriate board devicetree i.e. 'am335x-ice-v2.dtb' or 'am335x-ice-v2-prueth.dtb'. Since there are 2 Ethernet ports with 2 modes, there can be 4 configurations but for now we consider both ports in different modes to be an invalid configuration and prevent boot in that case. Signed-off-by: Roger Quadros <rogerq@ti.com> [Amjad: use overlay instead of using new am335x-ice-v2-prueth.dtb] Signed-off-by: Amjad Ouled-Ameur <aouledameur@baylibre.com> Reviewed-by: Tom Rini <trini@konsulko.com>
-rw-r--r--board/ti/am335x/board.c17
-rw-r--r--include/configs/am335x_evm.h5
-rw-r--r--include/configs/ti_armv7_common.h1
3 files changed, 22 insertions, 1 deletions
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index e8555de..b50e7a0 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -11,6 +11,7 @@
#include <dm.h>
#include <env.h>
#include <errno.h>
+#include <hang.h>
#include <image.h>
#include <init.h>
#include <malloc.h>
@@ -691,6 +692,8 @@ done:
}
#endif
+static bool prueth_is_mii = true;
+
/*
* Basic board specific setup. Pinmux has been handled already.
*/
@@ -710,6 +713,8 @@ int board_init(void)
if (board_is_icev2()) {
int rv;
u32 reg;
+ bool eth0_is_mii = true;
+ bool eth1_is_mii = true;
REQUEST_AND_SET_GPIO(GPIO_PR1_MII_CTRL);
/* Make J19 status available on GPIO1_26 */
@@ -740,6 +745,7 @@ int board_init(void)
writel(reg, GPIO0_IRQSTATUS1); /* clear irq */
/* RMII mode */
printf("ETH0, CPSW\n");
+ eth0_is_mii = false;
} else {
/* MII mode */
printf("ETH0, PRU\n");
@@ -752,12 +758,21 @@ int board_init(void)
/* RMII mode */
printf("ETH1, CPSW\n");
gpio_set_value(GPIO_MUX_MII_CTRL, 1);
+ eth1_is_mii = false;
} else {
/* MII mode */
printf("ETH1, PRU\n");
cdce913_data.pdiv2 = 4; /* 25MHz PHY clk */
}
+ if (eth0_is_mii != eth1_is_mii) {
+ printf("Unsupported Ethernet port configuration\n");
+ printf("Both ports must be set as RMII or MII\n");
+ hang();
+ }
+
+ prueth_is_mii = eth0_is_mii;
+
/* disable rising edge IRQs */
reg = readl(GPIO0_RISINGDETECT) & ~BIT(11);
writel(reg, GPIO0_RISINGDETECT);
@@ -852,6 +867,8 @@ int board_late_init(void)
if (is_valid_ethaddr(mac_addr))
eth_env_set_enetaddr("eth1addr", mac_addr);
}
+
+ env_set("ice_mii", prueth_is_mii ? "mii" : "rmii");
#endif
if (!env_get("serial#")) {
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 7fb1b3a..0f34080 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -143,7 +143,10 @@
"if test $board_name = A335X_SK; then " \
"setenv fdtfile am335x-evmsk.dtb; fi; " \
"if test $board_name = A335_ICE; then " \
- "setenv fdtfile am335x-icev2.dtb; fi; " \
+ "setenv fdtfile am335x-icev2.dtb; " \
+ "if test $ice_mii = mii; then " \
+ "setenv pxe_label_override Pruss; fi;" \
+ "fi; " \
"if test $fdtfile = undefined; then " \
"echo WARNING: Could not determine device tree to use; fi; \0" \
"init_console=" \
diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
index fa48cd2..797e121 100644
--- a/include/configs/ti_armv7_common.h
+++ b/include/configs/ti_armv7_common.h
@@ -37,6 +37,7 @@
"fdtaddr=0x88000000\0" \
"dtboaddr=0x89000000\0" \
"fdt_addr_r=0x88000000\0" \
+ "fdtoverlay_addr_r=0x89000000\0" \
"rdaddr=0x88080000\0" \
"ramdisk_addr_r=0x88080000\0" \
"scriptaddr=0x80000000\0" \