blob: 3b09dac71c483917f69b5689baa60d53c08e8772 [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.
Edward O'Callaghanb9a67002014-07-06 19:29:03 +100019 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000020 * 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.
Edward O'Callaghanb9a67002014-07-06 19:29:03 +100027 * * Neither the name of Advanced Micro Devices, Inc. nor the names of
28 * its contributors may be used to endorse or promote products derived
Frank Vibrans2b4c8312011-02-14 18:30:54 +000029 * from this software without specific prior written permission.
Edward O'Callaghanb9a67002014-07-06 19:29:03 +100030 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000031 * 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.
Edward O'Callaghanb9a67002014-07-06 19:29:03 +100041 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000042 * ***************************************************************************
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
Kyösti Mälkkid229d4a2017-09-24 11:36:30 +030049#include "cbtypes.h"
Stefan Reinauer5fa4cb62015-07-29 23:54:38 -070050
Frank Vibrans2b4c8312011-02-14 18:30:54 +000051//AMDSBLIB Routines
52
53/**
54 * SbStall - Delay routine
55 *
56 *
57 *
58 * @param[in] uSec
59 *
60 */
61void SbStall (IN unsigned int uSec);
62
63/**
64 * SbReset - Generate a reset command
65 *
66 *
67 *
68 * @param[in] OpFlag - Dummy
69 *
70 */
71void SbReset (IN unsigned char OpFlag);
72
73/**
74 * outPort80 - Send data to PORT 80 (debug port)
75 *
76 *
77 *
78 * @param[in] pcode - debug code (32 bits)
79 *
80 */
81void outPort80 (IN unsigned int pcode);
82
83/**
84 * getEfuseStatue - Get Efuse status
85 *
86 *
87 * @param[in] Value - Return Chip strap status
88 *
89 */
90void getEfuseStatus (IN void* Value);
91
92/**
93 * AmdSbDispatcher - Dispatch Southbridge function
94 *
95 *
96 *
97 * @param[in] pConfig Southbridge configuration structure pointer.
98 *
99 */
100AGESA_STATUS AmdSbDispatcher (IN void *pConfig);
101
102/**
103 * AmdSbCopyMem - Memory copy
104 *
105 * @param[in] pDest - Destance address point
106 * @param[in] pSource - Source Address point
107 * @param[in] Length - Data length
108 *
109 */
Stefan Reinauer5fa4cb62015-07-29 23:54:38 -0700110void AmdSbCopyMem (IN void* pDest, IN void* pSource, IN UINTN Length);
Kerry Sheeb995c22011-05-07 08:43:40 +0000111
112
113/* SB800 CIMx and AGESA V5 can share lib functions */
114unsigned char ReadIo8(IN unsigned short Address);
115unsigned short ReadIo16(IN unsigned short Address);
116unsigned int ReadIo32(IN unsigned short Address);
117void WriteIo8(IN unsigned short Address, IN unsigned char Data);
118void WriteIo16(IN unsigned short Address, IN unsigned short Data);
119void WriteIo32(IN unsigned short Address, IN unsigned int Data);
Kerry Shefeed3292011-08-18 18:03:44 +0800120//void CpuidRead(IN unsigned int CpuidFcnAddress, OUT CPUID_DATA *Value);
121void CpuidRead(unsigned int CpuidFcnAddress, CPUID_DATA *Value);
Kerry Sheeb995c22011-05-07 08:43:40 +0000122unsigned char ReadNumberOfCpuCores(void);
Stefan Reinauer971ebd82011-10-13 17:26:43 -0700123
124#endif