From ec26be8eeb3423b72fdcfaca22e95e308c4a4b62 Mon Sep 17 00:00:00 2001 From: Shreyas Neerebailoor Date: Mon, 13 Feb 2012 16:24:06 +0530 Subject: [PATCH] GFX-Display: Add support for HAD to be used as loadable module BZ: 23487 ospm_power_using_hw_begin/_end() APIs were not exported. Also, few suspend/resume funcs only check for HAD as static module. Thus, causing problems when HAD is used as a lodable module. The solution is to add proper checks and export relevant APIs. Change-Id: Ice8dd8a3da5b16ccef730b08ef85d0a7ce4c5bde Signed-off-by: Shreyas Neerebailoor Signed-off-by: Tong, Bo Reviewed-on: http://android.intel.com:8080/35122 Reviewed-by: Agarwal, Vaibhav Reviewed-by: Abdullah, Omair M Reviewed-by: Xu, Randy Reviewed-by: Kuppuswamy, Sathyanarayanan Reviewed-by: Gupta, ArvindX K Reviewed-by: Gross, Mark Reviewed-by: buildbot Tested-by: buildbot --- drivers/staging/mrst/drv/psb_intel_hdmi.c | 6 ++++-- drivers/staging/mrst/drv/psb_powermgmt.c | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/staging/mrst/drv/psb_intel_hdmi.c b/drivers/staging/mrst/drv/psb_intel_hdmi.c index a27a3ff..6d44f74 100644 --- a/drivers/staging/mrst/drv/psb_intel_hdmi.c +++ b/drivers/staging/mrst/drv/psb_intel_hdmi.c @@ -581,7 +581,8 @@ static void mdfld_hdmi_mode_set(struct drm_encoder *encoder, u32 hpolarity = 0, vpolarity = 0; struct drm_psb_private *dev_priv = (struct drm_psb_private *) dev->dev_private; -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) void *had_pvt_data = dev_priv->had_pvt_data; enum had_event_type event_type = HAD_EVENT_MODE_CHANGING; #endif @@ -656,7 +657,8 @@ static void mdfld_hdmi_mode_set(struct drm_encoder *encoder, hdmi_priv->current_mode = drm_mode_duplicate(dev, adjusted_mode); -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) /* Send MODE_CHANGE event to Audio driver */ if (dev_priv->mdfld_had_event_callbacks && !dev_priv->bDVIport) (*dev_priv->mdfld_had_event_callbacks)(event_type, diff --git a/drivers/staging/mrst/drv/psb_powermgmt.c b/drivers/staging/mrst/drv/psb_powermgmt.c index 9ee7bab..e177a14 100644 --- a/drivers/staging/mrst/drv/psb_powermgmt.c +++ b/drivers/staging/mrst/drv/psb_powermgmt.c @@ -1537,7 +1537,8 @@ void ospm_resume_display(struct pci_dev *pdev) struct drm_device *dev = pci_get_drvdata(pdev); struct drm_psb_private *dev_priv = dev->dev_private; struct psb_gtt *pg = dev_priv->pg; -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) char *uevent_string = NULL; #endif @@ -1590,7 +1591,8 @@ void ospm_resume_display(struct pci_dev *pdev) mdfld_restore_display_registers(dev, 1); /*devices connect status will be changed when system suspend,re-detect once here*/ -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) if (!is_hdmi_plugged_out(dev)) { PSB_DEBUG_ENTRY("resume hdmi_state %d", hdmi_state); if (dev_priv->had_pvt_data && hdmi_state) { @@ -2397,6 +2399,7 @@ increase_count: return ret; } +EXPORT_SYMBOL(ospm_power_using_hw_begin); /* @@ -2434,6 +2437,7 @@ void ospm_power_using_hw_end(int hw_island) WARN_ON(atomic_read(&g_videodec_access_count) < 0); WARN_ON(atomic_read(&g_display_access_count) < 0); } +EXPORT_SYMBOL(ospm_power_using_hw_end); int ospm_runtime_pm_allow(struct drm_device * dev) { @@ -2491,7 +2495,8 @@ int psb_runtime_suspend(struct device *dev) int ret = 0; state.event = 0; -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) struct drm_psb_private* dev_priv = gpDrmDevice->dev_private; int hdmi_audio_busy = 0; struct snd_intel_had_interface *had_interface = dev_priv->had_interface; @@ -2517,7 +2522,8 @@ int psb_runtime_suspend(struct device *dev) if (atomic_read(&g_graphics_access_count) || atomic_read(&g_videoenc_access_count) || (gbdispstatus == true) || atomic_read(&g_videodec_access_count) || atomic_read(&g_display_access_count) -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) || hdmi_audio_busy #endif ) { @@ -2549,7 +2555,8 @@ int psb_runtime_resume(struct device *dev) int psb_runtime_idle(struct device *dev) { -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) struct drm_psb_private* dev_priv = gpDrmDevice->dev_private; struct snd_intel_had_interface *had_interface = dev_priv->had_interface; int hdmi_audio_busy = 0; @@ -2570,7 +2577,8 @@ int psb_runtime_idle(struct device *dev) if (atomic_read(&g_graphics_access_count) || atomic_read(&g_videoenc_access_count) || atomic_read(&g_videodec_access_count) || atomic_read(&g_display_access_count) || (gbdispstatus == true) -#ifdef CONFIG_SND_INTELMID_HDMI_AUDIO +#if (defined(CONFIG_SND_INTELMID_HDMI_AUDIO) || \ + defined(CONFIG_SND_INTELMID_HDMI_AUDIO_MODULE)) || hdmi_audio_busy #endif -- 2.7.4