aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarkko Nikula <jarkko.nikula@nokia.com>2006-06-26 19:16:11 -0400
committerTony Lindgren <tony@atomide.com>2006-06-26 19:16:11 -0400
commit6e711ec6d249c0d3f8bc225066738d064ed90032 (patch)
tree21e8c8e704eac0f2ccf4d00045aaa82546be4661
parented7eb9d90a24bbe93fa47e19b61528bd5cfe584c (diff)
ARM: OMAP: Correct two bugs in arch/arm/mach-omap2/clock.c
omap2_clk_set_rate: dif_off must use clk->rate_offset, not clk->src_off. omap2_get_src_field: for the case CM_SYSCLKOUT_SEL1, val must be 2 for 96MHz and 3 for 54MHz. Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
-rw-r--r--arch/arm/mach-omap2/clock.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
index 72eb4bf571ac..242d8f925e9e 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
@@ -660,26 +660,35 @@ static int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
660 660
661 /* Isolate control register */ 661 /* Isolate control register */
662 div_sel = (SRC_RATE_SEL_MASK & clk->flags); 662 div_sel = (SRC_RATE_SEL_MASK & clk->flags);
663 div_off = clk->src_offset; 663 div_off = clk->rate_offset;
664 664
665 validrate = omap2_clksel_round_rate(clk, rate, &new_div); 665 validrate = omap2_clksel_round_rate(clk, rate, &new_div);
666 if(validrate != rate) 666 if (validrate != rate)
667 return(ret); 667 return(ret);
668 668
669 field_val = omap2_get_clksel(&div_sel, &field_mask, clk); 669 field_val = omap2_get_clksel(&div_sel, &field_mask, clk);
670 if (div_sel == 0) 670 if (div_sel == 0)
671 return ret; 671 return ret;
672 672
673 if(clk->flags & CM_SYSCLKOUT_SEL1){ 673 if (clk->flags & CM_SYSCLKOUT_SEL1) {
674 switch(new_div){ 674 switch (new_div) {
675 case 16: field_val = 4; break; 675 case 16:
676 case 8: field_val = 3; break; 676 field_val = 4;
677 case 4: field_val = 2; break; 677 break;
678 case 2: field_val = 1; break; 678 case 8:
679 case 1: field_val = 0; break; 679 field_val = 3;
680 break;
681 case 4:
682 field_val = 2;
683 break;
684 case 2:
685 field_val = 1;
686 break;
687 case 1:
688 field_val = 0;
689 break;
680 } 690 }
681 } 691 } else
682 else
683 field_val = new_div; 692 field_val = new_div;
684 693
685 reg = (void __iomem *)div_sel; 694 reg = (void __iomem *)div_sel;
@@ -784,9 +793,9 @@ static u32 omap2_get_src_field(u32 *type_to_addr, u32 reg_offset,
784 val = 0; 793 val = 0;
785 if (src_clk == &sys_ck) 794 if (src_clk == &sys_ck)
786 val = 1; 795 val = 1;
787 if (src_clk == &func_54m_ck)
788 val = 2;
789 if (src_clk == &func_96m_ck) 796 if (src_clk == &func_96m_ck)
797 val = 2;
798 if (src_clk == &func_54m_ck)
790 val = 3; 799 val = 3;
791 break; 800 break;
792 } 801 }