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
34namespace sdm {
35
36Debug Debug::debug_;
37
38Debug::Debug() : debug_handler_(&default_debug_handler_) {
39}
40
41int Debug::GetSimulationFlag() {
42  int value = 0;
43  debug_.debug_handler_->GetProperty("sdm.composition_simulation", &value);
44
45  return value;
46}
47
48int Debug::GetHDMIResolution() {
49  int value = 0;
50  debug_.debug_handler_->GetProperty("hw.hdmi.resolution", &value);
51
52  return value;
53}
54
55uint32_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
62int Debug::GetBootAnimLayerCount() {
63  int value = 0;
64  debug_.debug_handler_->GetProperty("sdm.boot_anim_layer_count", &value);
65
66  return value;
67}
68
69bool Debug::IsRotatorDownScaleDisabled() {
70  int value = 0;
71  debug_.debug_handler_->GetProperty("sdm.debug.rotator_downscale", &value);
72
73  return (value == 1);
74}
75
76bool Debug::IsDecimationDisabled() {
77  int value = 0;
78  debug_.debug_handler_->GetProperty("sdm.disable_decimation", &value);
79
80  return (value == 1);
81}
82
83int 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
102bool Debug::IsVideoModeEnabled() {
103  int value = 0;
104  debug_.debug_handler_->GetProperty("sdm.video_mode_panel", &value);
105
106  return (value == 1);
107}
108
109bool Debug::IsRotatorUbwcDisabled() {
110  int value = 0;
111  debug_.debug_handler_->GetProperty("sdm.debug.rotator_disable_ubwc", &value);
112
113  return (value == 1);
114}
115
116bool Debug::IsRotatorSplitDisabled() {
117  int value = 0;
118  debug_.debug_handler_->GetProperty("sdm.debug.disable_rotator_split", &value);
119
120  return (value == 1);
121}
122
123bool Debug::IsScalarDisabled() {
124  int value = 0;
125  debug_.debug_handler_->GetProperty("sdm.debug.disable_scalar", &value);
126
127  return (value == 1);
128}
129
130bool 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
143bool 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
151bool 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