mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-05-13 17:39:19 +08:00
Add root bus support functions
This commit is contained in:
parent
5edcb9ecd2
commit
5b93cc84b4
@ -62,6 +62,7 @@ def rtems(mm):
|
||||
'rtems/rtems-bsd-autoconf.c',
|
||||
'rtems/rtems-bsd-bus-dma.c',
|
||||
'rtems/rtems-bsd-bus-dma-mbuf.c',
|
||||
'rtems/rtems-bsd-bus-root.c',
|
||||
'rtems/rtems-bsd-cam.c',
|
||||
'rtems/rtems-bsd-chunk.c',
|
||||
'rtems/rtems-bsd-conf.c',
|
||||
|
@ -974,6 +974,7 @@ def build(bld):
|
||||
'rtemsbsd/rtems/rtems-bsd-autoconf.c',
|
||||
'rtemsbsd/rtems/rtems-bsd-bus-dma-mbuf.c',
|
||||
'rtemsbsd/rtems/rtems-bsd-bus-dma.c',
|
||||
'rtemsbsd/rtems/rtems-bsd-bus-root.c',
|
||||
'rtemsbsd/rtems/rtems-bsd-cam.c',
|
||||
'rtemsbsd/rtems/rtems-bsd-chunk.c',
|
||||
'rtemsbsd/rtems/rtems-bsd-conf.c',
|
||||
|
@ -143,6 +143,38 @@ uintptr_t rtems_bsd_get_allocator_domain_size(
|
||||
void rtems_bsd_get_mac_address(const char *name, int unit,
|
||||
uint8_t mac_addr[6]);
|
||||
|
||||
/**
|
||||
* @brief Attach the root bus.
|
||||
*
|
||||
* @retval 0 Successful operation.
|
||||
* @retval errno Otherwise.
|
||||
*/
|
||||
int rtems_bsd_bus_root_attach(void);
|
||||
|
||||
/**
|
||||
* @brief Suspend the root bus.
|
||||
*
|
||||
* @retval 0 Successful operation.
|
||||
* @retval errno Otherwise.
|
||||
*/
|
||||
int rtems_bsd_bus_root_suspend(void);
|
||||
|
||||
/**
|
||||
* @brief Resume the root bus.
|
||||
*
|
||||
* @retval 0 Successful operation.
|
||||
* @retval errno Otherwise.
|
||||
*/
|
||||
int rtems_bsd_bus_root_resume(void);
|
||||
|
||||
/**
|
||||
* @brief Detach the root bus.
|
||||
*
|
||||
* @retval 0 Successful operation.
|
||||
* @retval errno Otherwise.
|
||||
*/
|
||||
int rtems_bsd_bus_root_detach(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
91
rtemsbsd/rtems/rtems-bsd-bus-root.c
Normal file
91
rtemsbsd/rtems/rtems-bsd-bus-root.c
Normal file
@ -0,0 +1,91 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @ingroup rtems_bsd_rtems
|
||||
*
|
||||
* @brief TODO.
|
||||
*/
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2012-2013 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions, and the following disclaimer,
|
||||
* without modification, immediately at the beginning of the file.
|
||||
* 2. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <machine/rtems-bsd-kernel-space.h>
|
||||
|
||||
#include <rtems/bsd/sys/param.h>
|
||||
#include <sys/bus.h>
|
||||
|
||||
#include <rtems/bsd.h>
|
||||
|
||||
int
|
||||
rtems_bsd_bus_root_attach(void)
|
||||
{
|
||||
int err;
|
||||
device_t dev;
|
||||
|
||||
dev = device_find_child(root_bus, "nexus", 0);
|
||||
if (dev != NULL) {
|
||||
err = device_probe_and_attach(dev);
|
||||
} else {
|
||||
err = ENOENT;
|
||||
}
|
||||
|
||||
return (err);
|
||||
}
|
||||
|
||||
int
|
||||
rtems_bsd_bus_root_suspend(void)
|
||||
{
|
||||
|
||||
return (DEVICE_SUSPEND(root_bus));
|
||||
}
|
||||
|
||||
int
|
||||
rtems_bsd_bus_root_resume(void)
|
||||
{
|
||||
|
||||
return (DEVICE_RESUME(root_bus));
|
||||
}
|
||||
|
||||
int
|
||||
rtems_bsd_bus_root_detach(void)
|
||||
{
|
||||
int err;
|
||||
device_t dev;
|
||||
|
||||
dev = device_find_child(root_bus, "nexus", 0);
|
||||
if (dev != NULL) {
|
||||
err = device_detach(dev);
|
||||
} else {
|
||||
err = ENOENT;
|
||||
}
|
||||
|
||||
return (err);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user