Commit | Line | Data |
---|---|---|
b34e90b8 LV |
1 | /* |
2 | * Derived from include/asm-i386/mach-summit/mach_mpparse.h | |
3 | * and include/asm-i386/mach-default/bios_ebda.h | |
4 | * | |
5 | * Author: Laurent Vivier <Laurent.Vivier@bull.net> | |
b34e90b8 LV |
6 | */ |
7 | ||
8 | #ifndef __ASM_RIO_H | |
9 | #define __ASM_RIO_H | |
10 | ||
11 | #define RIO_TABLE_VERSION 3 | |
12 | ||
13 | struct rio_table_hdr { | |
14 | u8 version; /* Version number of this data structure */ | |
15 | u8 num_scal_dev; /* # of Scalability devices */ | |
16 | u8 num_rio_dev; /* # of RIO I/O devices */ | |
17 | } __attribute__((packed)); | |
18 | ||
19 | struct scal_detail { | |
20 | u8 node_id; /* Scalability Node ID */ | |
eae93755 | 21 | u32 CBAR; /* Address of 1MB register space */ |
b34e90b8 LV |
22 | u8 port0node; /* Node ID port connected to: 0xFF=None */ |
23 | u8 port0port; /* Port num port connected to: 0,1,2, or */ | |
24 | /* 0xFF=None */ | |
25 | u8 port1node; /* Node ID port connected to: 0xFF = None */ | |
26 | u8 port1port; /* Port num port connected to: 0,1,2, or */ | |
27 | /* 0xFF=None */ | |
28 | u8 port2node; /* Node ID port connected to: 0xFF = None */ | |
29 | u8 port2port; /* Port num port connected to: 0,1,2, or */ | |
30 | /* 0xFF=None */ | |
31 | u8 chassis_num; /* 1 based Chassis number (1 = boot node) */ | |
32 | } __attribute__((packed)); | |
33 | ||
34 | struct rio_detail { | |
35 | u8 node_id; /* RIO Node ID */ | |
eae93755 | 36 | u32 BBAR; /* Address of 1MB register space */ |
b34e90b8 LV |
37 | u8 type; /* Type of device */ |
38 | u8 owner_id; /* Node ID of Hurricane that owns this */ | |
39 | /* node */ | |
40 | u8 port0node; /* Node ID port connected to: 0xFF=None */ | |
41 | u8 port0port; /* Port num port connected to: 0,1,2, or */ | |
42 | /* 0xFF=None */ | |
43 | u8 port1node; /* Node ID port connected to: 0xFF=None */ | |
44 | u8 port1port; /* Port num port connected to: 0,1,2, or */ | |
45 | /* 0xFF=None */ | |
46 | u8 first_slot; /* Lowest slot number below this Calgary */ | |
47 | u8 status; /* Bit 0 = 1 : the XAPIC is used */ | |
48 | /* = 0 : the XAPIC is not used, ie: */ | |
49 | /* ints fwded to another XAPIC */ | |
50 | /* Bits1:7 Reserved */ | |
51 | u8 WP_index; /* instance index - lower ones have */ | |
52 | /* lower slot numbers/PCI bus numbers */ | |
53 | u8 chassis_num; /* 1 based Chassis number */ | |
54 | } __attribute__((packed)); | |
55 | ||
56 | enum { | |
57 | HURR_SCALABILTY = 0, /* Hurricane Scalability info */ | |
58 | HURR_RIOIB = 2, /* Hurricane RIOIB info */ | |
59 | COMPAT_CALGARY = 4, /* Compatibility Calgary */ | |
60 | ALT_CALGARY = 5, /* Second Planar Calgary */ | |
61 | }; | |
62 | ||
63 | /* | |
64 | * there is a real-mode segmented pointer pointing to the | |
65 | * 4K EBDA area at 0x40E. | |
66 | */ | |
b34e90b8 LV |
67 | static inline unsigned long get_bios_ebda(void) |
68 | { | |
eae93755 | 69 | unsigned long address = *(unsigned short *)phys_to_virt(0x40EUL); |
b34e90b8 LV |
70 | address <<= 4; |
71 | return address; | |
72 | } | |
73 | ||
74 | #endif /* __ASM_RIO_H */ |