aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/clk/samsung/clk-pll.c12
-rw-r--r--drivers/clk/samsung/clk-pll.h1
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/clk/samsung/clk-pll.c b/drivers/clk/samsung/clk-pll.c
index 81e6d2f49aa0..f9a35a612705 100644
--- a/drivers/clk/samsung/clk-pll.c
+++ b/drivers/clk/samsung/clk-pll.c
@@ -564,7 +564,9 @@ static const struct clk_ops samsung_pll46xx_clk_min_ops = {
564#define PLL6552_PDIV_MASK 0x3f 564#define PLL6552_PDIV_MASK 0x3f
565#define PLL6552_SDIV_MASK 0x7 565#define PLL6552_SDIV_MASK 0x7
566#define PLL6552_MDIV_SHIFT 16 566#define PLL6552_MDIV_SHIFT 16
567#define PLL6552_MDIV_SHIFT_2416 14
567#define PLL6552_PDIV_SHIFT 8 568#define PLL6552_PDIV_SHIFT 8
569#define PLL6552_PDIV_SHIFT_2416 5
568#define PLL6552_SDIV_SHIFT 0 570#define PLL6552_SDIV_SHIFT 0
569 571
570static unsigned long samsung_pll6552_recalc_rate(struct clk_hw *hw, 572static unsigned long samsung_pll6552_recalc_rate(struct clk_hw *hw,
@@ -575,8 +577,13 @@ static unsigned long samsung_pll6552_recalc_rate(struct clk_hw *hw,
575 u64 fvco = parent_rate; 577 u64 fvco = parent_rate;
576 578
577 pll_con = __raw_readl(pll->con_reg); 579 pll_con = __raw_readl(pll->con_reg);
578 mdiv = (pll_con >> PLL6552_MDIV_SHIFT) & PLL6552_MDIV_MASK; 580 if (pll->type == pll_6552_s3c2416) {
579 pdiv = (pll_con >> PLL6552_PDIV_SHIFT) & PLL6552_PDIV_MASK; 581 mdiv = (pll_con >> PLL6552_MDIV_SHIFT_2416) & PLL6552_MDIV_MASK;
582 pdiv = (pll_con >> PLL6552_PDIV_SHIFT_2416) & PLL6552_PDIV_MASK;
583 } else {
584 mdiv = (pll_con >> PLL6552_MDIV_SHIFT) & PLL6552_MDIV_MASK;
585 pdiv = (pll_con >> PLL6552_PDIV_SHIFT) & PLL6552_PDIV_MASK;
586 }
580 sdiv = (pll_con >> PLL6552_SDIV_SHIFT) & PLL6552_SDIV_MASK; 587 sdiv = (pll_con >> PLL6552_SDIV_SHIFT) & PLL6552_SDIV_MASK;
581 588
582 fvco *= mdiv; 589 fvco *= mdiv;
@@ -773,6 +780,7 @@ static void __init _samsung_clk_register_pll(struct samsung_pll_clock *pll_clk,
773 init.ops = &samsung_pll36xx_clk_ops; 780 init.ops = &samsung_pll36xx_clk_ops;
774 break; 781 break;
775 case pll_6552: 782 case pll_6552:
783 case pll_6552_s3c2416:
776 init.ops = &samsung_pll6552_clk_ops; 784 init.ops = &samsung_pll6552_clk_ops;
777 break; 785 break;
778 case pll_6553: 786 case pll_6553:
diff --git a/drivers/clk/samsung/clk-pll.h b/drivers/clk/samsung/clk-pll.h
index 6c39030080fb..ddf9029c13c9 100644
--- a/drivers/clk/samsung/clk-pll.h
+++ b/drivers/clk/samsung/clk-pll.h
@@ -24,6 +24,7 @@ enum samsung_pll_type {
24 pll_4650, 24 pll_4650,
25 pll_4650c, 25 pll_4650c,
26 pll_6552, 26 pll_6552,
27 pll_6552_s3c2416,
27 pll_6553, 28 pll_6553,
28}; 29};
29 30