From: Jim Liu <[email protected]> Implmented HAD_GET_SAMPLING_FREQ in mdfld_hdmi_audio_get_caps for HDMI audio driver.
Change-Id: I5a386619f7207e4c6fe9e3d1e3539f2660d0300b Signed-off-by: Jim Liu <[email protected]> Signed-off-by: Hitesh K. Patel <[email protected]> --- drivers/staging/mrst/drv/mdfld_hdmi_audio.c | 7 ++++++- drivers/staging/mrst/drv/psb_drm.h | 2 ++ drivers/staging/mrst/drv/psb_drv.h | 1 + drivers/staging/mrst/drv/psb_intel_display2.c | 4 ++++ 4 files changed, 13 insertions(+), 1 deletions(-) diff --git a/drivers/staging/mrst/drv/mdfld_hdmi_audio.c b/drivers/staging/mrst/drv/mdfld_hdmi_audio.c index 3d33527..4e0c8fc 100644 --- a/drivers/staging/mrst/drv/mdfld_hdmi_audio.c +++ b/drivers/staging/mrst/drv/mdfld_hdmi_audio.c @@ -93,13 +93,18 @@ static int mdfld_hdmi_audio_rmw (uint32_t reg, uint32_t val, uint32_t mask) * e.g. resolution, frame rate. */ static int mdfld_hdmi_audio_get_caps (enum had_caps_list get_element, void *capabilities) { + struct drm_device *dev = hdmi_priv->dev; + struct drm_psb_private *dev_priv = (struct drm_psb_private *) dev->dev_private; int ret = 0; PSB_DEBUG_ENTRY("\n"); switch (get_element) { case HAD_GET_ELD: - memcpy(capabilities, &(hdmi_priv->eeld),sizeof(hdmi_eeld_t)); + memcpy(capabilities, &(hdmi_priv->eeld), sizeof(hdmi_eeld_t)); + break; + case HAD_GET_SAMPLING_FREQ: + memcpy(capabilities, &(dev_priv->tmds_clock_khz), sizeof(uint32_t)); break; default: break; diff --git a/drivers/staging/mrst/drv/psb_drm.h b/drivers/staging/mrst/drv/psb_drm.h index e74da68..cc203e1 100644 --- a/drivers/staging/mrst/drv/psb_drm.h +++ b/drivers/staging/mrst/drv/psb_drm.h @@ -49,6 +49,8 @@ #define PSB_NUM_PIPE 3 +/* #define MDFLD_HDCP */ + /* * Public memory types. */ diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 6f25b7d..57d4ce0 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -968,6 +968,7 @@ struct drm_psb_private { bool dsi_device_ready; #ifdef MDFLD_HDCP + uint32_t tmds_clock_khz; had_event_call_back mdfld_had_event_callbacks; uint32_t hdmi_audio_interrupt_mask; #endif /* MDFLD_HDCP */ diff --git a/drivers/staging/mrst/drv/psb_intel_display2.c b/drivers/staging/mrst/drv/psb_intel_display2.c index b2a57af..49fdcb3 100644 --- a/drivers/staging/mrst/drv/psb_intel_display2.c +++ b/drivers/staging/mrst/drv/psb_intel_display2.c @@ -1256,6 +1256,10 @@ static int mdfld_crtc_mode_set(struct drm_crtc *crtc, ok = mdfldFindBestPLL(crtc, clk_tmp, refclk, &clock); +#ifdef MDFLD_HDCP + dev_priv->tmds_clock_khz = clock.dot / (clk_n * clk_p2 * clk_byte); +#endif /* MDFLD_HDCP */ + if (!ok) { #if 0 /* FIXME JLIU7 */ DRM_ERROR("Couldn't find PLL settings for mode!\n"); -- 1.7.1 _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
