All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check
@ 2020-06-09 10:20 Evan Quan
  2020-06-09 10:20 ` [PATCH 2/3] drm/amd/powerplay: revise the calling chain on sensor reading Evan Quan
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Evan Quan @ 2020-06-09 10:20 UTC (permalink / raw)
  To: amd-gfx; +Cc: alexander.deucher, Evan Quan

Since SMU_MSG_GetDpmClockFreq is known to be supported for Vega20
and before ASICs only. For those ASICs supporting swSMU, it is not
supported.

Change-Id: I8ee71664baa32e40df5bb793550785120f3770c6
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
index 9e3fee9e4aca..d10d15fc7492 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
@@ -1089,24 +1089,13 @@ int smu_v11_0_get_current_clk_freq(struct smu_context *smu,
 {
 	int ret = 0;
 	uint32_t freq = 0;
-	int asic_clk_id;
 
 	if (clk_id >= SMU_CLK_COUNT || !value)
 		return -EINVAL;
 
-	asic_clk_id = smu_clk_get_index(smu, clk_id);
-	if (asic_clk_id < 0)
-		return -EINVAL;
-
-	/* if don't has GetDpmClockFreq Message, try get current clock by SmuMetrics_t */
-	if (smu_msg_get_index(smu, SMU_MSG_GetDpmClockFreq) < 0)
-		ret =  smu_get_current_clk_freq_by_table(smu, clk_id, &freq);
-	else {
-		ret = smu_send_smc_msg_with_param(smu, SMU_MSG_GetDpmClockFreq,
-						  (asic_clk_id << 16), &freq);
-		if (ret)
-			return ret;
-	}
+	ret =  smu_get_current_clk_freq_by_table(smu, clk_id, &freq);
+	if (ret)
+		return ret;
 
 	freq *= 100;
 	*value = freq;
-- 
2.27.0

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

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] drm/amd/powerplay: revise the calling chain on sensor reading
  2020-06-09 10:20 [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check Evan Quan
@ 2020-06-09 10:20 ` Evan Quan
  2020-06-09 19:54   ` Alex Deucher
  2020-06-09 10:20 ` [PATCH 3/3] drm/amd/powerplay: maximum code sharing " Evan Quan
  2020-06-09 19:51 ` [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check Alex Deucher
  2 siblings, 1 reply; 6+ messages in thread
From: Evan Quan @ 2020-06-09 10:20 UTC (permalink / raw)
  To: amd-gfx; +Cc: alexander.deucher, Evan Quan

Update the calling chain from "amdgpu_smu.c -> ${asic}_ppt.c ->
smu_v11/12_0.c -> amdgpu_smu.c (smu_common_read_sensor())" to "
"amdgpu_smu.c -> ${asic}_ppt.c -> smu_v11/12_0.c". This can help
to maintain clear code layers. More similar changes will be coming.

Change-Id: I95beba6c117b0cd3b0acea6158bf62240c6eac5a
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c    | 81 ++++++++-----------
 .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h    |  2 -
 drivers/gpu/drm/amd/powerplay/smu_v11_0.c     |  2 +-
 drivers/gpu/drm/amd/powerplay/smu_v12_0.c     |  2 +-
 4 files changed, 35 insertions(+), 52 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index 78263de02678..c032680c52b0 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -506,52 +506,6 @@ int smu_get_power_num_states(struct smu_context *smu,
 	return 0;
 }
 
-int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor,
-			   void *data, uint32_t *size)
-{
-	struct smu_power_context *smu_power = &smu->smu_power;
-	struct smu_power_gate *power_gate = &smu_power->power_gate;
-	int ret = 0;
-
-	if(!data || !size)
-		return -EINVAL;
-
-	switch (sensor) {
-	case AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK:
-		*((uint32_t *)data) = smu->pstate_sclk;
-		*size = 4;
-		break;
-	case AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK:
-		*((uint32_t *)data) = smu->pstate_mclk;
-		*size = 4;
-		break;
-	case AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK:
-		ret = smu_feature_get_enabled_mask(smu, (uint32_t *)data, 2);
-		*size = 8;
-		break;
-	case AMDGPU_PP_SENSOR_UVD_POWER:
-		*(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_UVD_BIT) ? 1 : 0;
-		*size = 4;
-		break;
-	case AMDGPU_PP_SENSOR_VCE_POWER:
-		*(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_VCE_BIT) ? 1 : 0;
-		*size = 4;
-		break;
-	case AMDGPU_PP_SENSOR_VCN_POWER_STATE:
-		*(uint32_t *)data = power_gate->vcn_gated ? 0 : 1;
-		*size = 4;
-		break;
-	default:
-		ret = -EINVAL;
-		break;
-	}
-
-	if (ret)
-		*size = 0;
-
-	return ret;
-}
-
 int smu_update_table(struct smu_context *smu, enum smu_table_id table_index, int argument,
 		     void *table_data, bool drv2smu)
 {
@@ -2338,10 +2292,41 @@ int smu_read_sensor(struct smu_context *smu,
 	if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)
 		return -EOPNOTSUPP;
 
+	if (!data || !size)
+		return -EINVAL;
+
 	mutex_lock(&smu->mutex);
 
-	if (smu->ppt_funcs->read_sensor)
-		ret = smu->ppt_funcs->read_sensor(smu, sensor, data, size);
+	switch (sensor) {
+	case AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK:
+		*((uint32_t *)data) = smu->pstate_sclk;
+		*size = 4;
+		break;
+	case AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK:
+		*((uint32_t *)data) = smu->pstate_mclk;
+		*size = 4;
+		break;
+	case AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK:
+		ret = smu_feature_get_enabled_mask(smu, (uint32_t *)data, 2);
+		*size = 8;
+		break;
+	case AMDGPU_PP_SENSOR_UVD_POWER:
+		*(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_UVD_BIT) ? 1 : 0;
+		*size = 4;
+		break;
+	case AMDGPU_PP_SENSOR_VCE_POWER:
+		*(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_VCE_BIT) ? 1 : 0;
+		*size = 4;
+		break;
+	case AMDGPU_PP_SENSOR_VCN_POWER_STATE:
+		*(uint32_t *)data = smu->smu_power.power_gate.vcn_gated ? 0 : 1;
+		*size = 4;
+		break;
+	default:
+		if (smu->ppt_funcs->read_sensor)
+			ret = smu->ppt_funcs->read_sensor(smu, sensor, data, size);
+		break;
+	}
 
 	mutex_unlock(&smu->mutex);
 
diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
index 0d1429fc791b..41164a8fbe8a 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
@@ -695,8 +695,6 @@ int smu_update_table(struct smu_context *smu, enum smu_table_id table_index, int
 
 bool is_support_sw_smu(struct amdgpu_device *adev);
 int smu_reset(struct smu_context *smu);
-int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor,
-			   void *data, uint32_t *size);
 int smu_sys_get_pp_table(struct smu_context *smu, void **table);
 int smu_sys_set_pp_table(struct smu_context *smu,  void *buf, size_t size);
 int smu_get_power_num_states(struct smu_context *smu, struct pp_states_info *state_info);
diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
index d10d15fc7492..1a17d853afbd 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
@@ -1198,7 +1198,7 @@ int smu_v11_0_read_sensor(struct smu_context *smu,
 		*size = 4;
 		break;
 	default:
-		ret = smu_common_read_sensor(smu, sensor, data, size);
+		ret = -EOPNOTSUPP;
 		break;
 	}
 
diff --git a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
index 5b56e7579ff4..ae1035575808 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
@@ -226,7 +226,7 @@ int smu_v12_0_read_sensor(struct smu_context *smu,
 		*size = 4;
 		break;
 	default:
-		ret = smu_common_read_sensor(smu, sensor, data, size);
+		ret = -EOPNOTSUPP;
 		break;
 	}
 
-- 
2.27.0

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

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] drm/amd/powerplay: maximum code sharing on sensor reading
  2020-06-09 10:20 [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check Evan Quan
  2020-06-09 10:20 ` [PATCH 2/3] drm/amd/powerplay: revise the calling chain on sensor reading Evan Quan
