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

Reply via email to