Home | History | Annotate | Download | only in libdisplayconfig
      1 /*
      2 * Copyright (c) 2017 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 #ifndef __DISPLAY_CONFIG_H__
     31 #define __DISPLAY_CONFIG_H__
     32 
     33 #include <stdint.h>
     34 #include <vector>
     35 
     36 // This header is for clients to use to set/get global display configuration.
     37 
     38 namespace display {
     39 
     40 enum {
     41     DISPLAY_PRIMARY = 0,
     42     DISPLAY_EXTERNAL,
     43     DISPLAY_VIRTUAL,
     44 };
     45 
     46 enum {
     47     EXTERNAL_OFFLINE = 0,
     48     EXTERNAL_ONLINE,
     49     EXTERNAL_PAUSE,
     50     EXTERNAL_RESUME,
     51 };
     52 
     53 enum {
     54     DISABLE_METADATA_DYN_REFRESH_RATE = 0,
     55     ENABLE_METADATA_DYN_REFRESH_RATE,
     56     SET_BINDER_DYN_REFRESH_RATE,
     57 };
     58 
     59 enum {
     60     DISPLAY_PORT_DEFAULT = 0,
     61     DISPLAY_PORT_DSI,
     62     DISPLAY_PORT_DTV,
     63     DISPLAY_PORT_WRITEBACK,
     64     DISPLAY_PORT_LVDS,
     65     DISPLAY_PORT_EDP,
     66     DISPLAY_PORT_DP,
     67 };
     68 
     69 struct DisplayAttributes {
     70     uint32_t vsync_period = 0; //nanoseconds
     71     uint32_t xres = 0;
     72     uint32_t yres = 0;
     73     float xdpi = 0.0f;
     74     float ydpi = 0.0f;
     75     int panel_type = DISPLAY_PORT_DEFAULT;
     76     bool is_yuv = false;
     77 };
     78 
     79 struct DisplayHDRCapabilities {
     80     std::vector<int32_t> supported_hdr_types;
     81     float max_luminance = 0.0f;
     82     float max_avg_luminance = 0.0f;
     83     float min_luminance = 0.0f;
     84 };
     85 
     86 //=============================================================================
     87 // The functions below run in the client pocess and wherever necessary
     88 // do a binder call to HWC to get/set data.
     89 
     90 int isExternalConnected();
     91 int setSecondayDisplayStatus(int dpy, uint32_t status);
     92 int configureDynRefeshRate(uint32_t op, uint32_t refreshRate);
     93 int getConfigCount(int dpy);
     94 int getActiveConfig(int dpy);
     95 int setActiveConfig(int dpy, uint32_t config);
     96 DisplayAttributes getDisplayAttributes(uint32_t configIndex, int dpy);
     97 int setPanelBrightness(uint32_t level);
     98 uint32_t getPanelBrightness();
     99 int minHdcpEncryptionLevelChanged(int dpy, uint32_t min_enc_level);
    100 int refreshScreen();
    101 int controlPartialUpdate(int dpy, bool enable);
    102 int toggleScreenUpdate(uint32_t on);
    103 int setIdleTimeout(uint32_t value);
    104 int getHDRCapabilities(int dpy, DisplayHDRCapabilities *caps);
    105 int setCameraLaunchStatus(uint32_t on);
    106 bool displayBWTransactionPending();
    107 
    108 } // namespace display
    109 
    110 #endif  // __DISPLAY_CONFIG_H__
    111