@ 2020-06-09 10:20 ` Evan Quan
  2020-06-09 19:53   ` Alex Deucher
  2020-06-09 19:51 ` [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check Alex Deucher
  2 siblings, 1 reply; 6+ messages in thread
From: Evan Quan @ 2020-06-09 10:20 UTC (permalink / raw)
  To: amd-gfx; +Cc: alexander.deucher, Evan Quan

Move the common code to amdgpu_smu.c instead of having one
copy in both smu_v11_0.c and smu_v12_0.c.

Change-Id: Idc59c6f686139d034348a613f1a7b9213198312d
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 4 ++++
 drivers/gpu/drm/amd/powerplay/smu_v11_0.c  | 4 ----
 drivers/gpu/drm/amd/powerplay/smu_v12_0.c  | 4 ----
 3 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index c032680c52b0..8415b383e7ae 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -2322,6 +2322,10 @@ int smu_read_sensor(struct smu_context *smu,
 		*(uint32_t *)data = smu->smu_power.power_gate.vcn_gated ? 0 : 1;
 		*size = 4;
 		break;
+	case AMDGPU_PP_SENSOR_MIN_FAN_RPM:
+		*(uint32_t *)data = 0;
+		*size = 4;
+		break;
 	default:
 		if (smu->ppt_funcs->read_sensor)
 			ret = smu->ppt_funcs->read_sensor(smu, sensor, data, size);
diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
index 1a17d853afbd..993976452467 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
@@ -1193,10 +1193,6 @@ int smu_v11_0_read_sensor(struct smu_context *smu,
 		ret = smu_v11_0_get_gfx_vdd(smu, (uint32_t *)data);
 		*size = 4;
 		break;
-	case AMDGPU_PP_SENSOR_MIN_FAN_RPM:
-		*(uint32_t *)data = 0;
-		*size = 4;
-		break;
 	default:
 		ret = -EOPNOTSUPP;
 		break;
diff --git a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
index ae1035575808..b03127273d56 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
@@ -221,10 +221,6 @@ int smu_v12_0_read_sensor(struct smu_context *smu,
 		ret = smu_get_current_clk_freq(smu, SMU_GFXCLK, (uint32_t *)data);
 		*size = 4;
 		break;
-	case AMDGPU_PP_SENSOR_MIN_FAN_RPM:
-		*(uint32_t *)data = 0;
-		*size = 4;
-		break;
 	default:
 		ret = -EOPNOTSUPP;
 		break;
-- 
2.27.0

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

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check
  2020-06-09 10:20 [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check Evan Quan
  2020-06-09 10:20 ` [PATCH 2/3] drm/amd/powerplay: revise the calling chain on sensor reading Evan Quan
  2020-06-09 10:20 ` [PATCH 3/3] drm/amd/powerplay: maximum code sharing " Evan Quan
@ 2020-06-09 19:51 ` Alex Deucher
  2 siblings, 0 replies; 6+ messages in thread
