6c92227eda8d0b65f49c95556dac690ffe663673
[coreboot.git] / src / vendorcode / amd / cimx / sb800 / AMDSBLIB.h
1 /**
2  * @file
3  *
4  * Southbridge IO access common routine define file
5  *
6  *
7  *
8  * @xrefitem bom "File Content Label" "Release Content"
9  * @e project:      CIMx-SB
10  * @e sub-project:
11  * @e \$Revision:$   @e \$Date:$
12  *
13  */
14 /*
15  *****************************************************************************
16  *
17  * Copyright (c) 2011, Advanced Micro Devices, Inc.
18  * All rights reserved.
19  * 
20  * Redistribution and use in source and binary forms, with or without
21  * modification, are permitted provided that the following conditions are met:
22  *     * Redistributions of source code must retain the above copyright
23  *       notice, this list of conditions and the following disclaimer.
24  *     * Redistributions in binary form must reproduce the above copyright
25  *       notice, this list of conditions and the following disclaimer in the
26  *       documentation and/or other materials provided with the distribution.
27  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of 
28  *       its contributors may be used to endorse or promote products derived 
29  *       from this software without specific prior written permission.
30  * 
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
32  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
33  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
35  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
36  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
37  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
38  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
39  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41  * 
42  * ***************************************************************************
43  *
44  */
45
46
47 //AMDSBLIB Routines
48
49 /**
50  * SbStall - Delay routine
51  *
52  *
53  *
54  * @param[in] uSec
55  *
56  */
57 void  SbStall (IN unsigned int uSec);
58
59 /**
60  * SbReset - Generate a reset command
61  *
62  *
63  *
64  * @param[in] OpFlag - Dummy
65  *
66  */
67 void SbReset (IN unsigned char OpFlag);
68
69 /**
70  * outPort80 - Send data to PORT 80 (debug port)
71  *
72  *
73  *
74  * @param[in] pcode - debug code (32 bits)
75  *
76  */
77 void outPort80 (IN unsigned int pcode);
78
79 /**
80  * getEfuseStatue - Get Efuse status
81  *
82  *
83  * @param[in] Value - Return Chip strap status
84  *
85  */
86 void getEfuseStatus (IN void* Value);
87
88 /**
89  * AmdSbDispatcher - Dispatch Southbridge function
90  *
91  *
92  *
93  * @param[in] pConfig   Southbridge configuration structure pointer.
94  *
95  */
96 AGESA_STATUS  AmdSbDispatcher (IN void *pConfig);
97
98 /**
99  * AmdSbCopyMem - Memory copy
100  *
101  * @param[in] pDest - Destance address point
102  * @param[in] pSource - Source Address point
103  * @param[in] Length - Data length
104  *
105  */
106 void AmdSbCopyMem (IN void* pDest, IN void* pSource, IN unsigned int Length);
107
108
109 /* SB800 CIMx and AGESA V5 can share lib functions */
110 unsigned char ReadIo8(IN unsigned short Address);
111 unsigned short ReadIo16(IN unsigned short Address);
112 unsigned int ReadIo32(IN unsigned short Address);
113 void WriteIo8(IN unsigned short Address, IN unsigned char Data);
114 void WriteIo16(IN unsigned short Address, IN unsigned short Data);
115 void WriteIo32(IN unsigned short Address, IN unsigned int Data);
116 //void CpuidRead(IN unsigned int CpuidFcnAddress, OUT CPUID_DATA *Value);
117 void CpuidRead(unsigned int CpuidFcnAddress, CPUID_DATA *Value);
118 unsigned char ReadNumberOfCpuCores(void);