> -----Original Message----- > From: Anthoine Bourgeois [mailto:anthoine.bourgeois@xxxxxxxxx] > Sent: Tuesday, July 16, 2013 5:09 PM > To: Deucher, Alexander; Koenig, Christian; Jerome Glisse; Anthoine > Bourgeois > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > Subject: [PATCH] drm/radeon/dpm: add debugfs support for rs780 > > This allows you to look at the current DPM state via debugfs. > > Signed-off-by: Anthoine Bourgeois <anthoine.bourgeois@xxxxxxxxx> > --- > drivers/gpu/drm/radeon/radeon_asic.c | 1 + > drivers/gpu/drm/radeon/radeon_asic.h | 2 ++ > drivers/gpu/drm/radeon/rs780_dpm.c | 28 > ++++++++++++++++++++++++++++ > 3 files changed, 31 insertions(+) > > diff --git a/drivers/gpu/drm/radeon/radeon_asic.c > b/drivers/gpu/drm/radeon/radeon_asic.c > index fea997e..78bec1a 100644 > --- a/drivers/gpu/drm/radeon/radeon_asic.c > +++ b/drivers/gpu/drm/radeon/radeon_asic.c > @@ -1270,6 +1270,7 @@ static struct radeon_asic rs780_asic = { > .get_sclk = &rs780_dpm_get_sclk, > .get_mclk = &rs780_dpm_get_mclk, > .print_power_state = &rs780_dpm_print_power_state, > + .debugfs_print_current_performance_level = > &rs780_dpm_debugfs_print_current_performance_level, > }, > .pflip = { > .pre_page_flip = &rs600_pre_page_flip, > diff --git a/drivers/gpu/drm/radeon/radeon_asic.h > b/drivers/gpu/drm/radeon/radeon_asic.h > index b04b578..ca18957 100644 > --- a/drivers/gpu/drm/radeon/radeon_asic.h > +++ b/drivers/gpu/drm/radeon/radeon_asic.h > @@ -433,6 +433,8 @@ u32 rs780_dpm_get_sclk(struct radeon_device *rdev, > bool low); > u32 rs780_dpm_get_mclk(struct radeon_device *rdev, bool low); > void rs780_dpm_print_power_state(struct radeon_device *rdev, > struct radeon_ps *ps); > +void rs780_dpm_debugfs_print_current_performance_level(struct > radeon_device *rdev, > + struct seq_file *m); > > /* uvd */ > int r600_uvd_init(struct radeon_device *rdev); > diff --git a/drivers/gpu/drm/radeon/rs780_dpm.c > b/drivers/gpu/drm/radeon/rs780_dpm.c > index bef832a..ef5a28e 100644 > --- a/drivers/gpu/drm/radeon/rs780_dpm.c > +++ b/drivers/gpu/drm/radeon/rs780_dpm.c > @@ -961,3 +961,31 @@ u32 rs780_dpm_get_mclk(struct radeon_device > *rdev, bool low) > > return pi->bootup_uma_clk; > } > + > +void rs780_dpm_debugfs_print_current_performance_level(struct > radeon_device *rdev, > + struct seq_file *m) > +{ > + struct radeon_ps *rps = rdev->pm.dpm.current_ps; > + struct igp_ps *ps = rs780_get_ps(rps); > + u32 sclk; > + enum rs780_vddc_level vddc; > + u32 current_index = r600_power_level_get_current_index(rdev); > + Rs780 uses different dpm hardware compared to other r6xx asics, so r600_power_level_get_current_index() doesn't actually do anything on rs780. There's no convenient way to look this up on rs780. I attempted to add support for it: http://people.freedesktop.org/~agd5f/0001-drm-radeon-dpm-add-debugfs-support-for-RS780-RS880.patch but the registers don't seem read back reliably when dpm is enabled so the output is bogus. Alex > + if (current_index > 1) { > + seq_printf(m, "invalid dpm profile %d\n", current_index); > + } else { > + if (current_index == 0) { > + sclk = ps->sclk_low; > + vddc = rs780_get_voltage_for_vddc_level(rdev, > + ps- > >min_voltage); > + } else { /* current_index == 1 */ > + sclk = ps->sclk_high; > + vddc = rs780_get_voltage_for_vddc_level(rdev, > + ps- > >max_voltage); > + } > + seq_printf(m, "uvd vclk: %d dclk: %d\n", rps->vclk, rps- > >dclk); > + seq_printf(m, "power level %d sclk: %u mclk: %u vddc: > %u\n", > + current_index, sclk, > + rs780_dpm_get_mclk(rdev, false), vddc); > + } > +} > -- > 1.8.1.5 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel