summaryrefslogtreecommitdiff
path: root/sys/arch/i386/pci/pci_machdep.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/i386/pci/pci_machdep.h')
-rw-r--r--sys/arch/i386/pci/pci_machdep.h70
1 files changed, 40 insertions, 30 deletions
diff --git a/sys/arch/i386/pci/pci_machdep.h b/sys/arch/i386/pci/pci_machdep.h
index 43adfb2dfcb..e4c21cb3399 100644
--- a/sys/arch/i386/pci/pci_machdep.h
+++ b/sys/arch/i386/pci/pci_machdep.h
@@ -1,7 +1,8 @@
-/* $OpenBSD: pci_machdep.h,v 1.2 1996/04/18 19:22:23 niklas Exp $ */
-/* $NetBSD: pci_machdep.h,v 1.4 1996/03/14 02:37:59 cgd Exp $ */
+/* $OpenBSD: pci_machdep.h,v 1.3 1996/04/21 22:17:34 deraadt Exp $ */
+/* $NetBSD: pci_machdep.h,v 1.5 1996/03/27 04:01:16 cgd Exp $ */
/*
+ * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
* Copyright (c) 1994 Charles Hannum. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,54 +33,63 @@
/*
* Machine-specific definitions for PCI autoconfiguration.
- *
- * See the comments in pci_machdep.c for more explanation.
*/
/*
+ * i386-specific PCI structure and type definitions.
+ * NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE.
+ *
* Configuration tag; created from a {bus,device,function} triplet by
* pci_make_tag(), and passed to pci_conf_read() and pci_conf_write().
* We could instead always pass the {bus,device,function} triplet to
* the read and write routines, but this would cause extra overhead.
*
- * Machines other than PCs are likely to use the equivalent of mode 1
- * tags always. Mode 2 is historical and deprecated by the Revision
- * 2.0 specification.
+ * Mode 2 is historical and deprecated by the Revision 2.0 specification.
*/
-typedef union {
- u_long mode1;
+union i386_pci_tag_u {
+ u_int32_t mode1;
struct {
- u_short port;
- u_char enable;
- u_char forward;
+ u_int16_t port;
+ u_int8_t enable;
+ u_int8_t forward;
} mode2;
-} pcitag_t;
+};
/*
- * Type of a value read from or written to a configuration register.
- * Always 32 bits.
+ * Types provided to machine-independent PCI code
*/
-typedef u_int32_t pcireg_t;
+typedef void *pci_chipset_tag_t;
+typedef union i386_pci_tag_u pcitag_t;
+typedef int pci_intr_handle_t;
/*
- * PCs which use Configuration Mechanism #2 are limited to 16
- * devices per bus.
+ * i386-specific PCI variables and functions.
+ * NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE.
*/
-#define PCI_MAX_DEVICE_NUMBER (pci_mode == 2 ? 16 : 32)
+extern int pci_mode;
+int pci_mode_detect __P((void));
/*
- * Hook for PCI bus attach function to do any necessary machine-specific
- * operations.
+ * Functions provided to machine-independent PCI code.
*/
-
-#define pci_md_attach_hook(parent, sc, pba) \
- do { \
- if (pba->pba_bus == 0) \
- printf(": configuration mode %d", pci_mode); \
- } while (0);
+void pci_attach_hook __P((struct device *, struct device *,
+ struct pcibus_attach_args *));
+int pci_bus_maxdevs __P((pci_chipset_tag_t, int));
+pcitag_t pci_make_tag __P((pci_chipset_tag_t, int, int, int));
+pcireg_t pci_conf_read __P((pci_chipset_tag_t, pcitag_t, int));
+void pci_conf_write __P((pci_chipset_tag_t, pcitag_t, int,
+ pcireg_t));
+int pci_intr_map __P((pci_chipset_tag_t, pcitag_t, int, int,
+ pci_intr_handle_t *));
+const char *pci_intr_string __P((pci_chipset_tag_t, pci_intr_handle_t));
+void *pci_intr_establish __P((pci_chipset_tag_t, pci_intr_handle_t,
+ int, int (*)(void *), void *, char *));
+void pci_intr_disestablish __P((pci_chipset_tag_t, void *));
/*
- * Miscellaneous variables and functions.
+ * Compatibility functions, to map the old i386 PCI functions to the new ones.
+ * NOT TO BE USED BY NEW CODE.
*/
-extern int pci_mode;
-extern int pci_mode_detect __P((void));
+void *pci_map_int __P((pcitag_t, int, int (*)(void *), void *));
+int pci_map_io __P((pcitag_t, int, int *));
+int pci_map_mem __P((pcitag_t, int, vm_offset_t *, vm_offset_t *));