Home | History | Annotate | Download | only in libqdutils
      1 /*
      2  * Copyright (c) 2012-2013, 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 INCLUDE_LIBQCOMUTILS_MDPVER
     31 #define INCLUDE_LIBQCOMUTILS_MDPVER
     32 
     33 #include <stdint.h>
     34 #include <utils/Singleton.h>
     35 #include <cutils/properties.h>
     36 
     37 /* This class gets the MSM type from the soc info
     38 */
     39 using namespace android;
     40 namespace qdutils {
     41 enum mdp_version {
     42     MDP_V_UNKNOWN = 0,
     43     MDP_V2_2    = 220,
     44     MDP_V3_0    = 300,
     45     MDP_V3_0_3  = 303,
     46     MDP_V3_0_4  = 304,
     47     MDP_V3_1    = 310,
     48     MDP_V4_0    = 400,
     49     MDP_V4_1    = 410,
     50     MDP_V4_2    = 420,
     51     MDP_V4_3    = 430,
     52     MDP_V4_4    = 440,
     53     MDSS_V5     = 500,
     54 };
     55 
     56 enum mdp_rev {
     57     MDSS_MDP_HW_REV_100 = 0x10000000,
     58     MDSS_MDP_HW_REV_101 = 0x10010000, //8x26
     59     MDSS_MDP_HW_REV_102 = 0x10020000,
     60 };
     61 
     62 enum {
     63     MAX_DISPLAY_DIM = 2048,
     64 };
     65 
     66 #define MDDI_PANEL       '1'
     67 #define EBI2_PANEL       '2'
     68 #define LCDC_PANEL       '3'
     69 #define EXT_MDDI_PANEL   '4'
     70 #define TV_PANEL         '5'
     71 #define DTV_PANEL        '7'
     72 #define MIPI_VIDEO_PANEL '8'
     73 #define MIPI_CMD_PANEL   '9'
     74 #define WRITEBACK_PANEL  'a'
     75 #define LVDS_PANEL       'b'
     76 
     77 class MDPVersion;
     78 
     79 struct Split {
     80     int mLeft;
     81     int mRight;
     82     Split() : mLeft(0), mRight(0){}
     83     int left() { return mLeft; }
     84     int right() { return mRight; }
     85     friend class MDPVersion;
     86 };
     87 
     88 class MDPVersion : public Singleton <MDPVersion>
     89 {
     90 public:
     91     MDPVersion();
     92     ~MDPVersion();
     93     int getMDPVersion() {return mMDPVersion;}
     94     char getPanelType() {return mPanelType;}
     95     bool hasOverlay() {return mHasOverlay;}
     96     uint8_t getTotalPipes() { return (mRGBPipes + mVGPipes + mDMAPipes);}
     97     uint8_t getRGBPipes() { return mRGBPipes; }
     98     uint8_t getVGPipes() { return mVGPipes; }
     99     uint8_t getDMAPipes() { return mDMAPipes; }
    100     bool supportsDecimation();
    101     uint32_t getMaxMDPDownscale();
    102     bool supportsBWC();
    103     bool is8x26();
    104     int getLeftSplit() { return mSplit.left(); }
    105     int getRightSplit() { return mSplit.right(); }
    106 private:
    107     int mFd;
    108     int mMDPVersion;
    109     char mPanelType;
    110     bool mHasOverlay;
    111     uint32_t mMdpRev;
    112     uint8_t mRGBPipes;
    113     uint8_t mVGPipes;
    114     uint8_t mDMAPipes;
    115     uint32_t mFeatures;
    116     uint32_t mMDPDownscale;
    117     Split mSplit;
    118 };
    119 }; //namespace qdutils
    120 #endif //INCLUDE_LIBQCOMUTILS_MDPVER
    121