diff options
author | Jammy Zhou <Jammy.Zhou@amd.com> | 2015-07-22 09:54:16 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-12-21 16:42:10 -0500 |
commit | 4630f0faae80fd2252cc85accdbc8353b0444dd9 (patch) | |
tree | a39052400dc54a444629dfb5be6ffc186fbb8f3f /drivers/gpu/drm/amd/amdgpu | |
parent | 3bace359149391c6547cefe3bf729f365bcf3ef6 (diff) | |
download | linux-4630f0faae80fd2252cc85accdbc8353b0444dd9.tar.gz linux-4630f0faae80fd2252cc85accdbc8353b0444dd9.tar.xz |
drm/amd/powerplay: add Carrizo smu support
This implements the SMU firmware manager interface for CZ.
Some header files are moved from amdgpu folder to powerplay as well.
v3: delete peci sub-module.
v2: use cgs interface directly
add load_mec_firmware function
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cz_ppsmc.h | 185 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/smu8.h | 72 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/smu8_fusion.h | 127 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/smu_ucode_xfer_cz.h | 147 |
4 files changed, 0 insertions, 531 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/cz_ppsmc.h b/drivers/gpu/drm/amd/amdgpu/cz_ppsmc.h deleted file mode 100644 index 273616ab43db..000000000000 --- a/drivers/gpu/drm/amd/amdgpu/cz_ppsmc.h +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - */ - -#ifndef CZ_PP_SMC_H -#define CZ_PP_SMC_H - -#pragma pack(push, 1) - -/* Fan control algorithm:*/ -#define FDO_MODE_HARDWARE 0 -#define FDO_MODE_PIECE_WISE_LINEAR 1 - -enum FAN_CONTROL { - FAN_CONTROL_FUZZY, - FAN_CONTROL_TABLE -}; - -enum DPM_ARRAY { - DPM_ARRAY_HARD_MAX, - DPM_ARRAY_HARD_MIN, - DPM_ARRAY_SOFT_MAX, - DPM_ARRAY_SOFT_MIN -}; - -/* - * Return codes for driver to SMC communication. - * Leave these #define-s, enums might not be exactly 8-bits on the microcontroller. - */ -#define PPSMC_Result_OK ((uint16_t)0x01) -#define PPSMC_Result_NoMore ((uint16_t)0x02) -#define PPSMC_Result_NotNow ((uint16_t)0x03) -#define PPSMC_Result_Failed ((uint16_t)0xFF) -#define PPSMC_Result_UnknownCmd ((uint16_t)0xFE) -#define PPSMC_Result_UnknownVT ((uint16_t)0xFD) - -#define PPSMC_isERROR(x) ((uint16_t)0x80 & (x)) - -/* - * Supported driver messages - */ -#define PPSMC_MSG_Test ((uint16_t) 0x1) -#define PPSMC_MSG_GetFeatureStatus ((uint16_t) 0x2) -#define PPSMC_MSG_EnableAllSmuFeatures ((uint16_t) 0x3) -#define PPSMC_MSG_DisableAllSmuFeatures ((uint16_t) 0x4) -#define PPSMC_MSG_OptimizeBattery ((uint16_t) 0x5) -#define PPSMC_MSG_MaximizePerf ((uint16_t) 0x6) -#define PPSMC_MSG_UVDPowerOFF ((uint16_t) 0x7) -#define PPSMC_MSG_UVDPowerON ((uint16_t) 0x8) -#define PPSMC_MSG_VCEPowerOFF ((uint16_t) 0x9) -#define PPSMC_MSG_VCEPowerON ((uint16_t) 0xA) -#define PPSMC_MSG_ACPPowerOFF ((uint16_t) 0xB) -#define PPSMC_MSG_ACPPowerON ((uint16_t) 0xC) -#define PPSMC_MSG_SDMAPowerOFF ((uint16_t) 0xD) -#define PPSMC_MSG_SDMAPowerON ((uint16_t) 0xE) -#define PPSMC_MSG_XDMAPowerOFF ((uint16_t) 0xF) -#define PPSMC_MSG_XDMAPowerON ((uint16_t) 0x10) -#define PPSMC_MSG_SetMinDeepSleepSclk ((uint16_t) 0x11) -#define PPSMC_MSG_SetSclkSoftMin ((uint16_t) 0x12) -#define PPSMC_MSG_SetSclkSoftMax ((uint16_t) 0x13) -#define PPSMC_MSG_SetSclkHardMin ((uint16_t) 0x14) -#define PPSMC_MSG_SetSclkHardMax ((uint16_t) 0x15) -#define PPSMC_MSG_SetLclkSoftMin ((uint16_t) 0x16) -#define PPSMC_MSG_SetLclkSoftMax ((uint16_t) 0x17) -#define PPSMC_MSG_SetLclkHardMin ((uint16_t) 0x18) -#define PPSMC_MSG_SetLclkHardMax ((uint16_t) 0x19) -#define PPSMC_MSG_SetUvdSoftMin ((uint16_t) 0x1A) -#define PPSMC_MSG_SetUvdSoftMax ((uint16_t) 0x1B) -#define PPSMC_MSG_SetUvdHardMin ((uint16_t) 0x1C) -#define PPSMC_MSG_SetUvdHardMax ((uint16_t) 0x1D) -#define PPSMC_MSG_SetEclkSoftMin ((uint16_t) 0x1E) -#define PPSMC_MSG_SetEclkSoftMax ((uint16_t) 0x1F) -#define PPSMC_MSG_SetEclkHardMin ((uint16_t) 0x20) -#define PPSMC_MSG_SetEclkHardMax ((uint16_t) 0x21) -#define PPSMC_MSG_SetAclkSoftMin ((uint16_t) 0x22) -#define PPSMC_MSG_SetAclkSoftMax ((uint16_t) 0x23) -#define PPSMC_MSG_SetAclkHardMin ((uint16_t) 0x24) -#define PPSMC_MSG_SetAclkHardMax ((uint16_t) 0x25) -#define PPSMC_MSG_SetNclkSoftMin ((uint16_t) 0x26) -#define PPSMC_MSG_SetNclkSoftMax ((uint16_t) 0x27) -#define PPSMC_MSG_SetNclkHardMin ((uint16_t) 0x28) -#define PPSMC_MSG_SetNclkHardMax ((uint16_t) 0x29) -#define PPSMC_MSG_SetPstateSoftMin ((uint16_t) 0x2A) -#define PPSMC_MSG_SetPstateSoftMax ((uint16_t) 0x2B) -#define PPSMC_MSG_SetPstateHardMin ((uint16_t) 0x2C) -#define PPSMC_MSG_SetPstateHardMax ((uint16_t) 0x2D) -#define PPSMC_MSG_DisableLowMemoryPstate ((uint16_t) 0x2E) -#define PPSMC_MSG_EnableLowMemoryPstate ((uint16_t) 0x2F) -#define PPSMC_MSG_UcodeAddressLow ((uint16_t) 0x30) -#define PPSMC_MSG_UcodeAddressHigh ((uint16_t) 0x31) -#define PPSMC_MSG_UcodeLoadStatus ((uint16_t) 0x32) -#define PPSMC_MSG_DriverDramAddrHi ((uint16_t) 0x33) -#define PPSMC_MSG_DriverDramAddrLo ((uint16_t) 0x34) -#define PPSMC_MSG_CondExecDramAddrHi ((uint16_t) 0x35) -#define PPSMC_MSG_CondExecDramAddrLo ((uint16_t) 0x36) -#define PPSMC_MSG_LoadUcodes ((uint16_t) 0x37) -#define PPSMC_MSG_DriverResetMode ((uint16_t) 0x38) -#define PPSMC_MSG_PowerStateNotify ((uint16_t) 0x39) -#define PPSMC_MSG_SetDisplayPhyConfig ((uint16_t) 0x3A) -#define PPSMC_MSG_GetMaxSclkLevel ((uint16_t) 0x3B) -#define PPSMC_MSG_GetMaxLclkLevel ((uint16_t) 0x3C) -#define PPSMC_MSG_GetMaxUvdLevel ((uint16_t) 0x3D) -#define PPSMC_MSG_GetMaxEclkLevel ((uint16_t) 0x3E) -#define PPSMC_MSG_GetMaxAclkLevel ((uint16_t) 0x3F) -#define PPSMC_MSG_GetMaxNclkLevel ((uint16_t) 0x40) -#define PPSMC_MSG_GetMaxPstate ((uint16_t) 0x41) -#define PPSMC_MSG_DramAddrHiVirtual ((uint16_t) 0x42) -#define PPSMC_MSG_DramAddrLoVirtual ((uint16_t) 0x43) -#define PPSMC_MSG_DramAddrHiPhysical ((uint16_t) 0x44) -#define PPSMC_MSG_DramAddrLoPhysical ((uint16_t) 0x45) -#define PPSMC_MSG_DramBufferSize ((uint16_t) 0x46) -#define PPSMC_MSG_SetMmPwrLogDramAddrHi ((uint16_t) 0x47) -#define PPSMC_MSG_SetMmPwrLogDramAddrLo ((uint16_t) 0x48) -#define PPSMC_MSG_SetClkTableAddrHi ((uint16_t) 0x49) -#define PPSMC_MSG_SetClkTableAddrLo ((uint16_t) 0x4A) -#define PPSMC_MSG_GetConservativePowerLimit ((uint16_t) 0x4B) - -#define PPSMC_MSG_InitJobs ((uint16_t) 0x252) -#define PPSMC_MSG_ExecuteJob ((uint16_t) 0x254) - -#define PPSMC_MSG_NBDPM_Enable ((uint16_t) 0x140) -#define PPSMC_MSG_NBDPM_Disable ((uint16_t) 0x141) - -#define PPSMC_MSG_DPM_FPS_Mode ((uint16_t) 0x15d) -#define PPSMC_MSG_DPM_Activity_Mode ((uint16_t) 0x15e) - -#define PPSMC_MSG_PmStatusLogStart ((uint16_t) 0x170) -#define PPSMC_MSG_PmStatusLogSample ((uint16_t) 0x171) - -#define PPSMC_MSG_AllowLowSclkInterrupt ((uint16_t) 0x184) -#define PPSMC_MSG_MmPowerMonitorStart ((uint16_t) 0x18F) -#define PPSMC_MSG_MmPowerMonitorStop ((uint16_t) 0x190) -#define PPSMC_MSG_MmPowerMonitorRestart ((uint16_t) 0x191) - -#define PPSMC_MSG_SetClockGateMask ((uint16_t) 0x260) -#define PPSMC_MSG_SetFpsThresholdLo ((uint16_t) 0x264) -#define PPSMC_MSG_SetFpsThresholdHi ((uint16_t) 0x265) -#define PPSMC_MSG_SetLowSclkIntrThreshold ((uint16_t) 0x266) - -#define PPSMC_MSG_ClkTableXferToDram ((uint16_t) 0x267) -#define PPSMC_MSG_ClkTableXferToSmu ((uint16_t) 0x268) -#define PPSMC_MSG_GetAverageGraphicsActivity ((uint16_t) 0x269) -#define PPSMC_MSG_GetAverageGioActivity ((uint16_t) 0x26A) -#define PPSMC_MSG_SetLoggerBufferSize ((uint16_t) 0x26B) -#define PPSMC_MSG_SetLoggerAddressHigh ((uint16_t) 0x26C) -#define PPSMC_MSG_SetLoggerAddressLow ((uint16_t) 0x26D) -#define PPSMC_MSG_SetWatermarkFrequency ((uint16_t) 0x26E) - -/* REMOVE LATER*/ -#define PPSMC_MSG_DPM_ForceState ((uint16_t) 0x104) - -/* Feature Enable Masks*/ -#define NB_DPM_MASK 0x00000800 -#define VDDGFX_MASK 0x00800000 -#define VCE_DPM_MASK 0x00400000 -#define ACP_DPM_MASK 0x00040000 -#define UVD_DPM_MASK 0x00010000 -#define GFX_CU_PG_MASK 0x00004000 -#define SCLK_DPM_MASK 0x00080000 - -#if !defined(SMC_MICROCODE) -#pragma pack(pop) - -#endif - -#endif diff --git a/drivers/gpu/drm/amd/amdgpu/smu8.h b/drivers/gpu/drm/amd/amdgpu/smu8.h deleted file mode 100644 index d758d07b6a31..000000000000 --- a/drivers/gpu/drm/amd/amdgpu/smu8.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - */ - -#ifndef SMU8_H -#define SMU8_H - -#pragma pack(push, 1) - -#define ENABLE_DEBUG_FEATURES - -struct SMU8_Firmware_Header { - uint32_t Version; - uint32_t ImageSize; - uint32_t CodeSize; - uint32_t HeaderSize; - uint32_t EntryPoint; - uint32_t Rtos; - uint32_t UcodeLoadStatus; - uint32_t DpmTable; - uint32_t FanTable; - uint32_t PmFuseTable; - uint32_t Globals; - uint32_t Reserved[20]; - uint32_t Signature; -}; - -struct SMU8_MultimediaPowerLogData { - uint32_t avgTotalPower; - uint32_t avgGpuPower; - uint32_t avgUvdPower; - uint32_t avgVcePower; - - uint32_t avgSclk; - uint32_t avgDclk; - uint32_t avgVclk; - uint32_t avgEclk; - - uint32_t startTimeHi; - uint32_t startTimeLo; - - uint32_t endTimeHi; - uint32_t endTimeLo; -}; - -#define SMU8_FIRMWARE_HEADER_LOCATION 0x1FF80 -#define SMU8_UNBCSR_START_ADDR 0xC0100000 - -#define SMN_MP1_SRAM_START_ADDR 0x10000000 - -#pragma pack(pop) - -#endif diff --git a/drivers/gpu/drm/amd/amdgpu/smu8_fusion.h b/drivers/gpu/drm/amd/amdgpu/smu8_fusion.h deleted file mode 100644 index 5c9cc3c0bbfa..000000000000 --- a/drivers/gpu/drm/amd/amdgpu/smu8_fusion.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - */ - -#ifndef SMU8_FUSION_H -#define SMU8_FUSION_H - -#include "smu8.h" - -#pragma pack(push, 1) - -#define SMU8_MAX_CUS 2 -#define SMU8_PSMS_PER_CU 4 -#define SMU8_CACS_PER_CU 4 - -struct SMU8_GfxCuPgScoreboard { - uint8_t Enabled; - uint8_t spare[3]; -}; - -struct SMU8_Port80MonitorTable { - uint32_t MmioAddress; - uint32_t MemoryBaseHi; - uint32_t MemoryBaseLo; - uint16_t MemoryBufferSize; - uint16_t MemoryPosition; - uint16_t PollingInterval; - uint8_t EnableCsrShadow; - uint8_t EnableDramShadow; -}; - -/* Clock Table Definitions */ -#define NUM_SCLK_LEVELS 8 -#define NUM_LCLK_LEVELS 8 -#define NUM_UVD_LEVELS 8 -#define NUM_ECLK_LEVELS 8 -#define NUM_ACLK_LEVELS 8 - -struct SMU8_Fusion_ClkLevel { - uint8_t GnbVid; - uint8_t GfxVid; - uint8_t DfsDid; - uint8_t DeepSleepDid; - uint32_t DfsBypass; - uint32_t Frequency; -}; - -struct SMU8_Fusion_SclkBreakdownTable { - struct SMU8_Fusion_ClkLevel ClkLevel[NUM_SCLK_LEVELS]; - struct SMU8_Fusion_ClkLevel DpmOffLevel; - /* SMU8_Fusion_ClkLevel PwrOffLevel; */ - uint32_t SclkValidMask; - uint32_t MaxSclkIndex; -}; - -struct SMU8_Fusion_LclkBreakdownTable { - struct SMU8_Fusion_ClkLevel ClkLevel[NUM_LCLK_LEVELS]; - struct SMU8_Fusion_ClkLevel DpmOffLevel; - /* SMU8_Fusion_ClkLevel PwrOffLevel; */ - uint32_t LclkValidMask; - uint32_t MaxLclkIndex; -}; - -struct SMU8_Fusion_EclkBreakdownTable { - struct SMU8_Fusion_ClkLevel ClkLevel[NUM_ECLK_LEVELS]; - struct SMU8_Fusion_ClkLevel DpmOffLevel; - struct SMU8_Fusion_ClkLevel PwrOffLevel; - uint32_t EclkValidMask; - uint32_t MaxEclkIndex; -}; - -struct SMU8_Fusion_VclkBreakdownTable { - struct SMU8_Fusion_ClkLevel ClkLevel[NUM_UVD_LEVELS]; - struct SMU8_Fusion_ClkLevel DpmOffLevel; - struct SMU8_Fusion_ClkLevel PwrOffLevel; - uint32_t VclkValidMask; - uint32_t MaxVclkIndex; -}; - -struct SMU8_Fusion_DclkBreakdownTable { - struct SMU8_Fusion_ClkLevel ClkLevel[NUM_UVD_LEVELS]; - struct SMU8_Fusion_ClkLevel DpmOffLevel; - struct SMU8_Fusion_ClkLevel PwrOffLevel; - uint32_t DclkValidMask; - uint32_t MaxDclkIndex; -}; - -struct SMU8_Fusion_AclkBreakdownTable { - struct SMU8_Fusion_ClkLevel ClkLevel[NUM_ACLK_LEVELS]; - struct SMU8_Fusion_ClkLevel DpmOffLevel; - struct SMU8_Fusion_ClkLevel PwrOffLevel; - uint32_t AclkValidMask; - uint32_t MaxAclkIndex; -}; - - -struct SMU8_Fusion_ClkTable { - struct SMU8_Fusion_SclkBreakdownTable SclkBreakdownTable; - struct SMU8_Fusion_LclkBreakdownTable LclkBreakdownTable; - struct SMU8_Fusion_EclkBreakdownTable EclkBreakdownTable; - struct SMU8_Fusion_VclkBreakdownTable VclkBreakdownTable; - struct SMU8_Fusion_DclkBreakdownTable DclkBreakdownTable; - struct SMU8_Fusion_AclkBreakdownTable AclkBreakdownTable; -}; - -#pragma pack(pop) - -#endif diff --git a/drivers/gpu/drm/amd/amdgpu/smu_ucode_xfer_cz.h b/drivers/gpu/drm/amd/amdgpu/smu_ucode_xfer_cz.h deleted file mode 100644 index f8ba071f39c8..000000000000 --- a/drivers/gpu/drm/amd/amdgpu/smu_ucode_xfer_cz.h +++ /dev/null @@ -1,147 +0,0 @@ -// CZ Ucode Loading Definitions -#ifndef SMU_UCODE_XFER_CZ_H -#define SMU_UCODE_XFER_CZ_H - -#define NUM_JOBLIST_ENTRIES 32 - -#define TASK_TYPE_NO_ACTION 0 -#define TASK_TYPE_UCODE_LOAD 1 -#define TASK_TYPE_UCODE_SAVE 2 -#define TASK_TYPE_REG_LOAD 3 -#define TASK_TYPE_REG_SAVE 4 -#define TASK_TYPE_INITIALIZE 5 - -#define TASK_ARG_REG_SMCIND 0 -#define TASK_ARG_REG_MMIO 1 -#define TASK_ARG_REG_FCH 2 -#define TASK_ARG_REG_UNB 3 - -#define TASK_ARG_INIT_MM_PWR_LOG 0 -#define TASK_ARG_INIT_CLK_TABLE 1 - -#define JOB_GFX_SAVE 0 -#define JOB_GFX_RESTORE 1 -#define JOB_FCH_SAVE 2 -#define JOB_FCH_RESTORE 3 -#define JOB_UNB_SAVE 4 -#define JOB_UNB_RESTORE 5 -#define JOB_GMC_SAVE 6 -#define JOB_GMC_RESTORE 7 -#define JOB_GNB_SAVE 8 -#define JOB_GNB_RESTORE 9 - -#define IGNORE_JOB 0xff -#define END_OF_TASK_LIST (uint16_t)0xffff - -// Size of DRAM regions (in bytes) requested by SMU: -#define SMU_DRAM_REQ_MM_PWR_LOG 48 - -#define UCODE_ID_SDMA0 0 -#define UCODE_ID_SDMA1 1 -#define UCODE_ID_CP_CE 2 -#define UCODE_ID_CP_PFP 3 -#define UCODE_ID_CP_ME 4 -#define UCODE_ID_CP_MEC_JT1 5 -#define UCODE_ID_CP_MEC_JT2 6 -#define UCODE_ID_GMCON_RENG 7 -#define UCODE_ID_RLC_G 8 -#define UCODE_ID_RLC_SCRATCH 9 -#define UCODE_ID_RLC_SRM_ARAM 10 -#define UCODE_ID_RLC_SRM_DRAM 11 -#define UCODE_ID_DMCU_ERAM 12 -#define UCODE_ID_DMCU_IRAM 13 - -#define UCODE_ID_SDMA0_MASK 0x00000001 -#define UCODE_ID_SDMA1_MASK 0x00000002 -#define UCODE_ID_CP_CE_MASK 0x00000004 -#define UCODE_ID_CP_PFP_MASK 0x00000008 -#define UCODE_ID_CP_ME_MASK 0x00000010 -#define UCODE_ID_CP_MEC_JT1_MASK 0x00000020 -#define UCODE_ID_CP_MEC_JT2_MASK 0x00000040 -#define UCODE_ID_GMCON_RENG_MASK 0x00000080 -#define UCODE_ID_RLC_G_MASK 0x00000100 -#define UCODE_ID_RLC_SCRATCH_MASK 0x00000200 -#define UCODE_ID_RLC_SRM_ARAM_MASK 0x00000400 -#define UCODE_ID_RLC_SRM_DRAM_MASK 0x00000800 -#define UCODE_ID_DMCU_ERAM_MASK 0x00001000 -#define UCODE_ID_DMCU_IRAM_MASK 0x00002000 - -#define UCODE_ID_SDMA0_SIZE_BYTE 10368 -#define UCODE_ID_SDMA1_SIZE_BYTE 10368 -#define UCODE_ID_CP_CE_SIZE_BYTE 8576 -#define UCODE_ID_CP_PFP_SIZE_BYTE 16768 -#define UCODE_ID_CP_ME_SIZE_BYTE 16768 -#define UCODE_ID_CP_MEC_JT1_SIZE_BYTE 384 -#define UCODE_ID_CP_MEC_JT2_SIZE_BYTE 384 -#define UCODE_ID_GMCON_RENG_SIZE_BYTE 4096 -#define UCODE_ID_RLC_G_SIZE_BYTE 2048 -#define UCODE_ID_RLC_SCRATCH_SIZE_BYTE 132 -#define UCODE_ID_RLC_SRM_ARAM_SIZE_BYTE 8192 -#define UCODE_ID_RLC_SRM_DRAM_SIZE_BYTE 4096 -#define UCODE_ID_DMCU_ERAM_SIZE_BYTE 24576 -#define UCODE_ID_DMCU_IRAM_SIZE_BYTE 1024 - -#define NUM_UCODES 14 - -typedef struct { - uint32_t high; - uint32_t low; -} data_64_t; - -struct SMU_Task { - uint8_t type; - uint8_t arg; - uint16_t next; - data_64_t addr; - uint32_t size_bytes; -}; -typedef struct SMU_Task SMU_Task; - -struct TOC { - uint8_t JobList[NUM_JOBLIST_ENTRIES]; - SMU_Task tasks[1]; -}; - -// META DATA COMMAND Definitions -#define METADATA_CMD_MODE0 0x00000103 -#define METADATA_CMD_MODE1 0x00000113 -#define METADATA_CMD_MODE2 0x00000123 -#define METADATA_CMD_MODE3 0x00000133 -#define METADATA_CMD_DELAY 0x00000203 -#define METADATA_CMD_CHNG_REGSPACE 0x00000303 -#define METADATA_PERFORM_ON_SAVE 0x00001000 -#define METADATA_PERFORM_ON_LOAD 0x00002000 -#define METADATA_CMD_ARG_MASK 0xFFFF0000 -#define METADATA_CMD_ARG_SHIFT 16 - -// Simple register addr/data fields -struct SMU_MetaData_Mode0 { - uint32_t register_address; - uint32_t register_data; -}; -typedef struct SMU_MetaData_Mode0 SMU_MetaData_Mode0; - -// Register addr/data with mask -struct SMU_MetaData_Mode1 { - uint32_t register_address; - uint32_t register_mask; - uint32_t register_data; -}; -typedef struct SMU_MetaData_Mode1 SMU_MetaData_Mode1; - -struct SMU_MetaData_Mode2 { - uint32_t register_address; - uint32_t register_mask; - uint32_t target_value; -}; -typedef struct SMU_MetaData_Mode2 SMU_MetaData_Mode2; - -// Always write data (even on a save operation) -struct SMU_MetaData_Mode3 { - uint32_t register_address; - uint32_t register_mask; - uint32_t register_data; -}; -typedef struct SMU_MetaData_Mode3 SMU_MetaData_Mode3; - -#endif |