Files
android_kernel_samsung_sm86…/qcom/opensource/synx-kernel/msm/synx/synx_debugfs.h
David Wronek 51ff30338b Add 'qcom/opensource/synx-kernel/' from commit '2657c18a7869feec83f4383bf72623b8d6a2ef18'
git-subtree-dir: qcom/opensource/synx-kernel
git-subtree-mainline: fe7b3b613f
git-subtree-split: 2657c18a78
Change-Id:
repo: https://git.codelinaro.org/clo/la/platform/vendor/opensource/synx-kernel
tag: LA.VENDOR.14.3.0.r1-17300-lanai.QSSI15.0
2024-10-06 16:45:32 +02:00

145 lines
4.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef __SYNX_DEBUGFS_H__
#define __SYNX_DEBUGFS_H__
#include <linux/debugfs.h>
#include <linux/delay.h>
#include "synx_private.h"
//#define ENABLE_DEBUGFS
#define STATE_NAME_SPACE (4)
enum synx_debug_level {
SYNX_ERR = 0x0001,
SYNX_WARN = 0x0002,
SYNX_INFO = 0x0004,
SYNX_DBG = 0x0008,
SYNX_VERB = 0x0010,
SYNX_IPCL = 0x0020,
SYNX_GSM = 0x0040,
SYNX_MEM = 0x0080,
SYNX_ALL = SYNX_ERR | SYNX_WARN | SYNX_INFO |
SYNX_DBG | SYNX_IPCL | SYNX_GSM | SYNX_MEM,
};
enum synx_columns_level {
NAME_COLUMN = 0x00000001,
ID_COLUMN = 0x00000002,
BOUND_COLUMN = 0x00000004,
STATUS_COLUMN = 0x00000008,
FENCE_COLUMN = 0x00000010,
COREDATA_COLUMN = 0x00000020,
GLOBAL_IDX_COLUMN = 0x00000040,
REL_CNT_COLUMN = 0x00000080,
MAP_CNT_COLUMN = 0x00000100,
REF_CNT_COLUMN = 0x00000200,
NUM_CHILD_COLUMN = 0x00000400,
SUBSCRIBERS_COLUMN = 0x00000800,
WAITERS_COLUMN = 0x00001000,
PARENTS_COLUMN = 0x00002000,
CLIENT_ID_COLUMN = 0x00004000,
LOCAL_HASHTABLE = 0x00010000,
GLOBAL_HASHTABLE = 0x00020000,
CLIENT_HASHTABLE = 0x00040000,
GLOBAL_SHARED_MEM = 0x00080000,
DMA_FENCE_MAP = 0x00100000,
CSL_FENCE_MAP = 0x00200000,
ERROR_CODES = 0x00008000,
};
#ifndef SYNX_DBG_LABEL
#define SYNX_DBG_LABEL "synx"
#endif
#define SYNX_DBG_TAG SYNX_DBG_LABEL ": %4s: "
extern int synx_debug;
extern u32 lower_handle_id, upper_handle_id;
extern long synx_columns;
static inline char *synx_debug_str(int level)
{
switch (level) {
case SYNX_ERR:
return "err";
case SYNX_WARN:
return "warn";
case SYNX_INFO:
return "info";
case SYNX_DBG:
return "dbg";
case SYNX_VERB:
return "verb";
case SYNX_IPCL:
return "ipcl";
case SYNX_GSM:
return "gmem";
case SYNX_MEM:
return "mem";
default:
return "???";
}
}
#define dprintk(__level, __fmt, arg...) \
do { \
if (synx_debug & __level) { \
pr_info(SYNX_DBG_TAG "%s: %d: " __fmt, \
synx_debug_str(__level), __func__, \
__LINE__, ## arg); \
} \
} while (0)
#define SYNX_CONSOLE_LOG(__cur, __end, \
__fmt_string, arg...) \
do { \
if ((__end - __cur) * (sizeof(char *)) \
- strlen(__fmt_string) <= STATE_NAME_SPACE) \
dprintk(SYNX_DBG, __fmt_string, ## arg); \
else \
__cur += scnprintf(__cur, __end - __cur, \
__fmt_string, ## arg); \
} while (0)
#define SYNX_READ_CHAR(__buf, __num, \
__base, __pos) \
do { \
if (__buf[__pos] >= '0' && \
__buf[__pos] <= '9') \
__num = __num * __base + \
(__buf[__pos] - '0'); \
else if (__buf[__pos] >= 'a' && \
__buf[__pos] <= 'f') \
__num = __num * __base + \
(__buf[__pos] - 'a' + 10); \
else if (__buf[__pos] >= 'A' && \
__buf[__pos] <= 'F') \
__num = __num * __base + \
(__buf[__pos] - 'A' + 10); \
else \
invalid_val = true; \
} while (0)
/**
* synx_init_debugfs_dir - Initializes debugfs
*
* @param dev : Pointer to synx device structure
*/
struct dentry *synx_init_debugfs_dir(struct synx_device *dev);
/**
* synx_remove_debugfs_dir - Removes debugfs
*
* @param dev : Pointer to synx device structure
*/
void synx_remove_debugfs_dir(struct synx_device *dev);
#endif /* __SYNX_DEBUGFS_H__ */