.. SPDX-License-Identifier: GPL-2.0+:

.. index::
   single: unbind (command)

unbind command
==============

Synopsis
--------

::

    unbind <node path>
    unbind <class> <seq>
    unbind <class> <seq> <driver>

Description
-----------

The unbind command is used to unbind a device from a driver. This makes the
device unavailable in U-Boot.

node path
    path of the device's device-tree node

class
    device class name

seq
    sequence number of the device in the device class

driver
    device driver name

Example
-------

Given a system with a real time clock device with device path */pl031@9010000*
and using driver rtc-pl031 unbinding and binding of the device is demonstrated
using the three alternative unbind syntaxes.

.. code-block::

    => dm tree
     Class     Seq    Probed  Driver                Name
    -----------------------------------------------------------
     root          0  [ + ]   root_driver           root_driver
    ...
     rtc           0  [   ]   rtc-pl031             |-- pl031@9010000
    ...
    => fdt addr $fdtcontroladdr
    Working FDT set to 7ed7fdb0
    => fdt print
    / {
            interrupt-parent = <0x00008003>;
            model = "linux,dummy-virt";
            #size-cells = <0x00000002>;
            #address-cells = <0x00000002>;
            compatible = "linux,dummy-virt";
    ...
            pl031@9010000 {
                    clock-names = "apb_pclk";
                    clocks = <0x00008000>;
                    interrupts = <0x00000000 0x00000002 0x00000004>;
                    reg = <0x00000000 0x09010000 0x00000000 0x00001000>;
                    compatible = "arm,pl031", "arm,primecell";
            };
    ...
    }
    => unbind /pl031@9010000
    => dm tree
     Class     Seq    Probed  Driver                Name
    -----------------------------------------------------------
     root          0  [ + ]   root_driver           root_driver
    ...
    => unbind /pl031@9010000
    Cannot find a device with path /pl031@9010000
    => bind /pl031@9010000 rtc-pl031
    => dm tree
     Class     Seq    Probed  Driver                Name
    -----------------------------------------------------------
     root          0  [ + ]   root_driver           root_driver
    ...
     rtc           0  [   ]   rtc-pl031             |-- pl031@9010000
    => unbind rtc 0
    => bind /pl031@9010000 rtc-pl031
    => unbind rtc 0 rtc-pl031

Configuration
-------------

The unbind command is only available if CONFIG_CMD_BIND=y.

Return code
-----------

The return code $? is 0 (true) on success and 1 (false) on failure.