From: Alex Deucher @ 2020-06-09 19:51 UTC (permalink / raw)
  To: Evan Quan; +Cc: Deucher, Alexander, amd-gfx list

On Tue, Jun 9, 2020 at 6:20 AM Evan Quan <evan.quan@amd.com> wrote:
>
> Since SMU_MSG_GetDpmClockFreq is known to be supported for Vega20
> and before ASICs only. For those ASICs supporting swSMU, it is not
> supported.
>
> Change-Id: I8ee71664baa32e40df5bb793550785120f3770c6
> Signed-off-by: Evan Quan <evan.quan@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 17 +++--------------
>  1 file changed, 3 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> index 9e3fee9e4aca..d10d15fc7492 100644
> --- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> +++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> @@ -1089,24 +1089,13 @@ int smu_v11_0_get_current_clk_freq(struct smu_context *smu,
>  {
>         int ret = 0;
>         uint32_t freq = 0;
> -       int asic_clk_id;
>
>         if (clk_id >= SMU_CLK_COUNT || !value)
>                 return -EINVAL;
>
> -       asic_clk_id = smu_clk_get_index(smu, clk_id);
> -       if (asic_clk_id < 0)
> -               return -EINVAL;
> -
> -       /* if don't has GetDpmClockFreq Message, try get current clock by SmuMetrics_t */
> -       if (smu_msg_get_index(smu, SMU_MSG_GetDpmClockFreq) < 0)
> -               ret =  smu_get_current_clk_freq_by_table(smu, clk_id, &freq);
> -       else {
> -               ret = smu_send_smc_msg_with_param(smu, SMU_MSG_GetDpmClockFreq,
> -                                                 (asic_clk_id << 16), &freq);
> -               if (ret)
> -                       return ret;
> -       }
> +       ret =  smu_get_current_clk_freq_by_table(smu, clk_id, &freq);
> +       if (ret)
> +               return ret;
>
>         freq *= 100;
>         *value = freq;
> --
> 2.27.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/3] drm/amd/powerplay: maximum code sharing on sensor reading
  2020-06-09 10:20 ` [PATCH 3/3] drm/amd/powerplay: maximum code sharing " Evan Quan
@ 2020-06-09 19:53   ` Alex Deucher
  0 siblings, 0 replies; 6+ messages in thread
From: Alex Deucher @ 2020-06-09 19:53 UTC (permalink / raw)
  To: Evan Quan; +Cc: Deucher, Alexander, amd-gfx list

On Tue, Jun 9, 2020 at 6:21 AM Evan Quan <evan.quan@amd.com> wrote:
>
> Move the common code to amdgpu_smu.c instead of having one
> copy in both smu_v11_0.c and smu_v12_0.c.
>
> Change-Id: Idc59c6f686139d034348a613f1a7b9213198312d
> Signed-off-by: Evan Quan <evan.quan@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 4 ++++
>  drivers/gpu/drm/amd/powerplay/smu_v11_0.c  | 4 ----
>  drivers/gpu/drm/amd/powerplay/smu_v12_0.c  | 4 ----
>  3 files changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> index c032680c52b0..8415b383e7ae 100644
> --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> @@ -2322,6 +2322,10 @@ int smu_read_sensor(struct smu_context *smu,
>                 *(uint32_t *)data = smu->smu_power.power_gate.vcn_gated ? 0 : 1;
>                 *size = 4;
>                 break;
> +       case AMDGPU_PP_SENSOR_MIN_FAN_RPM:
> +               *(uint32_t *)data = 0;
> +               *size = 4;
> +               break;
>         default:
>                 if (smu->ppt_funcs->read_sensor)
>                         ret = smu->ppt_funcs->read_sensor(smu, sensor, data, size);
> diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> index 1a17d853afbd..993976452467 100644
> --- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> +++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> @@ -1193,10 +1193,6 @@ int smu_v11_0_read_sensor(struct smu_context *smu,
>                 ret = smu_v11_0_get_gfx_vdd(smu, (uint32_t *)data);
>                 *size = 4;
>                 break;
> -       case AMDGPU_PP_SENSOR_MIN_FAN_RPM:
> -               *(uint32_t *)data = 0;
> -               *size = 4;
> -               break;
>         default:
>                 ret = -EOPNOTSUPP;
>                 break;
> diff --git a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> index ae1035575808..b03127273d56 100644
> --- a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> +++ b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> @@ -221,10 +221,6 @@ int smu_v12_0_read_sensor(struct smu_context *smu,
>                 ret = smu_get_current_clk_freq(smu, SMU_GFXCLK, (uint32_t *)data);
>                 *size = 4;
>                 break;
> -       case AMDGPU_PP_SENSOR_MIN_FAN_RPM:
> -               *(uint32_t *)data = 0;
> -               *size = 4;
> -               break;
>         default:
>                 ret = -EOPNOTSUPP;
>                 break;
> --
> 2.27.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/3] drm/amd/powerplay: revise the calling chain on sensor reading
  2020-06-09 10:20 ` [PATCH 2/3] drm/amd/powerplay: revise the calling chain on sensor reading Evan Quan
@ 2020-06-09 19:54   ` Alex Deucher
  0 siblings, 0 replies; 6+ messages in thread
From: Alex Deucher @ 2020-06-09 19:54 UTC (permalink / raw)
  To: Evan Quan; +Cc: Deucher, Alexander, amd-gfx list

On Tue, Jun 9, 2020 at 6:21 AM Evan Quan <evan.quan@amd.com> wrote:
>
> Update the calling chain from "amdgpu_smu.c -> ${asic}_ppt.c ->
> smu_v11/12_0.c -> amdgpu_smu.c (smu_common_read_sensor())" to "
> "amdgpu_smu.c -> ${asic}_ppt.c -> smu_v11/12_0.c". This can help
> to maintain clear code layers. More similar changes will be coming.
>
> Change-Id: I95beba6c117b0cd3b0acea6158bf62240c6eac5a
> Signed-off-by: Evan Quan <evan.quan@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/powerplay/amdgpu_smu.c    | 81 ++++++++-----------
>  .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h    |  2 -
>  drivers/gpu/drm/amd/powerplay/smu_v11_0.c     |  2 +-
>  drivers/gpu/drm/amd/powerplay/smu_v12_0.c     |  2 +-
>  4 files changed, 35 insertions(+), 52 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> index 78263de02678..c032680c52b0 100644
> --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> @@ -506,52 +506,6 @@ int smu_get_power_num_states(struct smu_context *smu,
>         return 0;
>  }
>
> -int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor,
> -                          void *data, uint32_t *size)
> -{
> -       struct smu_power_context *smu_power = &smu->smu_power;
> -       struct smu_power_gate *power_gate = &smu_power->power_gate;
> -       int ret = 0;
> -
> -       if(!data || !size)
> -               return -EINVAL;
> -
> -       switch (sensor) {
> -       case AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK:
> -               *((uint32_t *)data) = smu->pstate_sclk;
> -               *size = 4;
> -               break;
> -       case AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK:
> -               *((uint32_t *)data) = smu->pstate_mclk;
> -               *size = 4;
> -               break;
> -       case AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK:
> -               ret = smu_feature_get_enabled_mask(smu, (uint32_t *)data, 2);
> -               *size = 8;
> -               break;
> -       case AMDGPU_PP_SENSOR_UVD_POWER:
> -               *(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_UVD_BIT) ? 1 : 0;
> -               *size = 4;
> -               break;
> -       case AMDGPU_PP_SENSOR_VCE_POWER:
> -               *(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_VCE_BIT) ? 1 : 0;
> -               *size = 4;
> -               break;
> -       case AMDGPU_PP_SENSOR_VCN_POWER_STATE:
> -               *(uint32_t *)data = power_gate->vcn_gated ? 0 : 1;
> -               *size = 4;
> -               break;
> -       default:
> -               ret = -EINVAL;
> -               break;
> -       }
> -
> -       if (ret)
> -               *size = 0;
> -
> -       return ret;
> -}
> -
>  int smu_update_table(struct smu_context *smu, enum smu_table_id table_index, int argument,
>                      void *table_data, bool drv2smu)
>  {
> @@ -2338,10 +2292,41 @@ int smu_read_sensor(struct smu_context *smu,
>         if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)
>                 return -EOPNOTSUPP;
>
> +       if (!data || !size)
> +               return -EINVAL;
> +
>         mutex_lock(&smu->mutex);
>
> -       if (smu->ppt_funcs->read_sensor)
> -               ret = smu->ppt_funcs->read_sensor(smu, sensor, data, size);
> +       switch (sensor) {
> +       case AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK:
> +               *((uint32_t *)data) = smu->pstate_sclk;
> +               *size = 4;
> +               break;
> +       case AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK:
> +               *((uint32_t *)data) = smu->pstate_mclk;
> +               *size = 4;
> +               break;
> +       case AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK:
> +               ret = smu_feature_get_enabled_mask(smu, (uint32_t *)data, 2);
> +               *size = 8;
> +               break;
> +       case AMDGPU_PP_SENSOR_UVD_POWER:
> +               *(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_UVD_BIT) ? 1 : 0;
> +               *size = 4;
> +               break;
> +       case AMDGPU_PP_SENSOR_VCE_POWER:
> +               *(uint32_t *)data = smu_feature_is_enabled(smu, SMU_FEATURE_DPM_VCE_BIT) ? 1 : 0;
> +               *size = 4;
> +               break;
> +       case AMDGPU_PP_SENSOR_VCN_POWER_STATE:
> +               *(uint32_t *)data = smu->smu_power.power_gate.vcn_gated ? 0 : 1;
> +               *size = 4;
> +               break;
> +       default:
> +               if (smu->ppt_funcs->read_sensor)
> +                       ret = smu->ppt_funcs->read_sensor(smu, sensor, data, size);
> +               break;
> +       }
>
>         mutex_unlock(&smu->mutex);
>
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> index 0d1429fc791b..41164a8fbe8a 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> @@ -695,8 +695,6 @@ int smu_update_table(struct smu_context *smu, enum smu_table_id table_index, int
>
>  bool is_support_sw_smu(struct amdgpu_device *adev);
>  int smu_reset(struct smu_context *smu);
> -int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor,
> -                          void *data, uint32_t *size);
>  int smu_sys_get_pp_table(struct smu_context *smu, void **table);
>  int smu_sys_set_pp_table(struct smu_context *smu,  void *buf, size_t size);
>  int smu_get_power_num_states(struct smu_context *smu, struct pp_states_info *state_info);
> diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> index d10d15fc7492..1a17d853afbd 100644
> --- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> +++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
> @@ -1198,7 +1198,7 @@ int smu_v11_0_read_sensor(struct smu_context *smu,
>                 *size = 4;
>                 break;
>         default:
> -               ret = smu_common_read_sensor(smu, sensor, data, size);
> +               ret = -EOPNOTSUPP;
>                 break;
>         }
>
> diff --git a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> index 5b56e7579ff4..ae1035575808 100644
> --- a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> +++ b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> @@ -226,7 +226,7 @@ int smu_v12_0_read_sensor(struct smu_context *smu,
>                 *size = 4;
>                 break;
>         default:
> -               ret = smu_common_read_sensor(smu, sensor, data, size);
> +               ret = -EOPNOTSUPP;
>                 break;
>         }
>
> --
> 2.27.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-06-09 19:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-09 10:20 [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check Evan Quan
2020-06-09 10:20 ` [PATCH 2/3] drm/amd/powerplay: revise the calling chain on sensor reading Evan Quan
2020-06-09 19:54   ` Alex Deucher
2020-06-09 10:20 ` [PATCH 3/3] drm/amd/powerplay: maximum code sharing " Evan Quan
2020-06-09 19:53   ` Alex Deucher
2020-06-09 19:51 ` [PATCH 1/3] drm/amd/powerplay: drop unnecessary SMU_MSG_GetDpmClockFreq check Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.