ExternalDevice.h revision 466748a6f67ce4d1ad8baa944e68a88cf3c86d26
18a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu/* 28a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * Copyright © 2012 Intel Corporation 38a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * All rights reserved. 48a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * 58a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * Permission is hereby granted, free of charge, to any person obtaining a 68a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * copy of this software and associated documentation files (the "Software"), 78a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * to deal in the Software without restriction, including without limitation 88a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * the rights to use, copy, modify, merge, publish, distribute, sublicense, 98a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * and/or sell copies of the Software, and to permit persons to whom the 108a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * Software is furnished to do so, subject to the following conditions: 118a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * 128a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * The above copyright notice and this permission notice (including the next 138a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * paragraph) shall be included in all copies or substantial portions of the 148a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * Software. 158a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * 168a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 178a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 188a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 198a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 208a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 218a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 228a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * IN THE SOFTWARE. 238a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * 248a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * Authors: 258a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * Jackie Li <yaodong.li@intel.com> 268a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu * 278a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu */ 288a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu#ifndef EXTERNAL_DEVICE_H 298a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu#define EXTERNAL_DEVICE_H 308a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 318a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu#include <PhysicalDevice.h> 3210056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu#include <IHdcpControl.h> 333f1974031c88750a14adc8f2f49538837238abf9Lin Xie#include <SimpleThread.h> 348a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 358a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiunamespace android { 368a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiunamespace intel { 378a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 388a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 398a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiuclass ExternalDevice : public PhysicalDevice { 408a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 418a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiupublic: 428a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu ExternalDevice(Hwcomposer& hwc, DisplayPlaneManager& dpm); 438a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu virtual ~ExternalDevice(); 448a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiupublic: 458a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu virtual bool initialize(); 46e2ad4c047651d4442f6a0e002290016d45e9201afu jin virtual void deinitialize(); 473f1974031c88750a14adc8f2f49538837238abf9Lin Xie virtual bool setDrmMode(drmModeModeInfo& value); 482413102f33fdefa6bdb80ed2c4f56fae83cd5bd8fu jin virtual void setRefreshRate(int hz); 498a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 5010056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiuprivate: 5110056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu static void HdcpLinkStatusListener(bool success, void *userData); 5210056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu void HdcpLinkStatusListener(bool success); 533f1974031c88750a14adc8f2f49538837238abf9Lin Xie void setDrmMode(); 5410056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu 558a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiuprotected: 5610056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu virtual IHdcpControl* createHdcpControl() = 0; 5710056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu 588a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiuprotected: 5910056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu IHdcpControl *mHdcpControl; 60466748a6f67ce4d1ad8baa944e68a88cf3c86d26Austin Hu 61466748a6f67ce4d1ad8baa944e68a88cf3c86d26Austin Huprivate: 62466748a6f67ce4d1ad8baa944e68a88cf3c86d26Austin Hu static void hotplugEventListener(void *data); 63466748a6f67ce4d1ad8baa944e68a88cf3c86d26Austin Hu void hotplugListener(); 6410056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu 6510056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiuprivate: 663f1974031c88750a14adc8f2f49538837238abf9Lin Xie Condition mAbortModeSettingCond; 673f1974031c88750a14adc8f2f49538837238abf9Lin Xie drmModeModeInfo mPendingDrmMode; 6810056c1964f893323ab3309f3906e0db8b60d7e0Andy Qiu bool mHotplugEventPending; 693f1974031c88750a14adc8f2f49538837238abf9Lin Xie 703f1974031c88750a14adc8f2f49538837238abf9Lin Xieprivate: 713f1974031c88750a14adc8f2f49538837238abf9Lin Xie DECLARE_THREAD(ModeSettingThread, ExternalDevice); 728a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu}; 738a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 748a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu} 758a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu} 768a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu 778a427146c6f68f9add960bbd18c4f84c9eeee4a5Andy Qiu#endif /* EXTERNAL_DEVICE_H */ 78