From: Jim Liu <[email protected]>

Modify to match New Audio Interface API.

Signed-off-by: Jim Liu <[email protected]>
Signed-off-by: Hitesh K. Patel <[email protected]>
---
 drivers/staging/mrst/drv/mdfld_hdmi_audio.c    |   20 +++++++++++++++++++-
 drivers/staging/mrst/drv/mdfld_hdmi_audio_if.h |   18 +++++++++++++++++-
 drivers/staging/mrst/drv/psb_drv.h             |    3 +++
 drivers/staging/mrst/drv/psb_irq.c             |    2 +-
 4 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/mrst/drv/mdfld_hdmi_audio.c 
b/drivers/staging/mrst/drv/mdfld_hdmi_audio.c
index 61568a8..8a215f4 100644
--- a/drivers/staging/mrst/drv/mdfld_hdmi_audio.c
+++ b/drivers/staging/mrst/drv/mdfld_hdmi_audio.c
@@ -205,16 +205,34 @@ static struct hdmi_audio_query_set_ops 
mdfld_hdmi_audio_get_set_ops = {
        .hdmi_audio_set_caps = mdfld_hdmi_audio_set_caps,
 };
 
-int intel_hdmi_audio_query_capabilities (had_event_call_back audio_callbacks, 
struct hdmi_audio_registers_ops **reg_ops,struct hdmi_audio_query_set_ops 
**query_ops) {
+int intel_hdmi_audio_query_capabilities (had_event_call_back audio_callbacks, 
struct hdmi_audio_registers_ops *reg_ops,struct hdmi_audio_query_set_ops 
*query_ops) {
     struct drm_device *dev = hdmi_priv->dev;
     struct drm_psb_private *dev_priv = (struct drm_psb_private *) 
dev->dev_private;
     int ret = 0;
 
+    reg_ops->hdmi_audio_read_register = 
(mdfld_hdmi_audio_reg_ops.hdmi_audio_read_register);
+    reg_ops->hdmi_audio_write_register = 
(mdfld_hdmi_audio_reg_ops.hdmi_audio_write_register);
+    reg_ops->hdmi_audio_read_modify = 
(mdfld_hdmi_audio_reg_ops.hdmi_audio_read_modify);
+    query_ops->hdmi_audio_get_caps = 
mdfld_hdmi_audio_get_set_ops.hdmi_audio_get_caps;
+    query_ops->hdmi_audio_set_caps = 
mdfld_hdmi_audio_get_set_ops.hdmi_audio_set_caps;
+
+#if 0
     *reg_ops = &mdfld_hdmi_audio_reg_ops; 
     *query_ops = &mdfld_hdmi_audio_get_set_ops;
+#endif
     dev_priv->mdfld_had_event_callbacks = audio_callbacks;
 
     return ret;
 }
 
+int display_register(struct snd_intel_had_interface *driver, void * had_data)
+{
+    struct drm_device *dev = hdmi_priv->dev;
+    struct drm_psb_private *dev_priv = (struct drm_psb_private *) 
dev->dev_private;
+       dev_priv->had_pvt_data = had_data;
+       dev_priv->had_interface = driver;
+       return 0;
+}
+
 /* EXPORT_SYMBOL(intel_hdmi_audio_query_capabilities); */
+/* EXPORT_SYMBOL(display_register); */
diff --git a/drivers/staging/mrst/drv/mdfld_hdmi_audio_if.h 
b/drivers/staging/mrst/drv/mdfld_hdmi_audio_if.h
index 3539eb4..c69232c 100644
--- a/drivers/staging/mrst/drv/mdfld_hdmi_audio_if.h
+++ b/drivers/staging/mrst/drv/mdfld_hdmi_audio_if.h
@@ -64,5 +64,21 @@ struct hdmi_audio_query_set_ops{
        int (*hdmi_audio_get_caps)(enum had_caps_list query_element , void 
*capabilties);
        int (*hdmi_audio_set_caps)(enum had_caps_list set_element , void 
*capabilties);
 };
-extern int intel_hdmi_audio_query_capabilities (had_event_call_back 
audio_callbacks, struct hdmi_audio_registers_ops **reg_ops,struct 
hdmi_audio_query_set_ops **query_ops);
+
+typedef struct pm_event {
+       int event;
+} pm_event_t;
+struct snd_intel_had_interface {
+        const char *name;
+        int (*probe) (void *had_data,
+                      const int card_id);
+        void (*disconnect) (void *had_data);
+        int (*suspend) (void *had_data, pm_event_t event);
+        int (*resume) (void *had_data);
+
+};
+
+extern int intel_hdmi_audio_query_capabilities (had_event_call_back 
audio_callbacks, struct hdmi_audio_registers_ops *reg_ops,struct 
hdmi_audio_query_set_ops *query_ops);
+extern  int display_register(struct snd_intel_had_interface *driver,void * 
had_data);
+
 #endif /* MDFLD_HDMI_AUDIO_IF_H */
diff --git a/drivers/staging/mrst/drv/psb_drv.h 
b/drivers/staging/mrst/drv/psb_drv.h
index fbcfa3f..02efbdd 100644
--- a/drivers/staging/mrst/drv/psb_drv.h
+++ b/drivers/staging/mrst/drv/psb_drv.h
@@ -942,6 +942,9 @@ struct drm_psb_private {
 
        uint32_t tmds_clock_khz;
        had_event_call_back mdfld_had_event_callbacks;
+       struct snd_intel_had_interface *had_interface;
+       void *had_pvt_data;
+
        uint32_t hdmi_audio_interrupt_mask;
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
diff --git a/drivers/staging/mrst/drv/psb_irq.c 
b/drivers/staging/mrst/drv/psb_irq.c
index 8063751..10b9c70 100644
--- a/drivers/staging/mrst/drv/psb_irq.c
+++ b/drivers/staging/mrst/drv/psb_irq.c
@@ -208,7 +208,7 @@ static void mdfld_pipe_hdmi_audio_buffer_done(struct 
drm_device *dev)
            (struct drm_psb_private *) dev->dev_private;
 
        if (dev_priv->mdfld_had_event_callbacks)
-               
(*dev_priv->mdfld_had_event_callbacks)(HAD_EVENT_AUDIO_BUFFER_DONE, NULL);
+               
(*dev_priv->mdfld_had_event_callbacks)(HAD_EVENT_AUDIO_BUFFER_DONE, 
dev_priv->had_pvt_data);
 }
 
 /**
-- 
1.7.1

_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to