Home | History | Annotate | Line # | Download | only in include
      1  1.15  knakahar /*	$NetBSD: mpconfig.h,v 1.15 2015/04/27 06:51:40 knakahara Exp $	*/
      2   1.1      fvdl 
      3   1.1      fvdl /*
      4   1.1      fvdl  * Definitions originally from the mpbios code, but now used for ACPI
      5   1.1      fvdl  * MP config as well.
      6   1.1      fvdl  */
      7   1.1      fvdl 
      8   1.7      yamt #ifndef _X86_MPCONFIG_H_
      9   1.7      yamt #define _X86_MPCONFIG_H_
     10   1.1      fvdl 
     11   1.5      fvdl /*
     12   1.5      fvdl  * XXX
     13   1.5      fvdl  */
     14  1.13    dyoung #include <sys/bus.h>
     15   1.5      fvdl #include <dev/pci/pcivar.h>
     16   1.5      fvdl #include <machine/pci_machdep.h>
     17   1.5      fvdl 
     18   1.1      fvdl /*
     19  1.14      yamt  * Interrupt types
     20   1.1      fvdl  */
     21   1.1      fvdl #define MPS_INTTYPE_INT         0
     22   1.1      fvdl #define MPS_INTTYPE_NMI         1
     23   1.1      fvdl #define MPS_INTTYPE_SMI         2
     24   1.1      fvdl #define MPS_INTTYPE_ExtINT      3
     25   1.1      fvdl 
     26   1.1      fvdl #define MPS_INTPO_DEF           0
     27   1.1      fvdl #define MPS_INTPO_ACTHI         1
     28   1.1      fvdl #define MPS_INTPO_ACTLO         3
     29   1.1      fvdl 
     30   1.1      fvdl #define MPS_INTTR_DEF           0
     31   1.1      fvdl #define MPS_INTTR_EDGE          1
     32   1.1      fvdl #define MPS_INTTR_LEVEL         3
     33   1.1      fvdl 
     34   1.1      fvdl #ifndef _LOCORE
     35   1.1      fvdl 
     36   1.1      fvdl struct mpbios_int;
     37   1.1      fvdl 
     38   1.1      fvdl struct mp_bus
     39   1.1      fvdl {
     40   1.8  christos 	const char *mb_name;		/* XXX bus name */
     41   1.1      fvdl 	int mb_idx;		/* XXX bus index */
     42   1.6  junyoung 	void (*mb_intr_print)(int);
     43  1.10    cegger 	void (*mb_intr_cfg)(const struct mpbios_int *, uint32_t *);
     44   1.1      fvdl 	struct mp_intr_map *mb_intrs;
     45  1.10    cegger 	uint32_t mb_data;	/* random bus-specific datum. */
     46  1.11    dyoung 	device_t mb_dev;	/* has been autoconfigured if mb_dev != NULL */
     47   1.5      fvdl 	pcitag_t *mb_pci_bridge_tag;
     48   1.5      fvdl 	pci_chipset_tag_t mb_pci_chipset_tag;
     49   1.1      fvdl };
     50   1.1      fvdl 
     51   1.1      fvdl struct mp_intr_map
     52   1.1      fvdl {
     53   1.1      fvdl 	struct mp_intr_map *next;
     54   1.1      fvdl 	struct mp_bus *bus;
     55  1.14      yamt 	/*
     56  1.14      yamt 	 * encoding of bus_pin is mp_bus dependant.
     57  1.14      yamt 	 * for pci, bus_pin = (pci_device_number << 2) | pin
     58  1.14      yamt 	 * where pin is 0=INTA ... 3=INTD.
     59  1.14      yamt 	 */
     60   1.1      fvdl 	int bus_pin;
     61  1.14      yamt 	struct pic *ioapic;	/* NULL for local apic */
     62   1.1      fvdl 	int ioapic_pin;
     63  1.15  knakahar 	intr_handle_t ioapic_ih;	/* int handle, see i82093var.h for encoding */
     64   1.1      fvdl 	int type;		/* from mp spec intr record */
     65   1.1      fvdl  	int flags;		/* from mp spec intr record */
     66  1.10    cegger 	uint32_t redir;
     67  1.12    cegger 	uint32_t cpu_id;
     68   1.2      fvdl 	int global_int;		/* ACPI global interrupt number */
     69   1.4      fvdl 	int sflags;		/* other, software flags (see below) */
     70   1.9  christos 	void *linkdev;
     71   1.9  christos 	int sourceindex;
     72   1.1      fvdl };
     73   1.4      fvdl 
     74   1.4      fvdl #define MPI_OVR		0x0001	/* Was overridden by an ACPI OVR */
     75   1.1      fvdl 
     76   1.1      fvdl #if defined(_KERNEL)
     77   1.1      fvdl extern int mp_verbose;
     78   1.1      fvdl extern struct mp_bus *mp_busses;
     79   1.1      fvdl extern struct mp_intr_map *mp_intrs;
     80   1.1      fvdl extern int mp_nintr;
     81   1.1      fvdl extern int mp_isa_bus, mp_eisa_bus;
     82   1.1      fvdl extern int mp_nbus;
     83  1.11    dyoung int mp_pci_scan(device_t, struct pcibus_attach_args *, cfprint_t);
     84  1.11    dyoung void mp_pci_childdetached(device_t, device_t);
     85   1.1      fvdl #endif
     86   1.1      fvdl #endif
     87   1.1      fvdl 
     88   1.7      yamt #endif /* _X86_MPCONFIG_H_ */
     89