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