54 lines
913 B
C
54 lines
913 B
C
/*
|
|
* Copyright (c) 2006-2023, RT-Thread Development Team
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <rtthread.h>
|
|
#include <drivers/core/bus.h>
|
|
|
|
#if defined(RT_USING_POSIX_DEVIO)
|
|
#include <rtdevice.h> /* for wqueue_init */
|
|
#endif
|
|
|
|
/**
|
|
* This function attach a driver to bus
|
|
*
|
|
* @param drv the driver to be attached
|
|
*/
|
|
rt_err_t rt_driver_register(rt_driver_t drv)
|
|
{
|
|
rt_err_t ret;
|
|
struct rt_bus *bus = RT_NULL;
|
|
|
|
RT_ASSERT(drv != RT_NULL);
|
|
|
|
if (drv->bus)
|
|
{
|
|
bus = drv->bus;
|
|
ret = rt_bus_add_driver(bus, drv);
|
|
}
|
|
else
|
|
{
|
|
ret = -RT_EINVAL;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
RTM_EXPORT(rt_driver_register);
|
|
|
|
/**
|
|
* This function remove driver from system.
|
|
*
|
|
* @param drv the driver to be removed
|
|
*/
|
|
rt_err_t rt_driver_unregister(rt_driver_t drv)
|
|
{
|
|
rt_err_t ret;
|
|
|
|
ret = rt_bus_remove_driver(drv);
|
|
|
|
return ret;
|
|
}
|
|
RTM_EXPORT(rt_driver_register);
|