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