[PATCH] Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly""

2022-11-04 Thread Asher Song
This reverts commit 97370f1826eb7ee6880e09ee1eaafe28232cabc6.

The origin patch "drm/amdgpu: getting fan speed pwm for vega10 properly" works 
fine. Test failure is caused by test case self.

Signed-off-by: Asher Song 
---
 .../amd/pm/powerplay/hwmgr/vega10_thermal.c   | 25 +--
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
index dad3e3741a4e..190af79f3236 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
@@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr 
*hwmgr,
 int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,
uint32_t *speed)
 {
-   uint32_t current_rpm;
-   uint32_t percent = 0;
-
-   if (hwmgr->thermal_controller.fanInfo.bNoFan)
-   return 0;
+   struct amdgpu_device *adev = hwmgr->adev;
+   uint32_t duty100, duty;
+   uint64_t tmp64;
 
-   if (vega10_get_current_rpm(hwmgr, _rpm))
-   return -1;
+   duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1),
+   CG_FDO_CTRL1, FMAX_DUTY100);
+   duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS),
+   CG_THERMAL_STATUS, FDO_PWM_DUTY);
 
-   if (hwmgr->thermal_controller.
-   advanceFanControlParameters.usMaxFanRPM != 0)
-   percent = current_rpm * 255 /
-   hwmgr->thermal_controller.
-   advanceFanControlParameters.usMaxFanRPM;
+   if (!duty100)
+   return -EINVAL;
 
-   *speed = MIN(percent, 255);
+   tmp64 = (uint64_t)duty * 255;
+   do_div(tmp64, duty100);
+   *speed = MIN((uint32_t)tmp64, 255);
 
return 0;
 }
-- 
2.25.1



[PATCH] drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly"

2022-10-13 Thread Asher Song
This reverts commit fe01cb24b81c0091d7e5668874d51ce913e44a97.

Unfortunately, that commit causes fan monitors can't be read and written
properly.

Signed-off-by: Asher Song 
---
 .../amd/pm/powerplay/hwmgr/vega10_thermal.c   | 25 ++-
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
index 190af79f3236..dad3e3741a4e 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
@@ -67,21 +67,22 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr 
*hwmgr,
 int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,
uint32_t *speed)
 {
-   struct amdgpu_device *adev = hwmgr->adev;
-   uint32_t duty100, duty;
-   uint64_t tmp64;
+   uint32_t current_rpm;
+   uint32_t percent = 0;
 
-   duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1),
-   CG_FDO_CTRL1, FMAX_DUTY100);
-   duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS),
-   CG_THERMAL_STATUS, FDO_PWM_DUTY);
+   if (hwmgr->thermal_controller.fanInfo.bNoFan)
+   return 0;
 
-   if (!duty100)
-   return -EINVAL;
+   if (vega10_get_current_rpm(hwmgr, _rpm))
+   return -1;
+
+   if (hwmgr->thermal_controller.
+   advanceFanControlParameters.usMaxFanRPM != 0)
+   percent = current_rpm * 255 /
+   hwmgr->thermal_controller.
+   advanceFanControlParameters.usMaxFanRPM;
 
-   tmp64 = (uint64_t)duty * 255;
-   do_div(tmp64, duty100);
-   *speed = MIN((uint32_t)tmp64, 255);
+   *speed = MIN(percent, 255);
 
return 0;
 }
-- 
2.25.1



[PATCH] drm/amdgpu: fix a compiling error in old kernels

2022-09-26 Thread Asher Song
This patch is used to fix following compiling error that occurs in some
old kernels.

