Currently uclass index is used for bind/unbind which ignores alias
sequence numbering. Use device sequence number instead as it's
the number explicitly set in the DT.

Also update documentation to use sequence number.

Signed-off-by: Zixun LI <ad...@hifiphile.com>
---
 cmd/bind.c               | 46 ++++++++++++++++++++--------------------
 doc/usage/cmd/bind.rst   | 12 +++++------
 doc/usage/cmd/unbind.rst | 14 ++++++------
 3 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/cmd/bind.c b/cmd/bind.c
index 3a59eefd5c..c0d31f5eb1 100644
--- a/cmd/bind.c
+++ b/cmd/bind.c
@@ -10,8 +10,8 @@
 #include <dm/root.h>
 #include <dm/uclass-internal.h>

-static int bind_by_class_index(const char *uclass, int index,
-                              const char *drv_name)
+static int bind_by_class_seq(const char *uclass, int seq,
+                            const char *drv_name)
 {
        static enum uclass_id uclass_id;
        struct udevice *dev;
@@ -31,9 +31,9 @@ static int bind_by_class_index(const char *uclass, int index,
                return -EINVAL;
        }

-       ret = uclass_find_device(uclass_id, index, &parent);
+       ret = uclass_find_device_by_seq(uclass_id, seq, &parent);
        if (!parent || ret) {
-               printf("Cannot find device %d of class %s\n", index, uclass);
+               printf("Cannot find device %d of class %s\n", seq, uclass);
                return ret;
        }

@@ -47,7 +47,7 @@ static int bind_by_class_index(const char *uclass, int index,
        return 0;
 }

-static int find_dev(const char *uclass, int index, struct udevice **devp)
+static int find_dev(const char *uclass, int seq, struct udevice **devp)
 {
        static enum uclass_id uclass_id;
        int rc;
@@ -58,21 +58,21 @@ static int find_dev(const char *uclass, int index, struct 
udevice **devp)
                return -EINVAL;
        }

-       rc = uclass_find_device(uclass_id, index, devp);
+       rc = uclass_find_device_by_seq(uclass_id, seq, devp);
        if (!*devp || rc) {
-               printf("Cannot find device %d of class %s\n", index, uclass);
+               printf("Cannot find device %d of class %s\n", seq, uclass);
                return rc;
        }

        return 0;
 }

-static int unbind_by_class_index(const char *uclass, int index)
+static int unbind_by_class_seq(const char *uclass, int seq)
 {
        int ret;
        struct udevice *dev;

-       ret = find_dev(uclass, index, &dev);
+       ret = find_dev(uclass, seq, &dev);
        if (ret)
                return ret;

@@ -91,8 +91,8 @@ static int unbind_by_class_index(const char *uclass, int 
index)
        return 0;
 }

