]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
cmd: bind: Use device sequence instead for driver bind/unbind
authorZixun LI <admin@hifiphile.com>
Fri, 2 Aug 2024 09:28:13 +0000 (11:28 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 27 Aug 2024 20:30:14 +0000 (14:30 -0600)
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 <admin@hifiphile.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
cmd/bind.c
doc/usage/cmd/bind.rst
doc/usage/cmd/unbind.rst

index 3a59eefd5c58bc059ba26d62e532d45097de0216..c0d31f5eb168e334567726a2a968e35010639d33 100644 (file)
@@ -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"
 );
index 234577836669446317e5e6c46491185e63b4a60e..67a0405bab531f6e23e08f5d67bc886c09be967a 100644 (file)
@@ -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
     ...
index 0309e90f6ea23d2a4bfc1390a3cf1efe189bdbe9..1ae9c1b172c1058aaeb0cba8f71f0a24cd6cc160 100644 (file)
@@ -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
     ...