1. 20 2月, 2009 1 次提交
    • R
      [ARM] omap: add support for bypassing DPLLs · c0bf3132
      Russell King 提交于
      This roughly corresponds with OMAP commits: 7d06c48, 3241b19,
      88b5d9b, 18a5500, 9c909ac, 5c6497b, 8b1f0bd, 2ac1da8.
      
      For both OMAP2 and OMAP3, we note the reference and bypass clocks in
      the DPLL data structure.  Whenever we modify the DPLL rate, we first
      ensure that both the reference and bypass clocks are enabled.  Then,
      we decide whether to use the reference and DPLL, or the bypass clock
      if the desired rate is identical to the bypass rate, and program the
      DPLL appropriately.  Finally, we update the clock's parent, and then
      disable the unused clocks.
      
      This keeps the parents correctly balanced, and more importantly ensures
      that the bypass clock is running whenever we reprogram the DPLL.  This
      is especially important because the procedure for reprogramming the DPLL
      involves switching to the bypass clock.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      c0bf3132
  2. 14 2月, 2009 1 次提交
    • R
      [ARM] omap: arrange for clock recalc methods to return the rate · 8b9dbc16
      Russell King 提交于
      linux-omap source commit 33d000c99ee393fe2042f93e8422f94976d276ce
      introduces a way to "dry run" clock changes before they're committed.
      However, this involves putting logic to handle this into each and
      every recalc function, and unfortunately due to the caching, led to
      some bugs.
      
      Solve both of issues by making the recalc methods always return the
      clock rate for the clock, which the caller decides what to do with.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      8b9dbc16
  3. 09 2月, 2009 14 次提交
  4. 08 2月, 2009 4 次提交
  5. 02 2月, 2009 2 次提交
  6. 19 8月, 2008 1 次提交
  7. 07 8月, 2008 1 次提交
  8. 03 7月, 2008 3 次提交
    • P
      ARM: OMAP2: Clock: New OMAP2/3 DPLL rate rounding algorithm · 88b8ba90
      Paul Walmsley 提交于
      This patch adds a new rate rounding algorithm for DPLL clocks on the
      OMAP2/3 architecture.
      
      For a desired DPLL target rate, there may be several
      multiplier/divider (M, N) values which will generate a sufficiently
      close rate.  Lower N values result in greater power economy.  However,
      lower N values can cause the difference between the rounded rate and
      the target rate ("rate error") to be larger than it would be with a
      higher N.  This can cause downstream devices to run more slowly than
      they otherwise would.
      
      This DPLL rate rounding algorithm:
      
      - attempts to find the lowest possible N (DPLL divider) to reach the
        target_rate (since, according to Richard Woodruff <r-woodruff@ti.com>,
        lower N values save more power than higher N values).
      
      - allows developers to set an upper bound on the error between the
        rounded rate and the desired target rate ("rate tolerance"), so an
        appropriate balance between rate fidelity and power savings can be
        set.  This maximum rate error tolerance is set via
        omap2_set_dpll_rate_tolerance().
      
      - never returns a rounded rate higher than the target rate.
      
      The rate rounding algorithm caches the last rounded M, N, and rate
      computation to avoid rounding the rate twice for each clk_set_rate()
      call.  (This patch does not yet implement set_rate for DPLLs; that
      follows in a future patch.)
      
      The algorithm trades execution speed for rate accuracy.  It will find
      the (M, N) set that results in the least rate error, within a
      specified rate tolerance.  It does this by evaluating each divider
      setting - on OMAP3, this involves 128 steps.  Another approach to DPLL
      rate rounding would be to bail out as soon as a valid rate is found
      within the rate tolerance, which would trade rate accuracy for
      execution speed.  Alternate implementations welcome.
      
      This code is not yet used by the OMAP24XX DPLL clock, since it
      is currently defined as a composite clock, fusing the DPLL M,N and the
      M2 output divider.  This patch also renames the existing OMAP24xx DPLL
      programming functions to highlight that they program both the DPLL and
      the DPLL's output multiplier.
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      88b8ba90
    • P
      ARM: OMAP2: Clock: Add OMAP3 DPLL autoidle functions · 542313cc
      Paul Walmsley 提交于
      This patch adds support for DPLL autoidle control to the OMAP3 clock
      framework.  These functions will be used by the noncore DPLL enable
      and disable code - this is because, according to the CDP code, the
      DPLL autoidle status must be saved and restored across DPLL
      lock/bypass/off transitions.
      
      N.B.: the CORE DPLL (DPLL3) has three autoidle mode options, rather
      than just two.  This code currently does not support the third option,
      low-power bypass autoidle.
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      542313cc
    • H
      ARM: OMAP: CLKFW: Initial debugfs support for omap clock framework · 137b3ee2
      Hiroshi DOYU 提交于
      debugfs can provide the infrastructure to trace the dependencies of
      clock tree hierarchy quite visibly. This patch enables to keep track
      of clock tree hierarchy and expose their attributes under each clock
      directry as below:
      
      	omap:~# tree -d -L 2 /debug/clock/omap_32k_fck/
      	/debug/clock/omap_32k_fck/
      	|-- gpt10_fck
      	|-- gpt11_fck
      	|-- gpt1_fck
      	|-- per_32k_alwon_fck
      	|   |-- gpio2_fck
      	|   |-- gpio3_fck
      	|   |-- gpio4_fck
      	|   |-- gpio5_fck
      	|   |-- gpio6_fck
      	|   `-- wdt3_fck
      	|-- ts_fck
      	`-- wkup_32k_fck
      	    |-- gpio1_fck
      	    `-- wdt2_fck
      
      	14 directories
      	omap:~# tree  /debug/clock/omap_32k_fck/gpt10_fck/
      	/debug/clock/omap_32k_fck/gpt10_fck/
      	|-- flags
      	|-- rate
      	`-- usecount
      
      	0 directories, 3 files
      
      Although, compared with David Brownell's small patch, this may look
      bit overkilling, I expect that this debugfs can deal with other PRCM
      complexities at the same time. For example, powerdomain dependencies
      can be expressed by using symbolic links of these clocks if
      powerdomain supports dubgfs as well.
      Signed-off-by: NHiroshi DOYU <Hiroshi.DOYU@nokia.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      137b3ee2
  9. 22 5月, 2008 1 次提交
    • R
      [ARM] omap: fix omap clk support build errors · b851cb28
      Russell King 提交于
      arch/arm/plat-omap/clock.c:397: warning: "struct cpufreq_frequency_table" declared inside parameter list
      arch/arm/plat-omap/clock.c:397: warning: its scope is only this definition or declaration, which is probably not what you want
      arch/arm/plat-omap/clock.c: In function `clk_init_cpufreq_table':
      arch/arm/plat-omap/clock.c:402: error: structure has no member named `clk_init_cpufreq_table'
      arch/arm/plat-omap/clock.c:403: error: structure has no member named `clk_init_cpufreq_table'
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      b851cb28
  10. 15 4月, 2008 4 次提交
  11. 25 9月, 2006 1 次提交
  12. 02 8月, 2006 1 次提交
  13. 03 4月, 2006 1 次提交
  14. 18 1月, 2006 1 次提交
  15. 10 11月, 2005 1 次提交