aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/clock.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/clock.c')
-rw-r--r--arch/arm/mach-omap2/clock.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
index 7edf0f69da1e..d1b648a4efbf 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
@@ -659,26 +659,35 @@ static int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
659 659
660 /* Isolate control register */ 660 /* Isolate control register */
661 div_sel = (SRC_RATE_SEL_MASK & clk->flags); 661 div_sel = (SRC_RATE_SEL_MASK & clk->flags);
662 div_off = clk->src_offset; 662 div_off = clk->rate_offset;
663 663
664 validrate = omap2_clksel_round_rate(clk, rate, &new_div); 664 validrate = omap2_clksel_round_rate(clk, rate, &new_div);
665 if(validrate != rate) 665 if (validrate != rate)
666 return(ret); 666 return(ret);
667 667
668 field_val = omap2_get_clksel(&div_sel, &field_mask, clk); 668 field_val = omap2_get_clksel(&div_sel, &field_mask, clk);
669 if (div_sel == 0) 669 if (div_sel == 0)
670 return ret; 670 return ret;
671 671
672 if(clk->flags & CM_SYSCLKOUT_SEL1){ 672 if (clk->flags & CM_SYSCLKOUT_SEL1) {
673 switch(new_div){ 673 switch (new_div) {
674 case 16: field_val = 4; break; 674 case 16:
675 case 8: field_val = 3; break; 675 field_val = 4;
676 case 4: field_val = 2; break; 676 break;
677 case 2: field_val = 1; break; 677 case 8:
678 case 1: field_val = 0; break; 678 field_val = 3;
679 break;
680 case 4:
681 field_val = 2;
682 break;
683 case 2:
684 field_val = 1;
685 break;
686 case 1:
687 field_val = 0;
688 break;
679 } 689 }
680 } 690 } else
681 else
682 field_val = new_div; 691 field_val = new_div;
683 692
684 reg = (void __iomem *)div_sel; 693 reg = (void __iomem *)div_sel;
@@ -743,7 +752,7 @@ static u32 omap2_get_src_field(u32 *type_to_addr, u32 reg_offset,
743 val = 0x2; 752 val = 0x2;
744 break; 753 break;
745 case CM_WKUP_SEL1: 754 case CM_WKUP_SEL1:
746 src_reg_addr = (u32)&CM_CLKSEL2_CORE; 755 src_reg_addr = (u32)&CM_CLKSEL_WKUP;
747 mask = 0x3; 756 mask = 0x3;
748 if (src_clk == &func_32k_ck) 757 if (src_clk == &func_32k_ck)
749 val = 0x0; 758 val = 0x0;
@@ -783,9 +792,9 @@ static u32 omap2_get_src_field(u32 *type_to_addr, u32 reg_offset,
783 val = 0; 792 val = 0;
784 if (src_clk == &sys_ck) 793 if (src_clk == &sys_ck)
785 val = 1; 794 val = 1;
786 if (src_clk == &func_54m_ck)
787 val = 2;
788 if (src_clk == &func_96m_ck) 795 if (src_clk == &func_96m_ck)
796 val = 2;
797 if (src_clk == &func_54m_ck)
789 val = 3; 798 val = 3;
790 break; 799 break;
791 } 800 }