Home | History | Annotate | Download | only in utils
      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 
     38 Debug::Debug() : debug_handler_(&default_debug_handler_) {
     39 }
     40 
     41 int Debug::GetSimulationFlag() {
     42   int value = 0;
     43   debug_.debug_handler_->GetProperty("sdm.composition_simulation", &value);
     44 
     45   return value;
     46 }
     47 
     48 int Debug::GetHDMIResolution() {
     49   int value = 0;
     50   debug_.debug_handler_->GetProperty("hw.hdmi.resolution", &value);
     51 
     52   return value;
     53 }
     54 
     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 
     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 
     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 
     76 bool Debug::IsDecimationDisabled() {
     77   int value = 0;
     78   debug_.debug_handler_->GetProperty("sdm.disable_decimation", &value);
     79 
     80   return (value == 1);
     81 }
     82 
     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 
    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 
    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 
    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 
    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 
    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 
    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 
    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