xref: /OK3568_Linux_fs/kernel/drivers/video/rockchip/mpp/mpp_debug.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * author:
6*4882a593Smuzhiyun  *	Alpha Lin, alpha.lin@rock-chips.com
7*4882a593Smuzhiyun  *	Randy Li, randy.li@rock-chips.com
8*4882a593Smuzhiyun  *	Ding Wei, leo.ding@rock-chips.com
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun #ifndef __ROCKCHIP_MPP_DEBUG_H__
12*4882a593Smuzhiyun #define __ROCKCHIP_MPP_DEBUG_H__
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #include <linux/types.h>
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /*
17*4882a593Smuzhiyun  * debug flag usage:
18*4882a593Smuzhiyun  * +------+-------------------+
19*4882a593Smuzhiyun  * | 8bit |      24bit        |
20*4882a593Smuzhiyun  * +------+-------------------+
21*4882a593Smuzhiyun  *  0~23 bit is for different information type
22*4882a593Smuzhiyun  * 24~31 bit is for information print format
23*4882a593Smuzhiyun  */
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define DEBUG_POWER				0x00000001
26*4882a593Smuzhiyun #define DEBUG_CLOCK				0x00000002
27*4882a593Smuzhiyun #define DEBUG_IRQ_STATUS			0x00000004
28*4882a593Smuzhiyun #define DEBUG_IOMMU				0x00000008
29*4882a593Smuzhiyun #define DEBUG_IOCTL				0x00000010
30*4882a593Smuzhiyun #define DEBUG_FUNCTION				0x00000020
31*4882a593Smuzhiyun #define DEBUG_REGISTER				0x00000040
32*4882a593Smuzhiyun #define DEBUG_EXTRA_INFO			0x00000080
33*4882a593Smuzhiyun #define DEBUG_TIMING				0x00000100
34*4882a593Smuzhiyun #define DEBUG_TASK_INFO				0x00000200
35*4882a593Smuzhiyun #define DEBUG_DUMP_ERR_REG			0x00000400
36*4882a593Smuzhiyun #define DEBUG_LINK_TABLE			0x00000800
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #define DEBUG_SET_REG				0x00001000
39*4882a593Smuzhiyun #define DEBUG_GET_REG				0x00002000
40*4882a593Smuzhiyun #define DEBUG_PPS_FILL				0x00004000
41*4882a593Smuzhiyun #define DEBUG_IRQ_CHECK				0x00008000
42*4882a593Smuzhiyun #define DEBUG_CACHE_32B				0x00010000
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define DEBUG_RESET				0x00020000
45*4882a593Smuzhiyun #define DEBUG_SET_REG_L2			0x00040000
46*4882a593Smuzhiyun #define DEBUG_GET_REG_L2			0x00080000
47*4882a593Smuzhiyun #define DEBUG_GET_PERF_VAL			0x00100000
48*4882a593Smuzhiyun #define DEBUG_SRAM_INFO				0x00200000
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #define DEBUG_SESSION				0x00400000
51*4882a593Smuzhiyun #define DEBUG_DEVICE				0x00800000
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define DEBUG_CCU				0x01000000
54*4882a593Smuzhiyun #define DEBUG_CORE				0x02000000
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #define PRINT_FUNCTION				0x80000000
57*4882a593Smuzhiyun #define PRINT_LINE				0x40000000
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /* reuse old debug bit flag */
60*4882a593Smuzhiyun #define DEBUG_PART_TIMING			0x00000080
61*4882a593Smuzhiyun #define DEBUG_SLICE				0x00000002
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun extern unsigned int mpp_dev_debug;
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #define mpp_debug_unlikely(type)				\
66*4882a593Smuzhiyun 		(unlikely(mpp_dev_debug & (type)))
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun #define mpp_debug_func(type, fmt, args...)			\
69*4882a593Smuzhiyun 	do {							\
70*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & (type))) {		\
71*4882a593Smuzhiyun 			pr_info("%s:%d: " fmt,			\
72*4882a593Smuzhiyun 				 __func__, __LINE__, ##args);	\
73*4882a593Smuzhiyun 		}						\
74*4882a593Smuzhiyun 	} while (0)
75*4882a593Smuzhiyun #define mpp_debug(type, fmt, args...)				\
76*4882a593Smuzhiyun 	do {							\
77*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & (type))) {		\
78*4882a593Smuzhiyun 			pr_info(fmt, ##args);			\
79*4882a593Smuzhiyun 		}						\
80*4882a593Smuzhiyun 	} while (0)
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #define mpp_debug_enter()					\
83*4882a593Smuzhiyun 	do {							\
84*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & DEBUG_FUNCTION)) {	\
85*4882a593Smuzhiyun 			pr_info("%s:%d: enter\n",		\
86*4882a593Smuzhiyun 				 __func__, __LINE__);		\
87*4882a593Smuzhiyun 		}						\
88*4882a593Smuzhiyun 	} while (0)
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #define mpp_debug_leave()					\
91*4882a593Smuzhiyun 	do {							\
92*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & DEBUG_FUNCTION)) {	\
93*4882a593Smuzhiyun 			pr_info("%s:%d: leave\n",		\
94*4882a593Smuzhiyun 				 __func__, __LINE__);		\
95*4882a593Smuzhiyun 		}						\
96*4882a593Smuzhiyun 	} while (0)
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define mpp_err(fmt, args...)					\
99*4882a593Smuzhiyun 		pr_err("%s:%d: " fmt, __func__, __LINE__, ##args)
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define mpp_dbg_link(fmt, args...)				\
102*4882a593Smuzhiyun 	do {							\
103*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & DEBUG_LINK_TABLE)) {		\
104*4882a593Smuzhiyun 			pr_info("%s:%d: " fmt,			\
105*4882a593Smuzhiyun 				 __func__, __LINE__, ##args);	\
106*4882a593Smuzhiyun 		}						\
107*4882a593Smuzhiyun 	} while (0)
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #define mpp_dbg_session(fmt, args...)				\
110*4882a593Smuzhiyun 	do {							\
111*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & DEBUG_SESSION)) {	\
112*4882a593Smuzhiyun 			pr_info(fmt, ##args);			\
113*4882a593Smuzhiyun 		}						\
114*4882a593Smuzhiyun 	} while (0)
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun #define mpp_dbg_ccu(fmt, args...)				\
117*4882a593Smuzhiyun 	do {							\
118*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & DEBUG_CCU)) {	\
119*4882a593Smuzhiyun 			pr_info("%s:%d: " fmt,			\
120*4882a593Smuzhiyun 				 __func__, __LINE__, ##args);	\
121*4882a593Smuzhiyun 		}						\
122*4882a593Smuzhiyun 	} while (0)
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun #define mpp_dbg_core(fmt, args...)				\
125*4882a593Smuzhiyun 	do {							\
126*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & DEBUG_CORE)) {	\
127*4882a593Smuzhiyun 			pr_info(fmt, ##args);			\
128*4882a593Smuzhiyun 		}						\
129*4882a593Smuzhiyun 	} while (0)
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun #define mpp_dbg_slice(fmt, args...)				\
132*4882a593Smuzhiyun 	do {							\
133*4882a593Smuzhiyun 		if (unlikely(mpp_dev_debug & DEBUG_SLICE)) {	\
134*4882a593Smuzhiyun 			pr_info(fmt, ##args);			\
135*4882a593Smuzhiyun 		}						\
136*4882a593Smuzhiyun 	} while (0)
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun #endif
139