-static int unbind_child_by_class_index(const char *uclass, int index,
-                                      const char *drv_name)
+static int unbind_child_by_class_seq(const char *uclass, int seq,
+                                    const char *drv_name)
 {
        struct udevice *parent;
        int ret;
@@ -104,7 +104,7 @@ static int unbind_child_by_class_index(const char *uclass, 
int index,
                return -ENOENT;
        }

-       ret = find_dev(uclass, index, &parent);
+       ret = find_dev(uclass, seq, &parent);
        if (ret)
                return ret;

@@ -217,19 +217,19 @@ static int do_bind_unbind(struct cmd_tbl *cmdtp, int 
flag, int argc,
                        return CMD_RET_USAGE;
                ret = unbind_by_node_path(argv[1]);
        } else if (!by_node && bind) {
-               int index = (argc > 2) ? dectoul(argv[2], NULL) : 0;
+               int seq = (argc > 2) ? dectoul(argv[2], NULL) : 0;

                if (argc != 4)
                        return CMD_RET_USAGE;
-               ret = bind_by_class_index(argv[1], index, argv[3]);
+               ret = bind_by_class_seq(argv[1], seq, argv[3]);
        } else if (!by_node && !bind) {
-               int index = (argc > 2) ? dectoul(argv[2], NULL) : 0;
+               int seq = (argc > 2) ? dectoul(argv[2], NULL) : 0;

                if (argc == 3)
-                       ret = unbind_by_class_index(argv[1], index);
+                       ret = unbind_by_class_seq(argv[1], seq);
                else if (argc == 4)
-                       ret = unbind_child_by_class_index(argv[1], index,
-                                                         argv[3]);
+                       ret = unbind_child_by_class_seq(argv[1], seq,
+                                                       argv[3]);
                else
                        return CMD_RET_USAGE;
        }
@@ -244,17 +244,17 @@ U_BOOT_CMD(
        bind,   4,      0,      do_bind_unbind,
        "Bind a device to a driver",
        "<node path> <driver>\n"
-       "bind <class> <index> <driver>\n"
+       "bind <class> <seq> <driver>\n"
        "Use 'dm tree' to list all devices registered in the driver model,\n"
-       "their path, class, index and current driver.\n"
+       "their path, class, sequence and current driver.\n"
 );

 U_BOOT_CMD(
        unbind, 4,      0,      do_bind_unbind,
        "Unbind a device from a driver",
        "<node path>\n"
-       "unbind <class> <index>\n"
-       "unbind <class> <index> <driver>\n"
+       "unbind <class> <seq>\n"
+       "unbind <class> <seq> <driver>\n"
        "Use 'dm tree' to list all devices registered in the driver model,\n"
-       "their path, class, index and current driver.\n"
+       "their path, class, sequence and current driver.\n"
 );
diff --git a/doc/usage/cmd/bind.rst b/doc/usage/cmd/bind.rst
index 2345778366..67a0405bab 100644
--- a/doc/usage/cmd/bind.rst
+++ b/doc/usage/cmd/bind.rst
@@ -12,7 +12,7 @@ Synopsis
 ::

     bind <node path> <driver>
-    bind <class> <index> <driver>
+    bind <class> <seq> <driver>

 Description
 -----------
@@ -30,8 +30,8 @@ node path
 class
     device class name

-index
-    index of the parent device in the device class
+seq
+    sequence number of the parent device in the device class

 driver
     device driver name
@@ -46,7 +46,7 @@ using the two alternative bind syntaxes.
 .. code-block::

     => dm tree
-     Class     Index  Probed  Driver                Name
+     Class     Seq    Probed  Driver                Name
     -----------------------------------------------------------
      root          0  [ + ]   root_driver           root_driver
     ...
@@ -75,13 +75,13 @@ using the two alternative bind syntaxes.
     => date
     Cannot find RTC: err=-19
     => dm tree
-     Class     Index  Probed  Driver                Name
+     Class     Seq    Probed  Driver                Name
     -----------------------------------------------------------
      root          0  [ + ]   root_driver           root_driver
     ...
     => bind /pl031@9010000 rtc-pl031
     => dm tree
-     Class     Index  Probed  Driver                Name
+     Class     Seq    Probed  Driver                Name
     -----------------------------------------------------------
      root          0  [ + ]   root_driver           root_driver
     ...
diff --git a/doc/usage/cmd/unbind.rst b/doc/usage/cmd/unbind.rst
index 0309e90f6e..1ae9c1b172 100644
--- a/doc/usage/cmd/unbind.rst
+++ b/doc/usage/cmd/unbind.rst
@@ -12,8 +12,8 @@ Synopsis
 ::

     unbind <node path>
-    unbind <class> <index>
-    unbind <class> <index> <driver>
+    unbind <class> <seq>
+    unbind <class> <seq> <driver>

 Description
 -----------
@@ -27,8 +27,8 @@ node path
 class
     device class name

-index
-    index of the device in the device class
+seq
+    sequence number of the device in the device class

 driver
     device driver name
@@ -43,7 +43,7 @@ using the three alternative unbind syntaxes.
 .. code-block::

     => dm tree
-     Class     Index  Probed  Driver                Name
+     Class     Seq    Probed  Driver                Name
     -----------------------------------------------------------
      root          0  [ + ]   root_driver           root_driver
     ...
@@ -70,7 +70,7 @@ using the three alternative unbind syntaxes.
     }
     => unbind /pl031@9010000
     => dm tree
-     Class     Index  Probed  Driver                Name
+     Class     Seq    Probed  Driver                Name
     -----------------------------------------------------------
      root          0  [ + ]   root_driver           root_driver
     ...
@@ -78,7 +78,7 @@ using the three alternative unbind syntaxes.
     Cannot find a device with path /pl031@9010000
     => bind /pl031@9010000 rtc-pl031
     => dm tree
-     Class     Index  Probed  Driver                Name
+     Class     Seq    Probed  Driver                Name
     -----------------------------------------------------------
      root          0  [ + ]   root_driver           root_driver
     ...
--
2.45.2

Reply via email to