[rtems-libbsd commit] Add root bus support functions

Sebastian Huber sebh at rtems.org
Tue Apr 26 13:22:24 UTC 2016


Module:    rtems-libbsd
Branch:    master
Commit:    5b93cc84b42ab7a0328dee9488c69c76ac5a84a2
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=5b93cc84b42ab7a0328dee9488c69c76ac5a84a2

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Apr 26 15:00:44 2016 +0200

Add root bus support functions

---

 libbsd.py                           |  1 +
 libbsd_waf.py                       |  1 +
 rtemsbsd/include/rtems/bsd/bsd.h    | 32 +++++++++++++
 rtemsbsd/rtems/rtems-bsd-bus-root.c | 91 +++++++++++++++++++++++++++++++++++++
 4 files changed, 125 insertions(+)

diff --git a/libbsd.py b/libbsd.py
index c03f230..8155bdb 100755
--- a/libbsd.py
+++ b/libbsd.py
@@ -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',
diff --git a/libbsd_waf.py b/libbsd_waf.py
index 991a1c8..48b240b 100644
--- a/libbsd_waf.py
+++ b/libbsd_waf.py
@@ -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',
diff --git a/rtemsbsd/include/rtems/bsd/bsd.h b/rtemsbsd/include/rtems/bsd/bsd.h
index 1014a96..ecffcb4 100644
--- a/rtemsbsd/include/rtems/bsd/bsd.h
+++ b/rtemsbsd/include/rtems/bsd/bsd.h
@@ -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 */
diff --git a/rtemsbsd/rtems/rtems-bsd-bus-root.c b/rtemsbsd/rtems/rtems-bsd-bus-root.c
new file mode 100644
index 0000000..f444f51
--- /dev/null
+++ b/rtemsbsd/rtems/rtems-bsd-bus-root.c
@@ -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 at 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);
+}




More information about the vc mailing list