1 /*
2  * Copyright (c) 2006-2023, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <rtthread.h>
8 #include <drivers/core/bus.h>
9 
10 #if defined(RT_USING_POSIX_DEVIO)
11 #include <rtdevice.h> /* for wqueue_init */
12 #endif
13 
14 /**
15  * This function attach a driver to bus
16  *
17  * @param drv the driver to be attached
18  */
rt_driver_register(rt_driver_t drv)19 rt_err_t rt_driver_register(rt_driver_t drv)
20 {
21     rt_err_t ret;
22     struct rt_bus *bus = RT_NULL;
23 
24     RT_ASSERT(drv != RT_NULL);
25 
26     if (drv->bus)
27     {
28         bus = drv->bus;
29         ret = rt_bus_add_driver(bus, drv);
30     }
31     else
32     {
33         ret = -RT_EINVAL;
34     }
35 
36     return ret;
37 }
38 RTM_EXPORT(rt_driver_register);
39 
40 /**
41  * This function remove driver from system.
42  *
43  * @param drv the driver to be removed
44  */
rt_driver_unregister(rt_driver_t drv)45 rt_err_t rt_driver_unregister(rt_driver_t drv)
46 {
47     rt_err_t ret;
48 
49     ret = rt_bus_remove_driver(drv);
50 
51     return ret;
52 }
53 RTM_EXPORT(rt_driver_unregister);
54