mdp_version.h revision ed2e4f6e223ab95e3d9a8c7c3210324e2fab21f0
1befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/*
26e146950e61327d425750c1de36bfd70d526acadSushil Chauhan * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
4befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * Redistribution and use in source and binary forms, with or without
5befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * modification, are permitted provided that the following conditions are
6befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * met:
7befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *   * Redistributions of source code must retain the above copyright
8befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *     notice, this list of conditions and the following disclaimer.
9befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *   * Redistributions in binary form must reproduce the above
10befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *     copyright notice, this list of conditions and the following
11befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *     disclaimer in the documentation and/or other materials provided
12befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *     with the distribution.
135070c694011ddc30673ec68a9d1d74dc713c49f2Duy Truong *   * Neither the name of The Linux Foundation nor the names of its
14befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *     contributors may be used to endorse or promote products derived
15befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *     from this software without specific prior written permission.
16befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed *
17befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed */
29befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
300f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed#ifndef INCLUDE_LIBQCOMUTILS_MDPVER
310f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed#define INCLUDE_LIBQCOMUTILS_MDPVER
32befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
330f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed#include <stdint.h>
340f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed#include <utils/Singleton.h>
350f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed#include <cutils/properties.h>
36befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
370f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed/* This class gets the MSM type from the soc info
380f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed*/
390f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmedusing namespace android;
400f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmednamespace qdutils {
410f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmedenum mdp_version {
420f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V_UNKNOWN = 0,
430f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V2_2    = 220,
440f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V3_0    = 300,
450f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V3_0_3  = 303,
4666ea016af22283b2dc51ae850841b15a14cacdd0Xiaoming Zhou    MDP_V3_0_4  = 304,
470f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V3_1    = 310,
480f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V4_0    = 400,
490f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V4_1    = 410,
500f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V4_2    = 420,
510f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V4_3    = 430,
520f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDP_V4_4    = 440,
530f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDSS_V5     = 500,
54befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed};
55befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
56e188278e86ebb2f7f1ed3762855f15062b7f9d03Saurabh Shahenum mdp_rev {
57de915f17e0aa7a330fc8edd7ebd0dc3782dd2d44Saurabh Shah    MDSS_MDP_HW_REV_100 = 0x10000000, //8974 v1
58e188278e86ebb2f7f1ed3762855f15062b7f9d03Saurabh Shah    MDSS_MDP_HW_REV_101 = 0x10010000, //8x26
59de915f17e0aa7a330fc8edd7ebd0dc3782dd2d44Saurabh Shah    MDSS_MDP_HW_REV_102 = 0x10020000, //8974 v2
60de915f17e0aa7a330fc8edd7ebd0dc3782dd2d44Saurabh Shah    MDSS_MDP_HW_REV_103 = 0x10030000, //Future
61e188278e86ebb2f7f1ed3762855f15062b7f9d03Saurabh Shah};
62e188278e86ebb2f7f1ed3762855f15062b7f9d03Saurabh Shah
638fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shahenum {
648fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shah    MAX_DISPLAY_DIM = 2048,
658fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shah};
668fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shah
67b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define MDDI_PANEL       '1'
68b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define EBI2_PANEL       '2'
69b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define LCDC_PANEL       '3'
70b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define EXT_MDDI_PANEL   '4'
71b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define TV_PANEL         '5'
72b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define DTV_PANEL        '7'
73b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define MIPI_VIDEO_PANEL '8'
74b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define MIPI_CMD_PANEL   '9'
75b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define WRITEBACK_PANEL  'a'
76b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed#define LVDS_PANEL       'b'
77b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed
782e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shahclass MDPVersion;
792e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah
802e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shahstruct Split {
812e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    int mLeft;
822e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    int mRight;
832e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    Split() : mLeft(0), mRight(0){}
842e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    int left() { return mLeft; }
852e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    int right() { return mRight; }
862e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    friend class MDPVersion;
872e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah};
88b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed
890f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmedclass MDPVersion : public Singleton <MDPVersion>
900f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed{
910f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmedpublic:
920f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    MDPVersion();
93da05b4e085dbdd01ffc1c05de4685282e5d4f0e2Xiaoming Zhou    ~MDPVersion();
940f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    int getMDPVersion() {return mMDPVersion;}
95b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed    char getPanelType() {return mPanelType;}
960f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    bool hasOverlay() {return mHasOverlay;}
976e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint8_t getTotalPipes() { return (mRGBPipes + mVGPipes + mDMAPipes);}
986e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint8_t getRGBPipes() { return mRGBPipes; }
996e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint8_t getVGPipes() { return mVGPipes; }
1006e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint8_t getDMAPipes() { return mDMAPipes; }
1018fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shah    bool supportsDecimation();
1028fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shah    uint32_t getMaxMDPDownscale();
10330323b98c1abab90dce91c3d226d4e65a24076fcSushil Chauhan    bool supportsBWC();
104e188278e86ebb2f7f1ed3762855f15062b7f9d03Saurabh Shah    bool is8x26();
105de915f17e0aa7a330fc8edd7ebd0dc3782dd2d44Saurabh Shah    bool is8x74v2();
1062e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    int getLeftSplit() { return mSplit.left(); }
1072e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    int getRightSplit() { return mSplit.right(); }
1080f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmedprivate:
109ed2e4f6e223ab95e3d9a8c7c3210324e2fab21f0manoj kumar amara venkata mastan    bool updateSysFsInfo();
110ed2e4f6e223ab95e3d9a8c7c3210324e2fab21f0manoj kumar amara venkata mastan    int tokenizeParams(char *inputParams, const char *delim,
111ed2e4f6e223ab95e3d9a8c7c3210324e2fab21f0manoj kumar amara venkata mastan                        char* tokenStr[], int *idx);
112da05b4e085dbdd01ffc1c05de4685282e5d4f0e2Xiaoming Zhou    int mFd;
1130f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    int mMDPVersion;
114b3c6e058ce1dbc689f27e7d7acbf1529d37307d8Naseer Ahmed    char mPanelType;
1150f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed    bool mHasOverlay;
1166e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint32_t mMdpRev;
1176e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint8_t mRGBPipes;
1186e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint8_t mVGPipes;
1196e146950e61327d425750c1de36bfd70d526acadSushil Chauhan    uint8_t mDMAPipes;
1208fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shah    uint32_t mFeatures;
1218fe8c938d27e528fcf7fb4a408711b4b6e405f13Saurabh Shah    uint32_t mMDPDownscale;
122ed2e4f6e223ab95e3d9a8c7c3210324e2fab21f0manoj kumar amara venkata mastan    uint32_t mMDPUpscale;
1232e474227e216ee37ab84a3c9a22ea1f650626231Saurabh Shah    Split mSplit;
1240f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed};
1250f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed}; //namespace qdutils
1260f859f6f0db0e0c05d8c319d8d597ad2731513aeNaseer Ahmed#endif //INCLUDE_LIBQCOMUTILS_MDPVER
127