b2a0a1b75a5e1f1ea8c8907708c638bd2fbc603e
[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 #ifndef __VENDORCODE_AMD_CIMX_SB800_AMDSBLIB_H__
47 #define __VENDORCODE_AMD_CIMX_SB800_AMDSBLIB_H__
48
49 //AMDSBLIB Routines
50
51 /**
52  * SbStall - Delay routine
53  *
54  *
55  *
56  * @param[in] uSec
57  *
58  */
59 void  SbStall (IN unsigned int uSec);
60
61 /**
62  * SbReset - Generate a reset command
63  *
64  *
65  *
66  * @param[in] OpFlag - Dummy
67  *
68  */
69 void SbReset (IN unsigned char OpFlag);
70
71 /**
72  * outPort80 - Send data to PORT 80 (debug port)
73  *
74  *
75  *
76  * @param[in] pcode - debug code (32 bits)
77  *
78  */
79 void outPort80 (IN unsigned int pcode);
80
81 /**
82  * getEfuseStatue - Get Efuse status
83  *
84  *
85  * @param[in] Value - Return Chip strap status
86  *
87  */
88 void getEfuseStatus (IN void* Value);
89
90 /**
91  * AmdSbDispatcher - Dispatch Southbridge function
92  *
93  *
94  *
95  * @param[in] pConfig   Southbridge configuration structure pointer.
96  *
97  */
98 AGESA_STATUS  AmdSbDispatcher (IN void *pConfig);
99
100 /**
101  * AmdSbCopyMem - Memory copy
102  *
103  * @param[in] pDest - Destance address point
104  * @param[in] pSource - Source Address point
105  * @param[in] Length - Data length
106  *
107  */
108 void AmdSbCopyMem (IN void* pDest, IN void* pSource, IN unsigned int Length);
109
110
111 /* SB800 CIMx and AGESA V5 can share lib functions */
112 unsigned char ReadIo8(IN unsigned short Address);
113 unsigned short ReadIo16(IN unsigned short Address);
114 unsigned int ReadIo32(IN unsigned short Address);
115 void WriteIo8(IN unsigned short Address, IN unsigned char Data);
116 void WriteIo16(IN unsigned short Address, IN unsigned short Data);
117 void WriteIo32(IN unsigned short Address, IN unsigned int Data);
118 //void CpuidRead(IN unsigned int CpuidFcnAddress, OUT CPUID_DATA *Value);
119 void CpuidRead(unsigned int CpuidFcnAddress, CPUID_DATA *Value);
120 unsigned char ReadNumberOfCpuCores(void);
121
122 #endif