aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3167-drm-amd-powerplay-update-smu11_driver_if_arcturus.h.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3167-drm-amd-powerplay-update-smu11_driver_if_arcturus.h.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3167-drm-amd-powerplay-update-smu11_driver_if_arcturus.h.patch172
1 files changed, 172 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3167-drm-amd-powerplay-update-smu11_driver_if_arcturus.h.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3167-drm-amd-powerplay-update-smu11_driver_if_arcturus.h.patch
new file mode 100644
index 00000000..a8440607
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3167-drm-amd-powerplay-update-smu11_driver_if_arcturus.h.patch
@@ -0,0 +1,172 @@
+From ca1b0eb5099e7d4078ec933789380eb97d202128 Mon Sep 17 00:00:00 2001
+From: Evan Quan <evan.quan@amd.com>
+Date: Fri, 12 Jul 2019 16:24:34 +0800
+Subject: [PATCH 3167/4256] drm/amd/powerplay: update
+ smu11_driver_if_arcturus.h
+
+It guides how driver should interface with SMU in arcturus.
+
+Signed-off-by: Evan Quan <evan.quan@amd.com>
+Reviewed-by: Kenneth Feng <kenneth.feng@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../powerplay/inc/smu11_driver_if_arcturus.h | 58 +++++++++++--------
+ 1 file changed, 33 insertions(+), 25 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if_arcturus.h b/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if_arcturus.h
+index 7a9969e075d4..c7a7953b52b7 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if_arcturus.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if_arcturus.h
+@@ -21,16 +21,15 @@
+ *
+ */
+
+-
+ #ifndef SMU11_DRIVER_IF_ARCTURUS_H
+ #define SMU11_DRIVER_IF_ARCTURUS_H
+
+ // *** IMPORTANT ***
+ // SMU TEAM: Always increment the interface version if
+ // any structure is changed in this file
+-#define SMU11_DRIVER_IF_VERSION 0x06
++#define SMU11_DRIVER_IF_VERSION 0x08
+
+-#define PPTABLE_ARCTURUS_SMU_VERSION 3
++#define PPTABLE_ARCTURUS_SMU_VERSION 4
+
+ #define NUM_GFXCLK_DPM_LEVELS 16
+ #define NUM_VCLK_DPM_LEVELS 8
+@@ -40,6 +39,7 @@
+ #define NUM_UCLK_DPM_LEVELS 4
+ #define NUM_FCLK_DPM_LEVELS 8
+ #define NUM_XGMI_LEVELS 2
++#define NUM_XGMI_PSTATE_LEVELS 4
+
+ #define MAX_GFXCLK_DPM_LEVEL (NUM_GFXCLK_DPM_LEVELS - 1)
+ #define MAX_VCLK_DPM_LEVEL (NUM_VCLK_DPM_LEVELS - 1)
+@@ -49,6 +49,7 @@
+ #define MAX_UCLK_DPM_LEVEL (NUM_UCLK_DPM_LEVELS - 1)
+ #define MAX_FCLK_DPM_LEVEL (NUM_FCLK_DPM_LEVELS - 1)
+ #define MAX_XGMI_LEVEL (NUM_XGMI_LEVELS - 1)
++#define MAX_XGMI_PSTATE_LEVEL (NUM_XGMI_PSTATE_LEVELS - 1)
+
+ // Feature Control Defines
+ // DPM
+@@ -213,8 +214,8 @@
+ #define WORKLOAD_PPLIB_COUNT 5
+
+ //XGMI performance states
+-#define XGMI_STATE_D0 1
+-#define XGMI_STATE_D3 0
++#define XGMI_STATE_D0 1
++#define XGMI_STATE_D3 0
+
+ #define NUM_I2C_CONTROLLERS 8
+
+@@ -314,7 +315,6 @@ typedef struct {
+ } SwI2cRequest_t; // SW I2C Request Table
+
+ //D3HOT sequences
+-//sequence codes from spec: atlvp4p01.amd.com:1677@//gpu/doc/soc_arch/spec/feature/BACO/Navi/Navi2x/
+ typedef enum {
+ BACO_SEQUENCE,
+ MSR_SEQUENCE,
+@@ -368,6 +368,12 @@ typedef enum {
+ PPCLK_COUNT,
+ } PPCLK_e;
+
++typedef enum {
++ POWER_SOURCE_AC,
++ POWER_SOURCE_DC,
++ POWER_SOURCE_COUNT,
++} POWER_SOURCE_e;
++
+ typedef enum {
+ TEMP_EDGE,
+ TEMP_HOTSPOT,
+@@ -568,14 +574,9 @@ typedef struct {
+
+ uint16_t DcBtcGb[AVFS_VOLTAGE_COUNT]; // mV Q2
+
+- uint16_t SsFmin[10]; // PPtable value to function similar to VFTFmin for SS Curve; Size is PPCLK_COUNT rounded to nearest multiple of 2
+-
+ // SECTION: XGMI
+- uint8_t XgmiLinkSpeed [NUM_XGMI_LEVELS];
+- uint8_t XgmiLinkWidth [NUM_XGMI_LEVELS];
+-
+- uint16_t XgmiFclkFreq [NUM_XGMI_LEVELS];
+- uint16_t XgmiSocVoltage [NUM_XGMI_LEVELS];
++ uint8_t XgmiDpmPstates[NUM_XGMI_LEVELS]; // 2 DPM states, high and low. 0-P0, 1-P1, 2-P2, 3-P3.
++ uint8_t XgmiDpmSpare[2];
+
+ // Temperature Dependent Vmin
+ uint16_t VDDGFX_TVmin; //Celcius
+@@ -683,6 +684,13 @@ typedef struct {
+ uint16_t TotalBoardPower; //Only needed for TCP Estimated case, where TCP = TGP+Total Board Power
+ uint16_t BoardPadding;
+
++ // SECTION: XGMI Training
++ uint8_t XgmiLinkSpeed [NUM_XGMI_PSTATE_LEVELS];
++ uint8_t XgmiLinkWidth [NUM_XGMI_PSTATE_LEVELS];
++
++ uint16_t XgmiFclkFreq [NUM_XGMI_PSTATE_LEVELS];
++ uint16_t XgmiSocVoltage [NUM_XGMI_PSTATE_LEVELS];
++
+ uint32_t BoardReserved[10];
+
+ // Padding for MMHUB - do not modify this
+@@ -698,7 +706,7 @@ typedef struct {
+ uint16_t GfxActivityLpfTau;
+ uint16_t UclkActivityLpfTau;
+
+- uint16_t Padding;
++ uint16_t SocketPowerLpfTau;
+
+ // Padding - ignore
+ uint32_t MmHubPadding[8]; // SMU internal use
+@@ -715,7 +723,7 @@ typedef struct {
+ uint8_t CurrGfxVoltageOffset ;
+ uint8_t CurrMemVidOffset ;
+ uint8_t Padding8 ;
+- uint16_t CurrSocketPower ;
++ uint16_t AverageSocketPower ;
+ uint16_t TemperatureEdge ;
+ uint16_t TemperatureHotspot ;
+ uint16_t TemperatureHBM ;
+@@ -724,23 +732,23 @@ typedef struct {
+ uint16_t TemperatureVrMem ;
+ uint32_t ThrottlerStatus ;
+
++ uint16_t CurrFanSpeed ;
++ uint16_t Padding16;
++
++ uint32_t Padding[4];
++
+ // Padding - ignore
+ uint32_t MmHubPadding[7]; // SMU internal use
+ } SmuMetrics_t;
+
+
+ typedef struct {
+- uint16_t avgPsmCount[45];
+- uint16_t minPsmCount[45];
+- float avgPsmVoltage[45];
+- float minPsmVoltage[45];
+-
+- uint16_t avgScsPsmCount;
+- uint16_t minScsPsmCount;
+- float avgScsPsmVoltage;
+- float minScsPsmVoltage;
++ uint16_t avgPsmCount[75];
++ uint16_t minPsmCount[75];
++ float avgPsmVoltage[75];
++ float minPsmVoltage[75];
+
+- uint32_t MmHubPadding[6]; // SMU internal use
++ uint32_t MmHubPadding[3]; // SMU internal use
+ } AvfsDebugTable_t;
+
+ typedef struct {
+--
+2.17.1
+