overlayRotator.cpp revision 47377987cc4eef72ee3b0cdced8c3a15038b39eb
1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * Copyright (c) 2010-2012, The Linux Foundation. All rights reserved. 4 * Not a Contribution, Apache license notifications and license are retained 5 * for attribution purposes only. 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18*/ 19 20#include "overlayRotator.h" 21#include "overlayUtils.h" 22#include "mdp_version.h" 23 24namespace ovutils = overlay::utils; 25 26namespace overlay { 27 28Rotator::~Rotator() {} 29 30Rotator* Rotator::getRotator() { 31 int type = getRotatorHwType(); 32 if(type == TYPE_MDP) { 33 return new MdpRot(); //will do reset 34 } else if(type == TYPE_MDSS) { 35 return new MdssRot(); 36 } else { 37 ALOGE("%s Unknown h/w type %d", __FUNCTION__, type); 38 return NULL; 39 } 40} 41 42int Rotator::getRotatorHwType() { 43 int mdpVersion = qdutils::MDPVersion::getInstance().getMDPVersion(); 44 if (mdpVersion == qdutils::MDSS_V5) 45 return TYPE_MDSS; 46 return TYPE_MDP; 47} 48 49bool RotMem::close() { 50 bool ret = true; 51 for(uint32_t i=0; i < RotMem::MAX_ROT_MEM; ++i) { 52 // skip current, and if valid, close 53 if(m[i].valid()) { 54 if(m[i].close() == false) { 55 ALOGE("%s error in closing rot mem %d", __FUNCTION__, i); 56 ret = false; 57 } 58 } 59 } 60 return ret; 61} 62 63} 64