summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2022-09-12 10:39:30 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-09-12 20:32:24 +0200
commit160fb63ee0c72f165ab131c4d725d9badaa646ab (patch)
treeffb56a39d40b8e42213990ba5ce6f136eb9431ec /hurd
parent22676a3a6e4d99e13ee75c1ad2f4976ae6b0ce52 (diff)
acpi: Link translator to libacpica and provide RPCs
Provides two new acpi RPCs to sleep the machine and to get the irq of any pci device. ACPI mode is enabled by default when the translator is started. NB: Merging this commit means libacpica is a build dep. Message-Id: <20220912103837.556815-2-damien@zamaudio.com>
Diffstat (limited to 'hurd')
-rw-r--r--hurd/acpi.defs50
-rw-r--r--hurd/hurd_types.defs18
-rw-r--r--hurd/hurd_types.h1
-rw-r--r--hurd/paths.h3
4 files changed, 72 insertions, 0 deletions
diff --git a/hurd/acpi.defs b/hurd/acpi.defs
new file mode 100644
index 00000000..f05c49c5
--- /dev/null
+++ b/hurd/acpi.defs
@@ -0,0 +1,50 @@
+/* Definitions for acpi-specific calls
+ Copyright (C) 2021 Free Software Foundation, Inc.
+
+This file is part of the GNU Hurd.
+
+The GNU Hurd is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+The GNU Hurd is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with the GNU Hurd; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+subsystem acpi 41000;
+
+#include <hurd/hurd_types.defs>
+
+#ifdef ACPI_IMPORTS
+ACPI_IMPORTS
+#endif
+
+/* Works on root entry.
+ *
+ * Enter sleep state
+ * 3 = S3 (suspend)
+ * 5 = S5 (power off)
+ */
+routine acpi_sleep(
+ master: acpi_t;
+ sleep_state: int
+);
+
+/* Works on root entry.
+ *
+ * Get the irq for a particular PCI device
+ * based on its B/D/F
+ */
+routine acpi_get_pci_irq(
+ master: acpi_t;
+ bus: int;
+ dev: int;
+ func: int;
+ out irq: int
+);
diff --git a/hurd/hurd_types.defs b/hurd/hurd_types.defs
index 88024045..5b9dd85a 100644
--- a/hurd/hurd_types.defs
+++ b/hurd/hurd_types.defs
@@ -332,6 +332,24 @@ destructor: SHUTDOWN_DESTRUCTOR
#endif
;
+/* ACPI */
+type acpi_t = mach_port_copy_send_t
+#ifdef ACPI_INTRAN
+intran: ACPI_INTRAN
+intranpayload: ACPI_INTRAN_PAYLOAD
+#else
+#ifdef HURD_DEFAULT_PAYLOAD_TO_PORT
+intranpayload: acpi_t HURD_DEFAULT_PAYLOAD_TO_PORT
+#endif
+#endif
+#ifdef ACPI_OUTTRAN
+outtran: ACPI_OUTTRAN
+#endif
+#ifdef ACPI_DESTRUCTOR
+destructor: ACPI_DESTRUCTOR
+#endif
+;
+
type proccoll_t = mach_port_copy_send_t;
type sreply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic
diff --git a/hurd/hurd_types.h b/hurd/hurd_types.h
index f0521191..cdc01906 100644
--- a/hurd/hurd_types.h
+++ b/hurd/hurd_types.h
@@ -53,6 +53,7 @@ typedef mach_port_t proccoll_t;
typedef mach_port_t ctty_t;
typedef mach_port_t pci_t;
typedef mach_port_t shutdown_t;
+typedef mach_port_t acpi_t;
#include <errno.h> /* Defines `error_t'. */
diff --git a/hurd/paths.h b/hurd/paths.h
index 10ae3a6f..49623cd1 100644
--- a/hurd/paths.h
+++ b/hurd/paths.h
@@ -39,6 +39,9 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Directory containing virtual filesystems for buses */
#define _SERVERS_BUS _SERVERS "bus"
+/* Directory containing ACPI tables */
+#define _SERVERS_ACPI _SERVERS "acpi"
+
/* Hurd servers are specified by symbols _HURD_FOO,
the canonical pathname being /hurd/foo. */