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