blob: 1a5cffcb72301b5934650a16e60189c4a3c541e8 [file] [log] [blame]
Heinrich Schuchardt921e0a02023-06-21 21:24:55 +02001.. SPDX-License-Identifier: GPL-2.0+:
2
3bind command
4============
5
6Synopsis
7--------
8
9::
10
11 bind <node path> <driver>
12 bind <class> <index> <driver>
13
14Description
15-----------
16
17The bind command is used to bind a device to a driver. This makes the
18device available in U-Boot.
19
20While binding to a *node path* typically provides a working device
21binding by parent node and driver may lead to a device that is only
22partially initialized.
23
24node path
25 path of the device's device-tree node
26
27class
28 device class name
29
30index
31 index of the parent device in the device class
32
33driver
34 device driver name
35
36Example
37-------
38
39Given a system with a real time clock device with device path */pl031@9010000*
40and using driver rtc-pl031 unbinding and binding of the device is demonstrated
41using the two alternative bind syntaxes.
42
43.. code-block::
44
45 => dm tree
46 Class Index Probed Driver Name
47 -----------------------------------------------------------
48 root 0 [ + ] root_driver root_driver
49 ...
50 rtc 0 [ ] rtc-pl031 |-- pl031@9010000
51 ...
52 => fdt addr $fdtcontroladdr
53 Working FDT set to 7ed7fdb0
54 => fdt print
55 / {
56 interrupt-parent = <0x00008003>;
57 model = "linux,dummy-virt";
58 #size-cells = <0x00000002>;
59 #address-cells = <0x00000002>;
60 compatible = "linux,dummy-virt";
61 ...
62 pl031@9010000 {
63 clock-names = "apb_pclk";
64 clocks = <0x00008000>;
65 interrupts = <0x00000000 0x00000002 0x00000004>;
66 reg = <0x00000000 0x09010000 0x00000000 0x00001000>;
67 compatible = "arm,pl031", "arm,primecell";
68 };
69 ...
70 }
71 => unbind /pl031@9010000
72 => date
73 Cannot find RTC: err=-19
74 => dm tree
75 Class Index Probed Driver Name
76 -----------------------------------------------------------
77 root 0 [ + ] root_driver root_driver
78 ...
79 => bind /pl031@9010000 rtc-pl031
80 => dm tree
81 Class Index Probed Driver Name
82 -----------------------------------------------------------
83 root 0 [ + ] root_driver root_driver
84 ...
85 rtc 0 [ ] rtc-pl031 |-- pl031@9010000
86 => date
87 Date: 2023-06-22 (Thursday) Time: 15:14:51
88 => unbind rtc 0 rtc-pl031
89 => bind root 0 rtc-pl031
90 => date
91 Date: 1980-08-19 (Tuesday) Time: 14:45:30
92
93Obviously the device is not initialized correctly by the last bind command.
94
95Configuration
96-------------
97
98The bind command is only available if CONFIG_CMD_BIND=y.
99
100Return code
101-----------
102
103The return code $? is 0 (true) on success and 1 (false) on failure.