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
