mx6cuboxi: fix board detection while patching device-tree phy nodes
authorJosua Mayer <josua@solid-run.com>
Thu, 16 Jun 2022 08:40:15 +0000 (11:40 +0300)
committerStefano Babic <sbabic@denx.de>
Mon, 25 Jul 2022 13:08:23 +0000 (15:08 +0200)
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@solid-run.com>
board/solidrun/mx6cuboxi/mx6cuboxi.c

index 42aa5cb..debf4f6 100644 (file)
@@ -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) {