Files
linux-hwpm/tegra-soc-hwpm-log.c
Adeel Raza 70941decf9 tegra: hwpm: add SOC HWPM driver
Add a driver for programming the Tegra SOC HWPM path. SOC HWPM allows
performance monitoring of various Tegra IPs.

The profiling tests cases are configured through IOCTLs sent by a
userspace profiling app. The IOCTLs provide the following features:
  - IP discovery and reservation
  - Buffer management
  - Whitelist query
  - Register read/write ops

Bug 200702306
Bug 3305495

Change-Id: I65003b126e01bd03d856767c55aa2424bcfd11fb
Signed-off-by: Adeel Raza <araza@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-t23x/+/2515148
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-05-19 00:33:31 -07:00

54 lines
1.4 KiB
C

/*
* tegra-soc-hwpm-log.c:
* This file adds logging APIs for the Tegra SOC HWPM driver.
*
* Copyright (c) 2021, 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 <http://www.gnu.org/licenses/>.
*/
#include <linux/kernel.h>
#include "tegra-soc-hwpm.h"
#define LOG_BUF_SIZE 160
static void tegra_soc_hwpm_print(const char *func,
int line,
int type,
const char *log)
{
switch (type) {
case tegra_soc_hwpm_log_err:
pr_err(TEGRA_SOC_HWPM_MODULE_NAME ": %s: %d: ERROR: %s\n",
func, line, log);
break;
case tegra_soc_hwpm_log_dbg:
pr_info(TEGRA_SOC_HWPM_MODULE_NAME ": %s: %d: DEBUG: %s\n",
func, line, log);
break;
}
}
void tegra_soc_hwpm_log(const char *func, int line, int type, const char *fmt, ...)
{
char log[LOG_BUF_SIZE];
va_list args;
va_start(args, fmt);
(void) vsnprintf(log, LOG_BUF_SIZE, fmt, args);
va_end(args);
tegra_soc_hwpm_print(func, line, type, log);
}