1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) Rockchip Electronics Co., Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Author: 6*4882a593Smuzhiyun * Cerf Yu <cerf.yu@rock-chips.com> 7*4882a593Smuzhiyun * Huang Lee <Putin.li@rock-chips.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef _RGA_DEBUGGER_H_ 11*4882a593Smuzhiyun #define _RGA_DEBUGGER_H_ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include "rga_drv.h" 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_RGA_DEBUGGER 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun extern int RGA_DEBUG_REG; 18*4882a593Smuzhiyun extern int RGA_DEBUG_MSG; 19*4882a593Smuzhiyun extern int RGA_DEBUG_TIME; 20*4882a593Smuzhiyun extern int RGA_DEBUG_INT_FLAG; 21*4882a593Smuzhiyun extern int RGA_DEBUG_MM; 22*4882a593Smuzhiyun extern int RGA_DEBUG_CHECK_MODE; 23*4882a593Smuzhiyun extern int RGA_DEBUG_NONUSE; 24*4882a593Smuzhiyun extern int RGA_DEBUG_DUMP_IMAGE; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #define DEBUGGER_EN(name) (unlikely(RGA_DEBUG_##name ? true : false)) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* 29*4882a593Smuzhiyun * struct rga_debugger - RGA debugger information 30*4882a593Smuzhiyun * 31*4882a593Smuzhiyun * This structure represents a debugger to be created by the rga driver 32*4882a593Smuzhiyun * or core. 33*4882a593Smuzhiyun */ 34*4882a593Smuzhiyun struct rga_debugger { 35*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_RGA_DEBUG_FS 36*4882a593Smuzhiyun /* Directory of debugfs file */ 37*4882a593Smuzhiyun struct dentry *debugfs_dir; 38*4882a593Smuzhiyun struct list_head debugfs_entry_list; 39*4882a593Smuzhiyun struct mutex debugfs_lock; 40*4882a593Smuzhiyun #endif 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_RGA_PROC_FS 43*4882a593Smuzhiyun /* Directory of procfs file */ 44*4882a593Smuzhiyun struct proc_dir_entry *procfs_dir; 45*4882a593Smuzhiyun struct list_head procfs_entry_list; 46*4882a593Smuzhiyun struct mutex procfs_lock; 47*4882a593Smuzhiyun #endif 48*4882a593Smuzhiyun }; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun /* 51*4882a593Smuzhiyun * struct rga_debugger_list - debugfs/procfs info list entry 52*4882a593Smuzhiyun * 53*4882a593Smuzhiyun * This structure represents a debugfs/procfs file to be created by the rga 54*4882a593Smuzhiyun * driver or core. 55*4882a593Smuzhiyun */ 56*4882a593Smuzhiyun struct rga_debugger_list { 57*4882a593Smuzhiyun /* File name */ 58*4882a593Smuzhiyun const char *name; 59*4882a593Smuzhiyun /* 60*4882a593Smuzhiyun * Show callback. &seq_file->private will be set to the &struct 61*4882a593Smuzhiyun * rga_debugger_node corresponding to the instance of this info 62*4882a593Smuzhiyun * on a given &struct rga_debugger. 63*4882a593Smuzhiyun */ 64*4882a593Smuzhiyun int (*show)(struct seq_file *seq, void *data); 65*4882a593Smuzhiyun /* 66*4882a593Smuzhiyun * Write callback. &seq_file->private will be set to the &struct 67*4882a593Smuzhiyun * rga_debugger_node corresponding to the instance of this info 68*4882a593Smuzhiyun * on a given &struct rga_debugger. 69*4882a593Smuzhiyun */ 70*4882a593Smuzhiyun ssize_t (*write)(struct file *file, const char __user *ubuf, 71*4882a593Smuzhiyun size_t len, loff_t *offp); 72*4882a593Smuzhiyun /* Procfs/Debugfs private data. */ 73*4882a593Smuzhiyun void *data; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun /* 77*4882a593Smuzhiyun * struct rga_debugger_node - Nodes for debugfs/procfs 78*4882a593Smuzhiyun * 79*4882a593Smuzhiyun * This structure represents each instance of procfs/debugfs created from the 80*4882a593Smuzhiyun * template. 81*4882a593Smuzhiyun */ 82*4882a593Smuzhiyun struct rga_debugger_node { 83*4882a593Smuzhiyun struct rga_debugger *debugger; 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /* template for this node. */ 86*4882a593Smuzhiyun const struct rga_debugger_list *info_ent; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun /* Each Procfs/Debugfs file. */ 89*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_RGA_DEBUG_FS 90*4882a593Smuzhiyun struct dentry *dent; 91*4882a593Smuzhiyun #endif 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_RGA_PROC_FS 94*4882a593Smuzhiyun struct proc_dir_entry *pent; 95*4882a593Smuzhiyun #endif 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun struct list_head list; 98*4882a593Smuzhiyun }; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_RGA_DEBUG_FS 101*4882a593Smuzhiyun int rga_debugfs_init(void); 102*4882a593Smuzhiyun int rga_debugfs_remove(void); 103*4882a593Smuzhiyun #else rga_debugfs_remove(void)104*4882a593Smuzhiyunstatic inline int rga_debugfs_remove(void) 105*4882a593Smuzhiyun { 106*4882a593Smuzhiyun return 0; 107*4882a593Smuzhiyun } rga_debugfs_init(void)108*4882a593Smuzhiyunstatic inline int rga_debugfs_init(void) 109*4882a593Smuzhiyun { 110*4882a593Smuzhiyun return 0; 111*4882a593Smuzhiyun } 112*4882a593Smuzhiyun #endif /* #ifdef CONFIG_ROCKCHIP_RGA_DEBUG_FS */ 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_RGA_PROC_FS 115*4882a593Smuzhiyun int rga_procfs_remove(void); 116*4882a593Smuzhiyun int rga_procfs_init(void); 117*4882a593Smuzhiyun #else rga_procfs_remove(void)118*4882a593Smuzhiyunstatic inline int rga_procfs_remove(void) 119*4882a593Smuzhiyun { 120*4882a593Smuzhiyun return 0; 121*4882a593Smuzhiyun } rga_procfs_init(void)122*4882a593Smuzhiyunstatic inline int rga_procfs_init(void) 123*4882a593Smuzhiyun { 124*4882a593Smuzhiyun return 0; 125*4882a593Smuzhiyun } 126*4882a593Smuzhiyun #endif /* #ifdef CONFIG_ROCKCHIP_RGA_PROC_FS */ 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #else 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun #define DEBUGGER_EN(name) (unlikely(false)) 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun #endif /* #ifdef CONFIG_ROCKCHIP_RGA_DEBUGGER */ 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun void rga_cmd_print_debug_info(struct rga_req *req); 135*4882a593Smuzhiyun void rga_request_task_debug_info(struct seq_file *m, struct rga_req *req); 136*4882a593Smuzhiyun #ifdef CONFIG_NO_GKI 137*4882a593Smuzhiyun void rga_dump_job_image(struct rga_job *dump_job); 138*4882a593Smuzhiyun #else rga_dump_job_image(struct rga_job * dump_job)139*4882a593Smuzhiyunstatic inline void rga_dump_job_image(struct rga_job *dump_job) 140*4882a593Smuzhiyun { 141*4882a593Smuzhiyun } 142*4882a593Smuzhiyun #endif /* #ifdef CONFIG_NO_GKI */ 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun #endif /* #ifndef _RGA_DEBUGGER_H_ */ 145*4882a593Smuzhiyun 146