Some clocks are set with a min and max values as opposed to one
set value. I've added this as a setting for the MSM framebuffer
driver and updated the platform data.

Signed-off-by: Daniel Walker <[email protected]>
---
 arch/arm/mach-msm/board-trout-panel.c   |    3 ++-
 arch/arm/mach-msm/include/mach/msm_fb.h |    3 ++-
 drivers/video/msm/mddi.c                |   12 +++++++++---
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/arch/arm/mach-msm/board-trout-panel.c 
b/arch/arm/mach-msm/board-trout-panel.c
index 0fa5a35..8f07b8c 100644
--- a/arch/arm/mach-msm/board-trout-panel.c
+++ b/arch/arm/mach-msm/board-trout-panel.c
@@ -565,7 +565,8 @@ struct msm_mddi_bridge_platform_data toshiba_client_data = {
 };
 
 static struct msm_mddi_platform_data mddi_pdata = {
-       .clk_rate = 122880000,
+       .min_clk_rate = 122880000,
+       .min_clk_rate = 98304000,
        .power_client = trout_mddi_power_client,
        .fb_resource = resources_msm_fb,
        .num_clients = 1,
diff --git a/arch/arm/mach-msm/include/mach/msm_fb.h 
b/arch/arm/mach-msm/include/mach/msm_fb.h
index 1f4fc81..9d15d7a 100644
--- a/arch/arm/mach-msm/include/mach/msm_fb.h
+++ b/arch/arm/mach-msm/include/mach/msm_fb.h
@@ -79,7 +79,8 @@ struct msm_mddi_client_data {
 };
 
 struct msm_mddi_platform_data {
-       unsigned int clk_rate;
+       unsigned int max_clk_rate;
+       unsigned int min_clk_rate;
        void (*power_client)(struct msm_mddi_client_data *, int on);
 
        /* fixup the mfr name, product id */
diff --git a/drivers/video/msm/mddi.c b/drivers/video/msm/mddi.c
index 844eff3..1192365 100644
--- a/drivers/video/msm/mddi.c
+++ b/drivers/video/msm/mddi.c
@@ -30,6 +30,8 @@
 #include <mach/irqs.h>
 #include <mach/board.h>
 #include <mach/msm_fb.h>
+#include <mach/clk.h>
+
 #include "mddi_hw.h"
 
 #define FLAG_DISABLE_HIBERNATION 0x0001
@@ -625,7 +627,8 @@ static struct mddi_info mddi_info[2];
 
 static int __init mddi_clk_setup(struct platform_device *pdev,
                                 struct mddi_info *mddi,
-                                unsigned long clk_rate)
+                                unsigned long max_clk_rate,
+                                unsigned long min_clk_rate)
 {
        int ret;
 
@@ -638,7 +641,10 @@ static int __init mddi_clk_setup(struct platform_device 
*pdev,
        ret =  clk_enable(mddi->clk);
        if (ret)
                goto fail;
-       ret = clk_set_rate(mddi->clk, clk_rate);
+       ret = clk_set_max_rate(mddi->clk, max_clk_rate);
+       if (ret)
+               goto fail;
+       ret = clk_set_min_rate(mddi->clk, min_clk_rate);
        if (ret)
                goto fail;
        return 0;
@@ -702,7 +708,7 @@ static int __init mddi_probe(struct platform_device *pdev)
        spin_lock_init(&mddi->int_lock);
        init_waitqueue_head(&mddi->int_wait);
 
-       ret = mddi_clk_setup(pdev, mddi, pdata->clk_rate);
+       ret = mddi_clk_setup(pdev, mddi, pdata->max_clk_rate, 
pdata->min_clk_rate);
        if (ret) {
                printk(KERN_ERR "mddi: failed to setup clock!\n");
                goto error_clk_setup;
-- 
1.7.0.4

-- 
Sent by a consultant of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to