• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * include/linux/amlogic/media/utils/amlog.h
3  *
4  * Copyright (C) 2017 Amlogic, Inc. All rights reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14  * more details.
15  *
16  */
17 
18 #ifndef __AMLOG_H
19 #define __AMLOG_H
20 
21 #include <linux/module.h>
22 #include <linux/moduleparam.h>
23 #include <linux/kernel.h>
24 
25 #ifdef AMLOG
26 
27 #define AMLOG_DEFAULT_LEVEL 0
28 #define AMLOG_DEFAULT_MASK 0xffffffffUL
29 #define AMLOG_DEFAULT_LEVEL_DESC "log_level."
30 #define AMLOG_DEFAULT_MASK_DESC "log_mask."
31 
32 #define MODULE_AMLOG(def_level, def_mask, desc_level, desc_mask) \
33 u32 LOG_LEVEL_VAR = def_level; \
34 module_param(LOG_LEVEL_VAR, uint, 0664); \
35 MODULE_PARM_DESC(LOG_LEVEL_VAR, desc_level); \
36 u32 LOG_MASK_VAR = def_mask; \
37 module_param(LOG_MASK_VAR, uint, 0664); \
38 MODULE_PARM_DESC(LOG_MASK_VAR, desc_mask)
39 
40 #ifndef LOG_LEVEL_VAR
41 #error LOG_LEVEL_VAR undefined.
42 #endif
43 
44 #ifndef LOG_MASK_VAR
45 #error LOG_MASK_VAR undefined.
46 #endif
47 
48 extern u32 LOG_LEVEL_VAR, LOG_MASK_VAR;
49 
50 #define amlog(x...) printk(x)
51 
52 #define amlog_level(level, x...) \
53 	do { \
54 		if (level >= LOG_LEVEL_VAR) \
55 			printk(x); \
56 	} while (0)
57 
58 #define amlog_mask(mask, x...) \
59 	do { \
60 		if (mask & LOG_MASK_VAR) \
61 			printk(x); \
62 	} while (0)
63 
64 #define amlog_mask_level(mask, level, x...) \
65 	do { \
66 		if ((level >= LOG_LEVEL_VAR) && (mask & LOG_MASK_VAR)) \
67 			printk(x); \
68 	} while (0)
69 
70 #define amlog_if(cond, x...) do {if (cond) printk(x); } while {0}
71 
72 #define amlog_level_if(cond, level, x...) \
73 	do { \
74 		if ((cond) && (level >= LOG_LEVEL_VAR)) \
75 			printk(x); \
76 	} while (0)
77 
78 #define amlog_mask_if(cond, mask, x...) \
79 	do { \
80 		if ((cond) && (mask & LOG_MASK_VAR)) \
81 			printk(x); \
82 	} while (0)
83 
84 #define amlog_mask_levelif(cond, mask, level, x...) \
85 	do { \
86 		if ((cond) && (level >= LOG_LEVEL_VAR) &&\
87 					(mask & LOG_MASK_VAR)) \
88 			printk(x...); \
89 	} while (0)
90 
91 #else
92 #define MODULE_AMLOG(def_level, def_mask, desc_level, desc_mask)
93 #define amlog(x...)
94 #define amlog_level(level, x...)
95 #define amlog_mask(mask, x...)
96 #define amlog_mask_level(mask, level, x...)
97 #define amlog_if(cond, x...)
98 #define amlog_level_if(cond, level, x...)
99 #define amlog_mask_if(cond, mask, x...)
100 #define amlog_mask_level_if(cond, mask, level, x...)
101 #endif
102 
103 #endif /* __AMLOG_H */
104