sdm: hw: Redesign the hw interface and implementation
The new structure eliminates the unnecessary multiple inheritance
and a lot of code bloat.
The structure now is:
HWInterface <>--- HWDevice <>--- HW{Primary, HDMI, Virtual}
Change-Id: Ieb4c97da039640f4499c788b69d5bda3c6146abe
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 118c036..2035813 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -118,8 +118,6 @@
display_attributes_ = NULL;
}
- hw_intf_->Close();
-
return error;
}
@@ -140,8 +138,6 @@
display_attributes_ = NULL;
}
- hw_intf_->Close();
-
return kErrorNone;
}
diff --git a/sdm/libs/core/display_hdmi.cpp b/sdm/libs/core/display_hdmi.cpp
index dcabb7b..cdf7aca 100644
--- a/sdm/libs/core/display_hdmi.cpp
+++ b/sdm/libs/core/display_hdmi.cpp
@@ -26,8 +26,9 @@
#include <utils/debug.h>
#include "display_hdmi.h"
-#include "hw_hdmi_interface.h"
+#include "hw_interface.h"
#include "hw_info_interface.h"
+#include "fb/hw_hdmi.h"
#define __CLASS__ "DisplayHDMI"
@@ -43,21 +44,15 @@
DisplayError DisplayHDMI::Init() {
SCOPE_LOCK(locker_);
- DisplayError error = HWHDMIInterface::Create(&hw_hdmi_intf_, hw_info_intf_,
- DisplayBase::buffer_sync_handler_);
- if (error != kErrorNone) {
- return error;
- }
-
- DisplayBase::hw_intf_ = hw_hdmi_intf_;
- error = hw_hdmi_intf_->Open(NULL);
+ DisplayError error = HWHDMI::Create(&hw_intf_, hw_info_intf_,
+ DisplayBase::buffer_sync_handler_);
if (error != kErrorNone) {
return error;
}
error = DisplayBase::Init();
if (error != kErrorNone) {
- HWHDMIInterface::Destroy(hw_hdmi_intf_);
+ HWHDMI::Destroy(hw_intf_);
}
GetScanSupport();
@@ -70,10 +65,7 @@
SCOPE_LOCK(locker_);
DisplayError error = DisplayBase::Deinit();
- if (error != kErrorNone) {
- return error;
- }
- HWHDMIInterface::Destroy(hw_hdmi_intf_);
+ HWHDMI::Destroy(hw_intf_);
return error;
}
@@ -178,7 +170,7 @@
DisplayError DisplayHDMI::OnMinHdcpEncryptionLevelChange() {
SCOPE_LOCK(locker_);
- return hw_hdmi_intf_->OnMinHdcpEncryptionLevelChange();
+ return hw_intf_->OnMinHdcpEncryptionLevelChange();
}
int DisplayHDMI::GetBestConfig() {
@@ -227,14 +219,14 @@
uint32_t video_format = -1;
uint32_t max_cea_format = -1;
HWScanInfo scan_info = HWScanInfo();
- hw_hdmi_intf_->GetHWScanInfo(&scan_info);
+ hw_intf_->GetHWScanInfo(&scan_info);
- error = hw_hdmi_intf_->GetVideoFormat(active_mode_index_, &video_format);
+ error = hw_intf_->GetVideoFormat(active_mode_index_, &video_format);
if (error != kErrorNone) {
return;
}
- error = hw_hdmi_intf_->GetMaxCEAFormat(&max_cea_format);
+ error = hw_intf_->GetMaxCEAFormat(&max_cea_format);
if (error != kErrorNone) {
return;
}
diff --git a/sdm/libs/core/display_hdmi.h b/sdm/libs/core/display_hdmi.h
index 8e96828..d3ff97b 100644
--- a/sdm/libs/core/display_hdmi.h
+++ b/sdm/libs/core/display_hdmi.h
@@ -68,7 +68,6 @@
virtual void GetScanSupport();
Locker locker_;
- HWHDMIInterface *hw_hdmi_intf_;
HWScanSupport scan_support_;
};
diff --git a/sdm/libs/core/display_primary.cpp b/sdm/libs/core/display_primary.cpp
index 365b601..d1ce1ff 100644
--- a/sdm/libs/core/display_primary.cpp
+++ b/sdm/libs/core/display_primary.cpp
@@ -26,8 +26,9 @@
#include <utils/debug.h>
#include "display_primary.h"
-#include "hw_primary_interface.h"
+#include "hw_interface.h"
#include "hw_info_interface.h"
+#include "fb/hw_primary.h"
#define __CLASS__ "DisplayPrimary"
@@ -43,31 +44,26 @@
DisplayError DisplayPrimary::Init() {
SCOPE_LOCK(locker_);
- DisplayError error = HWPrimaryInterface::Create(&hw_primary_intf_, hw_info_intf_,
- DisplayBase::buffer_sync_handler_);
- if (error != kErrorNone) {
- return error;
- }
- DisplayBase::hw_intf_ = hw_primary_intf_;
+ DisplayError error = HWPrimary::Create(&hw_intf_, hw_info_intf_,
+ DisplayBase::buffer_sync_handler_, this);
- error = hw_primary_intf_->Open(this);
if (error != kErrorNone) {
return error;
}
error = DisplayBase::Init();
if (error != kErrorNone) {
- HWPrimaryInterface::Destroy(hw_primary_intf_);
+ HWPrimary::Destroy(hw_intf_);
return error;
}
// Idle fallback feature is supported only for video mode panel.
if (hw_panel_info_.mode == kModeVideo) {
- hw_primary_intf_->SetIdleTimeoutMs(Debug::GetIdleTimeoutMs());
+ hw_intf_->SetIdleTimeoutMs(Debug::GetIdleTimeoutMs());
}
if (hw_panel_info_.mode == kModeCommand && Debug::IsVideoModeEnabled()) {
- error = hw_primary_intf_->SetDisplayMode(kModeVideo);
+ error = hw_intf_->SetDisplayMode(kModeVideo);
if (error != kErrorNone) {
DLOGW("Retaining current display mode. Current = %d, Requested = %d", hw_panel_info_.mode,
kModeVideo);
@@ -81,10 +77,7 @@
SCOPE_LOCK(locker_);
DisplayError error = DisplayBase::Deinit();
- if (error != kErrorNone) {
- return error;
- }
- HWPrimaryInterface::Destroy(hw_primary_intf_);
+ HWPrimary::Destroy(hw_intf_);
return error;
}
@@ -105,9 +98,9 @@
return error;
}
- hw_primary_intf_->GetHWPanelInfo(&panel_info);
+ hw_intf_->GetHWPanelInfo(&panel_info);
- hw_primary_intf_->GetDisplayAttributes(&display_attributes, active_mode_index_);
+ hw_intf_->GetDisplayAttributes(&display_attributes, active_mode_index_);
if (panel_info != hw_panel_info_ ||
display_attributes != display_attributes_[active_mode_index_]) {
@@ -179,7 +172,7 @@
SCOPE_LOCK(locker_);
DisplayError error = kErrorNone;
if (vsync_enable_ != enable) {
- error = hw_primary_intf_->SetVSyncState(enable);
+ error = hw_intf_->SetVSyncState(enable);
if (error == kErrorNone) {
vsync_enable_ = enable;
}
@@ -192,7 +185,7 @@
SCOPE_LOCK(locker_);
// Idle fallback feature is supported only for video mode panel.
if (hw_panel_info_.mode == kModeVideo) {
- hw_primary_intf_->SetIdleTimeoutMs(timeout_ms);
+ hw_intf_->SetIdleTimeoutMs(timeout_ms);
}
}
@@ -229,7 +222,7 @@
return kErrorNone;
}
- error = hw_primary_intf_->SetDisplayMode(hw_display_mode);
+ error = hw_intf_->SetDisplayMode(hw_display_mode);
if (error != kErrorNone) {
DLOGW("Retaining current display mode. Current = %d, Requested = %d", hw_panel_info_.mode,
hw_display_mode);
@@ -240,7 +233,7 @@
}
DisplayError DisplayPrimary::SetPanelBrightness(int level) {
SCOPE_LOCK(locker_);
- return hw_primary_intf_->SetPanelBrightness(level);
+ return hw_intf_->SetPanelBrightness(level);
}
DisplayError DisplayPrimary::IsScalingValid(const LayerRect &crop, const LayerRect &dst,
@@ -263,7 +256,7 @@
refresh_rate = hw_panel_info_.min_fps;
}
- return hw_primary_intf_->SetRefreshRate(refresh_rate);
+ return hw_intf_->SetRefreshRate(refresh_rate);
}
void DisplayPrimary::AppendDump(char *buffer, uint32_t length) {
diff --git a/sdm/libs/core/display_primary.h b/sdm/libs/core/display_primary.h
index 64a47af..9f7f5b5 100644
--- a/sdm/libs/core/display_primary.h
+++ b/sdm/libs/core/display_primary.h
@@ -70,7 +70,6 @@
private:
Locker locker_;
- HWPrimaryInterface *hw_primary_intf_;
};
} // namespace sdm
diff --git a/sdm/libs/core/display_virtual.cpp b/sdm/libs/core/display_virtual.cpp
index 61bf74e..56d2f93 100644
--- a/sdm/libs/core/display_virtual.cpp
+++ b/sdm/libs/core/display_virtual.cpp
@@ -26,8 +26,9 @@
#include <utils/debug.h>
#include "display_virtual.h"
-#include "hw_virtual_interface.h"
+#include "hw_interface.h"
#include "hw_info_interface.h"
+#include "fb/hw_virtual.h"
#define __CLASS__ "DisplayVirtual"
@@ -43,21 +44,15 @@
DisplayError DisplayVirtual::Init() {
SCOPE_LOCK(locker_);
- DisplayError error = HWVirtualInterface::Create(&hw_virtual_intf_, hw_info_intf_,
- DisplayBase::buffer_sync_handler_);
- if (error != kErrorNone) {
- return error;
- }
-
- DisplayBase::hw_intf_ = hw_virtual_intf_;
- error = hw_virtual_intf_->Open(NULL);
+ DisplayError error = HWVirtual::Create(&hw_intf_, hw_info_intf_,
+ DisplayBase::buffer_sync_handler_);
if (error != kErrorNone) {
return error;
}
error = DisplayBase::Init();
if (error != kErrorNone) {
- HWVirtualInterface::Destroy(hw_virtual_intf_);
+ HWVirtual::Destroy(hw_intf_);
}
return error;
@@ -67,10 +62,7 @@
SCOPE_LOCK(locker_);
DisplayError error = DisplayBase::Deinit();
- if (error != kErrorNone) {
- return error;
- }
- HWVirtualInterface::Destroy(hw_virtual_intf_);
+ HWVirtual::Destroy(hw_intf_);
return error;
}
diff --git a/sdm/libs/core/display_virtual.h b/sdm/libs/core/display_virtual.h
index f7c3160..45198bc 100644
--- a/sdm/libs/core/display_virtual.h
+++ b/sdm/libs/core/display_virtual.h
@@ -64,7 +64,6 @@
private:
Locker locker_;
- HWVirtualInterface *hw_virtual_intf_;
};
} // namespace sdm
diff --git a/sdm/libs/core/fb/hw_device.cpp b/sdm/libs/core/fb/hw_device.cpp
index 2304720..f9d05eb 100644
--- a/sdm/libs/core/fb/hw_device.cpp
+++ b/sdm/libs/core/fb/hw_device.cpp
@@ -45,6 +45,7 @@
#include <utils/sys.h>
#include "hw_device.h"
+#include "hw_info_interface.h"
#define __CLASS__ "HWDevice"
@@ -55,8 +56,11 @@
buffer_sync_handler_(buffer_sync_handler), synchronous_commit_(false) {
}
-DisplayError HWDevice::Init() {
+DisplayError HWDevice::Init(HWEventHandler *eventhandler) {
DisplayError error = kErrorNone;
+ char device_name[64] = {0};
+
+ event_handler_ = eventhandler;
// Read the fb node index
fb_node_index_ = GetFBNodeIndex(device_type_);
@@ -71,19 +75,7 @@
hw_resource_ = HWResourceInfo();
hw_info_intf_->GetHWResourceInfo(&hw_resource_);
- return error;
-}
-
-DisplayError HWDevice::Open(HWEventHandler *eventhandler) {
- DisplayError error = kErrorNone;
-
- char device_name[64] = {0};
-
- // Store EventHandlers for two Physical displays, i.e., Primary and HDMI
- // TODO(user): Need to revisit for HDMI as Primary usecase
- event_handler_ = eventhandler;
snprintf(device_name, sizeof(device_name), "%s%d", "/dev/graphics/fb", fb_node_index_);
-
device_fd_ = Sys::open_(device_name, O_RDWR);
if (device_fd_ < 0) {
DLOGE("open %s failed err = %d errstr = %s", device_name, errno, strerror(errno));
@@ -93,9 +85,10 @@
return error;
}
-DisplayError HWDevice::Close() {
- if (device_fd_ > 0) {
+DisplayError HWDevice::Deinit() {
+ if (device_fd_ >= 0) {
Sys::close_(device_fd_);
+ device_fd_ = -1;
}
return kErrorNone;
@@ -981,5 +974,48 @@
return kErrorNone;
}
+DisplayError HWDevice::GetPPFeaturesVersion(PPFeatureVersion *vers) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::SetPPFeatures(PPFeaturesConfig *feature_list) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::SetVSyncState(bool enable) {
+ return kErrorNotSupported;
+}
+
+void HWDevice::SetIdleTimeoutMs(uint32_t timeout_ms) {
+}
+
+DisplayError HWDevice::SetDisplayMode(const HWDisplayMode hw_display_mode) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::SetRefreshRate(uint32_t refresh_rate) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::SetPanelBrightness(int level) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::GetHWScanInfo(HWScanInfo *scan_info) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::GetVideoFormat(uint32_t config_index, uint32_t *video_format) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::GetMaxCEAFormat(uint32_t *max_cea_format) {
+ return kErrorNotSupported;
+}
+
+DisplayError HWDevice::OnMinHdcpEncryptionLevelChange() {
+ return kErrorNotSupported;
+}
+
} // namespace sdm
diff --git a/sdm/libs/core/fb/hw_device.h b/sdm/libs/core/fb/hw_device.h
index 74cb626..bc2d0f0 100644
--- a/sdm/libs/core/fb/hw_device.h
+++ b/sdm/libs/core/fb/hw_device.h
@@ -31,34 +31,49 @@
#include <pthread.h>
#include "hw_interface.h"
-#include "hw_info_interface.h"
#define IOCTL_LOGE(ioctl, type) DLOGE("ioctl %s, device = %d errno = %d, desc = %s", #ioctl, \
type, errno, strerror(errno))
namespace sdm {
+class HWInfoInterface;
-class HWDevice {
+class HWDevice : public HWInterface {
protected:
explicit HWDevice(BufferSyncHandler *buffer_sync_handler);
- DisplayError Init();
- DisplayError Open(HWEventHandler *eventhandler);
- DisplayError Close();
- DisplayError GetNumDisplayAttributes(uint32_t *count);
- DisplayError GetDisplayAttributes(HWDisplayAttributes *display_attributes,
- uint32_t index);
- DisplayError GetHWPanelInfo(HWPanelInfo *panel_info);
- DisplayError SetDisplayAttributes(uint32_t index);
- DisplayError GetConfigIndex(uint32_t mode, uint32_t *index);
- DisplayError PowerOn();
- DisplayError PowerOff();
- DisplayError Doze();
- DisplayError DozeSuspend();
- DisplayError Standby();
- DisplayError Validate(HWLayers *hw_layers);
- DisplayError Commit(HWLayers *hw_layers);
- DisplayError Flush();
- DisplayError SetCursorPosition(HWLayers *hw_layers, int x, int y);
+ virtual ~HWDevice() {}
+
+ // From HWInterface
+ virtual DisplayError GetNumDisplayAttributes(uint32_t *count);
+ virtual DisplayError GetDisplayAttributes(HWDisplayAttributes *display_attributes,
+ uint32_t index);
+ virtual DisplayError GetHWPanelInfo(HWPanelInfo *panel_info);
+ virtual DisplayError SetDisplayAttributes(uint32_t index);
+ virtual DisplayError GetConfigIndex(uint32_t mode, uint32_t *index);
+ virtual DisplayError PowerOn();
+ virtual DisplayError PowerOff();
+ virtual DisplayError Doze();
+ virtual DisplayError DozeSuspend();
+ virtual DisplayError Standby();
+ virtual DisplayError Validate(HWLayers *hw_layers);
+ virtual DisplayError Commit(HWLayers *hw_layers);
+ virtual DisplayError Flush();
+ virtual DisplayError GetPPFeaturesVersion(PPFeatureVersion *vers);
+ virtual DisplayError SetPPFeatures(PPFeaturesConfig *feature_list);
+ virtual DisplayError SetVSyncState(bool enable);
+ virtual void SetIdleTimeoutMs(uint32_t timeout_ms);
+ virtual DisplayError SetDisplayMode(const HWDisplayMode hw_display_mode);
+ virtual DisplayError SetRefreshRate(uint32_t refresh_rate);
+ virtual DisplayError SetPanelBrightness(int level);
+ virtual DisplayError GetHWScanInfo(HWScanInfo *scan_info);
+ virtual DisplayError GetVideoFormat(uint32_t config_index, uint32_t *video_format);
+ virtual DisplayError GetMaxCEAFormat(uint32_t *max_cea_format);
+ virtual DisplayError SetCursorPosition(HWLayers *hw_layers, int x, int y);
+ virtual DisplayError OnMinHdcpEncryptionLevelChange();
+
+ // For HWDevice derivatives
+ virtual DisplayError Init(HWEventHandler *eventhandler);
+ virtual DisplayError Deinit();
enum {
kHWEventVSync,
diff --git a/sdm/libs/core/fb/hw_hdmi.cpp b/sdm/libs/core/fb/hw_hdmi.cpp
index 56b329a..ac68967 100644
--- a/sdm/libs/core/fb/hw_hdmi.cpp
+++ b/sdm/libs/core/fb/hw_hdmi.cpp
@@ -74,13 +74,13 @@
return true;
}
-DisplayError HWHDMIInterface::Create(HWHDMIInterface **intf, HWInfoInterface *hw_info_intf,
- BufferSyncHandler *buffer_sync_handler) {
+DisplayError HWHDMI::Create(HWInterface **intf, HWInfoInterface *hw_info_intf,
+ BufferSyncHandler *buffer_sync_handler) {
DisplayError error = kErrorNone;
HWHDMI *hw_fb_hdmi = NULL;
hw_fb_hdmi = new HWHDMI(buffer_sync_handler, hw_info_intf);
- error = hw_fb_hdmi->Init();
+ error = hw_fb_hdmi->Init(NULL);
if (error != kErrorNone) {
delete hw_fb_hdmi;
} else {
@@ -89,7 +89,7 @@
return error;
}
-DisplayError HWHDMIInterface::Destroy(HWHDMIInterface *intf) {
+DisplayError HWHDMI::Destroy(HWInterface *intf) {
HWHDMI *hw_fb_hdmi = static_cast<HWHDMI *>(intf);
hw_fb_hdmi->Deinit();
delete hw_fb_hdmi;
@@ -104,10 +104,10 @@
HWDevice::hw_info_intf_ = hw_info_intf;
}
-DisplayError HWHDMI::Init() {
+DisplayError HWHDMI::Init(HWEventHandler *eventhandler) {
DisplayError error = kErrorNone;
- error = HWDevice::Init();
+ error = HWDevice::Init(eventhandler);
if (error != kErrorNone) {
return error;
}
@@ -147,15 +147,7 @@
delete supported_video_modes_;
}
- return kErrorNone;
-}
-
-DisplayError HWHDMI::Open(HWEventHandler *eventhandler) {
- return HWDevice::Open(eventhandler);
-}
-
-DisplayError HWHDMI::Close() {
- return HWDevice::Close();
+ return HWDevice::Deinit();
}
DisplayError HWHDMI::GetNumDisplayAttributes(uint32_t *count) {
@@ -315,43 +307,11 @@
return kErrorNotSupported;
}
-DisplayError HWHDMI::PowerOn() {
- return HWDevice::PowerOn();
-}
-
-DisplayError HWHDMI::PowerOff() {
- return HWDevice::PowerOff();
-}
-
-DisplayError HWHDMI::Doze() {
- return HWDevice::Doze();
-}
-
-DisplayError HWHDMI::DozeSuspend() {
- return HWDevice::DozeSuspend();
-}
-
-DisplayError HWHDMI::Standby() {
- return HWDevice::Standby();
-}
-
DisplayError HWHDMI::Validate(HWLayers *hw_layers) {
HWDevice::ResetDisplayParams();
return HWDevice::Validate(hw_layers);
}
-DisplayError HWHDMI::Commit(HWLayers *hw_layers) {
- return HWDevice::Commit(hw_layers);
-}
-
-DisplayError HWHDMI::Flush() {
- return HWDevice::Flush();
-}
-
-DisplayError HWHDMI::GetHWPanelInfo(HWPanelInfo *panel_info) {
- return HWDevice::GetHWPanelInfo(panel_info);
-}
-
DisplayError HWHDMI::GetHWScanInfo(HWScanInfo *scan_info) {
if (!scan_info) {
return kErrorParameters;
@@ -458,14 +418,6 @@
hw_scan_info_.cea_scan_support);
}
-DisplayError HWHDMI::GetPPFeaturesVersion(PPFeatureVersion *vers) {
- return kErrorNotSupported;
-}
-
-DisplayError HWHDMI::SetPPFeatures(PPFeaturesConfig *feature_list) {
- return kErrorNotSupported;
-}
-
int HWHDMI::OpenResolutionFile(int file_mode) {
char file_path[kMaxStringLength];
memset(file_path, 0, sizeof(file_path));
@@ -577,9 +529,5 @@
return is_file_present;
}
-DisplayError HWHDMI::SetCursorPosition(HWLayers *hw_layers, int x, int y) {
- return HWDevice::SetCursorPosition(hw_layers, x, y);
-}
-
} // namespace sdm
diff --git a/sdm/libs/core/fb/hw_hdmi.h b/sdm/libs/core/fb/hw_hdmi.h
index 2d2d557..5352249 100644
--- a/sdm/libs/core/fb/hw_hdmi.h
+++ b/sdm/libs/core/fb/hw_hdmi.h
@@ -27,38 +27,29 @@
#include <video/msm_hdmi_modes.h>
#include "hw_device.h"
-#include "hw_hdmi_interface.h"
namespace sdm {
-class HWHDMI : public HWDevice, public HWHDMIInterface {
+class HWHDMI : public HWDevice {
public:
+ static DisplayError Create(HWInterface **intf, HWInfoInterface *hw_info_intf,
+ BufferSyncHandler *buffer_sync_handler);
+ static DisplayError Destroy(HWInterface *intf);
+
+ protected:
HWHDMI(BufferSyncHandler *buffer_sync_handler, HWInfoInterface *hw_info_intf);
- virtual DisplayError Init();
+ virtual DisplayError Init(HWEventHandler *eventhandler);
virtual DisplayError Deinit();
- virtual DisplayError Open(HWEventHandler *eventhandler);
- virtual DisplayError Close();
virtual DisplayError GetNumDisplayAttributes(uint32_t *count);
virtual DisplayError GetDisplayAttributes(HWDisplayAttributes *display_attributes,
uint32_t index);
- virtual DisplayError GetHWPanelInfo(HWPanelInfo *panel_info);
virtual DisplayError GetHWScanInfo(HWScanInfo *scan_info);
virtual DisplayError GetVideoFormat(uint32_t config_index, uint32_t *video_format);
virtual DisplayError GetMaxCEAFormat(uint32_t *max_cea_format);
virtual DisplayError OnMinHdcpEncryptionLevelChange();
virtual DisplayError SetDisplayAttributes(uint32_t index);
virtual DisplayError GetConfigIndex(uint32_t mode, uint32_t *index);
- virtual DisplayError PowerOn();
- virtual DisplayError PowerOff();
- virtual DisplayError Doze();
- virtual DisplayError DozeSuspend();
- virtual DisplayError Standby();
virtual DisplayError Validate(HWLayers *hw_layers);
- virtual DisplayError Commit(HWLayers *hw_layers);
- virtual DisplayError Flush();
- virtual DisplayError GetPPFeaturesVersion(PPFeatureVersion *vers);
- virtual DisplayError SetPPFeatures(PPFeaturesConfig *feature_list);
- virtual DisplayError SetCursorPosition(HWLayers *hw_layers, int x, int y);
private:
DisplayError ReadEDIDInfo();
diff --git a/sdm/libs/core/fb/hw_primary.cpp b/sdm/libs/core/fb/hw_primary.cpp
index c407da1..475ed07 100644
--- a/sdm/libs/core/fb/hw_primary.cpp
+++ b/sdm/libs/core/fb/hw_primary.cpp
@@ -46,13 +46,14 @@
namespace sdm {
-DisplayError HWPrimaryInterface::Create(HWPrimaryInterface **intf, HWInfoInterface *hw_info_intf,
- BufferSyncHandler *buffer_sync_handler) {
+DisplayError HWPrimary::Create(HWInterface **intf, HWInfoInterface *hw_info_intf,
+ BufferSyncHandler *buffer_sync_handler,
+ HWEventHandler *eventhandler) {
DisplayError error = kErrorNone;
HWPrimary *hw_primary = NULL;
hw_primary = new HWPrimary(buffer_sync_handler, hw_info_intf);
- error = hw_primary->Init();
+ error = hw_primary->Init(eventhandler);
if (error != kErrorNone) {
delete hw_primary;
} else {
@@ -62,7 +63,7 @@
return error;
}
-DisplayError HWPrimaryInterface::Destroy(HWPrimaryInterface *intf) {
+DisplayError HWPrimary::Destroy(HWInterface *intf) {
HWPrimary *hw_primary = static_cast<HWPrimary *>(intf);
hw_primary->Deinit();
delete hw_primary;
@@ -78,14 +79,14 @@
HWDevice::hw_info_intf_ = hw_info_intf;
}
-DisplayError HWPrimary::Init() {
+DisplayError HWPrimary::Init(HWEventHandler *eventhandler) {
DisplayError error = kErrorNone;
char node_path[kMaxStringLength] = {0};
char data[kMaxStringLength] = {0};
const char* event_name[kNumDisplayEvents] = {"vsync_event", "show_blank_event", "idle_notify",
"msm_fb_thermal_level"};
- error = HWDevice::Init();
+ error = HWDevice::Init(eventhandler);
if (error != kErrorNone) {
goto CleanupOnError;
}
@@ -153,15 +154,7 @@
Sys::close_(poll_fds_[event].fd);
}
- return kErrorNone;
-}
-
-DisplayError HWPrimary::Open(HWEventHandler *eventhandler) {
- return HWDevice::Open(eventhandler);
-}
-
-DisplayError HWPrimary::Close() {
- return HWDevice::Close();
+ return HWDevice::Deinit();
}
DisplayError HWPrimary::GetNumDisplayAttributes(uint32_t *count) {
@@ -274,10 +267,6 @@
return HWDevice::GetConfigIndex(mode, index);
}
-DisplayError HWPrimary::PowerOn() {
- return HWDevice::PowerOn();
-}
-
DisplayError HWPrimary::PowerOff() {
if (Sys::ioctl_(device_fd_, FBIOBLANK, FB_BLANK_POWERDOWN) < 0) {
IOCTL_LOGE(FB_BLANK_POWERDOWN, device_type_);
@@ -305,10 +294,6 @@
return kErrorNone;
}
-DisplayError HWPrimary::Standby() {
- return HWDevice::Standby();
-}
-
DisplayError HWPrimary::Validate(HWLayers *hw_layers) {
HWDevice::ResetDisplayParams();
@@ -334,18 +319,6 @@
return HWDevice::Validate(hw_layers);
}
-DisplayError HWPrimary::Commit(HWLayers *hw_layers) {
- return HWDevice::Commit(hw_layers);
-}
-
-DisplayError HWPrimary::Flush() {
- return HWDevice::Flush();
-}
-
-DisplayError HWPrimary::GetHWPanelInfo(HWPanelInfo *panel_info) {
- return HWDevice::GetHWPanelInfo(panel_info);
-}
-
void* HWPrimary::DisplayEventThread(void *context) {
if (context) {
return reinterpret_cast<HWPrimary *>(context)->DisplayEventThreadHandler();
@@ -584,9 +557,5 @@
return kErrorNone;
}
-DisplayError HWPrimary::SetCursorPosition(HWLayers *hw_layers, int x, int y) {
- return HWDevice::SetCursorPosition(hw_layers, x, y);
-}
-
} // namespace sdm
diff --git a/sdm/libs/core/fb/hw_primary.h b/sdm/libs/core/fb/hw_primary.h
index 1614ee1..6006f35 100644
--- a/sdm/libs/core/fb/hw_primary.h
+++ b/sdm/libs/core/fb/hw_primary.h
@@ -28,32 +28,29 @@
#include <sys/poll.h>
#include "hw_device.h"
-#include "hw_primary_interface.h"
namespace sdm {
#define MAX_SYSFS_COMMAND_LENGTH 12
-class HWPrimary : public HWDevice, public HWPrimaryInterface {
+class HWPrimary : public HWDevice {
public:
+ static DisplayError Create(HWInterface **intf, HWInfoInterface *hw_info_intf,
+ BufferSyncHandler *buffer_sync_handler, HWEventHandler *eventhandler);
+ static DisplayError Destroy(HWInterface *intf);
+
+ protected:
HWPrimary(BufferSyncHandler *buffer_sync_handler, HWInfoInterface *hw_info_intf);
- virtual DisplayError Init();
+ virtual DisplayError Init(HWEventHandler *eventhandler);
virtual DisplayError Deinit();
- virtual DisplayError Open(HWEventHandler *eventhandler);
- virtual DisplayError Close();
virtual DisplayError GetNumDisplayAttributes(uint32_t *count);
virtual DisplayError GetDisplayAttributes(HWDisplayAttributes *display_attributes,
uint32_t index);
- virtual DisplayError GetHWPanelInfo(HWPanelInfo *panel_info);
virtual DisplayError SetDisplayAttributes(uint32_t index);
virtual DisplayError GetConfigIndex(uint32_t mode, uint32_t *index);
- virtual DisplayError PowerOn();
virtual DisplayError PowerOff();
virtual DisplayError Doze();
virtual DisplayError DozeSuspend();
- virtual DisplayError Standby();
virtual DisplayError Validate(HWLayers *hw_layers);
- virtual DisplayError Commit(HWLayers *hw_layers);
- virtual DisplayError Flush();
virtual void SetIdleTimeoutMs(uint32_t timeout_ms);
virtual DisplayError SetVSyncState(bool enable);
virtual DisplayError SetDisplayMode(const HWDisplayMode hw_display_mode);
@@ -61,7 +58,6 @@
virtual DisplayError SetPanelBrightness(int level);
virtual DisplayError GetPPFeaturesVersion(PPFeatureVersion *vers);
virtual DisplayError SetPPFeatures(PPFeaturesConfig *feature_list);
- virtual DisplayError SetCursorPosition(HWLayers *hw_layers, int x, int y);
private:
// Panel modes for the MSMFB_LPM_ENABLE ioctl
diff --git a/sdm/libs/core/fb/hw_virtual.cpp b/sdm/libs/core/fb/hw_virtual.cpp
index 5c3c8b4..033159f 100644
--- a/sdm/libs/core/fb/hw_virtual.cpp
+++ b/sdm/libs/core/fb/hw_virtual.cpp
@@ -34,13 +34,13 @@
namespace sdm {
-DisplayError HWVirtualInterface::Create(HWVirtualInterface **intf, HWInfoInterface *hw_info_intf,
- BufferSyncHandler *buffer_sync_handler) {
+DisplayError HWVirtual::Create(HWInterface **intf, HWInfoInterface *hw_info_intf,
+ BufferSyncHandler *buffer_sync_handler) {
DisplayError error = kErrorNone;
HWVirtual *hw_virtual = NULL;
hw_virtual = new HWVirtual(buffer_sync_handler, hw_info_intf);
- error = hw_virtual->Init();
+ error = hw_virtual->Init(NULL);
if (error != kErrorNone) {
delete hw_virtual;
} else {
@@ -50,7 +50,7 @@
return error;
}
-DisplayError HWVirtualInterface::Destroy(HWVirtualInterface *intf) {
+DisplayError HWVirtual::Destroy(HWInterface *intf) {
HWVirtual *hw_virtual = static_cast<HWVirtual *>(intf);
hw_virtual->Deinit();
delete hw_virtual;
@@ -65,57 +65,8 @@
HWDevice::hw_info_intf_ = hw_info_intf;
}
-DisplayError HWVirtual::Init() {
- return HWDevice::Init();
-}
-
-DisplayError HWVirtual::Deinit() {
- return kErrorNone;
-}
-
-DisplayError HWVirtual::Open(HWEventHandler *eventhandler) {
- return HWDevice::Open(eventhandler);
-}
-
-DisplayError HWVirtual::Close() {
- return HWDevice::Close();
-}
-
-DisplayError HWVirtual::GetNumDisplayAttributes(uint32_t *count) {
- return HWDevice::GetNumDisplayAttributes(count);
-}
-
-DisplayError HWVirtual::GetDisplayAttributes(HWDisplayAttributes *display_attributes,
- uint32_t index) {
- return HWDevice::GetDisplayAttributes(display_attributes, index);
-}
-
-DisplayError HWVirtual::SetDisplayAttributes(uint32_t index) {
- return HWDevice::SetDisplayAttributes(index);
-}
-
-DisplayError HWVirtual::GetConfigIndex(uint32_t mode, uint32_t *index) {
- return HWDevice::GetConfigIndex(mode, index);
-}
-
-DisplayError HWVirtual::PowerOn() {
- return HWDevice::PowerOn();
-}
-
-DisplayError HWVirtual::PowerOff() {
- return HWDevice::PowerOff();
-}
-
-DisplayError HWVirtual::Doze() {
- return HWDevice::Doze();
-}
-
-DisplayError HWVirtual::DozeSuspend() {
- return HWDevice::DozeSuspend();
-}
-
-DisplayError HWVirtual::Standby() {
- return HWDevice::Standby();
+DisplayError HWVirtual::Init(HWEventHandler *eventhandler) {
+ return HWDevice::Init(eventhandler);
}
DisplayError HWVirtual::Validate(HWLayers *hw_layers) {
@@ -123,29 +74,5 @@
return HWDevice::Validate(hw_layers);
}
-DisplayError HWVirtual::Commit(HWLayers *hw_layers) {
- return HWDevice::Commit(hw_layers);
-}
-
-DisplayError HWVirtual::Flush() {
- return HWDevice::Flush();
-}
-
-DisplayError HWVirtual::GetHWPanelInfo(HWPanelInfo *panel_info) {
- return HWDevice::GetHWPanelInfo(panel_info);
-}
-
-DisplayError HWVirtual::GetPPFeaturesVersion(PPFeatureVersion *vers) {
- return kErrorNotSupported;
-}
-
-DisplayError HWVirtual::SetPPFeatures(PPFeaturesConfig *feature_list) {
- return kErrorNotSupported;
-}
-
-DisplayError HWVirtual::SetCursorPosition(HWLayers *hw_layers, int x, int y) {
- return HWDevice::SetCursorPosition(hw_layers, x, y);
-}
-
} // namespace sdm
diff --git a/sdm/libs/core/fb/hw_virtual.h b/sdm/libs/core/fb/hw_virtual.h
index 573a371..2b740d5 100644
--- a/sdm/libs/core/fb/hw_virtual.h
+++ b/sdm/libs/core/fb/hw_virtual.h
@@ -26,34 +26,19 @@
#define __HW_VIRTUAL_H__
#include "hw_device.h"
-#include "hw_virtual_interface.h"
namespace sdm {
-class HWVirtual : public HWDevice, public HWVirtualInterface {
+class HWVirtual : public HWDevice {
public:
+ static DisplayError Create(HWInterface **intf, HWInfoInterface *hw_info_intf,
+ BufferSyncHandler *buffer_sync_handler);
+ static DisplayError Destroy(HWInterface *intf);
+
+ protected:
HWVirtual(BufferSyncHandler *buffer_sync_handler, HWInfoInterface *hw_info_intf);
- virtual DisplayError Init();
- virtual DisplayError Deinit();
- virtual DisplayError Open(HWEventHandler *eventhandler);
- virtual DisplayError Close();
- virtual DisplayError GetNumDisplayAttributes(uint32_t *count);
- virtual DisplayError GetDisplayAttributes(HWDisplayAttributes *display_attributes,
- uint32_t index);
- virtual DisplayError GetHWPanelInfo(HWPanelInfo *panel_info);
- virtual DisplayError SetDisplayAttributes(uint32_t index);
- virtual DisplayError GetConfigIndex(uint32_t mode, uint32_t *index);
- virtual DisplayError PowerOn();
- virtual DisplayError PowerOff();
- virtual DisplayError Doze();
- virtual DisplayError DozeSuspend();
- virtual DisplayError Standby();
+ virtual DisplayError Init(HWEventHandler *eventhandler);
virtual DisplayError Validate(HWLayers *hw_layers);
- virtual DisplayError Commit(HWLayers *hw_layers);
- virtual DisplayError Flush();
- virtual DisplayError GetPPFeaturesVersion(PPFeatureVersion *vers);
- virtual DisplayError SetPPFeatures(PPFeaturesConfig *feature_list);
- virtual DisplayError SetCursorPosition(HWLayers *hw_layers, int x, int y);
};
} // namespace sdm
diff --git a/sdm/libs/core/hw_hdmi_interface.h b/sdm/libs/core/hw_hdmi_interface.h
deleted file mode 100644
index 3b177b4..0000000
--- a/sdm/libs/core/hw_hdmi_interface.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2015, The Linux Foundation. All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification, are permitted
-* provided that the following conditions are met:
-* * Redistributions of source code must retain the above copyright notice, this list of
-* conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright notice, this list of
-* conditions and the following disclaimer in the documentation and/or other materials provided
-* with the distribution.
-* * Neither the name of The Linux Foundation nor the names of its contributors may be used to
-* endorse or promote products derived from this software without specific prior written
-* permission.
-*
-* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef __HW_HDMI_INTERFACE_H__
-#define __HW_HDMI_INTERFACE_H__
-
-#include "hw_interface.h"
-
-namespace sdm {
-
-class HWInfoInterface;
-
-class HWHDMIInterface: virtual public HWInterface {
- public:
- static DisplayError Create(HWHDMIInterface **intf, HWInfoInterface *hw_info_intf,
- BufferSyncHandler *buffer_sync_handler);
- static DisplayError Destroy(HWHDMIInterface *intf);
- virtual DisplayError GetHWScanInfo(HWScanInfo *scan_info) = 0;
- virtual DisplayError GetVideoFormat(uint32_t config_index, uint32_t *video_format) = 0;
- virtual DisplayError GetMaxCEAFormat(uint32_t *max_cea_format) = 0;
- virtual DisplayError OnMinHdcpEncryptionLevelChange() = 0;
-
- protected:
- virtual ~HWHDMIInterface() { }
-};
-
-} // namespace sdm
-
-#endif // __HW_HDMI_INTERFACE_H__
-
diff --git a/sdm/libs/core/hw_interface.h b/sdm/libs/core/hw_interface.h
index 0a4578f..e940d2b 100644
--- a/sdm/libs/core/hw_interface.h
+++ b/sdm/libs/core/hw_interface.h
@@ -26,11 +26,9 @@
#define __HW_INTERFACE_H__
#include <core/display_interface.h>
-#include <private/strategy_interface.h>
#include <private/hw_info_types.h>
#include <private/color_interface.h>
#include <utils/constants.h>
-#include <core/buffer_allocator.h>
#include <core/buffer_sync_handler.h>
namespace sdm {
@@ -64,8 +62,6 @@
class HWInterface {
public:
- virtual DisplayError Open(HWEventHandler *eventhandler) = 0;
- virtual DisplayError Close() = 0;
virtual DisplayError GetNumDisplayAttributes(uint32_t *count) = 0;
virtual DisplayError GetDisplayAttributes(HWDisplayAttributes *display_attributes,
uint32_t index) = 0;
@@ -82,7 +78,16 @@
virtual DisplayError Flush() = 0;
virtual DisplayError GetPPFeaturesVersion(PPFeatureVersion *vers) = 0;
virtual DisplayError SetPPFeatures(PPFeaturesConfig *feature_list) = 0;
+ virtual DisplayError SetVSyncState(bool enable) = 0;
+ virtual void SetIdleTimeoutMs(uint32_t timeout_ms) = 0;
+ virtual DisplayError SetDisplayMode(const HWDisplayMode hw_display_mode) = 0;
+ virtual DisplayError SetRefreshRate(uint32_t refresh_rate) = 0;
+ virtual DisplayError SetPanelBrightness(int level) = 0;
+ virtual DisplayError GetHWScanInfo(HWScanInfo *scan_info) = 0;
+ virtual DisplayError GetVideoFormat(uint32_t config_index, uint32_t *video_format) = 0;
+ virtual DisplayError GetMaxCEAFormat(uint32_t *max_cea_format) = 0;
virtual DisplayError SetCursorPosition(HWLayers *hw_layers, int x, int y) = 0;
+ virtual DisplayError OnMinHdcpEncryptionLevelChange() = 0;
protected:
virtual ~HWInterface() { }
diff --git a/sdm/libs/core/hw_primary_interface.h b/sdm/libs/core/hw_primary_interface.h
deleted file mode 100644
index 290f9cb..0000000
--- a/sdm/libs/core/hw_primary_interface.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2015, The Linux Foundation. All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification, are permitted
-* provided that the following conditions are met:
-* * Redistributions of source code must retain the above copyright notice, this list of
-* conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright notice, this list of
-* conditions and the following disclaimer in the documentation and/or other materials provided
-* with the distribution.
-* * Neither the name of The Linux Foundation nor the names of its contributors may be used to
-* endorse or promote products derived from this software without specific prior written
-* permission.
-*
-* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef __HW_PRIMARY_INTERFACE_H__
-#define __HW_PRIMARY_INTERFACE_H__
-
-namespace sdm {
-
-class BufferSyncHandler;
-class HWInfoInterface;
-
-class HWPrimaryInterface: virtual public HWInterface {
- public:
- static DisplayError Create(HWPrimaryInterface **intf, HWInfoInterface *hw_info_intf,
- BufferSyncHandler *buffer_sync_handler);
- static DisplayError Destroy(HWPrimaryInterface *intf);
- virtual DisplayError SetVSyncState(bool enable) = 0;
- virtual void SetIdleTimeoutMs(uint32_t timeout_ms) = 0;
- virtual DisplayError SetDisplayMode(const HWDisplayMode hw_display_mode) = 0;
- virtual DisplayError SetRefreshRate(uint32_t refresh_rate) = 0;
- virtual DisplayError SetPanelBrightness(int level) = 0;
-
- protected:
- virtual ~HWPrimaryInterface() { }
-};
-
-} // namespace sdm
-
-#endif // __HW_PRIMARY_INTERFACE_H__
-
diff --git a/sdm/libs/core/hw_virtual_interface.h b/sdm/libs/core/hw_virtual_interface.h
deleted file mode 100644
index ba14ae6..0000000
--- a/sdm/libs/core/hw_virtual_interface.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2015, The Linux Foundation. All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification, are permitted
-* provided that the following conditions are met:
-* * Redistributions of source code must retain the above copyright notice, this list of
-* conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright notice, this list of
-* conditions and the following disclaimer in the documentation and/or other materials provided
-* with the distribution.
-* * Neither the name of The Linux Foundation nor the names of its contributors may be used to
-* endorse or promote products derived from this software without specific prior written
-* permission.
-*
-* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef __HW_VIRTUAL_INTERFACE_H__
-#define __HW_VIRTUAL_INTERFACE_H__
-
-#include "hw_interface.h"
-
-namespace sdm {
-
-class HWInfoInterface;
-
-class HWVirtualInterface: virtual public HWInterface {
- public:
- static DisplayError Create(HWVirtualInterface **intf, HWInfoInterface *hw_info_intf,
- BufferSyncHandler *buffer_sync_handler);
- static DisplayError Destroy(HWVirtualInterface *intf);
-
- protected:
- virtual ~HWVirtualInterface() { }
-};
-
-} // namespace sdm
-
-#endif // __HW_VIRTUAL_INTERFACE_H__
-