1 /*
2 * Copyright (c) 2014 - 2016, The Linux Foundation. All rights reserved.
3 *
4 * 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.
16 *
17 * 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.
28 */
29
30 #include <stdlib.h>
31 #include <utils/debug.h>
32 #include <utils/constants.h>
33
34 namespace sdm {
35
36 Debug Debug::debug_;
37
Debug()38 Debug::Debug() : debug_handler_(&default_debug_handler_) {
39 }
40
GetSimulationFlag()41 int Debug::GetSimulationFlag() {
42 int value = 0;
43 debug_.debug_handler_->GetProperty("sdm.composition_simulation", &value);
44
45 return value;
46 }
47
GetHDMIResolution()48 int Debug::GetHDMIResolution() {
49 int value = 0;
50 debug_.debug_handler_->GetProperty("hw.hdmi.resolution", &value);
51
52 return value;
53 }
54
GetIdleTimeoutMs()55 uint32_t Debug::GetIdleTimeoutMs() {
56 int value = IDLE_TIMEOUT_DEFAULT_MS;
57 debug_.debug_handler_->GetProperty("sdm.idle_time", &value);
58
59 return UINT32(value);
60 }
61
GetBootAnimLayerCount()62 int Debug::GetBootAnimLayerCount() {
63 int value = 0;
64 debug_.debug_handler_->GetProperty("sdm.boot_anim_layer_count", &value);
65
66 return value;
67 }
68
IsRotatorDownScaleDisabled()69 bool Debug::IsRotatorDownScaleDisabled() {
70 int value = 0;
71 debug_.debug_handler_->GetProperty("sdm.debug.rotator_downscale", &value);
72
73 return (value == 1);
74 }
75
IsDecimationDisabled()76 bool Debug::IsDecimationDisabled() {
77 int value = 0;
78 debug_.debug_handler_->GetProperty("sdm.disable_decimation", &value);
79
80 return (value == 1);
81 }
82
GetMaxPipesPerMixer(DisplayType display_type)83 int Debug::GetMaxPipesPerMixer(DisplayType display_type) {
84 int value = -1;
85 switch (display_type) {
86 case kPrimary:
87 debug_.debug_handler_->GetProperty("sdm.primary.mixer_stages", &value);
88 break;
89 case kHDMI:
90 debug_.debug_handler_->GetProperty("sdm.external.mixer_stages", &value);
91 break;
92 case kVirtual:
93 debug_.debug_handler_->GetProperty("sdm.virtual.mixer_stages", &value);
94 break;
95 default:
96 break;
97 }
98
99 return value;
100 }
101
IsVideoModeEnabled()102 bool Debug::IsVideoModeEnabled() {
103 int value = 0;
104 debug_.debug_handler_->GetProperty("sdm.video_mode_panel", &value);
105
106 return (value == 1);
107 }
108
IsRotatorUbwcDisabled()109 bool Debug::IsRotatorUbwcDisabled() {
110 int value = 0;
111 debug_.debug_handler_->GetProperty("sdm.debug.rotator_disable_ubwc", &value);
112
113 return (value == 1);
114 }
115
IsRotatorSplitDisabled()116 bool Debug::IsRotatorSplitDisabled() {
117 int value = 0;
118 debug_.debug_handler_->GetProperty("sdm.debug.disable_rotator_split", &value);
119
120 return (value == 1);
121 }
122
IsScalarDisabled()123 bool Debug::IsScalarDisabled() {
124 int value = 0;
125 debug_.debug_handler_->GetProperty("sdm.debug.disable_scalar", &value);
126
127 return (value == 1);
128 }
129
IsUbwcTiledFrameBuffer()130 bool Debug::IsUbwcTiledFrameBuffer() {
131 int ubwc_disabled = 0;
132 int ubwc_framebuffer = 0;
133
134 debug_.debug_handler_->GetProperty("debug.gralloc.gfx_ubwc_disable", &ubwc_disabled);
135
136 if (!ubwc_disabled) {
137 debug_.debug_handler_->GetProperty("debug.gralloc.enable_fb_ubwc", &ubwc_framebuffer);
138 }
139
140 return (ubwc_framebuffer == 1);
141 }
142
GetProperty(const char * property_name,char * value)143 bool Debug::GetProperty(const char* property_name, char* value) {
144 if (debug_.debug_handler_->GetProperty(property_name, value) != kErrorNone) {
145 return false;
146 }
147
148 return true;
149 }
150
SetProperty(const char * property_name,const char * value)151 bool Debug::SetProperty(const char* property_name, const char* value) {
152 if (debug_.debug_handler_->SetProperty(property_name, value) != kErrorNone) {
153 return false;
154 }
155
156 return true;
157 }
158
159 } // namespace sdm
160
161