blob: 0b40e7b4fc9edcdc5a3e0380d32e82debaae1250 [file] [log] [blame]
Dileep Marchyaf9ba4852014-10-24 19:56:57 -07001/*
Dileep Marchyab06308d2017-02-13 09:45:01 +05302* Copyright (c) 2014 - 2017, 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 Marchya73d002e2015-05-08 18:58:33 -070034#include <core/sdm_types.h>
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080035#include <core/debug_interface.h>
Tatenda Chipeperekwa299b0302015-05-27 15:42:49 -070036#include <core/display_interface.h>
Dileep Marchyab61346f2014-11-06 14:36:19 -080037
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080038#define DLOG(tag, method, format, ...) Debug::Get()->method(tag, __CLASS__ "::%s: " format, \
39 __FUNCTION__, ##__VA_ARGS__)
Dileep Marchyab61346f2014-11-06 14:36:19 -080040
Dileep Marchya3ffb4702014-12-04 16:31:37 -080041#define DLOGE_IF(tag, format, ...) DLOG(tag, Error, format, ##__VA_ARGS__)
42#define DLOGW_IF(tag, format, ...) DLOG(tag, Warning, format, ##__VA_ARGS__)
43#define DLOGI_IF(tag, format, ...) DLOG(tag, Info, format, ##__VA_ARGS__)
Manoj Kumar AVM6379fa52015-06-11 16:39:58 -070044#define DLOGD_IF(tag, format, ...) DLOG(tag, Debug, format, ##__VA_ARGS__)
Dileep Marchya3ffb4702014-12-04 16:31:37 -080045#define DLOGV_IF(tag, format, ...) DLOG(tag, Verbose, format, ##__VA_ARGS__)
Dileep Marchyab61346f2014-11-06 14:36:19 -080046
Dileep Marchya3ffb4702014-12-04 16:31:37 -080047#define DLOGE(format, ...) DLOGE_IF(kTagNone, format, ##__VA_ARGS__)
Naseer Ahmedb92e73f2016-03-12 02:03:48 -050048#define DLOGD(format, ...) DLOGD_IF(kTagNone, format, ##__VA_ARGS__)
Dileep Marchya3ffb4702014-12-04 16:31:37 -080049#define DLOGW(format, ...) DLOGW_IF(kTagNone, format, ##__VA_ARGS__)
50#define DLOGI(format, ...) DLOGI_IF(kTagNone, format, ##__VA_ARGS__)
Arun Kumar K.R3bd31ef2015-09-03 19:47:20 -070051#define DLOGV(format, ...) DLOGV_IF(kTagNone, format, ##__VA_ARGS__)
Dileep Marchyab61346f2014-11-06 14:36:19 -080052
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080053#define DTRACE_BEGIN(custom_string) Debug::Get()->BeginTrace(__CLASS__, __FUNCTION__, custom_string)
54#define DTRACE_END() Debug::Get()->EndTrace()
55#define DTRACE_SCOPED() ScopeTracer <Debug> scope_tracer(__CLASS__, __FUNCTION__)
56
Dileep Marchya73d002e2015-05-08 18:58:33 -070057namespace sdm {
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070058
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070059class Debug {
60 public:
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080061 static inline void SetDebugHandler(DebugHandler *debug_handler) {
62 debug_.debug_handler_ = debug_handler;
63 }
64 static inline DebugHandler* Get() { return debug_.debug_handler_; }
Naseer Ahmedb3b0a332015-06-05 19:14:32 -040065 static int GetSimulationFlag();
srikanth rajagopalan5d320c62017-06-05 21:08:57 -070066 static bool GetExternalResolution(char *val);
Dileep Marchyab06308d2017-02-13 09:45:01 +053067 static void GetIdleTimeoutMs(uint32_t *active_ms, uint32_t *inactive_ms);
Siddharth Zaveri918435f2016-01-12 01:05:14 -050068 static int GetBootAnimLayerCount();
Ken Zhange2605ea2015-02-02 10:17:45 -050069 static bool IsRotatorDownScaleDisabled();
70 static bool IsDecimationDisabled();
Tatenda Chipeperekwa299b0302015-05-27 15:42:49 -070071 static int GetMaxPipesPerMixer(DisplayType display_type);
Rajavenu Kyatham8c305cc2017-03-16 20:17:26 +053072 static int GetMaxUpscale();
Tatenda Chipeperekwa299b0302015-05-27 15:42:49 -070073 static bool IsVideoModeEnabled();
Sushil Chauhanb5e45c42015-06-12 16:50:26 -070074 static bool IsRotatorUbwcDisabled();
Ramkumar Radhakrishnan34508112015-05-28 19:02:05 -070075 static bool IsRotatorSplitDisabled();
Dileep Marchya511fb6d2015-07-06 11:37:06 -070076 static bool IsScalarDisabled();
Sushil Chauhanee1fc7e2015-07-09 17:43:21 -070077 static bool IsUbwcTiledFrameBuffer();
Ramkumar Radhakrishnan14a1fc62016-07-14 20:29:12 -070078 static bool IsAVRDisabled();
Ray Zhangf2ecade2016-08-12 21:50:53 +080079 static bool IsExtAnimDisabled();
Pullakavi Srinivasc1a71ca2017-02-21 11:54:42 +053080 static bool IsPartialSplitDisabled();
Ramkumar Radhakrishnand3b4c062016-10-06 18:12:21 -070081 static DisplayError GetMixerResolution(uint32_t *width, uint32_t *height);
Anjaneya Prasad Musunuri0a481102017-07-08 11:17:55 +053082 static DisplayError GetReducedConfig(uint32_t *num_vig_pipes, uint32_t *num_dma_pipes);
Prabhanjan Kandulaa61a5f82016-08-10 18:42:19 +053083 static int GetExtMaxlayers();
Arun Kumar K.R55fe3042015-10-07 00:13:15 -070084 static bool GetProperty(const char *property_name, char *value);
Tatenda Chipeperekwaca8b2f32016-04-27 19:53:22 -070085 static bool SetProperty(const char *property_name, const char *value);
Dileep Marchyaf9ba4852014-10-24 19:56:57 -070086
87 private:
88 Debug();
Dileep Marchya3ffb4702014-12-04 16:31:37 -080089
Dileep Marchya73d002e2015-05-08 18:58:33 -070090 // By default, drop any log messages/traces coming from Display manager. It will be overriden by
91 // Display manager client when core is successfully initialized.
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080092 class DefaultDebugHandler : public DebugHandler {
Dileep Marchya3ffb4702014-12-04 16:31:37 -080093 public:
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080094 virtual void Error(DebugTag /*tag*/, const char */*format*/, ...) { }
95 virtual void Warning(DebugTag /*tag*/, const char */*format*/, ...) { }
96 virtual void Info(DebugTag /*tag*/, const char */*format*/, ...) { }
Manoj Kumar AVM6379fa52015-06-11 16:39:58 -070097 virtual void Debug(DebugTag /*tag*/, const char */*format*/, ...) { }
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -080098 virtual void Verbose(DebugTag /*tag*/, const char */*format*/, ...) { }
99 virtual void BeginTrace(const char */*class_name*/, const char */*function_name*/,
100 const char */*custom_string*/) { }
101 virtual void EndTrace() { }
Naseer Ahmedb3b0a332015-06-05 19:14:32 -0400102 virtual DisplayError GetProperty(const char */*property_name*/, int */*value*/) {
Dileep Marchyae2a59082015-05-21 13:29:05 -0700103 return kErrorNotSupported;
104 }
Arun Kumar K.R55fe3042015-10-07 00:13:15 -0700105 virtual DisplayError GetProperty(const char */*property_name*/, char */*value*/) {
106 return kErrorNotSupported;
107 }
Tatenda Chipeperekwaca8b2f32016-04-27 19:53:22 -0700108 virtual DisplayError SetProperty(const char */*property_name*/, const char */*value*/) {
109 return kErrorNotSupported;
110 }
Dileep Marchya3ffb4702014-12-04 16:31:37 -0800111 };
112
Ramkumar Radhakrishnan7ebf0342015-01-20 15:00:46 -0800113 DefaultDebugHandler default_debug_handler_;
114 DebugHandler *debug_handler_;
Dileep Marchyaf9ba4852014-10-24 19:56:57 -0700115 static Debug debug_;
116};
117
Dileep Marchya73d002e2015-05-08 18:58:33 -0700118} // namespace sdm
Dileep Marchyaf9ba4852014-10-24 19:56:57 -0700119
120#endif // __DEBUG_H__
121