blob: c34c5b0dc948dede40d7f53ac141d9e972c3c659 [file] [log] [blame]
Frank Vibrans2b4c8312011-02-14 18:30:54 +00001/*
2 *****************************************************************************
3 *
4 * Copyright (c) 2011, Advanced Micro Devices, Inc.
5 * All rights reserved.
Edward O'Callaghanef5981b2014-07-06 19:20:52 +10006 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +00007 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
Edward O'Callaghanef5981b2014-07-06 19:20:52 +100014 * * Neither the name of Advanced Micro Devices, Inc. nor the names of
15 * its contributors may be used to endorse or promote products derived
Frank Vibrans2b4c8312011-02-14 18:30:54 +000016 * from this software without specific prior written permission.
Edward O'Callaghanef5981b2014-07-06 19:20:52 +100017 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Edward O'Callaghanef5981b2014-07-06 19:20:52 +100028 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000029 * ***************************************************************************
30 *
31 */
32
33
34#include "SBPLATFORM.h"
35#include "cbtypes.h"
36
37VOID
38ReadPCI (
39 IN UINT32 Address,
40 IN UINT8 OpFlag,
41 IN VOID* Value
42 )
43{
44 OpFlag = OpFlag & 0x7f;
45
46 if ( (UINT16)Address < 0xff ) {
47 //Normal Config Access
48 UINT32 AddrCf8;
Paul Menzel1a7640d2021-03-05 01:09:07 +010049 AddrCf8 = (1U << 31) + ((Address >> 8) & 0x0FFFF00) + (Address & 0xFC);
Frank Vibrans2b4c8312011-02-14 18:30:54 +000050 WriteIO (0xCf8, AccWidthUint32, &AddrCf8);
51 ReadIO ((UINT16) (0xCfC + (Address & 0x3)), OpFlag, Value);
52 }
53}
54
55VOID
56WritePCI (
57 IN UINT32 Address,
58 IN UINT8 OpFlag,
59 IN VOID* Value
60 )
61{
62 OpFlag = OpFlag & 0x7f;
63 if ( (UINT16)Address < 0xff ) {
64 //Normal Config Access
65 UINT32 AddrCf8;
Paul Menzel1a7640d2021-03-05 01:09:07 +010066 AddrCf8 = (1U << 31) + ((Address >> 8)&0x0FFFF00) + (Address & 0xFC);
Frank Vibrans2b4c8312011-02-14 18:30:54 +000067 WriteIO (0xCf8, AccWidthUint32, &AddrCf8);
68 WriteIO ((UINT16) (0xCfC + (Address & 0x3)), OpFlag, Value);
69 }
70}
71
72VOID
73RWPCI (
74 IN UINT32 Address,
75 IN UINT8 OpFlag,
76 IN UINT32 Mask,
77 IN UINT32 Data
78 )
79{
80 UINT32 Result;
81 Result = 0;
82 OpFlag = OpFlag & 0x7f;
83 ReadPCI (Address, OpFlag, &Result);
84 Result = (Result & Mask) | Data;
85 WritePCI (Address, OpFlag, &Result);
86}