diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2005-09-28 09:37:01 -0400 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2005-09-30 04:03:56 -0400 |
commit | b08567cb680686cdea9e362c0ccf0a08d77b9f0c (patch) | |
tree | 534e348cfa070dc9fe0344aae16d6a7512faccea /arch/powerpc/platforms | |
parent | ab11d1ea281e85895369ef57c5259ad8a432fabb (diff) |
ppc64 iseries: move some iSeries include files
These files are only referenced from within
arch/powerpc/platforms/iseries, so move them there.
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r-- | arch/powerpc/platforms/iseries/call_sm.h | 37 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/ipl_parms.h | 70 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/irq.c | 3 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/irq.h | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/lpardata.c | 10 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/main_store.h | 165 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/pci.c | 3 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/proc.c | 5 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/processor_vpd.h | 85 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/release_data.h | 63 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/setup.c | 10 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/spcomm_area.h | 36 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/vpd_areas.h | 88 |
13 files changed, 569 insertions, 14 deletions
diff --git a/arch/powerpc/platforms/iseries/call_sm.h b/arch/powerpc/platforms/iseries/call_sm.h new file mode 100644 index 000000000000..ef223166cf22 --- /dev/null +++ b/arch/powerpc/platforms/iseries/call_sm.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef _ISERIES_CALL_SM_H | ||
19 | #define _ISERIES_CALL_SM_H | ||
20 | |||
21 | /* | ||
22 | * This file contains the "hypervisor call" interface which is used to | ||
23 | * drive the hypervisor from the OS. | ||
24 | */ | ||
25 | |||
26 | #include <asm/iSeries/HvCallSc.h> | ||
27 | #include <asm/iSeries/HvTypes.h> | ||
28 | |||
29 | #define HvCallSmGet64BitsOfAccessMap HvCallSm + 11 | ||
30 | |||
31 | static inline u64 HvCallSm_get64BitsOfAccessMap(HvLpIndex lpIndex, | ||
32 | u64 indexIntoBitMap) | ||
33 | { | ||
34 | return HvCall2(HvCallSmGet64BitsOfAccessMap, lpIndex, indexIntoBitMap); | ||
35 | } | ||
36 | |||
37 | #endif /* _ISERIES_CALL_SM_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/ipl_parms.h b/arch/powerpc/platforms/iseries/ipl_parms.h new file mode 100644 index 000000000000..77c135ddbf1b --- /dev/null +++ b/arch/powerpc/platforms/iseries/ipl_parms.h | |||
@@ -0,0 +1,70 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef _ISERIES_IPL_PARMS_H | ||
19 | #define _ISERIES_IPL_PARMS_H | ||
20 | |||
21 | /* | ||
22 | * This struct maps the IPL Parameters DMA'd from the SP. | ||
23 | * | ||
24 | * Warning: | ||
25 | * This data must map in exactly 64 bytes and match the architecture for | ||
26 | * the IPL parms | ||
27 | */ | ||
28 | |||
29 | #include <asm/types.h> | ||
30 | |||
31 | struct ItIplParmsReal { | ||
32 | u8 xFormat; // Defines format of IplParms x00-x00 | ||
33 | u8 xRsvd01:6; // Reserved x01-x01 | ||
34 | u8 xAlternateSearch:1; // Alternate search indicator ... | ||
35 | u8 xUaSupplied:1; // UA Supplied on programmed IPL... | ||
36 | u8 xLsUaFormat; // Format byte for UA x02-x02 | ||
37 | u8 xRsvd02; // Reserved x03-x03 | ||
38 | u32 xLsUa; // LS UA x04-x07 | ||
39 | u32 xUnusedLsLid; // First OS LID to load x08-x0B | ||
40 | u16 xLsBusNumber; // LS Bus Number x0C-x0D | ||
41 | u8 xLsCardAdr; // LS Card Address x0E-x0E | ||
42 | u8 xLsBoardAdr; // LS Board Address x0F-x0F | ||
43 | u32 xRsvd03; // Reserved x10-x13 | ||
44 | u8 xSpcnPresent:1; // SPCN present x14-x14 | ||
45 | u8 xCpmPresent:1; // CPM present ... | ||
46 | u8 xRsvd04:6; // Reserved ... | ||
47 | u8 xRsvd05:4; // Reserved x15-x15 | ||
48 | u8 xKeyLock:4; // Keylock setting ... | ||
49 | u8 xRsvd06:6; // Reserved x16-x16 | ||
50 | u8 xIplMode:2; // Ipl mode (A|B|C|D) ... | ||
51 | u8 xHwIplType; // Fast v slow v slow EC HW IPL x17-x17 | ||
52 | u16 xCpmEnabledIpl:1; // CPM in effect when IPL initiatedx18-x19 | ||
53 | u16 xPowerOnResetIpl:1; // Indicate POR condition ... | ||
54 | u16 xMainStorePreserved:1; // Main Storage is preserved ... | ||
55 | u16 xRsvd07:13; // Reserved ... | ||
56 | u16 xIplSource:16; // Ipl source x1A-x1B | ||
57 | u8 xIplReason:8; // Reason for this IPL x1C-x1C | ||
58 | u8 xRsvd08; // Reserved x1D-x1D | ||
59 | u16 xRsvd09; // Reserved x1E-x1F | ||
60 | u16 xSysBoxType; // System Box Type x20-x21 | ||
61 | u16 xSysProcType; // System Processor Type x22-x23 | ||
62 | u32 xRsvd10; // Reserved x24-x27 | ||
63 | u64 xRsvd11; // Reserved x28-x2F | ||
64 | u64 xRsvd12; // Reserved x30-x37 | ||
65 | u64 xRsvd13; // Reserved x38-x3F | ||
66 | }; | ||
67 | |||
68 | extern struct ItIplParmsReal xItIplParmsReal; | ||
69 | |||
70 | #endif /* _ISERIES_IPL_PARMS_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/irq.c b/arch/powerpc/platforms/iseries/irq.c index 5a8a0056b31f..31fb5fa67fa3 100644 --- a/arch/powerpc/platforms/iseries/irq.c +++ b/arch/powerpc/platforms/iseries/irq.c | |||
@@ -40,7 +40,8 @@ | |||
40 | #include <asm/iSeries/HvLpEvent.h> | 40 | #include <asm/iSeries/HvLpEvent.h> |
41 | #include <asm/iSeries/HvCallPci.h> | 41 | #include <asm/iSeries/HvCallPci.h> |
42 | #include <asm/iSeries/HvCallXm.h> | 42 | #include <asm/iSeries/HvCallXm.h> |
43 | #include <asm/iSeries/iSeries_irq.h> | 43 | |
44 | #include "irq.h" | ||
44 | 45 | ||
45 | /* This maps virtual irq numbers to real irqs */ | 46 | /* This maps virtual irq numbers to real irqs */ |
46 | unsigned int virt_irq_to_real_map[NR_IRQS]; | 47 | unsigned int virt_irq_to_real_map[NR_IRQS]; |
diff --git a/arch/powerpc/platforms/iseries/irq.h b/arch/powerpc/platforms/iseries/irq.h new file mode 100644 index 000000000000..5f643f16ecc0 --- /dev/null +++ b/arch/powerpc/platforms/iseries/irq.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef _ISERIES_IRQ_H | ||
2 | #define _ISERIES_IRQ_H | ||
3 | |||
4 | extern void iSeries_init_IRQ(void); | ||
5 | extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, HvAgentId); | ||
6 | extern void iSeries_activate_IRQs(void); | ||
7 | |||
8 | #endif /* _ISERIES_IRQ_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/lpardata.c b/arch/powerpc/platforms/iseries/lpardata.c index 87b7ad8ca465..ed2ffee6f731 100644 --- a/arch/powerpc/platforms/iseries/lpardata.c +++ b/arch/powerpc/platforms/iseries/lpardata.c | |||
@@ -19,15 +19,15 @@ | |||
19 | #include <asm/lppaca.h> | 19 | #include <asm/lppaca.h> |
20 | #include <asm/iSeries/ItLpRegSave.h> | 20 | #include <asm/iSeries/ItLpRegSave.h> |
21 | #include <asm/paca.h> | 21 | #include <asm/paca.h> |
22 | #include <asm/iSeries/HvReleaseData.h> | ||
23 | #include <asm/iSeries/LparMap.h> | 22 | #include <asm/iSeries/LparMap.h> |
24 | #include <asm/iSeries/ItVpdAreas.h> | ||
25 | #include <asm/iSeries/ItIplParmsReal.h> | ||
26 | #include <asm/iSeries/ItExtVpdPanel.h> | 23 | #include <asm/iSeries/ItExtVpdPanel.h> |
27 | #include <asm/iSeries/ItLpQueue.h> | 24 | #include <asm/iSeries/ItLpQueue.h> |
28 | #include <asm/iSeries/IoHriProcessorVpd.h> | ||
29 | #include <asm/iSeries/ItSpCommArea.h> | ||
30 | 25 | ||
26 | #include "vpd_areas.h" | ||
27 | #include "spcomm_area.h" | ||
28 | #include "ipl_parms.h" | ||
29 | #include "processor_vpd.h" | ||
30 | #include "release_data.h" | ||
31 | 31 | ||
32 | /* The HvReleaseData is the root of the information shared between | 32 | /* The HvReleaseData is the root of the information shared between |
33 | * the hypervisor and Linux. | 33 | * the hypervisor and Linux. |
diff --git a/arch/powerpc/platforms/iseries/main_store.h b/arch/powerpc/platforms/iseries/main_store.h new file mode 100644 index 000000000000..74f6889f834f --- /dev/null +++ b/arch/powerpc/platforms/iseries/main_store.h | |||
@@ -0,0 +1,165 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef _ISERIES_MAIN_STORE_H | ||
20 | #define _ISERIES_MAIN_STORE_H | ||
21 | |||
22 | /* Main Store Vpd for Condor,iStar,sStar */ | ||
23 | struct IoHriMainStoreSegment4 { | ||
24 | u8 msArea0Exists:1; | ||
25 | u8 msArea1Exists:1; | ||
26 | u8 msArea2Exists:1; | ||
27 | u8 msArea3Exists:1; | ||
28 | u8 reserved1:4; | ||
29 | u8 reserved2; | ||
30 | |||
31 | u8 msArea0Functional:1; | ||
32 | u8 msArea1Functional:1; | ||
33 | u8 msArea2Functional:1; | ||
34 | u8 msArea3Functional:1; | ||
35 | u8 reserved3:4; | ||
36 | u8 reserved4; | ||
37 | |||
38 | u32 totalMainStore; | ||
39 | |||
40 | u64 msArea0Ptr; | ||
41 | u64 msArea1Ptr; | ||
42 | u64 msArea2Ptr; | ||
43 | u64 msArea3Ptr; | ||
44 | |||
45 | u32 cardProductionLevel; | ||
46 | |||
47 | u32 msAdrHole; | ||
48 | |||
49 | u8 msArea0HasRiserVpd:1; | ||
50 | u8 msArea1HasRiserVpd:1; | ||
51 | u8 msArea2HasRiserVpd:1; | ||
52 | u8 msArea3HasRiserVpd:1; | ||
53 | u8 reserved5:4; | ||
54 | u8 reserved6; | ||
55 | u16 reserved7; | ||
56 | |||
57 | u8 reserved8[28]; | ||
58 | |||
59 | u64 nonInterleavedBlocksStartAdr; | ||
60 | u64 nonInterleavedBlocksEndAdr; | ||
61 | }; | ||
62 | |||
63 | /* Main Store VPD for Power4 */ | ||
64 | struct IoHriMainStoreChipInfo1 { | ||
65 | u32 chipMfgID __attribute((packed)); | ||
66 | char chipECLevel[4] __attribute((packed)); | ||
67 | }; | ||
68 | |||
69 | struct IoHriMainStoreVpdIdData { | ||
70 | char typeNumber[4]; | ||
71 | char modelNumber[4]; | ||
72 | char partNumber[12]; | ||
73 | char serialNumber[12]; | ||
74 | }; | ||
75 | |||
76 | struct IoHriMainStoreVpdFruData { | ||
77 | char fruLabel[8] __attribute((packed)); | ||
78 | u8 numberOfSlots __attribute((packed)); | ||
79 | u8 pluggingType __attribute((packed)); | ||
80 | u16 slotMapIndex __attribute((packed)); | ||
81 | }; | ||
82 | |||
83 | struct IoHriMainStoreAdrRangeBlock { | ||
84 | void *blockStart __attribute((packed)); | ||
85 | void *blockEnd __attribute((packed)); | ||
86 | u32 blockProcChipId __attribute((packed)); | ||
87 | }; | ||
88 | |||
89 | #define MaxAreaAdrRangeBlocks 4 | ||
90 | |||
91 | struct IoHriMainStoreArea4 { | ||
92 | u32 msVpdFormat __attribute((packed)); | ||
93 | u8 containedVpdType __attribute((packed)); | ||
94 | u8 reserved1 __attribute((packed)); | ||
95 | u16 reserved2 __attribute((packed)); | ||
96 | |||
97 | u64 msExists __attribute((packed)); | ||
98 | u64 msFunctional __attribute((packed)); | ||
99 | |||
100 | u32 memorySize __attribute((packed)); | ||
101 | u32 procNodeId __attribute((packed)); | ||
102 | |||
103 | u32 numAdrRangeBlocks __attribute((packed)); | ||
104 | struct IoHriMainStoreAdrRangeBlock xAdrRangeBlock[MaxAreaAdrRangeBlocks] __attribute((packed)); | ||
105 | |||
106 | struct IoHriMainStoreChipInfo1 chipInfo0 __attribute((packed)); | ||
107 | struct IoHriMainStoreChipInfo1 chipInfo1 __attribute((packed)); | ||
108 | struct IoHriMainStoreChipInfo1 chipInfo2 __attribute((packed)); | ||
109 | struct IoHriMainStoreChipInfo1 chipInfo3 __attribute((packed)); | ||
110 | struct IoHriMainStoreChipInfo1 chipInfo4 __attribute((packed)); | ||
111 | struct IoHriMainStoreChipInfo1 chipInfo5 __attribute((packed)); | ||
112 | struct IoHriMainStoreChipInfo1 chipInfo6 __attribute((packed)); | ||
113 | struct IoHriMainStoreChipInfo1 chipInfo7 __attribute((packed)); | ||
114 | |||
115 | void *msRamAreaArray __attribute((packed)); | ||
116 | u32 msRamAreaArrayNumEntries __attribute((packed)); | ||
117 | u32 msRamAreaArrayEntrySize __attribute((packed)); | ||
118 | |||
119 | u32 numaDimmExists __attribute((packed)); | ||
120 | u32 numaDimmFunctional __attribute((packed)); | ||
121 | void *numaDimmArray __attribute((packed)); | ||
122 | u32 numaDimmArrayNumEntries __attribute((packed)); | ||
123 | u32 numaDimmArrayEntrySize __attribute((packed)); | ||
124 | |||
125 | struct IoHriMainStoreVpdIdData idData __attribute((packed)); | ||
126 | |||
127 | u64 powerData __attribute((packed)); | ||
128 | u64 cardAssemblyPartNum __attribute((packed)); | ||
129 | u64 chipSerialNum __attribute((packed)); | ||
130 | |||
131 | u64 reserved3 __attribute((packed)); | ||
132 | char reserved4[16] __attribute((packed)); | ||
133 | |||
134 | struct IoHriMainStoreVpdFruData fruData __attribute((packed)); | ||
135 | |||
136 | u8 vpdPortNum __attribute((packed)); | ||
137 | u8 reserved5 __attribute((packed)); | ||
138 | u8 frameId __attribute((packed)); | ||
139 | u8 rackUnit __attribute((packed)); | ||
140 | char asciiKeywordVpd[256] __attribute((packed)); | ||
141 | u32 reserved6 __attribute((packed)); | ||
142 | }; | ||
143 | |||
144 | |||
145 | struct IoHriMainStoreSegment5 { | ||
146 | u16 reserved1; | ||
147 | u8 reserved2; | ||
148 | u8 msVpdFormat; | ||
149 | |||
150 | u32 totalMainStore; | ||
151 | u64 maxConfiguredMsAdr; | ||
152 | |||
153 | struct IoHriMainStoreArea4 *msAreaArray; | ||
154 | u32 msAreaArrayNumEntries; | ||
155 | u32 msAreaArrayEntrySize; | ||
156 | |||
157 | u32 msAreaExists; | ||
158 | u32 msAreaFunctional; | ||
159 | |||
160 | u64 reserved3; | ||
161 | }; | ||
162 | |||
163 | extern u64 xMsVpd[]; | ||
164 | |||
165 | #endif /* _ISERIES_MAIN_STORE_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c index 501b1dcbfac5..70185dec940b 100644 --- a/arch/powerpc/platforms/iseries/pci.c +++ b/arch/powerpc/platforms/iseries/pci.c | |||
@@ -37,12 +37,13 @@ | |||
37 | 37 | ||
38 | #include <asm/iSeries/HvCallPci.h> | 38 | #include <asm/iSeries/HvCallPci.h> |
39 | #include <asm/iSeries/HvCallXm.h> | 39 | #include <asm/iSeries/HvCallXm.h> |
40 | #include <asm/iSeries/iSeries_irq.h> | ||
41 | #include <asm/iSeries/iSeries_pci.h> | 40 | #include <asm/iSeries/iSeries_pci.h> |
42 | #include <asm/iSeries/mf.h> | 41 | #include <asm/iSeries/mf.h> |
43 | 42 | ||
44 | #include <asm/ppc-pci.h> | 43 | #include <asm/ppc-pci.h> |
45 | 44 | ||
45 | #include "irq.h" | ||
46 | |||
46 | extern unsigned long io_page_mask; | 47 | extern unsigned long io_page_mask; |
47 | 48 | ||
48 | /* | 49 | /* |
diff --git a/arch/powerpc/platforms/iseries/proc.c b/arch/powerpc/platforms/iseries/proc.c index d46b473ce4dd..6f1929cac66b 100644 --- a/arch/powerpc/platforms/iseries/proc.c +++ b/arch/powerpc/platforms/iseries/proc.c | |||
@@ -26,8 +26,9 @@ | |||
26 | #include <asm/lppaca.h> | 26 | #include <asm/lppaca.h> |
27 | #include <asm/iSeries/ItLpQueue.h> | 27 | #include <asm/iSeries/ItLpQueue.h> |
28 | #include <asm/iSeries/HvCallXm.h> | 28 | #include <asm/iSeries/HvCallXm.h> |
29 | #include <asm/iSeries/IoHriMainStore.h> | 29 | |
30 | #include <asm/iSeries/IoHriProcessorVpd.h> | 30 | #include "processor_vpd.h" |
31 | #include "main_store.h" | ||
31 | 32 | ||
32 | static int __init iseries_proc_create(void) | 33 | static int __init iseries_proc_create(void) |
33 | { | 34 | { |
diff --git a/arch/powerpc/platforms/iseries/processor_vpd.h b/arch/powerpc/platforms/iseries/processor_vpd.h new file mode 100644 index 000000000000..7ac5d0d0dbfa --- /dev/null +++ b/arch/powerpc/platforms/iseries/processor_vpd.h | |||
@@ -0,0 +1,85 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef _ISERIES_PROCESSOR_VPD_H | ||
19 | #define _ISERIES_PROCESSOR_VPD_H | ||
20 | |||
21 | #include <asm/types.h> | ||
22 | |||
23 | /* | ||
24 | * This struct maps Processor Vpd that is DMAd to SLIC by CSP | ||
25 | */ | ||
26 | struct IoHriProcessorVpd { | ||
27 | u8 xFormat; // VPD format indicator x00-x00 | ||
28 | u8 xProcStatus:8; // Processor State x01-x01 | ||
29 | u8 xSecondaryThreadCount; // Secondary thread cnt x02-x02 | ||
30 | u8 xSrcType:1; // Src Type x03-x03 | ||
31 | u8 xSrcSoft:1; // Src stay soft ... | ||
32 | u8 xSrcParable:1; // Src parable ... | ||
33 | u8 xRsvd1:5; // Reserved ... | ||
34 | u16 xHvPhysicalProcIndex; // Hypervisor physical proc index04-x05 | ||
35 | u16 xRsvd2; // Reserved x06-x07 | ||
36 | u32 xHwNodeId; // Hardware node id x08-x0B | ||
37 | u32 xHwProcId; // Hardware processor id x0C-x0F | ||
38 | |||
39 | u32 xTypeNum; // Card Type/CCIN number x10-x13 | ||
40 | u32 xModelNum; // Model/Feature number x14-x17 | ||
41 | u64 xSerialNum; // Serial number x18-x1F | ||
42 | char xPartNum[12]; // Book Part or FPU number x20-x2B | ||
43 | char xMfgID[4]; // Manufacturing ID x2C-x2F | ||
44 | |||
45 | u32 xProcFreq; // Processor Frequency x30-x33 | ||
46 | u32 xTimeBaseFreq; // Time Base Frequency x34-x37 | ||
47 | |||
48 | u32 xChipEcLevel; // Chip EC Levels x38-x3B | ||
49 | u32 xProcIdReg; // PIR SPR value x3C-x3F | ||
50 | u32 xPVR; // PVR value x40-x43 | ||
51 | u8 xRsvd3[12]; // Reserved x44-x4F | ||
52 | |||
53 | u32 xInstCacheSize; // Instruction cache size in KB x50-x53 | ||
54 | u32 xInstBlockSize; // Instruction cache block size x54-x57 | ||
55 | u32 xDataCacheOperandSize; // Data cache operand size x58-x5B | ||
56 | u32 xInstCacheOperandSize; // Inst cache operand size x5C-x5F | ||
57 | |||
58 | u32 xDataL1CacheSizeKB; // L1 data cache size in KB x60-x63 | ||
59 | u32 xDataL1CacheLineSize; // L1 data cache block size x64-x67 | ||
60 | u64 xRsvd4; // Reserved x68-x6F | ||
61 | |||
62 | u32 xDataL2CacheSizeKB; // L2 data cache size in KB x70-x73 | ||
63 | u32 xDataL2CacheLineSize; // L2 data cache block size x74-x77 | ||
64 | u64 xRsvd5; // Reserved x78-x7F | ||
65 | |||
66 | u32 xDataL3CacheSizeKB; // L3 data cache size in KB x80-x83 | ||
67 | u32 xDataL3CacheLineSize; // L3 data cache block size x84-x87 | ||
68 | u64 xRsvd6; // Reserved x88-x8F | ||
69 | |||
70 | u64 xFruLabel; // Card Location Label x90-x97 | ||
71 | u8 xSlotsOnCard; // Slots on card (0=no slots) x98-x98 | ||
72 | u8 xPartLocFlag; // Location flag (0-pluggable 1-imbedded) x99-x99 | ||
73 | u16 xSlotMapIndex; // Index in slot map table x9A-x9B | ||
74 | u8 xSmartCardPortNo; // Smart card port number x9C-x9C | ||
75 | u8 xRsvd7; // Reserved x9D-x9D | ||
76 | u16 xFrameIdAndRackUnit; // Frame ID and rack unit adr x9E-x9F | ||
77 | |||
78 | u8 xRsvd8[24]; // Reserved xA0-xB7 | ||
79 | |||
80 | char xProcSrc[72]; // CSP format SRC xB8-xFF | ||
81 | }; | ||
82 | |||
83 | extern struct IoHriProcessorVpd xIoHriProcessorVpd[]; | ||
84 | |||
85 | #endif /* _ISERIES_PROCESSOR_VPD_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/release_data.h b/arch/powerpc/platforms/iseries/release_data.h new file mode 100644 index 000000000000..c68b9c3e5caf --- /dev/null +++ b/arch/powerpc/platforms/iseries/release_data.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef _ISERIES_RELEASE_DATA_H | ||
19 | #define _ISERIES_RELEASE_DATA_H | ||
20 | |||
21 | /* | ||
22 | * This control block contains the critical information about the | ||
23 | * release so that it can be changed in the future (ie, the virtual | ||
24 | * address of the OS's NACA). | ||
25 | */ | ||
26 | #include <asm/types.h> | ||
27 | #include <asm/naca.h> | ||
28 | |||
29 | /* | ||
30 | * When we IPL a secondary partition, we will check if if the | ||
31 | * secondary xMinPlicVrmIndex > the primary xVrmIndex. | ||
32 | * If it is then this tells PLIC that this secondary is not | ||
33 | * supported running on this "old" of a level of PLIC. | ||
34 | * | ||
35 | * Likewise, we will compare the primary xMinSlicVrmIndex to | ||
36 | * the secondary xVrmIndex. | ||
37 | * If the primary xMinSlicVrmDelta > secondary xVrmDelta then we | ||
38 | * know that this PLIC does not support running an OS "that old". | ||
39 | */ | ||
40 | |||
41 | #define HVREL_TAGSINACTIVE 0x8000 | ||
42 | #define HVREL_32BIT 0x4000 | ||
43 | #define HVREL_NOSHAREDPROCS 0x2000 | ||
44 | #define HVREL_NOHMT 0x1000 | ||
45 | |||
46 | struct HvReleaseData { | ||
47 | u32 xDesc; /* Descriptor "HvRD" ebcdic x00-x03 */ | ||
48 | u16 xSize; /* Size of this control block x04-x05 */ | ||
49 | u16 xVpdAreasPtrOffset; /* Offset in NACA of ItVpdAreas x06-x07 */ | ||
50 | struct naca_struct *xSlicNacaAddr; /* Virt addr of SLIC NACA x08-x0F */ | ||
51 | u32 xMsNucDataOffset; /* Offset of Linux Mapping Data x10-x13 */ | ||
52 | u32 xRsvd1; /* Reserved x14-x17 */ | ||
53 | u16 xFlags; | ||
54 | u16 xVrmIndex; /* VRM Index of OS image x1A-x1B */ | ||
55 | u16 xMinSupportedPlicVrmIndex; /* Min PLIC level (soft) x1C-x1D */ | ||
56 | u16 xMinCompatablePlicVrmIndex; /* Min PLIC levelP (hard) x1E-x1F */ | ||
57 | char xVrmName[12]; /* Displayable name x20-x2B */ | ||
58 | char xRsvd3[20]; /* Reserved x2C-x3F */ | ||
59 | }; | ||
60 | |||
61 | extern struct HvReleaseData hvReleaseData; | ||
62 | |||
63 | #endif /* _ISERIES_RELEASE_DATA_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index ad78c8581a5a..c3e532b766ef 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c | |||
@@ -48,18 +48,18 @@ | |||
48 | #include <asm/iSeries/HvCallHpt.h> | 48 | #include <asm/iSeries/HvCallHpt.h> |
49 | #include <asm/iSeries/HvLpConfig.h> | 49 | #include <asm/iSeries/HvLpConfig.h> |
50 | #include <asm/iSeries/HvCallEvent.h> | 50 | #include <asm/iSeries/HvCallEvent.h> |
51 | #include <asm/iSeries/HvCallSm.h> | ||
52 | #include <asm/iSeries/HvCallXm.h> | 51 | #include <asm/iSeries/HvCallXm.h> |
53 | #include <asm/iSeries/ItLpQueue.h> | 52 | #include <asm/iSeries/ItLpQueue.h> |
54 | #include <asm/iSeries/IoHriMainStore.h> | ||
55 | #include <asm/iSeries/mf.h> | 53 | #include <asm/iSeries/mf.h> |
56 | #include <asm/iSeries/HvLpEvent.h> | 54 | #include <asm/iSeries/HvLpEvent.h> |
57 | #include <asm/iSeries/iSeries_irq.h> | ||
58 | #include <asm/iSeries/IoHriProcessorVpd.h> | ||
59 | #include <asm/iSeries/ItVpdAreas.h> | ||
60 | #include <asm/iSeries/LparMap.h> | 55 | #include <asm/iSeries/LparMap.h> |
61 | 56 | ||
62 | #include "setup.h" | 57 | #include "setup.h" |
58 | #include "irq.h" | ||
59 | #include "vpd_areas.h" | ||
60 | #include "processor_vpd.h" | ||
61 | #include "main_store.h" | ||
62 | #include "call_sm.h" | ||
63 | 63 | ||
64 | extern void hvlog(char *fmt, ...); | 64 | extern void hvlog(char *fmt, ...); |
65 | 65 | ||
diff --git a/arch/powerpc/platforms/iseries/spcomm_area.h b/arch/powerpc/platforms/iseries/spcomm_area.h new file mode 100644 index 000000000000..6e3b685115c9 --- /dev/null +++ b/arch/powerpc/platforms/iseries/spcomm_area.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef _ISERIES_SPCOMM_AREA_H | ||
20 | #define _ISERIES_SPCOMM_AREA_H | ||
21 | |||
22 | |||
23 | struct SpCommArea { | ||
24 | u32 xDesc; // Descriptor (only in new formats) 000-003 | ||
25 | u8 xFormat; // Format (only in new formats) 004-004 | ||
26 | u8 xRsvd1[11]; // Reserved 005-00F | ||
27 | u64 xRawTbAtIplStart; // Raw HW TB value when IPL is started 010-017 | ||
28 | u64 xRawTodAtIplStart; // Raw HW TOD value when IPL is started 018-01F | ||
29 | u64 xBcdTimeAtIplStart; // BCD time when IPL is started 020-027 | ||
30 | u64 xBcdTimeAtOsStart; // BCD time when OS passed control 028-02F | ||
31 | u8 xRsvd2[80]; // Reserved 030-07F | ||
32 | }; | ||
33 | |||
34 | extern struct SpCommArea xSpCommArea; | ||
35 | |||
36 | #endif /* _ISERIES_SPCOMM_AREA_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/vpd_areas.h b/arch/powerpc/platforms/iseries/vpd_areas.h new file mode 100644 index 000000000000..601e6dd860ed --- /dev/null +++ b/arch/powerpc/platforms/iseries/vpd_areas.h | |||
@@ -0,0 +1,88 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef _ISERIES_VPD_AREAS_H | ||
19 | #define _ISERIES_VPD_AREAS_H | ||
20 | |||
21 | /* | ||
22 | * This file defines the address and length of all of the VPD area passed to | ||
23 | * the OS from PLIC (most of which start from the SP). | ||
24 | */ | ||
25 | |||
26 | #include <asm/types.h> | ||
27 | |||
28 | /* VPD Entry index is carved in stone - cannot be changed (easily). */ | ||
29 | #define ItVpdCecVpd 0 | ||
30 | #define ItVpdDynamicSpace 1 | ||
31 | #define ItVpdExtVpd 2 | ||
32 | #define ItVpdExtVpdOnPanel 3 | ||
33 | #define ItVpdFirstPaca 4 | ||
34 | #define ItVpdIoVpd 5 | ||
35 | #define ItVpdIplParms 6 | ||
36 | #define ItVpdMsVpd 7 | ||
37 | #define ItVpdPanelVpd 8 | ||
38 | #define ItVpdLpNaca 9 | ||
39 | #define ItVpdBackplaneAndMaybeClockCardVpd 10 | ||
40 | #define ItVpdRecoveryLogBuffer 11 | ||
41 | #define ItVpdSpCommArea 12 | ||
42 | #define ItVpdSpLogBuffer 13 | ||
43 | #define ItVpdSpLogBufferSave 14 | ||
44 | #define ItVpdSpCardVpd 15 | ||
45 | #define ItVpdFirstProcVpd 16 | ||
46 | #define ItVpdApModelVpd 17 | ||
47 | #define ItVpdClockCardVpd 18 | ||
48 | #define ItVpdBusExtCardVpd 19 | ||
49 | #define ItVpdProcCapacityVpd 20 | ||
50 | #define ItVpdInteractiveCapacityVpd 21 | ||
51 | #define ItVpdFirstSlotLabel 22 | ||
52 | #define ItVpdFirstLpQueue 23 | ||
53 | #define ItVpdFirstL3CacheVpd 24 | ||
54 | #define ItVpdFirstProcFruVpd 25 | ||
55 | |||
56 | #define ItVpdMaxEntries 26 | ||
57 | |||
58 | #define ItDmaMaxEntries 10 | ||
59 | |||
60 | #define ItVpdAreasMaxSlotLabels 192 | ||
61 | |||
62 | |||
63 | struct ItVpdAreas { | ||
64 | u32 xSlicDesc; // Descriptor 000-003 | ||
65 | u16 xSlicSize; // Size of this control block 004-005 | ||
66 | u16 xPlicAdjustVpdLens:1; // Flag to indicate new interface006-007 | ||
67 | u16 xRsvd1:15; // Reserved bits ... | ||
68 | u16 xSlicVpdEntries; // Number of VPD entries 008-009 | ||
69 | u16 xSlicDmaEntries; // Number of DMA entries 00A-00B | ||
70 | u16 xSlicMaxLogicalProcs; // Maximum logical processors 00C-00D | ||
71 | u16 xSlicMaxPhysicalProcs; // Maximum physical processors 00E-00F | ||
72 | u16 xSlicDmaToksOffset; // Offset into this of array 010-011 | ||
73 | u16 xSlicVpdAdrsOffset; // Offset into this of array 012-013 | ||
74 | u16 xSlicDmaLensOffset; // Offset into this of array 014-015 | ||
75 | u16 xSlicVpdLensOffset; // Offset into this of array 016-017 | ||
76 | u16 xSlicMaxSlotLabels; // Maximum number of slot labels018-019 | ||
77 | u16 xSlicMaxLpQueues; // Maximum number of LP Queues 01A-01B | ||
78 | u8 xRsvd2[4]; // Reserved 01C-01F | ||
79 | u64 xRsvd3[12]; // Reserved 020-07F | ||
80 | u32 xPlicDmaLens[ItDmaMaxEntries];// Array of DMA lengths 080-0A7 | ||
81 | u32 xPlicDmaToks[ItDmaMaxEntries];// Array of DMA tokens 0A8-0CF | ||
82 | u32 xSlicVpdLens[ItVpdMaxEntries];// Array of VPD lengths 0D0-12F | ||
83 | void *xSlicVpdAdrs[ItVpdMaxEntries];// Array of VPD buffers 130-1EF | ||
84 | }; | ||
85 | |||
86 | extern struct ItVpdAreas itVpdAreas; | ||
87 | |||
88 | #endif /* _ISERIES_VPD_AREAS_H */ | ||