From 78b4ab269f5d733c8b540a6a75db1f390172cc29 Mon Sep 17 00:00:00 2001 From: Nitin Kumbhar Date: Thu, 16 Aug 2018 17:47:21 +0530 Subject: gpu: nvgpu: move pmgr debugfs to linux Move debugfs related part of pmgr to linux files. JIRA NVGPU-603 Change-Id: I478491e06e2e7cdbe3826166aafd8491d1e6c1e7 Signed-off-by: Nitin Kumbhar Reviewed-on: https://git-master.nvidia.com/r/1801086 GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/debug_pmgr.c | 104 ++++++++++++++++++++++++++++++++ drivers/gpu/nvgpu/os/linux/debug_pmgr.h | 28 +++++++++ drivers/gpu/nvgpu/os/linux/module.c | 7 +++ 3 files changed, 139 insertions(+) create mode 100644 drivers/gpu/nvgpu/os/linux/debug_pmgr.c create mode 100644 drivers/gpu/nvgpu/os/linux/debug_pmgr.h (limited to 'drivers/gpu/nvgpu/os/linux') diff --git a/drivers/gpu/nvgpu/os/linux/debug_pmgr.c b/drivers/gpu/nvgpu/os/linux/debug_pmgr.c new file mode 100644 index 00000000..c2649785 --- /dev/null +++ b/drivers/gpu/nvgpu/os/linux/debug_pmgr.c @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +#include "os_linux.h" + +#include "pmgr/pmgr.h" + +static int pmgr_pwr_devices_get_power_u64(void *data, u64 *p) +{ + struct gk20a *g = (struct gk20a *)data; + int err; + u32 val; + + err = pmgr_pwr_devices_get_power(g, &val); + *p = val; + + return err; +} + +static int pmgr_pwr_devices_get_current_u64(void *data, u64 *p) +{ + struct gk20a *g = (struct gk20a *)data; + int err; + u32 val; + + err = pmgr_pwr_devices_get_current(g, &val); + *p = val; + + return err; +} + +static int pmgr_pwr_devices_get_voltage_u64(void *data, u64 *p) +{ + struct gk20a *g = (struct gk20a *)data; + int err; + u32 val; + + err = pmgr_pwr_devices_get_voltage(g, &val); + *p = val; + + return err; +} + +DEFINE_SIMPLE_ATTRIBUTE( + pmgr_power_ctrl_fops, pmgr_pwr_devices_get_power_u64, NULL, "%llu\n"); + +DEFINE_SIMPLE_ATTRIBUTE( + pmgr_current_ctrl_fops, pmgr_pwr_devices_get_current_u64, NULL, "%llu\n"); + +DEFINE_SIMPLE_ATTRIBUTE( + pmgr_voltage_ctrl_fops, pmgr_pwr_devices_get_voltage_u64, NULL, "%llu\n"); + +static void pmgr_debugfs_init(struct gk20a *g) +{ + struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g); + struct dentry *dbgentry; + + dbgentry = debugfs_create_file( + "power", S_IRUGO, l->debugfs, g, &pmgr_power_ctrl_fops); + if (!dbgentry) + nvgpu_err(g, "debugfs entry create failed for power"); + + dbgentry = debugfs_create_file( + "current", S_IRUGO, l->debugfs, g, &pmgr_current_ctrl_fops); + if (!dbgentry) + nvgpu_err(g, "debugfs entry create failed for current"); + + dbgentry = debugfs_create_file( + "voltage", S_IRUGO, l->debugfs, g, &pmgr_voltage_ctrl_fops); + if (!dbgentry) + nvgpu_err(g, "debugfs entry create failed for voltage"); +} + +int nvgpu_pmgr_init_debugfs_linux(struct nvgpu_os_linux *l) +{ + struct gk20a *g = &l->g; + int ret = 0; + + if (!nvgpu_is_enabled(g, NVGPU_PMU_PSTATE)) + return ret; + + if (!g->ops.clk.support_pmgr_domain) + return ret; + + pmgr_debugfs_init(g); + + return ret; +} + diff --git a/drivers/gpu/nvgpu/os/linux/debug_pmgr.h b/drivers/gpu/nvgpu/os/linux/debug_pmgr.h new file mode 100644 index 00000000..bd6c5567 --- /dev/null +++ b/drivers/gpu/nvgpu/os/linux/debug_pmgr.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __LINUX_DEBUG_PMGR_H +#define __LINUX_DEBUG_PMGR_H + +#ifdef CONFIG_DEBUG_FS +int nvgpu_pmgr_init_debugfs_linux(struct nvgpu_os_linux *l); +#else +int nvgpu_pmgr_init_debugfs_linux(struct nvgpu_os_linux *l) +{ + return 0; +} +#endif +#endif diff --git a/drivers/gpu/nvgpu/os/linux/module.c b/drivers/gpu/nvgpu/os/linux/module.c index 169baaf4..55f55f00 100644 --- a/drivers/gpu/nvgpu/os/linux/module.c +++ b/drivers/gpu/nvgpu/os/linux/module.c @@ -60,6 +60,7 @@ #include "ctxsw_trace.h" #include "driver_common.h" #include "channel.h" +#include "debug_pmgr.h" #ifdef CONFIG_NVGPU_SUPPORT_CDE #include "cde.h" @@ -214,6 +215,12 @@ int nvgpu_finalize_poweron_linux(struct nvgpu_os_linux *l) } } + err = nvgpu_pmgr_init_debugfs_linux(l); + if (err) { + nvgpu_err(g, "failed to init linux pmgr debugfs"); + return err; + } + l->init_done = true; return 0; -- cgit v1.2.2