On Wed, Feb 22, 2017 at 11:22:35AM -0500, Alex Deucher wrote: > This enables the LEDs that light up based on DPM states > on some Fiji boards. > > bug: > https://bugs.freedesktop.org/show_bug.cgi?id=97590 > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com> Reviewed-by: Huang Rui <ray.huang at amd.com> > --- > drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h | 1 + > drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c | 34 +++++++++++++++++++++++++ > 2 files changed, 35 insertions(+) > > diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h b/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h > index fbc504c..62f36ba 100644 > --- a/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h > +++ b/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h > @@ -377,6 +377,7 @@ typedef uint16_t PPSMC_Result; > #define PPSMC_MSG_DisableAvfs ((uint16_t) 0x26B) > > #define PPSMC_MSG_PerformBtc ((uint16_t) 0x26C) > +#define PPSMC_MSG_LedConfig ((uint16_t) 0x274) > #define PPSMC_MSG_VftTableIsValid ((uint16_t) 0x275) > #define PPSMC_MSG_UseNewGPIOScheme ((uint16_t) 0x277) > #define PPSMC_MSG_GetEnabledPsm ((uint16_t) 0x400) > diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c > index 0f7a77b..1a9ab43 100644 > --- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c > +++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c > @@ -1721,6 +1721,35 @@ static int fiji_init_arb_table_index(struct pp_smumgr *smumgr) > smu_data->smu7_data.arb_table_start, tmp, SMC_RAM_END); > } > > +static int fiji_setup_dpm_led_config(struct pp_hwmgr *hwmgr) > +{ > + pp_atomctrl_voltage_table param_led_dpm; > + int result = 0; > + u32 mask = 0; > + > + result = atomctrl_get_voltage_table_v3(hwmgr, > + VOLTAGE_TYPE_LEDDPM, VOLTAGE_OBJ_GPIO_LUT, > + ¶m_led_dpm); > + if (result == 0) { > + int i, j; > + u32 tmp = param_led_dpm.mask_low; > + > + for (i = 0, j = 0; i < 32; i++) { > + if (tmp & 1) { > + mask |= (i << (8 * j)); > + if (++j >= 3) > + break; > + } > + tmp >>= 1; > + } > + } > + if (mask) > + smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, > + PPSMC_MSG_LedConfig, > + mask); > + return 0; > +} > + > /** > * Initializes the SMC table and uploads it > * > @@ -1934,6 +1963,11 @@ int fiji_init_smc_table(struct pp_hwmgr *hwmgr) > result = fiji_populate_pm_fuses(hwmgr); > PP_ASSERT_WITH_CODE(0 == result, > "Failed to populate PM fuses to SMC memory!", return result); > + > + result = fiji_setup_dpm_led_config(hwmgr); > + PP_ASSERT_WITH_CODE(0 == result, > + "Failed to setup dpm led config", return result); > + > return 0; > } > > -- > 2.5.5 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx