blob: 2cef5d735e3f9cb592a5a654078aefbb3208e2c1 [file] [log] [blame]
Dileep Marchyaf9ba4852014-10-24 19:56:57 -07001/*
Ramkumar Radhakrishnana35a2732015-01-16 15:41:05 -08002* Copyright (c) 2014 - 2015, The Linux Foundation. All rights reserved.
Dileep Marchyaf9ba4852014-10-24 19:56:57 -07003*
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -08004* Redistribution and use in source and binary forms, with or without
5* modification, are permitted provided that the following conditions are
6* met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above
10* copyright notice, this list of conditions and the following
11* disclaimer in the documentation and/or other materials provided
12* with the distribution.
13* * Neither the name of The Linux Foundation nor the names of its
14* contributors may be used to endorse or promote products derived
15* from this software without specific prior written permission.
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070016*
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080017* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070028*/
29
30#ifndef __DEBUG_H__
31#define __DEBUG_H__
32
Manoj Kumar AVM4746f242015-01-06 20:25:22 -080033#include <stdint.h>
Dileep Marchya3ffb4702014-12-04 16:31:37 -080034#include <core/sde_types.h>
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080035#include <core/debug_interface.h>
Dileep Marchyab61346f2014-11-06 14:36:19 -080036
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080037#define DLOG(tag, method, format, ...) Debug::Get()->method(tag, __CLASS__ "::%s: " format, \
38 __FUNCTION__, ##__VA_ARGS__)
Dileep Marchyab61346f2014-11-06 14:36:19 -080039
Dileep Marchya3ffb4702014-12-04 16:31:37 -080040#define DLOGE_IF(tag, format, ...) DLOG(tag, Error, format, ##__VA_ARGS__)
41#define DLOGW_IF(tag, format, ...) DLOG(tag, Warning, format, ##__VA_ARGS__)
42#define DLOGI_IF(tag, format, ...) DLOG(tag, Info, format, ##__VA_ARGS__)
43#define DLOGV_IF(tag, format, ...) DLOG(tag, Verbose, format, ##__VA_ARGS__)
Dileep Marchyab61346f2014-11-06 14:36:19 -080044
Dileep Marchya3ffb4702014-12-04 16:31:37 -080045#define DLOGE(format, ...) DLOGE_IF(kTagNone, format, ##__VA_ARGS__)
46#define DLOGW(format, ...) DLOGW_IF(kTagNone, format, ##__VA_ARGS__)
47#define DLOGI(format, ...) DLOGI_IF(kTagNone, format, ##__VA_ARGS__)
48#define DLOGV(format, ...) DLOGV_IF(kTagNone, format, ##__VA_ARGS__)
Dileep Marchyab61346f2014-11-06 14:36:19 -080049
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080050#define DTRACE_BEGIN(custom_string) Debug::Get()->BeginTrace(__CLASS__, __FUNCTION__, custom_string)
51#define DTRACE_END() Debug::Get()->EndTrace()
52#define DTRACE_SCOPED() ScopeTracer <Debug> scope_tracer(__CLASS__, __FUNCTION__)
53
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070054namespace sde {
55
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070056class Debug {
57 public:
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080058 static inline void SetDebugHandler(DebugHandler *debug_handler) {
59 debug_.debug_handler_ = debug_handler;
60 }
61 static inline DebugHandler* Get() { return debug_.debug_handler_; }
Dileep Marchya3ffb4702014-12-04 16:31:37 -080062 static inline bool IsVirtualDriver() { return debug_.virtual_driver_; }
Manoj Kumar AVM4746f242015-01-06 20:25:22 -080063 static uint32_t GetSimulationFlag();
Arun Kumar K.Recae9b22015-01-07 20:59:16 -080064 static uint32_t GetHDMIResolution();
Ramkumar Radhakrishnana35a2732015-01-16 15:41:05 -080065 static uint32_t GetIdleTimeoutMs();
Ken Zhange2605ea2015-02-02 10:17:45 -050066 static bool IsRotatorDownScaleDisabled();
67 static bool IsDecimationDisabled();
Manoj Kumar AVM351c9282015-03-18 16:34:38 -070068 static bool IsPartialUpdate();
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070069
70 private:
71 Debug();
Dileep Marchya3ffb4702014-12-04 16:31:37 -080072
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080073 // By default, drop any log messages/traces coming from Display Engine. It will be overriden by
74 // Display Engine client when core is successfully initialized.
75 class DefaultDebugHandler : public DebugHandler {
Dileep Marchya3ffb4702014-12-04 16:31:37 -080076 public:
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080077 virtual void Error(DebugTag /*tag*/, const char */*format*/, ...) { }
78 virtual void Warning(DebugTag /*tag*/, const char */*format*/, ...) { }
79 virtual void Info(DebugTag /*tag*/, const char */*format*/, ...) { }
80 virtual void Verbose(DebugTag /*tag*/, const char */*format*/, ...) { }
81 virtual void BeginTrace(const char */*class_name*/, const char */*function_name*/,
82 const char */*custom_string*/) { }
83 virtual void EndTrace() { }
Dileep Marchya3ffb4702014-12-04 16:31:37 -080084 };
85
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080086 DefaultDebugHandler default_debug_handler_;
87 DebugHandler *debug_handler_;
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070088 bool virtual_driver_;
89 static Debug debug_;
90};
91
92} // namespace sde
93
94#endif // __DEBUG_H__
95