blob: 1d21d9cb2bebedc85191c73308e4c0a2e7261471 [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#include "SBPLATFORM.h"
34#include "cbtypes.h"
35
36
37VOID
38ReadIO (
39 IN UINT16 Address,
40 IN UINT8 OpFlag,
41 IN VOID* Value
42 )
43{
44 OpFlag = OpFlag & 0x7f;
45 switch ( OpFlag ) {
46 case AccWidthUint8:
47 *(UINT8*)Value = ReadIo8 (Address);
48 break;
49 case AccWidthUint16:
50 *(UINT16*)Value = ReadIo16 (Address);
51 break;
52 case AccWidthUint32:
53 *(UINT32*)Value = ReadIo32 (Address);
54 break;
55 }
56}
57
58VOID
59WriteIO (
60 IN UINT16 Address,
61 IN UINT8 OpFlag,
62 IN VOID* Value
63 )
64{
65 OpFlag = OpFlag & 0x7f;
66 switch ( OpFlag ) {
67 case AccWidthUint8:
68 WriteIo8 (Address, *(UINT8*)Value);
69 break;
70 case AccWidthUint16:
71 WriteIo16 (Address, *(UINT16*)Value);
72 break;
73 case AccWidthUint32:
74 WriteIo32 (Address, *(UINT32*)Value);
75 break;
76 }
77}
78
79VOID
80RWIO (
81 IN UINT16 Address,
82 IN UINT8 OpFlag,
83 IN UINT32 Mask,
84 IN UINT32 Data
85 )
86{
87 UINT32 Result;
88 ReadIO (Address, OpFlag, &Result);
89 Result = (Result & Mask) | Data;
90 WriteIO (Address, OpFlag, &Result);
91}