diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1406-drm-amd-powerplay-implement-smu-update-table-functio.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1406-drm-amd-powerplay-implement-smu-update-table-functio.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1406-drm-amd-powerplay-implement-smu-update-table-functio.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1406-drm-amd-powerplay-implement-smu-update-table-functio.patch new file mode 100644 index 00000000..bc2a6114 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1406-drm-amd-powerplay-implement-smu-update-table-functio.patch @@ -0,0 +1,79 @@ +From 204099f7849ff8405477d2da8695553a025c891d Mon Sep 17 00:00:00 2001 +From: Kevin Wang <Kevin1.Wang@amd.com> +Date: Mon, 7 Jan 2019 15:34:09 +0800 +Subject: [PATCH 1406/2940] drm/amd/powerplay: implement smu update table + function + +sometime, the driver need changed table data between driver and smu. +this function can help update table data + +Signed-off-by: Kevin Wang <Kevin1.Wang@amd.com> +Reviewed-by: Huang Rui <ray.huang@amd.com> +Acked-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 36 +++++++++++++++++++ + .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 3 ++ + 2 files changed, 39 insertions(+) + +diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +index 172b84480d6c..56095a400731 100644 +--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c ++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +@@ -29,6 +29,42 @@ + #include "smu_v11_0.h" + #include "atom.h" + ++int smu_update_table(struct smu_context *smu, uint32_t table_id, ++ void *table_data, bool drv2smu) ++{ ++ struct smu_table_context *smu_table = &smu->smu_table; ++ struct smu_table *table = NULL; ++ int ret = 0; ++ ++ if (!table_data || table_id >= smu_table->table_count) ++ return -EINVAL; ++ ++ table = &smu_table->tables[table_id]; ++ ++ if (drv2smu) ++ memcpy(table->cpu_addr, table_data, table->size); ++ ++ ret = smu_send_smc_msg_with_param(smu, SMU_MSG_SetDriverDramAddrHigh, ++ upper_32_bits(table->mc_address)); ++ if (ret) ++ return ret; ++ ret = smu_send_smc_msg_with_param(smu, SMU_MSG_SetDriverDramAddrLow, ++ lower_32_bits(table->mc_address)); ++ if (ret) ++ return ret; ++ ret = smu_send_smc_msg_with_param(smu, drv2smu ? ++ SMU_MSG_TransferTableDram2Smu : ++ SMU_MSG_TransferTableSmu2Dram, ++ table_id); ++ if (ret) ++ return ret; ++ ++ if (!drv2smu) ++ memcpy(table_data, table->cpu_addr, table->size); ++ ++ return ret; ++} ++ + int smu_feature_init_dpm(struct smu_context *smu) + { + struct smu_feature *feature = &smu->smu_feature; +diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +index fe86a7fdfebf..c159e4d731fe 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +@@ -364,4 +364,7 @@ extern int smu_feature_set_enabled(struct smu_context *smu, int feature_id, bool + extern int smu_feature_is_supported(struct smu_context *smu, int feature_id); + extern int smu_feature_set_supported(struct smu_context *smu, int feature_id, bool enable); + ++int smu_update_table(struct smu_context *smu, uint32_t table_id, ++ void *table_data, bool drv2smu); ++ + #endif +-- +2.17.1 + |