diff options
Diffstat (limited to 'sys/arch/i386/pci/pci_machdep.h')
-rw-r--r-- | sys/arch/i386/pci/pci_machdep.h | 70 |
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 *)); |