cmd: make MTD commands depend on MTD
[oweals/u-boot.git] / cmd / mdio.c
index 5e219f699d8dfbf9d3cb068b583c4df56ac2cf87..22c8fbe856f37f482eb87f823f7baa03db22aaff 100644 (file)
@@ -203,6 +203,11 @@ static int do_mdio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc < 2)
                return CMD_RET_USAGE;
 
+#ifdef CONFIG_DM_MDIO
+       /* probe DM MII device before any operation so they are all accesible */
+       dm_mdio_probe_devices();
+#endif
+
        /*
         * We use the last specified parameters, unless new ones are
         * entered.
@@ -248,12 +253,13 @@ static int do_mdio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        case 'w':
                if (pos > 1)
                        data = simple_strtoul(argv[pos--], NULL, 16);
+               /* Intentional fall-through - Get reg for read and write */
        case 'r':
                if (pos > 1)
                        if (extract_reg_range(argv[pos--], &devadlo, &devadhi,
                                              &reglo, &reghi))
                                return CMD_RET_FAILURE;
-
+               /* Intentional fall-through - Get phy for all commands */
        default:
                if (pos > 1)
                        if (extract_phy_range(&argv[2], pos - 1, &bus,
@@ -263,6 +269,11 @@ static int do_mdio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                break;
        }
 
+       if (!bus) {
+               puts("No MDIO bus found\n");
+               return CMD_RET_FAILURE;
+       }
+
        if (op[0] == 'l') {
                mdio_list_devices();