blob: b2a0a1b75a5e1f1ea8c8907708c638bd2fbc603e [file] [log] [blame]
Frank Vibrans2b4c8312011-02-14 18:30:54 +00001/**
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
Stefan Reinauer971ebd82011-10-13 17:26:43 -070046#ifndef __VENDORCODE_AMD_CIMX_SB800_AMDSBLIB_H__
47#define __VENDORCODE_AMD_CIMX_SB800_AMDSBLIB_H__
Frank Vibrans2b4c8312011-02-14 18:30:54 +000048
49//AMDSBLIB Routines
50
51/**
52 * SbStall - Delay routine
53 *
54 *
55 *
56 * @param[in] uSec
57 *
58 */
59void SbStall (IN unsigned int uSec);
60
61/**
62 * SbReset - Generate a reset command
63 *
64 *
65 *
66 * @param[in] OpFlag - Dummy
67 *
68 */
69void 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 */
79void outPort80 (IN unsigned int pcode);
80
81/**
82 * getEfuseStatue - Get Efuse status
83 *
84 *
85 * @param[in] Value - Return Chip strap status
86 *
87 */
88void getEfuseStatus (IN void* Value);
89
90/**
91 * AmdSbDispatcher - Dispatch Southbridge function
92 *
93 *
94 *
95 * @param[in] pConfig Southbridge configuration structure pointer.
96 *
97 */
98AGESA_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 */
108void AmdSbCopyMem (IN void* pDest, IN void* pSource, IN unsigned int Length);
Kerry Sheeb995c22011-05-07 08:43:40 +0000109
110
111/* SB800 CIMx and AGESA V5 can share lib functions */
112unsigned char ReadIo8(IN unsigned short Address);
113unsigned short ReadIo16(IN unsigned short Address);
114unsigned int ReadIo32(IN unsigned short Address);
115void WriteIo8(IN unsigned short Address, IN unsigned char Data);
116void WriteIo16(IN unsigned short Address, IN unsigned short Data);
117void WriteIo32(IN unsigned short Address, IN unsigned int Data);
Kerry Shefeed3292011-08-18 18:03:44 +0800118//void CpuidRead(IN unsigned int CpuidFcnAddress, OUT CPUID_DATA *Value);
119void CpuidRead(unsigned int CpuidFcnAddress, CPUID_DATA *Value);
Kerry Sheeb995c22011-05-07 08:43:40 +0000120unsigned char ReadNumberOfCpuCores(void);
Stefan Reinauer971ebd82011-10-13 17:26:43 -0700121
122#endif