aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorian <ian>2023-07-17 02:17:16 +0000
committerian <ian>2023-07-17 02:17:16 +0000
commitf4a57c0c43963d6b55ed467ab6f529ad82b02749 (patch)
tree41f82a1251319789c8fa89a88cf7e53e0b78316e
parent7b56685a59a86d97cb6dcb8e0dda0a1141b11b91 (diff)
kernel/acpi: Improve modularity
git-svn-id: https://svn.vegaa.systems/svn/vega-Vega/trunk@17 a8a8aea2-181d-ee11-89e8-15fd0e089fc4
-rw-r--r--sys/firmware/acpi/acpi_init.c15
-rw-r--r--sys/firmware/acpi/acpi_subr.c46
-rw-r--r--sys/include/firmware/acpi/acpi.h3
3 files changed, 52 insertions, 12 deletions
diff --git a/sys/firmware/acpi/acpi_init.c b/sys/firmware/acpi/acpi_init.c
index fd23ada..1c8bd91 100644
--- a/sys/firmware/acpi/acpi_init.c
+++ b/sys/firmware/acpi/acpi_init.c
@@ -30,7 +30,6 @@
/* $Id$ */
#include <firmware/acpi/acpi.h>
-#include <firmware/acpi/tables.h>
#include <sys/limine.h>
#include <sys/syslog.h>
#include <sys/cdefs.h>
@@ -70,18 +69,10 @@ acpi_print_oemid(const char *type, char oemid[OEMID_SIZE])
kprintf("\n");
}
-static bool
-acpi_is_checksum_valid(struct acpi_header *hdr)
+struct acpi_root_sdt *
+acpi_get_root_sdt(void)
{
- uint8_t sum;
-
- sum = 0;
- for (int i = 0; i < hdr->length; ++i) {
- sum += ((char *)hdr)[i];
- }
-
- /* Sum of table (from header to end) must be zero!! */
- return sum == 0;
+ return root_sdt;
}
void
diff --git a/sys/firmware/acpi/acpi_subr.c b/sys/firmware/acpi/acpi_subr.c
new file mode 100644
index 0000000..31fec91
--- /dev/null
+++ b/sys/firmware/acpi/acpi_subr.c
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2023 Ian Marco Moffett and the VegaOS team.
+ * All rights reserved.
+ *
+ * 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.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of VegaOS nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+ */
+
+/* $Id */
+
+#include <firmware/acpi/acpi.h>
+
+bool
+acpi_is_checksum_valid(struct acpi_header *hdr)
+{
+ uint8_t sum;
+
+ sum = 0;
+ for (int i = 0; i < hdr->length; ++i) {
+ sum += ((char *)hdr)[i];
+ }
+
+ /* Sum of table (from header to end) must be zero!! */
+ return sum == 0;
+}
diff --git a/sys/include/firmware/acpi/acpi.h b/sys/include/firmware/acpi/acpi.h
index 65e39a4..0946f6f 100644
--- a/sys/include/firmware/acpi/acpi.h
+++ b/sys/include/firmware/acpi/acpi.h
@@ -32,8 +32,11 @@
#ifndef _ACPI_ACPI_H_
#define _ACPI_ACPI_H_
+#include <firmware/acpi/tables.h>
#include <sys/types.h>
void acpi_init(void);
+bool acpi_is_checksum_valid(struct acpi_header *hdr);
+struct acpi_root_sdt *acpi_get_root_sdt(void);
#endif /* !_ACPI_ACPI_H_ */