From f4c925bb7b2ef75900e463b1ee3f2e3dd65deb0c Mon Sep 17 00:00:00 2001 From: Josua Mayer Date: Thu, 16 Jun 2022 11:40:15 +0300 Subject: [PATCH] mx6cuboxi: fix board detection while patching device-tree phy nodes 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: 7d3c907c ("mx6cuboxi: fixup dtb ethernet phy nodes before booting an OS") Signed-off-by: Josua Mayer --- 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.39.5