blob: 40dbe00891c6181fb53a891ab6cb9be945d1c7df [file] [log] [blame]
Junzhe Zou26abf772017-07-05 10:36:43 -07001/* Copyright (c) 2017, The Linux Foundation. All rights reserved.
Junzhe Zou263a87d2017-06-08 16:06:25 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#ifndef _CAM_DEBUG_UTIL_H_
14#define _CAM_DEBUG_UTIL_H_
15
Jigarkumar Zalacbb5a382017-07-17 19:06:42 -070016#define CAM_CDM (1 << 0)
17#define CAM_CORE (1 << 1)
18#define CAM_CPAS (1 << 2)
19#define CAM_ISP (1 << 3)
20#define CAM_CRM (1 << 4)
21#define CAM_SENSOR (1 << 5)
22#define CAM_SMMU (1 << 6)
23#define CAM_SYNC (1 << 7)
24#define CAM_ICP (1 << 8)
25#define CAM_JPEG (1 << 9)
26#define CAM_FD (1 << 10)
27#define CAM_LRME (1 << 11)
28#define CAM_FLASH (1 << 12)
29#define CAM_ACTUATOR (1 << 13)
30#define CAM_CCI (1 << 14)
31#define CAM_CSIPHY (1 << 15)
32#define CAM_EEPROM (1 << 16)
Pavan Kumar Chilamkurthieb8833c2017-07-15 19:44:13 -070033#define CAM_UTIL (1 << 17)
Lakshmi Narayana Kalavalaadc6ce32017-07-17 17:19:11 -070034#define CAM_HFI (1 << 18)
35#define CAM_CTXT (1 << 19)
Vivek Veenam281516b2017-08-17 17:39:04 +053036#define CAM_OIS (1 << 20)
Junzhe Zou263a87d2017-06-08 16:06:25 -070037
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070038#define STR_BUFFER_MAX_LENGTH 1024
Junzhe Zou263a87d2017-06-08 16:06:25 -070039
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070040enum cam_debug_level {
41 CAM_LEVEL_INFO,
42 CAM_LEVEL_WARN,
43 CAM_LEVEL_ERR,
44 CAM_LEVEL_DBG,
45};
Junzhe Zou263a87d2017-06-08 16:06:25 -070046
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070047/*
48 * cam_debug_log()
49 *
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070050 * @brief : Get the Module name from module ID and print
51 * respective debug logs
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070052 *
53 * @module_id : Respective Module ID which is calling this function
54 * @dbg_level : Debug level from cam_module_debug_level enum entries
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070055 * @func : Function which is calling to print logs
56 * @line : Line number associated with the function which is calling
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070057 * to print log
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070058 * @fmt : Formatted string which needs to be print in the log
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070059 *
60 */
61void cam_debug_log(unsigned int module_id, enum cam_debug_level dbg_level,
62 const char *func, const int line, const char *fmt, ...);
Junzhe Zou263a87d2017-06-08 16:06:25 -070063
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070064/*
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070065 * cam_get_module_name()
66 *
67 * @brief : Get the module name from module ID
68 *
69 * @module_id : Module ID which is using this function
70 */
71const char *cam_get_module_name(unsigned int module_id);
72
73/*
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070074 * CAM_ERR
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070075 * @brief : This Macro will print error logs
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070076 *
77 * @__module : Respective module id which is been calling this Macro
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070078 * @fmt : Formatted string which needs to be print in log
79 * @args : Arguments which needs to be print in log
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070080 */
81#define CAM_ERR(__module, fmt, args...) \
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070082 cam_debug_log(__module, CAM_LEVEL_ERR, __func__, __LINE__, fmt, ##args)
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070083
84/*
85 * CAM_WARN
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070086 * @brief : This Macro will print warning logs
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070087 *
88 * @__module : Respective module id which is been calling this Macro
89 * @fmt : Formatted string which needs to be print in log
90 * @args : Arguments which needs to be print in log
91 */
92#define CAM_WARN(__module, fmt, args...) \
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070093 cam_debug_log(__module, CAM_LEVEL_WARN, __func__, __LINE__, fmt, ##args)
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070094
95/*
96 * CAM_INFO
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -070097 * @brief : This Macro will print Information logs
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -070098 *
99 * @__module : Respective module id which is been calling this Macro
100 * @fmt : Formatted string which needs to be print in log
101 * @args : Arguments which needs to be print in log
102 */
103#define CAM_INFO(__module, fmt, args...) \
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -0700104 cam_debug_log(__module, CAM_LEVEL_INFO, __func__, __LINE__, fmt, ##args)
Jigarkumar Zaladdcb9d32017-06-23 16:21:33 -0700105
106/*
107 * CAM_DBG
108 * @brief : This Macro will print debug logs when enabled using GROUP
109 *
110 * @__module : Respective module id which is been calling this Macro
111 * @fmt : Formatted string which needs to be print in log
112 * @args : Arguments which needs to be print in log
113 */
114#define CAM_DBG(__module, fmt, args...) \
Jigarkumar Zala0fbb1d92017-07-11 18:55:58 -0700115 cam_debug_log(__module, CAM_LEVEL_DBG, __func__, __LINE__, fmt, ##args)
116
117/*
118 * CAM_ERR_RATE_LIMIT
119 * @brief : This Macro will prevent error print logs with ratelimit
120 */
121#define CAM_ERR_RATE_LIMIT(__module, fmt, args...) \
122 pr_err_ratelimited("CAM_ERR: %s: %s: %d\n" fmt, \
123 cam_get_module_name(__module), __func__, __LINE__, ##args)
Junzhe Zou263a87d2017-06-08 16:06:25 -0700124
125#endif /* _CAM_DEBUG_UTIL_H_ */