17433874eSRafał Miłecki /* 27433874eSRafał Miłecki * Permission is hereby granted, free of charge, to any person obtaining a 37433874eSRafał Miłecki * copy of this software and associated documentation files (the "Software"), 47433874eSRafał Miłecki * to deal in the Software without restriction, including without limitation 57433874eSRafał Miłecki * the rights to use, copy, modify, merge, publish, distribute, sublicense, 67433874eSRafał Miłecki * and/or sell copies of the Software, and to permit persons to whom the 77433874eSRafał Miłecki * Software is furnished to do so, subject to the following conditions: 87433874eSRafał Miłecki * 97433874eSRafał Miłecki * The above copyright notice and this permission notice shall be included in 107433874eSRafał Miłecki * all copies or substantial portions of the Software. 117433874eSRafał Miłecki * 127433874eSRafał Miłecki * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 137433874eSRafał Miłecki * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 147433874eSRafał Miłecki * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 157433874eSRafał Miłecki * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 167433874eSRafał Miłecki * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 177433874eSRafał Miłecki * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 187433874eSRafał Miłecki * OTHER DEALINGS IN THE SOFTWARE. 197433874eSRafał Miłecki * 207433874eSRafał Miłecki * Authors: Rafał Miłecki <zajec5@gmail.com> 217433874eSRafał Miłecki */ 227433874eSRafał Miłecki #include "drmP.h" 237433874eSRafał Miłecki #include "radeon.h" 247433874eSRafał Miłecki 257433874eSRafał Miłecki int radeon_debugfs_pm_init(struct radeon_device *rdev); 267433874eSRafał Miłecki 277433874eSRafał Miłecki int radeon_pm_init(struct radeon_device *rdev) 287433874eSRafał Miłecki { 297433874eSRafał Miłecki if (radeon_debugfs_pm_init(rdev)) { 30c142c3e5SRafał Miłecki DRM_ERROR("Failed to register debugfs file for PM!\n"); 317433874eSRafał Miłecki } 327433874eSRafał Miłecki 337433874eSRafał Miłecki return 0; 347433874eSRafał Miłecki } 357433874eSRafał Miłecki 367433874eSRafał Miłecki /* 377433874eSRafał Miłecki * Debugfs info 387433874eSRafał Miłecki */ 397433874eSRafał Miłecki #if defined(CONFIG_DEBUG_FS) 407433874eSRafał Miłecki 417433874eSRafał Miłecki static int radeon_debugfs_pm_info(struct seq_file *m, void *data) 427433874eSRafał Miłecki { 437433874eSRafał Miłecki struct drm_info_node *node = (struct drm_info_node *) m->private; 447433874eSRafał Miłecki struct drm_device *dev = node->minor->dev; 457433874eSRafał Miłecki struct radeon_device *rdev = dev->dev_private; 467433874eSRafał Miłecki 47*6234077dSRafał Miłecki seq_printf(m, "default engine clock: %u0 kHz\n", rdev->clock.default_sclk); 48*6234077dSRafał Miłecki seq_printf(m, "current engine clock: %u0 kHz\n", radeon_get_engine_clock(rdev)); 49*6234077dSRafał Miłecki seq_printf(m, "default memory clock: %u0 kHz\n", rdev->clock.default_mclk); 50*6234077dSRafał Miłecki if (rdev->asic->get_memory_clock) 51*6234077dSRafał Miłecki seq_printf(m, "current memory clock: %u0 kHz\n", radeon_get_memory_clock(rdev)); 527433874eSRafał Miłecki 537433874eSRafał Miłecki return 0; 547433874eSRafał Miłecki } 557433874eSRafał Miłecki 567433874eSRafał Miłecki static struct drm_info_list radeon_pm_info_list[] = { 577433874eSRafał Miłecki {"radeon_pm_info", radeon_debugfs_pm_info, 0, NULL}, 587433874eSRafał Miłecki }; 597433874eSRafał Miłecki #endif 607433874eSRafał Miłecki 617433874eSRafał Miłecki int radeon_debugfs_pm_init(struct radeon_device *rdev) 627433874eSRafał Miłecki { 637433874eSRafał Miłecki #if defined(CONFIG_DEBUG_FS) 647433874eSRafał Miłecki return radeon_debugfs_add_files(rdev, radeon_pm_info_list, ARRAY_SIZE(radeon_pm_info_list)); 657433874eSRafał Miłecki #else 667433874eSRafał Miłecki return 0; 677433874eSRafał Miłecki #endif 687433874eSRafał Miłecki } 69