1e098bc96SEvan Quan /*
2e098bc96SEvan Quan  * Copyright 2017 Advanced Micro Devices, Inc.
3e098bc96SEvan Quan  *
4e098bc96SEvan Quan  * Permission is hereby granted, free of charge, to any person obtaining a
5e098bc96SEvan Quan  * copy of this software and associated documentation files (the "Software"),
6e098bc96SEvan Quan  * to deal in the Software without restriction, including without limitation
7e098bc96SEvan Quan  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8e098bc96SEvan Quan  * and/or sell copies of the Software, and to permit persons to whom the
9e098bc96SEvan Quan  * Software is furnished to do so, subject to the following conditions:
10e098bc96SEvan Quan  *
11e098bc96SEvan Quan  * The above copyright notice and this permission notice shall be included in
12e098bc96SEvan Quan  * all copies or substantial portions of the Software.
13e098bc96SEvan Quan  *
14e098bc96SEvan Quan  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15e098bc96SEvan Quan  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16e098bc96SEvan Quan  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17e098bc96SEvan Quan  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18e098bc96SEvan Quan  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19e098bc96SEvan Quan  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20e098bc96SEvan Quan  * OTHER DEALINGS IN THE SOFTWARE.
21e098bc96SEvan Quan  *
22e098bc96SEvan Quan  */
23e098bc96SEvan Quan #ifndef _VEGA12_PPTABLE_H_
24e098bc96SEvan Quan #define _VEGA12_PPTABLE_H_
25e098bc96SEvan Quan 
26e098bc96SEvan Quan #pragma pack(push, 1)
27e098bc96SEvan Quan 
28e098bc96SEvan Quan #define ATOM_VEGA12_PP_THERMALCONTROLLER_NONE           0
29e098bc96SEvan Quan #define ATOM_VEGA12_PP_THERMALCONTROLLER_VEGA12     25
30e098bc96SEvan Quan 
31e098bc96SEvan Quan #define ATOM_VEGA12_PP_PLATFORM_CAP_POWERPLAY                   0x1
32e098bc96SEvan Quan #define ATOM_VEGA12_PP_PLATFORM_CAP_SBIOSPOWERSOURCE            0x2
33e098bc96SEvan Quan #define ATOM_VEGA12_PP_PLATFORM_CAP_HARDWAREDC                  0x4
34e098bc96SEvan Quan #define ATOM_VEGA12_PP_PLATFORM_CAP_BACO                        0x8
35e098bc96SEvan Quan #define ATOM_VEGA12_PP_PLATFORM_CAP_BAMACO                      0x10
36e098bc96SEvan Quan #define ATOM_VEGA12_PP_PLATFORM_CAP_ENABLESHADOWPSTATE          0x20
37e098bc96SEvan Quan 
38e098bc96SEvan Quan #define ATOM_VEGA12_TABLE_REVISION_VEGA12         9
39e098bc96SEvan Quan 
40e098bc96SEvan Quan enum ATOM_VEGA12_ODSETTING_ID {
41e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_GFXCLKFMAX = 0,
42e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_GFXCLKFMIN,
43e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_VDDGFXCURVEFREQ_P1,
44e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P1,
45e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_VDDGFXCURVEFREQ_P2,
46e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P2,
47e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_VDDGFXCURVEFREQ_P3,
48e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P3,
49e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_UCLKFMAX,
50e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_POWERPERCENTAGE,
51e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_FANRPMMIN,
52e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_FANRPMACOUSTICLIMIT,
53e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_FANTARGETTEMPERATURE,
54e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_OPERATINGTEMPMAX,
55e098bc96SEvan Quan   ATOM_VEGA12_ODSETTING_COUNT,
56e098bc96SEvan Quan };
57e098bc96SEvan Quan typedef enum ATOM_VEGA12_ODSETTING_ID ATOM_VEGA12_ODSETTING_ID;
58e098bc96SEvan Quan 
59e098bc96SEvan Quan enum ATOM_VEGA12_PPCLOCK_ID {
60e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_GFXCLK = 0,
61e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_VCLK,
62e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_DCLK,
63e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_ECLK,
64e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_SOCCLK,
65e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_UCLK,
66e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_DCEFCLK,
67e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_DISPCLK,
68e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_PIXCLK,
69e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_PHYCLK,
70e098bc96SEvan Quan   ATOM_VEGA12_PPCLOCK_COUNT,
71e098bc96SEvan Quan };
72e098bc96SEvan Quan typedef enum ATOM_VEGA12_PPCLOCK_ID ATOM_VEGA12_PPCLOCK_ID;
73e098bc96SEvan Quan 
74e098bc96SEvan Quan 
75*c066a9e4SRan Sun typedef struct _ATOM_VEGA12_POWERPLAYTABLE {
76e098bc96SEvan Quan       struct atom_common_table_header sHeader;
77e098bc96SEvan Quan       UCHAR  ucTableRevision;
78e098bc96SEvan Quan       USHORT usTableSize;
79e098bc96SEvan Quan       ULONG  ulGoldenPPID;
80e098bc96SEvan Quan       ULONG  ulGoldenRevision;
81e098bc96SEvan Quan       USHORT usFormatID;
82e098bc96SEvan Quan 
83e098bc96SEvan Quan       ULONG  ulPlatformCaps;
84e098bc96SEvan Quan 
85e098bc96SEvan Quan       UCHAR  ucThermalControllerType;
86e098bc96SEvan Quan 
87e098bc96SEvan Quan       USHORT usSmallPowerLimit1;
88e098bc96SEvan Quan       USHORT usSmallPowerLimit2;
89e098bc96SEvan Quan       USHORT usBoostPowerLimit;
90e098bc96SEvan Quan       USHORT usODTurboPowerLimit;
91e098bc96SEvan Quan       USHORT usODPowerSavePowerLimit;
92e098bc96SEvan Quan       USHORT usSoftwareShutdownTemp;
93e098bc96SEvan Quan 
94e098bc96SEvan Quan       ULONG PowerSavingClockMax[ATOM_VEGA12_PPCLOCK_COUNT];
95e098bc96SEvan Quan       ULONG PowerSavingClockMin[ATOM_VEGA12_PPCLOCK_COUNT];
96e098bc96SEvan Quan 
97e098bc96SEvan Quan       ULONG ODSettingsMax[ATOM_VEGA12_ODSETTING_COUNT];
98e098bc96SEvan Quan       ULONG ODSettingsMin[ATOM_VEGA12_ODSETTING_COUNT];
99e098bc96SEvan Quan 
100e098bc96SEvan Quan       USHORT usReserve[5];
101e098bc96SEvan Quan 
102e098bc96SEvan Quan       PPTable_t smcPPTable;
103e098bc96SEvan Quan 
104e098bc96SEvan Quan } ATOM_Vega12_POWERPLAYTABLE;
105e098bc96SEvan Quan 
106e098bc96SEvan Quan #pragma pack(pop)
107e098bc96SEvan Quan 
108e098bc96SEvan Quan #endif
109