1 /*
2  * ItVpdAreas.h
3  * Copyright (C) 2001  Mike Corrigan IBM Corporation
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
18  */
19 
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 #ifndef _PPC_TYPES_H
27 #include        <asm/types.h>
28 #endif
29 
30 
31 #ifndef _ITVPDAREAS_H
32 #define _ITVPDAREAS_H
33 
34 // VPD Entry index is carved in stone - cannot be changed (easily).
35 #define ItVpdCecVpd				   0
36 #define ItVpdDynamicSpace			   1
37 #define ItVpdExtVpd				   2
38 #define ItVpdExtVpdOnPanel			   3
39 #define ItVpdFirstPaca				   4
40 #define ItVpdIoVpd				   5
41 #define ItVpdIplParms				   6
42 #define ItVpdMsVpd				   7
43 #define ItVpdPanelVpd				   8
44 #define ItVpdLpNaca				   9
45 #define ItVpdBackplaneAndMaybeClockCardVpd        10
46 #define ItVpdRecoveryLogBuffer		          11
47 #define ItVpdSpCommArea				  12
48 #define ItVpdSpLogBuffer			  13
49 #define ItVpdSpLogBufferSave			  14
50 #define ItVpdSpCardVpd				  15
51 #define ItVpdFirstProcVpd			  16
52 #define ItVpdApModelVpd				  17
53 #define ItVpdClockCardVpd			  18
54 #define ItVpdBusExtCardVpd			  19
55 #define ItVpdProcCapacityVpd			  20
56 #define ItVpdInteractiveCapacityVpd		  21
57 #define ItVpdFirstSlotLabel			  22
58 #define ItVpdFirstLpQueue			  23
59 #define ItVpdFirstL3CacheVpd			  24
60 #define ItVpdFirstProcFruVpd			  25
61 
62 #define ItVpdMaxEntries				  26
63 
64 
65 #define ItDmaMaxEntries				  10
66 
67 #define ItVpdAreasMaxSlotLabels		 192
68 
69 
70 struct SlicVpdAdrs {
71 	u32	pad1;
72 	void *  vpdAddr;
73 };
74 
75 
76 struct	ItVpdAreas
77 {
78 	u32	xSlicDesc;		// Descriptor				000-003
79 	u16	xSlicSize;		// Size of this control block		004-005
80 	u16	xPlicAdjustVpdLens:1;	// Flag to indicate new interface 	006-007
81 	u16	xRsvd1:15;		// Reserved bits			...
82 	u16	xSlicVpdEntries;	// Number of VPD entries		008-009
83 	u16	xSlicDmaEntries;	// Number of DMA entries		00A-00B
84 	u16	xSlicMaxLogicalProcs;	// Maximum logical processors		00C-00D
85 	u16	xSlicMaxPhysicalProcs;	// Maximum physical processors		00E-00F
86 	u16	xSlicDmaToksOffset;	// Offset into this of array		010-011
87 	u16	xSlicVpdAdrsOffset;	// Offset into this of array		012-013
88 	u16	xSlicDmaLensOffset;	// Offset into this of array		014-015
89 	u16	xSlicVpdLensOffset;	// Offset into this of array		016-017
90 	u16	xSlicMaxSlotLabels;	// Maximum number of slot labels	018-019
91 	u16	xSlicMaxLpQueues;	// Maximum number of LP Queues		01A-01B
92 	u8	xRsvd2[4];		// Reserved				01C-01F
93 	u64	xRsvd3[12];		// Reserved				020-07F
94 	u32	xPlicDmaLens[ItDmaMaxEntries];// Array of DMA lengths		080-0A7
95 	u32	xPlicDmaToks[ItDmaMaxEntries];// Array of DMA tokens		0A8-0CF
96 	u32	xSlicVpdLens[ItVpdMaxEntries];// Array of VPD lengths		0D0-12F
97 	void * xSlicVpdAdrs[ItVpdMaxEntries];// Array of VPD buffers	130-1EF
98 };
99 
100 #endif // _ITVPDAREAS_H
101