x86: remove mpc_oem_pci_bus()
[linux-2.6/kvm.git] / include / asm-x86 / mach-summit / mach_mpparse.h
blobe1af489a8809cb2aa7c8ba9a0262dd3e0a111d3b
1 #ifndef __ASM_MACH_MPPARSE_H
2 #define __ASM_MACH_MPPARSE_H
4 #include <mach_apic.h>
5 #include <asm/tsc.h>
7 extern int use_cyclone;
9 #ifdef CONFIG_X86_SUMMIT_NUMA
10 extern void setup_summit(void);
11 #else
12 #define setup_summit() {}
13 #endif
15 static inline void mpc_oem_bus_info(struct mpc_config_bus *m, char *name,
16 struct mpc_config_translation *translation)
18 Dprintk("Bus #%d is %s\n", m->mpc_busid, name);
21 static inline int mps_oem_check(struct mp_config_table *mpc, char *oem,
22 char *productid)
24 if (!strncmp(oem, "IBM ENSW", 8) &&
25 (!strncmp(productid, "VIGIL SMP", 9)
26 || !strncmp(productid, "EXA", 3)
27 || !strncmp(productid, "RUTHLESS SMP", 12))){
28 mark_tsc_unstable("Summit based system");
29 use_cyclone = 1; /*enable cyclone-timer*/
30 setup_summit();
31 return 1;
33 return 0;
36 /* Hook from generic ACPI tables.c */
37 static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
39 if (!strncmp(oem_id, "IBM", 3) &&
40 (!strncmp(oem_table_id, "SERVIGIL", 8)
41 || !strncmp(oem_table_id, "EXA", 3))){
42 mark_tsc_unstable("Summit based system");
43 use_cyclone = 1; /*enable cyclone-timer*/
44 setup_summit();
45 return 1;
47 return 0;
50 struct rio_table_hdr {
51 unsigned char version; /* Version number of this data structure */
52 /* Version 3 adds chassis_num & WP_index */
53 unsigned char num_scal_dev; /* # of Scalability devices (Twisters for Vigil) */
54 unsigned char num_rio_dev; /* # of RIO I/O devices (Cyclones and Winnipegs) */
55 } __attribute__((packed));
57 struct scal_detail {
58 unsigned char node_id; /* Scalability Node ID */
59 unsigned long CBAR; /* Address of 1MB register space */
60 unsigned char port0node; /* Node ID port connected to: 0xFF=None */
61 unsigned char port0port; /* Port num port connected to: 0,1,2, or 0xFF=None */
62 unsigned char port1node; /* Node ID port connected to: 0xFF = None */
63 unsigned char port1port; /* Port num port connected to: 0,1,2, or 0xFF=None */
64 unsigned char port2node; /* Node ID port connected to: 0xFF = None */
65 unsigned char port2port; /* Port num port connected to: 0,1,2, or 0xFF=None */
66 unsigned char chassis_num; /* 1 based Chassis number (1 = boot node) */
67 } __attribute__((packed));
69 struct rio_detail {
70 unsigned char node_id; /* RIO Node ID */
71 unsigned long BBAR; /* Address of 1MB register space */
72 unsigned char type; /* Type of device */
73 unsigned char owner_id; /* For WPEG: Node ID of Cyclone that owns this WPEG*/
74 /* For CYC: Node ID of Twister that owns this CYC */
75 unsigned char port0node; /* Node ID port connected to: 0xFF=None */
76 unsigned char port0port; /* Port num port connected to: 0,1,2, or 0xFF=None */
77 unsigned char port1node; /* Node ID port connected to: 0xFF=None */
78 unsigned char port1port; /* Port num port connected to: 0,1,2, or 0xFF=None */
79 unsigned char first_slot; /* For WPEG: Lowest slot number below this WPEG */
80 /* For CYC: 0 */
81 unsigned char status; /* For WPEG: Bit 0 = 1 : the XAPIC is used */
82 /* = 0 : the XAPIC is not used, ie:*/
83 /* ints fwded to another XAPIC */
84 /* Bits1:7 Reserved */
85 /* For CYC: Bits0:7 Reserved */
86 unsigned char WP_index; /* For WPEG: WPEG instance index - lower ones have */
87 /* lower slot numbers/PCI bus numbers */
88 /* For CYC: No meaning */
89 unsigned char chassis_num; /* 1 based Chassis number */
90 /* For LookOut WPEGs this field indicates the */
91 /* Expansion Chassis #, enumerated from Boot */
92 /* Node WPEG external port, then Boot Node CYC */
93 /* external port, then Next Vigil chassis WPEG */
94 /* external port, etc. */
95 /* Shared Lookouts have only 1 chassis number (the */
96 /* first one assigned) */
97 } __attribute__((packed));
100 typedef enum {
101 CompatTwister = 0, /* Compatibility Twister */
102 AltTwister = 1, /* Alternate Twister of internal 8-way */
103 CompatCyclone = 2, /* Compatibility Cyclone */
104 AltCyclone = 3, /* Alternate Cyclone of internal 8-way */
105 CompatWPEG = 4, /* Compatibility WPEG */
106 AltWPEG = 5, /* Second Planar WPEG */
107 LookOutAWPEG = 6, /* LookOut WPEG */
108 LookOutBWPEG = 7, /* LookOut WPEG */
109 } node_type;
111 static inline int is_WPEG(struct rio_detail *rio){
112 return (rio->type == CompatWPEG || rio->type == AltWPEG ||
113 rio->type == LookOutAWPEG || rio->type == LookOutBWPEG);
116 #endif /* __ASM_MACH_MPPARSE_H */