summaryrefslogtreecommitdiff
path: root/hurd/pci.defs
diff options
context:
space:
mode:
authorJoan Lledó <joanlluislledo@gmail.com>2018-01-16 12:54:28 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-10-30 00:47:36 +0100
commita830bef66e689f6f1defa9988f257a7ec2bb034d (patch)
tree3d49249a05195148fc8a8e6a84f9c56b46dbab7b /hurd/pci.defs
parent6783a1b124eff9383571dfd4b5e83a03ee63866a (diff)
PCI Arbiter
Diffstat (limited to 'hurd/pci.defs')
-rw-r--r--hurd/pci.defs73
1 files changed, 73 insertions, 0 deletions
diff --git a/hurd/pci.defs b/hurd/pci.defs
new file mode 100644
index 00000000..23c90334
--- /dev/null
+++ b/hurd/pci.defs
@@ -0,0 +1,73 @@
+/* Definitions for pci-specific calls
+ Copyright (C) 2017 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 pci 39000;
+
+#include <hurd/hurd_types.defs>
+
+#ifdef PCI_IMPORTS
+PCI_IMPORTS
+INTR_INTERFACE
+#endif
+
+/*
+ * Read 'amount' bytes from offset 'reg' in the
+ * configuration space and store it in 'data'
+ */
+routine pci_conf_read (
+ master: pci_t;
+ reg: int;
+ out data: data_t, dealloc;
+ amount: vm_size_t
+);
+
+/* Write 'amount' bytes from 'data' to offset 'reg' in the config space */
+routine pci_conf_write(
+ master: pci_t;
+ reg: int;
+ data: data_t;
+ out amount: vm_size_t
+);
+
+/*
+ * Calculate the number of devices that are allowed
+ * for the user and return it in 'numdevs'.
+ */
+routine pci_get_ndevs(
+ master: pci_t;
+ out ndevs: vm_size_t
+);
+
+/*
+ * Return the memory regions for a specified device.
+ * `data' is an array of 6 struct pci_bar
+ */
+routine pci_get_dev_regions(
+ master: pci_t;
+ out data: data_t, dealloc
+);
+
+/*
+ * Return the expansion ROM bar for a given device.
+ * `data' is a struct pci_xrom_bar
+ */
+routine pci_get_dev_rom(
+ master: pci_t;
+ out data: data_t, dealloc
+);