aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Liao <tliao@marvell.com>2013-03-21 15:51:14 -0700
committerLubomir Rintel <lkundrak@v3.sk>2019-07-22 19:40:05 +0200
commit1144de49fbf354501e71be8b44381d7717bc7094 (patch)
treec183b3c89ef6578c1baf87e71946fbfdf54ebd13
parentb60b7cf31417d07ad8cf2ea87168fc31068fccaf (diff)
downloadlinux-mmp3-dell-ariel-1144de49fbf354501e71be8b44381d7717bc7094.tar.gz
linux: fix duplicate clk_enable() call by dipen for pll3. Add debug prints. Signed-off-by: Tony Liao <tliao@marvell.com>
(cherry picked from commit deb77d12d24eb8e286613b049b2653aeb9ac855e) Signed-off-by: Wen-chien Jesse Sung <jesse.sung@canonical.com>
-rw-r--r--arch/arm/mach-mmp/clock-mmp3.c3
-rw-r--r--drivers/video/pxa168fb.c14
2 files changed, 14 insertions, 3 deletions
diff --git a/arch/arm/mach-mmp/clock-mmp3.c b/arch/arm/mach-mmp/clock-mmp3.c
index 7d405cc1bffb17..59b4ab82760604 100644
--- a/arch/arm/mach-mmp/clock-mmp3.c
+++ b/arch/arm/mach-mmp/clock-mmp3.c
@@ -1543,6 +1543,7 @@ static struct clk *disp_depend_clk[] = {
static int lcd_pn1_clk_enable(struct clk *clk)
{
u32 val = __raw_readl(clk->reg_data[SOURCE][CONTROL].reg);
+ printk(KERN_INFO"***Frank %s/%d clk=%p clk->name=%s\n", __func__, __LINE__, clk, clk->name);
if (clk->parent == &mmp3_clk_vctcxo) {
#ifndef CONFIG_MACH_QSEVEN
@@ -1607,6 +1608,7 @@ static int lcd_pn1_clk_enable(struct clk *clk)
static void lcd_pn1_clk_disable(struct clk *clk)
{
u32 val = __raw_readl(clk->reg_data[SOURCE][CONTROL].reg);
+ printk(KERN_INFO"***Frank %s/%d clk=%p clk->name=%s\n", __func__, __LINE__, clk, clk->name);
if (clk->parent == &mmp3_clk_vctcxo) {
/* lcd clock source is fixed as DSI PLL(PLL3), so disable pll3 clk */
@@ -1648,6 +1650,7 @@ static long lcd_clk_round_rate(struct clk *clk, unsigned long rate)
static int lcd_clk_setrate(struct clk *clk, unsigned long rate)
{
int ret = 0;
+ printk(KERN_INFO"***Frank %s/%d clk=%p clk->name=%s\n", __func__, __LINE__, clk, clk->name);
switch (rate) {
case 800000000:
diff --git a/drivers/video/pxa168fb.c b/drivers/video/pxa168fb.c
index cbcdc1148d40bb..7f911b16fe8309 100644
--- a/drivers/video/pxa168fb.c
+++ b/drivers/video/pxa168fb.c
@@ -38,6 +38,7 @@
#include <mach/irqs.h>
#include <mach/gpio.h>
#include <plat/pm.h>
+#include <plat/clock.h>
#include "pxa168fb_common.h"
#include <asm/cacheflush.h>
@@ -634,9 +635,13 @@ static void set_clock_divider(struct pxa168fb_info *fbi)
struct dsi_info *di = (struct dsi_info *)mi->phy_info;
u32 divider_int, needed_pixclk, val, x = 0;
u64 div_result;
+ struct clk *fclk = (struct clk *)fbi->clk;
if (!fbi->id) {
calculate_lcd_sclk(fbi);
+ printk(KERN_INFO"***Frank %s/%d fbi->clk=%p fclk->name=%s\n", __func__, __LINE__, fbi->clk, fclk->name);
+
clk_disable(fbi->clk);
+
clk_set_rate(fbi->clk, fbi->sclk_src);
clk_enable(fbi->clk);
if ((mi->phy_type & (DSI | DSI2DPI)) || (mi->phy_type & LVDS)) {
@@ -2239,9 +2244,12 @@ static int __devinit pxa168fb_probe(struct platform_device *pdev)
pxa168fb_init_mode(info, mi);
/* enable controller clock */
- if (mi->sclk_src)
- clk_set_rate(fbi->clk, mi->sclk_src);
- clk_enable(fbi->clk);
+
+// /* fix duplicate clk_enable() call by dipen */
+// if (mi->sclk_src)
+// clk_set_rate(fbi->clk, mi->sclk_src);
+// clk_enable(fbi->clk);
+
pr_info("fb%d: sclk_src %d clk_get_rate = %d\n", fbi->id,
mi->sclk_src, (int)clk_get_rate(fbi->clk));