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