]> err.no Git - linux-2.6/blob - include/asm-x86/mach-summit/mach_mpparse.h
x86: remove mpc_oem_pci_bus()
[linux-2.6] / include / asm-x86 / mach-summit / mach_mpparse.h
1 #ifndef __ASM_MACH_MPPARSE_H
2 #define __ASM_MACH_MPPARSE_H
3
4 #include <mach_apic.h>
5 #include <asm/tsc.h>
6
7 extern int use_cyclone;
8
9 #ifdef CONFIG_X86_SUMMIT_NUMA
10 extern void setup_summit(void);
11 #else
12 #define setup_summit()  {}
13 #endif
14
15 static inline void mpc_oem_bus_info(struct mpc_config_bus *m, char *name, 
16                                 struct mpc_config_translation *translation)
17 {
18         Dprintk("Bus #%d is %s\n", m->mpc_busid, name);
19 }
20
21 static inline int mps_oem_check(struct mp_config_table *mpc, char *oem, 
22                 char *productid)
23 {
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;
32         }
33         return 0;
34 }
35
36 /* Hook from generic ACPI tables.c */
37 static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
38 {
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;
46         }
47         return 0;
48 }
49
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));
56
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));
68
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));
98
99
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;
110
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);
114 }
115
116 #endif /* __ASM_MACH_MPPARSE_H */