summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Lentine <mlentine@google.com>2015-05-12 18:07:27 -0700
committerMichael Lentine <mlentine@google.com>2015-05-22 14:18:23 -0700
commit3540d325335005c6761c3557679201ae29f7c1d0 (patch)
tree0942feb361fbe694d68b5493b81c5e205921384c
parente8bb8dfaf5c91de50c9336e141af0acf8bf2987a (diff)
downloadandroid_hardware_intel_img_hwcomposer-3540d325335005c6761c3557679201ae29f7c1d0.tar.gz
android_hardware_intel_img_hwcomposer-3540d325335005c6761c3557679201ae29f7c1d0.tar.bz2
android_hardware_intel_img_hwcomposer-3540d325335005c6761c3557679201ae29f7c1d0.zip
Add support for hotplug events on primary display
Remove the ifdefs protecting hotplug from being called. Fix Hwcomposer to use the display index instead of the display type when sending a hotplug event. Bug: 18698244 Change-Id: I32582c23323e409ca602db86d297c406e4010da9
-rwxr-xr-xmoorefield_hdmi/common/base/Hwcomposer.cpp2
-rwxr-xr-xmoorefield_hdmi/common/devices/DummyDevice.cpp10
-rwxr-xr-xmoorefield_hdmi/common/devices/ExternalDevice.cpp20
-rwxr-xr-xmoorefield_hdmi/common/devices/PhysicalDevice.cpp11
-rwxr-xr-xmoorefield_hdmi/common/devices/PrimaryDevice.cpp4
-rwxr-xr-xmoorefield_hdmi/include/DummyDevice.h4
-rwxr-xr-xmoorefield_hdmi/include/ExternalDevice.h2
-rwxr-xr-xmoorefield_hdmi/include/PhysicalDevice.h3
-rwxr-xr-xmoorefield_hdmi/include/PrimaryDevice.h2
-rwxr-xr-xmoorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.cpp4
-rwxr-xr-xmoorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.h2
-rwxr-xr-xmoorefield_hdmi/platforms/merrifield_plus/PlatfHwcomposer.cpp6
-rwxr-xr-xmoorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.cpp4
-rwxr-xr-xmoorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.h2
14 files changed, 38 insertions, 38 deletions
diff --git a/moorefield_hdmi/common/base/Hwcomposer.cpp b/moorefield_hdmi/common/base/Hwcomposer.cpp
index eac1448..824781a 100755
--- a/moorefield_hdmi/common/base/Hwcomposer.cpp
+++ b/moorefield_hdmi/common/base/Hwcomposer.cpp
@@ -334,13 +334,11 @@ void Hwcomposer::hotplug(__attribute__((unused))int disp, bool connected)
{
RETURN_VOID_IF_NOT_INIT();
-#ifndef INTEL_SUPPORT_HDMI_PRIMARY
if (mProcs && mProcs->hotplug) {
DLOGTRACE("report hotplug on disp %d, connected %d", disp, connected);
mProcs->hotplug(const_cast<hwc_procs_t*>(mProcs), disp, connected);
DLOGTRACE("hotplug callback processed and returned!");
}
-#endif
mDisplayAnalyzer->postHotplugEvent(connected);
}
diff --git a/moorefield_hdmi/common/devices/DummyDevice.cpp b/moorefield_hdmi/common/devices/DummyDevice.cpp
index d763a70..7c9355e 100755
--- a/moorefield_hdmi/common/devices/DummyDevice.cpp
+++ b/moorefield_hdmi/common/devices/DummyDevice.cpp
@@ -21,11 +21,11 @@
namespace android {
namespace intel {
-DummyDevice::DummyDevice(uint32_t type, Hwcomposer& hwc)
+DummyDevice::DummyDevice(uint32_t disp, Hwcomposer& hwc)
: mInitialized(false),
mConnected(false),
mBlank(false),
- mType(type),
+ mDisp(disp),
mHwc(hwc),
mVsyncObserver(NULL),
mName("Dummy")
@@ -54,7 +54,7 @@ bool DummyDevice::prepare(hwc_display_contents_1_t *display)
{
RETURN_FALSE_IF_NOT_INIT();
- if (!display || mType >= DEVICE_VIRTUAL) {
+ if (!display || mDisp >= DEVICE_VIRTUAL) {
return true;
}
@@ -205,7 +205,7 @@ const char* DummyDevice::getName() const
int DummyDevice::getType() const
{
- return mType;
+ return mDisp;
}
void DummyDevice::onVsync(int64_t timestamp)
@@ -213,7 +213,7 @@ void DummyDevice::onVsync(int64_t timestamp)
if (!mConnected)
return;
- mHwc.vsync(mType, timestamp);
+ mHwc.vsync(mDisp, timestamp);
}
void DummyDevice::dump(Dump& d)
diff --git a/moorefield_hdmi/common/devices/ExternalDevice.cpp b/moorefield_hdmi/common/devices/ExternalDevice.cpp
index bd7e35f..75f8700 100755
--- a/moorefield_hdmi/common/devices/ExternalDevice.cpp
+++ b/moorefield_hdmi/common/devices/ExternalDevice.cpp
@@ -23,8 +23,8 @@
namespace android {
namespace intel {
-ExternalDevice::ExternalDevice(Hwcomposer& hwc, DisplayPlaneManager& dpm)
- : PhysicalDevice(DEVICE_EXTERNAL, hwc, dpm),
+ExternalDevice::ExternalDevice(uint32_t disp, Hwcomposer& hwc, DisplayPlaneManager& dpm)
+ : PhysicalDevice(disp, DEVICE_EXTERNAL, hwc, dpm),
mHdcpControl(NULL),
mAbortModeSettingCond(),
mPendingDrmMode(),
@@ -146,7 +146,7 @@ void ExternalDevice::setDrmMode()
Drm *drm = Hwcomposer::getInstance().getDrm();
mConnected = false;
- mHwc.hotplug(mType, false);
+ mHwc.hotplug(mDisp, false);
{
Mutex::Autolock lock(mLock);
@@ -155,7 +155,7 @@ void ExternalDevice::setDrmMode()
status_t err = mAbortModeSettingCond.waitRelative(mLock, milliseconds(20));
if (err != -ETIMEDOUT) {
ILOGTRACE("Mode settings is interrupted");
- mHwc.hotplug(mType, true);
+ mHwc.hotplug(mDisp, true);
return;
}
}
@@ -164,13 +164,13 @@ void ExternalDevice::setDrmMode()
mHdcpControl->stopHdcp();
if (!drm->setDrmMode(mType, mPendingDrmMode)) {
ELOGTRACE("failed to set Drm mode");
- mHwc.hotplug(mType, true);
+ mHwc.hotplug(mDisp, true);
return;
}
if (!PhysicalDevice::updateDisplayConfigs()) {
ELOGTRACE("failed to update display configs");
- mHwc.hotplug(mType, true);
+ mHwc.hotplug(mDisp, true);
return;
}
mConnected = true;
@@ -179,7 +179,7 @@ void ExternalDevice::setDrmMode()
if (mHdcpControl->startHdcpAsync(HdcpLinkStatusListener, this) == false) {
ELOGTRACE("startHdcpAsync() failed; HDCP is not enabled");
mHotplugEventPending = false;
- mHwc.hotplug(mType, true);
+ mHwc.hotplug(mDisp, true);
}
}
@@ -198,7 +198,7 @@ void ExternalDevice::HdcpLinkStatusListener(bool success)
{
if (mHotplugEventPending) {
DLOGTRACE("HDCP authentication status %d, sending hotplug event...", success);
- mHwc.hotplug(mType, mConnected);
+ mHwc.hotplug(mDisp, mConnected);
mHotplugEventPending = false;
}
}
@@ -240,7 +240,7 @@ void ExternalDevice::hotplugListener()
if (mConnected == false) {
mHotplugEventPending = false;
mHdcpControl->stopHdcp();
- mHwc.hotplug(mType, mConnected);
+ mHwc.hotplug(mDisp, mConnected);
} else {
DLOGTRACE("start HDCP asynchronously...");
// delay sending hotplug event till HDCP is authenticated.
@@ -249,7 +249,7 @@ void ExternalDevice::hotplugListener()
if (ret == false) {
ELOGTRACE("failed to start HDCP");
mHotplugEventPending = false;
- mHwc.hotplug(mType, mConnected);
+ mHwc.hotplug(mDisp, mConnected);
}
}
mActiveDisplayConfig = 0;
diff --git a/moorefield_hdmi/common/devices/PhysicalDevice.cpp b/moorefield_hdmi/common/devices/PhysicalDevice.cpp
index b4e8fa0..6b477ae 100755
--- a/moorefield_hdmi/common/devices/PhysicalDevice.cpp
+++ b/moorefield_hdmi/common/devices/PhysicalDevice.cpp
@@ -21,8 +21,9 @@
namespace android {
namespace intel {
-PhysicalDevice::PhysicalDevice(uint32_t type, Hwcomposer& hwc, DisplayPlaneManager& dpm)
- : mType(type),
+PhysicalDevice::PhysicalDevice(uint32_t disp, uint32_t type, Hwcomposer& hwc, DisplayPlaneManager& dpm)
+ : mDisp(disp),
+ mType(type),
mHwc(hwc),
mDisplayPlaneManager(dpm),
mActiveDisplayConfig(-1),
@@ -62,7 +63,7 @@ void PhysicalDevice::onGeometryChanged(hwc_display_contents_1_t *list)
return;
}
- ALOGTRACE("disp = %d, layer number = %d", mType, list->numHwLayers);
+ ALOGTRACE("disp = %d, layer number = %d", mDisp, list->numHwLayers);
// NOTE: should NOT be here
if (mLayerList) {
@@ -131,7 +132,7 @@ bool PhysicalDevice::vsyncControl(bool enabled)
{
RETURN_FALSE_IF_NOT_INIT();
- ALOGTRACE("disp = %d, enabled = %d", mType, enabled);
+ ALOGTRACE("disp = %d, enabled = %d", mDisp, enabled);
return mVsyncObserver->control(enabled);
}
@@ -140,7 +141,7 @@ bool PhysicalDevice::blank(bool blank)
RETURN_FALSE_IF_NOT_INIT();
mBlank = blank;
- bool ret = mBlankControl->blank(mType, blank);
+ bool ret = mBlankControl->blank(mDisp, blank);
if (ret == false) {
ELOGTRACE("failed to blank device");
return false;
diff --git a/moorefield_hdmi/common/devices/PrimaryDevice.cpp b/moorefield_hdmi/common/devices/PrimaryDevice.cpp
index 62a573c..6f0126e 100755
--- a/moorefield_hdmi/common/devices/PrimaryDevice.cpp
+++ b/moorefield_hdmi/common/devices/PrimaryDevice.cpp
@@ -22,8 +22,8 @@
namespace android {
namespace intel {
-PrimaryDevice::PrimaryDevice(Hwcomposer& hwc, DisplayPlaneManager& dpm)
- : PhysicalDevice(DEVICE_PRIMARY, hwc, dpm)
+PrimaryDevice::PrimaryDevice(uint32_t disp, Hwcomposer& hwc, DisplayPlaneManager& dpm)
+ : PhysicalDevice(disp, DEVICE_PRIMARY, hwc, dpm)
{
CTRACE();
}
diff --git a/moorefield_hdmi/include/DummyDevice.h b/moorefield_hdmi/include/DummyDevice.h
index 74625a9..9bae6e4 100755
--- a/moorefield_hdmi/include/DummyDevice.h
+++ b/moorefield_hdmi/include/DummyDevice.h
@@ -26,7 +26,7 @@ class SoftVsyncObserver;
class DummyDevice : public IDisplayDevice {
public:
- DummyDevice(uint32_t type, Hwcomposer& hwc);
+ DummyDevice(uint32_t disp, Hwcomposer& hwc);
virtual ~DummyDevice();
public:
@@ -61,7 +61,7 @@ protected:
bool mInitialized;
bool mConnected;
bool mBlank;
- uint32_t mType;
+ uint32_t mDisp;
Hwcomposer& mHwc;
SoftVsyncObserver *mVsyncObserver;
diff --git a/moorefield_hdmi/include/ExternalDevice.h b/moorefield_hdmi/include/ExternalDevice.h
index cff2b83..a88f7eb 100755
--- a/moorefield_hdmi/include/ExternalDevice.h
+++ b/moorefield_hdmi/include/ExternalDevice.h
@@ -27,7 +27,7 @@ namespace intel {
class ExternalDevice : public PhysicalDevice {
public:
- ExternalDevice(Hwcomposer& hwc, DisplayPlaneManager& dpm);
+ ExternalDevice(uint32_t disp, Hwcomposer& hwc, DisplayPlaneManager& dpm);
virtual ~ExternalDevice();
public:
virtual bool initialize();
diff --git a/moorefield_hdmi/include/PhysicalDevice.h b/moorefield_hdmi/include/PhysicalDevice.h
index f271021..795fb9b 100755
--- a/moorefield_hdmi/include/PhysicalDevice.h
+++ b/moorefield_hdmi/include/PhysicalDevice.h
@@ -32,7 +32,7 @@ class Hwcomposer;
// Base class for primary and external devices
class PhysicalDevice : public IDisplayDevice {
public:
- PhysicalDevice(uint32_t type, Hwcomposer& hwc, DisplayPlaneManager& dpm);
+ PhysicalDevice(uint32_t disp, uint32_t type, Hwcomposer& hwc, DisplayPlaneManager& dpm);
virtual ~PhysicalDevice();
public:
virtual bool prePrepare(hwc_display_contents_1_t *display);
@@ -78,6 +78,7 @@ protected:
friend class VsyncEventObserver;
protected:
+ uint32_t mDisp;
uint32_t mType;
const char *mName;
diff --git a/moorefield_hdmi/include/PrimaryDevice.h b/moorefield_hdmi/include/PrimaryDevice.h
index 5ed6e93..00ab621 100755
--- a/moorefield_hdmi/include/PrimaryDevice.h
+++ b/moorefield_hdmi/include/PrimaryDevice.h
@@ -29,7 +29,7 @@ namespace intel {
class PrimaryDevice : public PhysicalDevice {
public:
- PrimaryDevice(Hwcomposer& hwc, DisplayPlaneManager& dpm);
+ PrimaryDevice(uint32_t disp, Hwcomposer& hwc, DisplayPlaneManager& dpm);
virtual ~PrimaryDevice();
public:
virtual bool initialize();
diff --git a/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.cpp b/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.cpp
index 8c36743..9def68d 100755
--- a/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.cpp
+++ b/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.cpp
@@ -23,9 +23,9 @@
namespace android {
namespace intel {
-PlatfExternalDevice::PlatfExternalDevice(Hwcomposer& hwc,
+PlatfExternalDevice::PlatfExternalDevice(uint32_t disp, Hwcomposer& hwc,
DisplayPlaneManager& dpm)
- : ExternalDevice(hwc, dpm)
+ : ExternalDevice(disp, hwc, dpm)
{
CTRACE();
}
diff --git a/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.h b/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.h
index 7289260..edadd9a 100755
--- a/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.h
+++ b/moorefield_hdmi/platforms/merrifield_plus/PlatfExternalDevice.h
@@ -23,7 +23,7 @@ namespace intel {
class PlatfExternalDevice : public ExternalDevice {
public:
- PlatfExternalDevice(Hwcomposer& hwc,
+ PlatfExternalDevice(uint32_t disp, Hwcomposer& hwc,
DisplayPlaneManager& dpm);
virtual ~PlatfExternalDevice();
diff --git a/moorefield_hdmi/platforms/merrifield_plus/PlatfHwcomposer.cpp b/moorefield_hdmi/platforms/merrifield_plus/PlatfHwcomposer.cpp
index a681579..311cfca 100755
--- a/moorefield_hdmi/platforms/merrifield_plus/PlatfHwcomposer.cpp
+++ b/moorefield_hdmi/platforms/merrifield_plus/PlatfHwcomposer.cpp
@@ -59,16 +59,16 @@ IDisplayDevice* PlatfHwcomposer::createDisplayDevice(int disp,
switch (disp) {
case IDisplayDevice::DEVICE_PRIMARY:
#ifdef INTEL_SUPPORT_HDMI_PRIMARY
- return new PlatfExternalDevice(*this, dpm);
+ return new PlatfExternalDevice((uint32_t)disp, *this, dpm);
#else
- return new PlatfPrimaryDevice(*this, dpm);
+ return new PlatfPrimaryDevice((uint32_t)disp, *this, dpm);
#endif
case IDisplayDevice::DEVICE_EXTERNAL:
#ifdef INTEL_SUPPORT_HDMI_PRIMARY
return new DummyDevice((uint32_t)disp, *this);
#else
- return new PlatfExternalDevice(*this, dpm);
+ return new PlatfExternalDevice((uint32_t)disp, *this, dpm);
#endif
case IDisplayDevice::DEVICE_VIRTUAL:
diff --git a/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.cpp b/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.cpp
index d819e75..cd64246 100755
--- a/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.cpp
+++ b/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.cpp
@@ -22,9 +22,9 @@
namespace android {
namespace intel {
-PlatfPrimaryDevice::PlatfPrimaryDevice(Hwcomposer& hwc,
+PlatfPrimaryDevice::PlatfPrimaryDevice(uint32_t disp, Hwcomposer& hwc,
DisplayPlaneManager& dpm)
- : PrimaryDevice(hwc, dpm)
+ : PrimaryDevice(disp, hwc, dpm)
{
CTRACE();
}
diff --git a/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.h b/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.h
index 14404d2..8684370 100755
--- a/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.h
+++ b/moorefield_hdmi/platforms/merrifield_plus/PlatfPrimaryDevice.h
@@ -24,7 +24,7 @@ namespace intel {
class PlatfPrimaryDevice : public PrimaryDevice {
public:
- PlatfPrimaryDevice(Hwcomposer& hwc,
+ PlatfPrimaryDevice(uint32_t disp, Hwcomposer& hwc,
DisplayPlaneManager& dpm);
virtual ~PlatfPrimaryDevice();