[PATCH] mx6cuboxi: fix board detection while patching device-tree phy nodes

Josua Mayer josua at solid-run.com
Thu Jun 16 10:40:15 CEST 2022


ft_board_setup relies on the board_type() function to optimize which phy
nodes need to be enabled for Linux.
Add calls to setup and release the board-detect GPIOs.

Also fix the switch-case statement to only enable phy address 4 for
Cubox and unknown devices.

Fixes: 741ce308 ("mx6cuboxi: fixup dtb ethernet phy nodes before booting an OS")
Signed-off-by: Josua Mayer <josua at solid-run.com>
---
 board/solidrun/mx6cuboxi/mx6cuboxi.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
index 42aa5cb63c..debf4f6a3b 100644
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
@@ -449,15 +449,26 @@ int ft_board_setup(void *fdt, struct bd_info *bd)
 	int node_phy0, node_phy1, node_phy4;
 	int ret, phy;
 	bool enable_phy0 = false, enable_phy1 = false, enable_phy4 = false;
+	enum board_type board;
+
+	// detect device
+	request_detect_gpios();
+	board = board_type();
+	free_detect_gpios();
 
 	// detect phy
 	phy = find_ethernet_phy();
 	if (phy == 0 || phy == 4) {
 		enable_phy0 = true;
-		switch (board_type()) {
+		switch (board) {
+		case HUMMINGBOARD:
+		case HUMMINGBOARD2:
+			/* atheros phy may appear only at address 0 */
+			break;
 		case CUBOXI:
 		case UNKNOWN:
 		default:
+			/* atheros phy may appear at either address 0 or 4 */
 			enable_phy4 = true;
 		}
 	} else if (phy == 1) {
-- 
2.35.3



More information about the U-Boot mailing list