On Wed, Jul 3, 2019 at 11:02 PM Wang, Kevin(Yang) <kevin1.w...@amd.com> wrote: > > the hwmon interface need temperature sensor type support. > 1. SENSOR_HOTSPOT_TEMP > 2. SENSOR_EDGE_TEMP(SENSOR_GPU_TEMP) > 3. SENSOR_MEM_TEMP > > Change-Id: I3db762e4032072fae67c95b7ba6d62e20ae5bead > Signed-off-by: Kevin Wang <kevin1.w...@amd.com> > --- > drivers/gpu/drm/amd/powerplay/navi10_ppt.c | 42 ++++++++++++++++++++++ > 1 file changed, 42 insertions(+) > > diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c > b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c > index 7574a02350c6..d5876c2393e7 100644 > --- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c > +++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c > @@ -1255,6 +1255,42 @@ static int navi10_set_watermarks_table(struct > smu_context *smu, > return 0; > } > > +static int navi10_thermal_get_temperature(struct smu_context *smu, > + enum amd_pp_sensors sensor, > + uint32_t *value) > +{ > + SmuMetrics_t metrics; > + int ret = 0; > + > + if (!value) > + return -EINVAL; > + > + ret = smu_update_table(smu, SMU_TABLE_SMU_METRICS, (void *)&metrics, > false); > + if (ret) > + return ret; > + > + switch (sensor) { > + case AMDGPU_PP_SENSOR_HOTSPOT_TEMP: > + *value = metrics.TemperatureHotspot * > + SMU_TEMPERATURE_UNITS_PER_CENTIGRADES; > + break; > + case AMDGPU_PP_SENSOR_GPU_TEMP: > + case AMDGPU_PP_SENSOR_EDGE_TEMP: > + *value = metrics.TemperatureEdge * > + SMU_TEMPERATURE_UNITS_PER_CENTIGRADES; > + break; > + case AMDGPU_PP_SENSOR_MEM_TEMP: > + *value = metrics.TemperatureVrMem0 *
We should check with the SMU team. this might be the memory voltage regulator rather than the memory itself. Alex > + SMU_TEMPERATURE_UNITS_PER_CENTIGRADES; > + break; > + default: > + pr_err("Invalid sensor for retrieving temp\n"); > + return -EINVAL; > + } > + > + return 0; > +} > + > static int navi10_read_sensor(struct smu_context *smu, > enum amd_pp_sensors sensor, > void *data, uint32_t *size) > @@ -1276,6 +1312,12 @@ static int navi10_read_sensor(struct smu_context *smu, > ret = navi10_get_gpu_power(smu, (uint32_t *)data); > *size = 4; > break; > + case AMDGPU_PP_SENSOR_HOTSPOT_TEMP: > + case AMDGPU_PP_SENSOR_EDGE_TEMP: > + case AMDGPU_PP_SENSOR_MEM_TEMP: > + ret = navi10_thermal_get_temperature(smu, sensor, (uint32_t > *)data); > + *size = 4; > + break; > default: > return -EINVAL; > } > -- > 2.22.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