1dc50ba7fSAlex Deucher /*
2dc50ba7fSAlex Deucher  * Copyright 2011 Advanced Micro Devices, Inc.
3dc50ba7fSAlex Deucher  *
4dc50ba7fSAlex Deucher  * Permission is hereby granted, free of charge, to any person obtaining a
5dc50ba7fSAlex Deucher  * copy of this software and associated documentation files (the "Software"),
6dc50ba7fSAlex Deucher  * to deal in the Software without restriction, including without limitation
7dc50ba7fSAlex Deucher  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8dc50ba7fSAlex Deucher  * and/or sell copies of the Software, and to permit persons to whom the
9dc50ba7fSAlex Deucher  * Software is furnished to do so, subject to the following conditions:
10dc50ba7fSAlex Deucher  *
11dc50ba7fSAlex Deucher  * The above copyright notice and this permission notice shall be included in
12dc50ba7fSAlex Deucher  * all copies or substantial portions of the Software.
13dc50ba7fSAlex Deucher  *
14dc50ba7fSAlex Deucher  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15dc50ba7fSAlex Deucher  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16dc50ba7fSAlex Deucher  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17dc50ba7fSAlex Deucher  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18dc50ba7fSAlex Deucher  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19dc50ba7fSAlex Deucher  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20dc50ba7fSAlex Deucher  * OTHER DEALINGS IN THE SOFTWARE.
21dc50ba7fSAlex Deucher  *
22dc50ba7fSAlex Deucher  */
23dc50ba7fSAlex Deucher #ifndef __EVERGREEN_SMC_H__
24dc50ba7fSAlex Deucher #define __EVERGREEN_SMC_H__
25dc50ba7fSAlex Deucher 
26dc50ba7fSAlex Deucher #include "rv770_smc.h"
27dc50ba7fSAlex Deucher 
28dc50ba7fSAlex Deucher #pragma pack(push, 1)
29dc50ba7fSAlex Deucher 
30dc50ba7fSAlex Deucher #define SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE 16
31dc50ba7fSAlex Deucher 
32dc50ba7fSAlex Deucher struct SMC_Evergreen_MCRegisterAddress
33dc50ba7fSAlex Deucher {
34dc50ba7fSAlex Deucher     uint16_t s0;
35dc50ba7fSAlex Deucher     uint16_t s1;
36dc50ba7fSAlex Deucher };
37dc50ba7fSAlex Deucher 
38dc50ba7fSAlex Deucher typedef struct SMC_Evergreen_MCRegisterAddress SMC_Evergreen_MCRegisterAddress;
39dc50ba7fSAlex Deucher 
40dc50ba7fSAlex Deucher 
41dc50ba7fSAlex Deucher struct SMC_Evergreen_MCRegisterSet
42dc50ba7fSAlex Deucher {
43dc50ba7fSAlex Deucher     uint32_t value[SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE];
44dc50ba7fSAlex Deucher };
45dc50ba7fSAlex Deucher 
46dc50ba7fSAlex Deucher typedef struct SMC_Evergreen_MCRegisterSet SMC_Evergreen_MCRegisterSet;
47dc50ba7fSAlex Deucher 
48dc50ba7fSAlex Deucher struct SMC_Evergreen_MCRegisters
49dc50ba7fSAlex Deucher {
50dc50ba7fSAlex Deucher     uint8_t                             last;
51dc50ba7fSAlex Deucher     uint8_t                             reserved[3];
52dc50ba7fSAlex Deucher     SMC_Evergreen_MCRegisterAddress     address[SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE];
53dc50ba7fSAlex Deucher     SMC_Evergreen_MCRegisterSet         data[5];
54dc50ba7fSAlex Deucher };
55dc50ba7fSAlex Deucher 
56dc50ba7fSAlex Deucher typedef struct SMC_Evergreen_MCRegisters SMC_Evergreen_MCRegisters;
57dc50ba7fSAlex Deucher 
58dc50ba7fSAlex Deucher #define EVERGREEN_SMC_FIRMWARE_HEADER_LOCATION 0x100
59dc50ba7fSAlex Deucher 
6013714323SAlex Deucher #define EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters   0x8
61dc50ba7fSAlex Deucher #define EVERGREEN_SMC_FIRMWARE_HEADER_stateTable      0xC
62dc50ba7fSAlex Deucher #define EVERGREEN_SMC_FIRMWARE_HEADER_mcRegisterTable 0x20
63dc50ba7fSAlex Deucher 
64dc50ba7fSAlex Deucher 
65dc50ba7fSAlex Deucher #pragma pack(pop)
66dc50ba7fSAlex Deucher 
67dc50ba7fSAlex Deucher #endif
68