smu9_driver_if.h (22137B)
1/* 2 * Copyright 2017 Advanced Micro Devices, Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20 * OTHER DEALINGS IN THE SOFTWARE. 21 * 22 */ 23 24#ifndef VEGA12_SMU9_DRIVER_IF_H 25#define VEGA12_SMU9_DRIVER_IF_H 26 27/**** IMPORTANT *** 28 * SMU TEAM: Always increment the interface version if 29 * any structure is changed in this file 30 */ 31#define SMU9_DRIVER_IF_VERSION 0x10 32 33#define PPTABLE_V12_SMU_VERSION 1 34 35#define NUM_GFXCLK_DPM_LEVELS 16 36#define NUM_VCLK_DPM_LEVELS 8 37#define NUM_DCLK_DPM_LEVELS 8 38#define NUM_ECLK_DPM_LEVELS 8 39#define NUM_MP0CLK_DPM_LEVELS 2 40#define NUM_UCLK_DPM_LEVELS 4 41#define NUM_SOCCLK_DPM_LEVELS 8 42#define NUM_DCEFCLK_DPM_LEVELS 8 43#define NUM_DISPCLK_DPM_LEVELS 8 44#define NUM_PIXCLK_DPM_LEVELS 8 45#define NUM_PHYCLK_DPM_LEVELS 8 46#define NUM_LINK_LEVELS 2 47 48#define MAX_GFXCLK_DPM_LEVEL (NUM_GFXCLK_DPM_LEVELS - 1) 49#define MAX_VCLK_DPM_LEVEL (NUM_VCLK_DPM_LEVELS - 1) 50#define MAX_DCLK_DPM_LEVEL (NUM_DCLK_DPM_LEVELS - 1) 51#define MAX_ECLK_DPM_LEVEL (NUM_ECLK_DPM_LEVELS - 1) 52#define MAX_MP0CLK_DPM_LEVEL (NUM_MP0CLK_DPM_LEVELS - 1) 53#define MAX_UCLK_DPM_LEVEL (NUM_UCLK_DPM_LEVELS - 1) 54#define MAX_SOCCLK_DPM_LEVEL (NUM_SOCCLK_DPM_LEVELS - 1) 55#define MAX_DCEFCLK_DPM_LEVEL (NUM_DCEFCLK_DPM_LEVELS - 1) 56#define MAX_DISPCLK_DPM_LEVEL (NUM_DISPCLK_DPM_LEVELS - 1) 57#define MAX_PIXCLK_DPM_LEVEL (NUM_PIXCLK_DPM_LEVELS - 1) 58#define MAX_PHYCLK_DPM_LEVEL (NUM_PHYCLK_DPM_LEVELS - 1) 59#define MAX_LINK_LEVEL (NUM_LINK_LEVELS - 1) 60 61 62#define PPSMC_GeminiModeNone 0 63#define PPSMC_GeminiModeMaster 1 64#define PPSMC_GeminiModeSlave 2 65 66 67#define FEATURE_DPM_PREFETCHER_BIT 0 68#define FEATURE_DPM_GFXCLK_BIT 1 69#define FEATURE_DPM_UCLK_BIT 2 70#define FEATURE_DPM_SOCCLK_BIT 3 71#define FEATURE_DPM_UVD_BIT 4 72#define FEATURE_DPM_VCE_BIT 5 73#define FEATURE_ULV_BIT 6 74#define FEATURE_DPM_MP0CLK_BIT 7 75#define FEATURE_DPM_LINK_BIT 8 76#define FEATURE_DPM_DCEFCLK_BIT 9 77#define FEATURE_DS_GFXCLK_BIT 10 78#define FEATURE_DS_SOCCLK_BIT 11 79#define FEATURE_DS_LCLK_BIT 12 80#define FEATURE_PPT_BIT 13 81#define FEATURE_TDC_BIT 14 82#define FEATURE_THERMAL_BIT 15 83#define FEATURE_GFX_PER_CU_CG_BIT 16 84#define FEATURE_RM_BIT 17 85#define FEATURE_DS_DCEFCLK_BIT 18 86#define FEATURE_ACDC_BIT 19 87#define FEATURE_VR0HOT_BIT 20 88#define FEATURE_VR1HOT_BIT 21 89#define FEATURE_FW_CTF_BIT 22 90#define FEATURE_LED_DISPLAY_BIT 23 91#define FEATURE_FAN_CONTROL_BIT 24 92#define FEATURE_GFX_EDC_BIT 25 93#define FEATURE_GFXOFF_BIT 26 94#define FEATURE_CG_BIT 27 95#define FEATURE_ACG_BIT 28 96#define FEATURE_SPARE_29_BIT 29 97#define FEATURE_SPARE_30_BIT 30 98#define FEATURE_SPARE_31_BIT 31 99 100#define NUM_FEATURES 32 101 102#define FEATURE_DPM_PREFETCHER_MASK (1 << FEATURE_DPM_PREFETCHER_BIT ) 103#define FEATURE_DPM_GFXCLK_MASK (1 << FEATURE_DPM_GFXCLK_BIT ) 104#define FEATURE_DPM_UCLK_MASK (1 << FEATURE_DPM_UCLK_BIT ) 105#define FEATURE_DPM_SOCCLK_MASK (1 << FEATURE_DPM_SOCCLK_BIT ) 106#define FEATURE_DPM_UVD_MASK (1 << FEATURE_DPM_UVD_BIT ) 107#define FEATURE_DPM_VCE_MASK (1 << FEATURE_DPM_VCE_BIT ) 108#define FEATURE_ULV_MASK (1 << FEATURE_ULV_BIT ) 109#define FEATURE_DPM_MP0CLK_MASK (1 << FEATURE_DPM_MP0CLK_BIT ) 110#define FEATURE_DPM_LINK_MASK (1 << FEATURE_DPM_LINK_BIT ) 111#define FEATURE_DPM_DCEFCLK_MASK (1 << FEATURE_DPM_DCEFCLK_BIT ) 112#define FEATURE_DS_GFXCLK_MASK (1 << FEATURE_DS_GFXCLK_BIT ) 113#define FEATURE_DS_SOCCLK_MASK (1 << FEATURE_DS_SOCCLK_BIT ) 114#define FEATURE_DS_LCLK_MASK (1 << FEATURE_DS_LCLK_BIT ) 115#define FEATURE_PPT_MASK (1 << FEATURE_PPT_BIT ) 116#define FEATURE_TDC_MASK (1 << FEATURE_TDC_BIT ) 117#define FEATURE_THERMAL_MASK (1 << FEATURE_THERMAL_BIT ) 118#define FEATURE_GFX_PER_CU_CG_MASK (1 << FEATURE_GFX_PER_CU_CG_BIT ) 119#define FEATURE_RM_MASK (1 << FEATURE_RM_BIT ) 120#define FEATURE_DS_DCEFCLK_MASK (1 << FEATURE_DS_DCEFCLK_BIT ) 121#define FEATURE_ACDC_MASK (1 << FEATURE_ACDC_BIT ) 122#define FEATURE_VR0HOT_MASK (1 << FEATURE_VR0HOT_BIT ) 123#define FEATURE_VR1HOT_MASK (1 << FEATURE_VR1HOT_BIT ) 124#define FEATURE_FW_CTF_MASK (1 << FEATURE_FW_CTF_BIT ) 125#define FEATURE_LED_DISPLAY_MASK (1 << FEATURE_LED_DISPLAY_BIT ) 126#define FEATURE_FAN_CONTROL_MASK (1 << FEATURE_FAN_CONTROL_BIT ) 127#define FEATURE_GFX_EDC_MASK (1 << FEATURE_GFX_EDC_BIT ) 128#define FEATURE_GFXOFF_MASK (1 << FEATURE_GFXOFF_BIT ) 129#define FEATURE_CG_MASK (1 << FEATURE_CG_BIT ) 130#define FEATURE_ACG_MASK (1 << FEATURE_ACG_BIT) 131#define FEATURE_SPARE_29_MASK (1 << FEATURE_SPARE_29_BIT ) 132#define FEATURE_SPARE_30_MASK (1 << FEATURE_SPARE_30_BIT ) 133#define FEATURE_SPARE_31_MASK (1 << FEATURE_SPARE_31_BIT ) 134 135 136#define DPM_OVERRIDE_DISABLE_SOCCLK_PID 0x00000001 137#define DPM_OVERRIDE_DISABLE_UCLK_PID 0x00000002 138#define DPM_OVERRIDE_ENABLE_VOLT_LINK_UVD_SOCCLK 0x00000004 139#define DPM_OVERRIDE_ENABLE_VOLT_LINK_UVD_UCLK 0x00000008 140#define DPM_OVERRIDE_ENABLE_FREQ_LINK_VCLK_SOCCLK 0x00000010 141#define DPM_OVERRIDE_ENABLE_FREQ_LINK_VCLK_UCLK 0x00000020 142#define DPM_OVERRIDE_ENABLE_FREQ_LINK_DCLK_SOCCLK 0x00000040 143#define DPM_OVERRIDE_ENABLE_FREQ_LINK_DCLK_UCLK 0x00000080 144#define DPM_OVERRIDE_ENABLE_VOLT_LINK_VCE_SOCCLK 0x00000100 145#define DPM_OVERRIDE_ENABLE_VOLT_LINK_VCE_UCLK 0x00000200 146#define DPM_OVERRIDE_ENABLE_FREQ_LINK_ECLK_SOCCLK 0x00000400 147#define DPM_OVERRIDE_ENABLE_FREQ_LINK_ECLK_UCLK 0x00000800 148#define DPM_OVERRIDE_ENABLE_FREQ_LINK_GFXCLK_SOCCLK 0x00001000 149#define DPM_OVERRIDE_ENABLE_FREQ_LINK_GFXCLK_UCLK 0x00002000 150#define DPM_OVERRIDE_ENABLE_GFXOFF_GFXCLK_SWITCH 0x00004000 151#define DPM_OVERRIDE_ENABLE_GFXOFF_SOCCLK_SWITCH 0x00008000 152#define DPM_OVERRIDE_ENABLE_GFXOFF_UCLK_SWITCH 0x00010000 153 154 155#define VR_MAPPING_VR_SELECT_MASK 0x01 156#define VR_MAPPING_VR_SELECT_SHIFT 0x00 157 158#define VR_MAPPING_PLANE_SELECT_MASK 0x02 159#define VR_MAPPING_PLANE_SELECT_SHIFT 0x01 160 161 162#define PSI_SEL_VR0_PLANE0_PSI0 0x01 163#define PSI_SEL_VR0_PLANE0_PSI1 0x02 164#define PSI_SEL_VR0_PLANE1_PSI0 0x04 165#define PSI_SEL_VR0_PLANE1_PSI1 0x08 166#define PSI_SEL_VR1_PLANE0_PSI0 0x10 167#define PSI_SEL_VR1_PLANE0_PSI1 0x20 168#define PSI_SEL_VR1_PLANE1_PSI0 0x40 169#define PSI_SEL_VR1_PLANE1_PSI1 0x80 170 171 172#define THROTTLER_STATUS_PADDING_BIT 0 173#define THROTTLER_STATUS_TEMP_EDGE_BIT 1 174#define THROTTLER_STATUS_TEMP_HOTSPOT_BIT 2 175#define THROTTLER_STATUS_TEMP_HBM_BIT 3 176#define THROTTLER_STATUS_TEMP_VR_GFX_BIT 4 177#define THROTTLER_STATUS_TEMP_VR_MEM_BIT 5 178#define THROTTLER_STATUS_TEMP_LIQUID_BIT 6 179#define THROTTLER_STATUS_TEMP_PLX_BIT 7 180#define THROTTLER_STATUS_TEMP_SKIN_BIT 8 181#define THROTTLER_STATUS_TDC_GFX_BIT 9 182#define THROTTLER_STATUS_TDC_SOC_BIT 10 183#define THROTTLER_STATUS_PPT_BIT 11 184#define THROTTLER_STATUS_FIT_BIT 12 185#define THROTTLER_STATUS_PPM_BIT 13 186 187 188#define TABLE_TRANSFER_OK 0x0 189#define TABLE_TRANSFER_FAILED 0xFF 190 191 192#define WORKLOAD_DEFAULT_BIT 0 193#define WORKLOAD_PPLIB_FULL_SCREEN_3D_BIT 1 194#define WORKLOAD_PPLIB_POWER_SAVING_BIT 2 195#define WORKLOAD_PPLIB_VIDEO_BIT 3 196#define WORKLOAD_PPLIB_VR_BIT 4 197#define WORKLOAD_PPLIB_COMPUTE_BIT 5 198#define WORKLOAD_PPLIB_CUSTOM_BIT 6 199#define WORKLOAD_PPLIB_COUNT 7 200 201typedef struct { 202 uint32_t a; 203 uint32_t b; 204 uint32_t c; 205} QuadraticInt_t; 206 207typedef struct { 208 uint32_t m; 209 uint32_t b; 210} LinearInt_t; 211 212typedef struct { 213 uint32_t a; 214 uint32_t b; 215 uint32_t c; 216} DroopInt_t; 217 218typedef enum { 219 PPCLK_GFXCLK, 220 PPCLK_VCLK, 221 PPCLK_DCLK, 222 PPCLK_ECLK, 223 PPCLK_SOCCLK, 224 PPCLK_UCLK, 225 PPCLK_DCEFCLK, 226 PPCLK_DISPCLK, 227 PPCLK_PIXCLK, 228 PPCLK_PHYCLK, 229 PPCLK_COUNT, 230} PPCLK_e; 231 232enum { 233 VOLTAGE_MODE_AVFS, 234 VOLTAGE_MODE_AVFS_SS, 235 VOLTAGE_MODE_SS, 236 VOLTAGE_MODE_COUNT, 237}; 238 239typedef struct { 240 uint8_t VoltageMode; 241 uint8_t SnapToDiscrete; 242 uint8_t NumDiscreteLevels; 243 uint8_t padding; 244 LinearInt_t ConversionToAvfsClk; 245 QuadraticInt_t SsCurve; 246} DpmDescriptor_t; 247 248typedef struct { 249 uint32_t Version; 250 251 252 uint32_t FeaturesToRun[2]; 253 254 255 uint16_t SocketPowerLimitAc0; 256 uint16_t SocketPowerLimitAc0Tau; 257 uint16_t SocketPowerLimitAc1; 258 uint16_t SocketPowerLimitAc1Tau; 259 uint16_t SocketPowerLimitAc2; 260 uint16_t SocketPowerLimitAc2Tau; 261 uint16_t SocketPowerLimitAc3; 262 uint16_t SocketPowerLimitAc3Tau; 263 uint16_t SocketPowerLimitDc; 264 uint16_t SocketPowerLimitDcTau; 265 uint16_t TdcLimitSoc; 266 uint16_t TdcLimitSocTau; 267 uint16_t TdcLimitGfx; 268 uint16_t TdcLimitGfxTau; 269 270 uint16_t TedgeLimit; 271 uint16_t ThotspotLimit; 272 uint16_t ThbmLimit; 273 uint16_t Tvr_gfxLimit; 274 uint16_t Tvr_memLimit; 275 uint16_t Tliquid1Limit; 276 uint16_t Tliquid2Limit; 277 uint16_t TplxLimit; 278 uint32_t FitLimit; 279 280 uint16_t PpmPowerLimit; 281 uint16_t PpmTemperatureThreshold; 282 283 uint8_t MemoryOnPackage; 284 uint8_t padding8_limits[3]; 285 286 287 uint16_t UlvVoltageOffsetSoc; 288 uint16_t UlvVoltageOffsetGfx; 289 290 uint8_t UlvSmnclkDid; 291 uint8_t UlvMp1clkDid; 292 uint8_t UlvGfxclkBypass; 293 uint8_t Padding234; 294 295 296 uint16_t MinVoltageGfx; 297 uint16_t MinVoltageSoc; 298 uint16_t MaxVoltageGfx; 299 uint16_t MaxVoltageSoc; 300 301 uint16_t LoadLineResistance; 302 uint16_t LoadLine_padding; 303 304 305 DpmDescriptor_t DpmDescriptor[PPCLK_COUNT]; 306 307 uint16_t FreqTableGfx [NUM_GFXCLK_DPM_LEVELS ]; 308 uint16_t FreqTableVclk [NUM_VCLK_DPM_LEVELS ]; 309 uint16_t FreqTableDclk [NUM_DCLK_DPM_LEVELS ]; 310 uint16_t FreqTableEclk [NUM_ECLK_DPM_LEVELS ]; 311 uint16_t FreqTableSocclk [NUM_SOCCLK_DPM_LEVELS ]; 312 uint16_t FreqTableUclk [NUM_UCLK_DPM_LEVELS ]; 313 uint16_t FreqTableDcefclk [NUM_DCEFCLK_DPM_LEVELS ]; 314 uint16_t FreqTableDispclk [NUM_DISPCLK_DPM_LEVELS ]; 315 uint16_t FreqTablePixclk [NUM_PIXCLK_DPM_LEVELS ]; 316 uint16_t FreqTablePhyclk [NUM_PHYCLK_DPM_LEVELS ]; 317 318 uint16_t DcModeMaxFreq [PPCLK_COUNT ]; 319 320 321 uint16_t Mp0clkFreq [NUM_MP0CLK_DPM_LEVELS]; 322 uint16_t Mp0DpmVoltage [NUM_MP0CLK_DPM_LEVELS]; 323 324 325 uint16_t GfxclkFidle; 326 uint16_t GfxclkSlewRate; 327 uint16_t CksEnableFreq; 328 uint16_t Padding789; 329 QuadraticInt_t CksVoltageOffset; 330 uint16_t AcgThresholdFreqHigh; 331 uint16_t AcgThresholdFreqLow; 332 uint16_t GfxclkDsMaxFreq; 333 uint8_t Padding456[2]; 334 335 336 uint8_t LowestUclkReservedForUlv; 337 uint8_t Padding8_Uclk[3]; 338 339 340 uint8_t PcieGenSpeed[NUM_LINK_LEVELS]; 341 uint8_t PcieLaneCount[NUM_LINK_LEVELS]; 342 uint16_t LclkFreq[NUM_LINK_LEVELS]; 343 344 345 uint16_t EnableTdpm; 346 uint16_t TdpmHighHystTemperature; 347 uint16_t TdpmLowHystTemperature; 348 uint16_t GfxclkFreqHighTempLimit; 349 350 351 uint16_t FanStopTemp; 352 uint16_t FanStartTemp; 353 354 uint16_t FanGainEdge; 355 uint16_t FanGainHotspot; 356 uint16_t FanGainLiquid; 357 uint16_t FanGainVrVddc; 358 uint16_t FanGainVrMvdd; 359 uint16_t FanGainPlx; 360 uint16_t FanGainHbm; 361 uint16_t FanPwmMin; 362 uint16_t FanAcousticLimitRpm; 363 uint16_t FanThrottlingRpm; 364 uint16_t FanMaximumRpm; 365 uint16_t FanTargetTemperature; 366 uint16_t FanTargetGfxclk; 367 uint8_t FanZeroRpmEnable; 368 uint8_t FanTachEdgePerRev; 369 370 371 372 int16_t FuzzyFan_ErrorSetDelta; 373 int16_t FuzzyFan_ErrorRateSetDelta; 374 int16_t FuzzyFan_PwmSetDelta; 375 uint16_t FuzzyFan_Reserved; 376 377 378 379 380 uint8_t OverrideAvfsGb; 381 uint8_t Padding8_Avfs[3]; 382 383 QuadraticInt_t qAvfsGb; 384 DroopInt_t dBtcGbGfxCksOn; 385 DroopInt_t dBtcGbGfxCksOff; 386 DroopInt_t dBtcGbGfxAcg; 387 DroopInt_t dBtcGbSoc; 388 LinearInt_t qAgingGbGfx; 389 LinearInt_t qAgingGbSoc; 390 391 QuadraticInt_t qStaticVoltageOffsetGfx; 392 QuadraticInt_t qStaticVoltageOffsetSoc; 393 394 uint16_t DcTolGfx; 395 uint16_t DcTolSoc; 396 397 uint8_t DcBtcGfxEnabled; 398 uint8_t DcBtcSocEnabled; 399 uint8_t Padding8_GfxBtc[2]; 400 401 uint16_t DcBtcGfxMin; 402 uint16_t DcBtcGfxMax; 403 404 uint16_t DcBtcSocMin; 405 uint16_t DcBtcSocMax; 406 407 408 409 uint32_t DebugOverrides; 410 QuadraticInt_t ReservedEquation0; 411 QuadraticInt_t ReservedEquation1; 412 QuadraticInt_t ReservedEquation2; 413 QuadraticInt_t ReservedEquation3; 414 415 uint16_t MinVoltageUlvGfx; 416 uint16_t MinVoltageUlvSoc; 417 418 uint32_t Reserved[14]; 419 420 421 422 uint8_t Liquid1_I2C_address; 423 uint8_t Liquid2_I2C_address; 424 uint8_t Vr_I2C_address; 425 uint8_t Plx_I2C_address; 426 427 uint8_t Liquid_I2C_LineSCL; 428 uint8_t Liquid_I2C_LineSDA; 429 uint8_t Vr_I2C_LineSCL; 430 uint8_t Vr_I2C_LineSDA; 431 432 uint8_t Plx_I2C_LineSCL; 433 uint8_t Plx_I2C_LineSDA; 434 uint8_t VrSensorPresent; 435 uint8_t LiquidSensorPresent; 436 437 uint16_t MaxVoltageStepGfx; 438 uint16_t MaxVoltageStepSoc; 439 440 uint8_t VddGfxVrMapping; 441 uint8_t VddSocVrMapping; 442 uint8_t VddMem0VrMapping; 443 uint8_t VddMem1VrMapping; 444 445 uint8_t GfxUlvPhaseSheddingMask; 446 uint8_t SocUlvPhaseSheddingMask; 447 uint8_t ExternalSensorPresent; 448 uint8_t Padding8_V; 449 450 451 uint16_t GfxMaxCurrent; 452 int8_t GfxOffset; 453 uint8_t Padding_TelemetryGfx; 454 455 uint16_t SocMaxCurrent; 456 int8_t SocOffset; 457 uint8_t Padding_TelemetrySoc; 458 459 uint16_t Mem0MaxCurrent; 460 int8_t Mem0Offset; 461 uint8_t Padding_TelemetryMem0; 462 463 uint16_t Mem1MaxCurrent; 464 int8_t Mem1Offset; 465 uint8_t Padding_TelemetryMem1; 466 467 468 uint8_t AcDcGpio; 469 uint8_t AcDcPolarity; 470 uint8_t VR0HotGpio; 471 uint8_t VR0HotPolarity; 472 473 uint8_t VR1HotGpio; 474 uint8_t VR1HotPolarity; 475 uint8_t Padding1; 476 uint8_t Padding2; 477 478 479 480 uint8_t LedPin0; 481 uint8_t LedPin1; 482 uint8_t LedPin2; 483 uint8_t padding8_4; 484 485 486 uint8_t PllGfxclkSpreadEnabled; 487 uint8_t PllGfxclkSpreadPercent; 488 uint16_t PllGfxclkSpreadFreq; 489 490 uint8_t UclkSpreadEnabled; 491 uint8_t UclkSpreadPercent; 492 uint16_t UclkSpreadFreq; 493 494 uint8_t SocclkSpreadEnabled; 495 uint8_t SocclkSpreadPercent; 496 uint16_t SocclkSpreadFreq; 497 498 uint8_t AcgGfxclkSpreadEnabled; 499 uint8_t AcgGfxclkSpreadPercent; 500 uint16_t AcgGfxclkSpreadFreq; 501 502 uint8_t Vr2_I2C_address; 503 uint8_t padding_vr2[3]; 504 505 uint32_t BoardReserved[9]; 506 507 508 uint32_t MmHubPadding[7]; 509 510} PPTable_t; 511 512typedef struct { 513 514 uint16_t GfxclkAverageLpfTau; 515 uint16_t SocclkAverageLpfTau; 516 uint16_t UclkAverageLpfTau; 517 uint16_t GfxActivityLpfTau; 518 uint16_t UclkActivityLpfTau; 519 520 521 uint32_t MmHubPadding[7]; 522} DriverSmuConfig_t; 523 524typedef struct { 525 526 uint16_t GfxclkFmin; 527 uint16_t GfxclkFmax; 528 uint16_t GfxclkFreq1; 529 uint16_t GfxclkOffsetVolt1; 530 uint16_t GfxclkFreq2; 531 uint16_t GfxclkOffsetVolt2; 532 uint16_t GfxclkFreq3; 533 uint16_t GfxclkOffsetVolt3; 534 uint16_t UclkFmax; 535 int16_t OverDrivePct; 536 uint16_t FanMaximumRpm; 537 uint16_t FanMinimumPwm; 538 uint16_t FanTargetTemperature; 539 uint16_t MaxOpTemp; 540 541} OverDriveTable_t; 542 543typedef struct { 544 uint16_t CurrClock[PPCLK_COUNT]; 545 uint16_t AverageGfxclkFrequency; 546 uint16_t AverageSocclkFrequency; 547 uint16_t AverageUclkFrequency ; 548 uint16_t AverageGfxActivity ; 549 uint16_t AverageUclkActivity ; 550 uint8_t CurrSocVoltageOffset ; 551 uint8_t CurrGfxVoltageOffset ; 552 uint8_t CurrMemVidOffset ; 553 uint8_t Padding8 ; 554 uint16_t CurrSocketPower ; 555 uint16_t TemperatureEdge ; 556 uint16_t TemperatureHotspot ; 557 uint16_t TemperatureHBM ; 558 uint16_t TemperatureVrGfx ; 559 uint16_t TemperatureVrMem ; 560 uint16_t TemperatureLiquid ; 561 uint16_t TemperaturePlx ; 562 uint32_t ThrottlerStatus ; 563 564 uint8_t LinkDpmLevel; 565 uint8_t Padding[3]; 566 567 568 uint32_t MmHubPadding[7]; 569} SmuMetrics_t; 570 571typedef struct { 572 uint16_t MinClock; 573 uint16_t MaxClock; 574 uint16_t MinUclk; 575 uint16_t MaxUclk; 576 577 uint8_t WmSetting; 578 uint8_t Padding[3]; 579} WatermarkRowGeneric_t; 580 581#define NUM_WM_RANGES 4 582 583typedef enum { 584 WM_SOCCLK = 0, 585 WM_DCEFCLK, 586 WM_COUNT_PP, 587} WM_CLOCK_e; 588 589typedef struct { 590 591 WatermarkRowGeneric_t WatermarkRow[WM_COUNT_PP][NUM_WM_RANGES]; 592 593 uint32_t MmHubPadding[7]; 594} Watermarks_t; 595 596typedef struct { 597 uint16_t avgPsmCount[30]; 598 uint16_t minPsmCount[30]; 599 float avgPsmVoltage[30]; 600 float minPsmVoltage[30]; 601 602 uint32_t MmHubPadding[7]; 603} AvfsDebugTable_t; 604 605typedef struct { 606 uint8_t AvfsEn; 607 uint8_t AvfsVersion; 608 uint8_t OverrideVFT; 609 uint8_t OverrideAvfsGb; 610 611 uint8_t OverrideTemperatures; 612 uint8_t OverrideVInversion; 613 uint8_t OverrideP2V; 614 uint8_t OverrideP2VCharzFreq; 615 616 int32_t VFT0_m1; 617 int32_t VFT0_m2; 618 int32_t VFT0_b; 619 620 int32_t VFT1_m1; 621 int32_t VFT1_m2; 622 int32_t VFT1_b; 623 624 int32_t VFT2_m1; 625 int32_t VFT2_m2; 626 int32_t VFT2_b; 627 628 int32_t AvfsGb0_m1; 629 int32_t AvfsGb0_m2; 630 int32_t AvfsGb0_b; 631 632 int32_t AcBtcGb_m1; 633 int32_t AcBtcGb_m2; 634 int32_t AcBtcGb_b; 635 636 uint32_t AvfsTempCold; 637 uint32_t AvfsTempMid; 638 uint32_t AvfsTempHot; 639 640 uint32_t GfxVInversion; 641 uint32_t SocVInversion; 642 643 int32_t P2V_m1; 644 int32_t P2V_m2; 645 int32_t P2V_b; 646 647 uint32_t P2VCharzFreq; 648 649 uint32_t EnabledAvfsModules; 650 651 uint32_t MmHubPadding[7]; 652} AvfsFuseOverride_t; 653 654typedef struct { 655 656 uint8_t Gfx_ActiveHystLimit; 657 uint8_t Gfx_IdleHystLimit; 658 uint8_t Gfx_FPS; 659 uint8_t Gfx_MinActiveFreqType; 660 uint8_t Gfx_BoosterFreqType; 661 uint8_t Gfx_UseRlcBusy; 662 uint16_t Gfx_MinActiveFreq; 663 uint16_t Gfx_BoosterFreq; 664 uint16_t Gfx_PD_Data_time_constant; 665 uint32_t Gfx_PD_Data_limit_a; 666 uint32_t Gfx_PD_Data_limit_b; 667 uint32_t Gfx_PD_Data_limit_c; 668 uint32_t Gfx_PD_Data_error_coeff; 669 uint32_t Gfx_PD_Data_error_rate_coeff; 670 671 uint8_t Soc_ActiveHystLimit; 672 uint8_t Soc_IdleHystLimit; 673 uint8_t Soc_FPS; 674 uint8_t Soc_MinActiveFreqType; 675 uint8_t Soc_BoosterFreqType; 676 uint8_t Soc_UseRlcBusy; 677 uint16_t Soc_MinActiveFreq; 678 uint16_t Soc_BoosterFreq; 679 uint16_t Soc_PD_Data_time_constant; 680 uint32_t Soc_PD_Data_limit_a; 681 uint32_t Soc_PD_Data_limit_b; 682 uint32_t Soc_PD_Data_limit_c; 683 uint32_t Soc_PD_Data_error_coeff; 684 uint32_t Soc_PD_Data_error_rate_coeff; 685 686 uint8_t Mem_ActiveHystLimit; 687 uint8_t Mem_IdleHystLimit; 688 uint8_t Mem_FPS; 689 uint8_t Mem_MinActiveFreqType; 690 uint8_t Mem_BoosterFreqType; 691 uint8_t Mem_UseRlcBusy; 692 uint16_t Mem_MinActiveFreq; 693 uint16_t Mem_BoosterFreq; 694 uint16_t Mem_PD_Data_time_constant; 695 uint32_t Mem_PD_Data_limit_a; 696 uint32_t Mem_PD_Data_limit_b; 697 uint32_t Mem_PD_Data_limit_c; 698 uint32_t Mem_PD_Data_error_coeff; 699 uint32_t Mem_PD_Data_error_rate_coeff; 700 701} DpmActivityMonitorCoeffInt_t; 702 703 704 705 706#define TABLE_PPTABLE 0 707#define TABLE_WATERMARKS 1 708#define TABLE_AVFS 2 709#define TABLE_AVFS_PSM_DEBUG 3 710#define TABLE_AVFS_FUSE_OVERRIDE 4 711#define TABLE_PMSTATUSLOG 5 712#define TABLE_SMU_METRICS 6 713#define TABLE_DRIVER_SMU_CONFIG 7 714#define TABLE_ACTIVITY_MONITOR_COEFF 8 715#define TABLE_OVERDRIVE 9 716#define TABLE_COUNT 10 717 718 719#define UCLK_SWITCH_SLOW 0 720#define UCLK_SWITCH_FAST 1 721 722 723#define SQ_Enable_MASK 0x1 724#define SQ_IR_MASK 0x2 725#define SQ_PCC_MASK 0x4 726#define SQ_EDC_MASK 0x8 727 728#define TCP_Enable_MASK 0x100 729#define TCP_IR_MASK 0x200 730#define TCP_PCC_MASK 0x400 731#define TCP_EDC_MASK 0x800 732 733#define TD_Enable_MASK 0x10000 734#define TD_IR_MASK 0x20000 735#define TD_PCC_MASK 0x40000 736#define TD_EDC_MASK 0x80000 737 738#define DB_Enable_MASK 0x1000000 739#define DB_IR_MASK 0x2000000 740#define DB_PCC_MASK 0x4000000 741#define DB_EDC_MASK 0x8000000 742 743#define SQ_Enable_SHIFT 0 744#define SQ_IR_SHIFT 1 745#define SQ_PCC_SHIFT 2 746#define SQ_EDC_SHIFT 3 747 748#define TCP_Enable_SHIFT 8 749#define TCP_IR_SHIFT 9 750#define TCP_PCC_SHIFT 10 751#define TCP_EDC_SHIFT 11 752 753#define TD_Enable_SHIFT 16 754#define TD_IR_SHIFT 17 755#define TD_PCC_SHIFT 18 756#define TD_EDC_SHIFT 19 757 758#define DB_Enable_SHIFT 24 759#define DB_IR_SHIFT 25 760#define DB_PCC_SHIFT 26 761#define DB_EDC_SHIFT 27 762 763#define REMOVE_FMAX_MARGIN_BIT 0x0 764#define REMOVE_DCTOL_MARGIN_BIT 0x1 765#define REMOVE_PLATFORM_MARGIN_BIT 0x2 766 767#endif