error: ‘for’ loop initial declarations are only allowed in C99 mode
  for (int i = 0; i < dc->res_pool->res_cap->num_dsc; i++) {

Signed-off-by: Asher Song 
---
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c 
b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c
index 772ad200c5da..c91fcde7a16c 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c
@@ -1405,8 +1405,9 @@ void dcn32_update_dsc_pg(struct dc *dc,
bool safe_to_disable)
 {
struct dce_hwseq *hws = dc->hwseq;
+   int i;
 
-   for (int i = 0; i < dc->res_pool->res_cap->num_dsc; i++) {
+   for (i = 0; i < dc->res_pool->res_cap->num_dsc; i++) {
struct display_stream_compressor *dsc = dc->res_pool->dscs[i];
bool is_dsc_ungated = hws->funcs.dsc_pg_status(hws, dsc->inst);
 
-- 
2.25.1



[PATCH] drm/amdgpu: fix a compiling error

2022-09-26 Thread Asher Song
The patch fix following compiling error:

error: ‘for’ loop initial declarations are only allowed in C99 mode
  for (int i = 0; i < dc->res_pool->res_cap->num_dsc; i++) {

Signed-off-by: Asher Song 
---
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c 
b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c
index 772ad200c5da..d58c5085600a 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c
@@ -1405,8 +1405,8 @@ void dcn32_update_dsc_pg(struct dc *dc,
bool safe_to_disable)
 {
struct dce_hwseq *hws = dc->hwseq;
-
-   for (int i = 0; i < dc->res_pool->res_cap->num_dsc; i++) {
+   int i;
+   for (i = 0; i < dc->res_pool->res_cap->num_dsc; i++) {
struct display_stream_compressor *dsc = dc->res_pool->dscs[i];
bool is_dsc_ungated = hws->funcs.dsc_pg_status(hws, dsc->inst);
 
-- 
2.25.1



[PATCH] drm/display: guard if clause

2022-09-01 Thread Asher Song
To eliminate the following compiling error, guard if clause.

drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c: In function 
'commit_planes_for_stream':
drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:3521:2: error: this 'if' 
clause does not guard... [-Werror=misleading-indentation]
drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:3523:3: note: ...this 
statement, but the latter is misleadingly indented as if it were guarded by the 
'if'
if (update_type != UPDATE_TYPE_FAST)
^~

Signed-off-by: Asher Song 
---
 drivers/gpu/drm/amd/display/dc/core/dc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index b49237390cce..66072ac1bb4f 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -3505,11 +3505,12 @@ static void commit_planes_for_stream(struct dc *dc,
top_pipe_to_program->stream_res.tg);
}
 
-   if (update_type != UPDATE_TYPE_FAST)
+   if (update_type != UPDATE_TYPE_FAST){
dc->hwss.post_unlock_program_front_end(dc, context);
if (update_type != UPDATE_TYPE_FAST)
if (dc->hwss.commit_subvp_config)
dc->hwss.commit_subvp_config(dc, context);
+   }
 
/* Since phantom pipe programming is moved to 
post_unlock_program_front_end,
 * move the SubVP lock to after the phantom pipes have been setup
-- 
2.25.1



[PATCH] drm/amd/display: remove a duplicated declaration

2022-08-31 Thread Asher Song
There are duplicated declarations of i, remove one of those.

Signed-off-by: Asher Song 
---
 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
index 9f8976b18839..7f6c977c4981 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
@@ -1025,7 +1025,7 @@ static void dcn32_full_validate_bw_helper(struct dc *dc,
 
dcn32_merge_pipes_for_subvp(dc, context);
// to re-initialize viewport after the pipe merge
-   for (int i = 0; i < dc->res_pool->pipe_count; i++) {
+   for (i = 0; i < dc->res_pool->pipe_count; i++) {
struct pipe_ctx *pipe_ctx = 
>res_ctx.pipe_ctx[i];
 
if (!pipe_ctx->plane_state || !pipe_ctx->stream)
-- 
2.25.1



[PATCH] drm/amdgpu: assign dpms for amdgpu_vkms_crtc_helper_funcs

2021-11-05 Thread Asher Song
In drm_helper_disable_unused_functions(), when !crtc->enable is false, a NULL 
pointer crtc_funcs->dpms may occur. To avoid this, assign dpms for 
amdgpu_vkms_crtc_helper_funcs.

 Call Trace:
  __drm_helper_disable_unused_functions+0xac/0xe0 [drm_kms_helper]
  drm_helper_disable_unused_functions+0x38/0x60 [drm_kms_helper]
  amdgpu_fbdev_init+0xf6/0x100 [amdgpu]
  amdgpu_device_init+0x13d4/0x1f10 [amdgpu]

Fixes: ba5317109d0ce ("drm/amdgpu: create amdgpu_vkms (v4)")
Signed-off-by: Asher Song 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 26 
 1 file changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
index 50bdc39733aa..9cfe479c4c97 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
@@ -156,7 +156,33 @@ static void amdgpu_vkms_crtc_atomic_flush(struct drm_crtc 
*crtc,
}
 }
 
+static void amdgpu_vkms_crtc_dpms(struct drm_crtc *crtc, int mode)
+{
+   struct drm_device *dev = crtc->dev;
+   struct amdgpu_device *adev = drm_to_adev(dev);
+   struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
+   unsigned type;
+
+   switch (mode) {
+   case DRM_MODE_DPMS_ON:
+   amdgpu_crtc->enabled = true;
+   /* Make sure VBLANK interrupts are still enabled */
+   type = amdgpu_display_crtc_idx_to_irq_type(adev,
+   amdgpu_crtc->crtc_id);
+   amdgpu_irq_update(adev, >crtc_irq, type);
+   drm_crtc_vblank_on(crtc);
+   break;
+   case DRM_MODE_DPMS_STANDBY:
+   case DRM_MODE_DPMS_SUSPEND:
+   case DRM_MODE_DPMS_OFF:
+   drm_crtc_vblank_off(crtc);
+   amdgpu_crtc->enabled = false;
+   break;
+   }
+}
+
 static const struct drm_crtc_helper_funcs amdgpu_vkms_crtc_helper_funcs = {
+   .dpms = amdgpu_vkms_crtc_dpms,
.atomic_flush   = amdgpu_vkms_crtc_atomic_flush,
.atomic_enable  = amdgpu_vkms_crtc_atomic_enable,
.atomic_disable = amdgpu_vkms_crtc_atomic_disable,
-- 
2.25.1



[PATCH] drm/amdgpu: assign dpms for amdgpu_vkms_crtc_helper_funcs

2021-11-04 Thread Asher Song
To avoid NULL pointer, assign dpms for amdgpu_vkms_crtc_helper_funcs.

Signed-off-by: Asher Song 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 26 +++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
index 50bdc39733aa..920b6bc1a9fc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
@@ -155,8 +155,32 @@ static void amdgpu_vkms_crtc_atomic_flush(struct drm_crtc 
*crtc,
crtc->state->event = NULL;
}
 }
-
+static void amdgpu_vkms_crtc_dpms(struct drm_crtc *crtc, int mode)
+{
+   struct drm_device *dev = crtc->dev;
+   struct amdgpu_device *adev = drm_to_adev(dev);
+   struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
+   unsigned type;
+
+   switch (mode) {
+   case DRM_MODE_DPMS_ON:
+   amdgpu_crtc->enabled = true;
+   /* Make sure VBLANK interrupts are still enabled */
+   type = amdgpu_display_crtc_idx_to_irq_type(adev,
+   amdgpu_crtc->crtc_id);
+   amdgpu_irq_update(adev, >crtc_irq, type);
+   drm_crtc_vblank_on(crtc);
+   break;
+   case DRM_MODE_DPMS_STANDBY:
+   case DRM_MODE_DPMS_SUSPEND:
+   case DRM_MODE_DPMS_OFF:
+   drm_crtc_vblank_off(crtc);
+   amdgpu_crtc->enabled = false;
+   break;
+   }
+}
 static const struct drm_crtc_helper_funcs amdgpu_vkms_crtc_helper_funcs = {
+   .dpms = amdgpu_vkms_crtc_dpms,
.atomic_flush   = amdgpu_vkms_crtc_atomic_flush,
.atomic_enable  = amdgpu_vkms_crtc_atomic_enable,
.atomic_disable = amdgpu_vkms_crtc_atomic_disable,
-- 
2.25.1



[PATCH] drm/amdgpu: add judgement for dc support

2021-05-24 Thread Asher Song
Drop DC initialization when DCN is harvested in VBIOS. The way
doesn't affect virtual display ip initialization.

Signed-off-by: Likun Gao  
Signed-off-by: Asher Song 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 8848e2b9bef9..148da7ca5d55 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3122,7 +3122,9 @@ bool amdgpu_device_asic_has_dc_support(enum amd_asic_type 
asic_type)
  */
 bool amdgpu_device_has_dc_support(struct amdgpu_device *adev)
 {
-   if (amdgpu_sriov_vf(adev) || adev->enable_virtual_display)
+   if (amdgpu_sriov_vf(adev) || 
+   adev->enable_virtual_display ||
+   (adev->harvest_ip_mask & AMD_HARVEST_IP_DMU_MASK))
return false;
 
return amdgpu_device_asic_has_dc_support(adev->asic_type);
-- 
2.25.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx