1. 14 Jul, 2017 1 commit
  2. 14 Aug, 2016 1 commit
  3. 28 Jul, 2015 1 commit
    • Boris Brezillon's avatar
      clk: change clk_ops' ->determine_rate() prototype · 0817b62c
      Boris Brezillon authored
      Clock rates are stored in an unsigned long field, but ->determine_rate()
      (which returns a rounded rate from a requested one) returns a long
      value (errors are reported using negative error codes), which can lead
      to long overflow if the clock rate exceed 2Ghz.
      
      Change ->determine_rate() prototype to return 0 or an error code, and pass
      a pointer to a clk_rate_request structure containing the expected target
      rate and the rate constraints imposed by clk users.
      
      The clk_rate_request structure might be extended in the future to contain
      other kind of constraints like the rounding policy, the maximum clock
      inaccuracy or other things that are not yet supported by the CCF
      (power consumption constraints ?).
      Signed-off-by: 's avatarBoris Brezillon <boris.brezillon@free-electrons.com>
      CC: Jonathan Corbet <corbet@lwn.net>
      CC: Tony Lindgren <tony@atomide.com>
      CC: Ralf Baechle <ralf@linux-mips.org>
      CC: "Emilio López" <emilio@elopez.com.ar>
      CC: Maxime Ripard <maxime.ripard@free-electrons.com>
      Acked-by: 's avatarTero Kristo <t-kristo@ti.com>
      CC: Peter De Schrijver <pdeschrijver@nvidia.com>
      CC: Prashant Gaikwad <pgaikwad@nvidia.com>
      CC: Stephen Warren <swarren@wwwdotorg.org>
      CC: Thierry Reding <thierry.reding@gmail.com>
      CC: Alexandre Courbot <gnurou@gmail.com>
      CC: linux-doc@vger.kernel.org
      CC: linux-kernel@vger.kernel.org
      CC: linux-arm-kernel@lists.infradead.org
      CC: linux-omap@vger.kernel.org
      CC: linux-mips@linux-mips.org
      CC: linux-tegra@vger.kernel.org
      [sboyd@codeaurora.org: Fix parent dereference problem in
      __clk_determine_rate()]
      Signed-off-by: 's avatarStephen Boyd <sboyd@codeaurora.org>
      Tested-by: 's avatarRomain Perier <romain.perier@gmail.com>
      Signed-off-by: 's avatarHeiko Stuebner <heiko@sntech.de>
      [sboyd@codeaurora.org: Folded in fix from Heiko for fixed-rate
      clocks without parents or a rate determining op]
      Signed-off-by: 's avatarStephen Boyd <sboyd@codeaurora.org>
      0817b62c
  4. 13 May, 2015 1 commit
  5. 02 Feb, 2015 1 commit
  6. 04 Dec, 2014 1 commit
  7. 13 May, 2014 1 commit
  8. 19 Mar, 2014 1 commit
  9. 16 Jan, 2014 1 commit
  10. 23 Dec, 2013 1 commit
    • Boris BREZILLON's avatar
      clk: add clk accuracy retrieval support · 5279fc40
      Boris BREZILLON authored
      The clock accuracy is expressed in ppb (parts per billion) and represents
      the possible clock drift.
      Say you have a clock (e.g. an oscillator) which provides a fixed clock of
      20MHz with an accuracy of +- 20Hz. This accuracy expressed in ppb is
      20Hz/20MHz = 1000 ppb (or 1 ppm).
      
      Clock users may need the clock accuracy information in order to choose
      the best clock (the one with the best accuracy) across several available
      clocks.
      
      This patch adds clk accuracy retrieval support for common clk framework by
      means of a new function called clk_get_accuracy.
      This function returns the given clock accuracy expressed in ppb.
      
      In order to get the clock accuracy, this implementation adds one callback
      called recalc_accuracy to the clk_ops structure.
      This callback is given the parent clock accuracy (if the clock is not a
      root clock) and should recalculate the given clock accuracy.
      
      This callback is optional and may be implemented if the clock is not
      a perfect clock (accuracy != 0 ppb).
      Signed-off-by: 's avatarBoris BREZILLON <b.brezillon@overkiz.com>
      Signed-off-by: 's avatarMike Turquette <mturquette@linaro.org>
      5279fc40
  11. 19 Aug, 2013 1 commit
    • James Hogan's avatar
      clk: add support for clock reparent on set_rate · 71472c0c
      James Hogan authored
      Add core support to allow clock implementations to select the best
      parent clock when rounding a rate, e.g. the one which can provide the
      closest clock rate to that requested. This is by way of adding a new
      clock op, determine_rate(), which is like round_rate() but has an extra
      parameter to allow the clock implementation to optionally select a
      different parent clock. The core then takes care of reparenting the
      clock when setting the rate.
      
      The parent change takes place with the help of some new private data
      members. struct clk::new_parent specifies a clock's new parent (NULL
      indicates no change), and struct clk::new_child specifies a clock's new
      child (whose new_parent member points back to it). The purpose of these
      are to allow correct walking of the future tree for notifications prior
      to actually reparenting any clocks, specifically to skip child clocks
      who are being reparented to another clock (they will be notified via the
      new parent), and to include any new child clock. These pointers are set
      by clk_calc_subtree(), and the new_child pointer gets cleared when a
      child is actually reparented to avoid duplicate POST_RATE_CHANGE
      notifications.
      
      Each place where round_rate() is called, determine_rate() is checked
      first and called in preference. This restructures a few of the call
      sites to simplify the logic into if/else blocks.
      Signed-off-by: 's avatarJames Hogan <james.hogan@imgtec.com>
      Reviewed-by: 's avatarStephen Boyd <sboyd@codeaurora.org>
      Cc: Mike Turquette <mturquette@linaro.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Signed-off-by: 's avatarMike Turquette <mturquette@linaro.org>
      71472c0c
  12. 10 Jun, 2013 1 commit
  13. 28 Apr, 2013 1 commit
  14. 21 Mar, 2013 1 commit
  15. 16 Mar, 2012 1 commit
    • Mike Turquette's avatar
      Documentation: common clk API · 69fe8a8e
      Mike Turquette authored
      Provide documentation for the common clk structures and APIs.  This code
      can be found in drivers/clk/ and include/linux/clk*.h.
      Signed-off-by: 's avatarMike Turquette <mturquette@linaro.org>
      Signed-off-by: 's avatarMike Turquette <mturquette@ti.com>
      Reviewed-by: 's avatarAndrew Lunn <andrew@lunn.ch>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Jeremy Kerr <jeremy.kerr@canonical.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Arnd Bergman <arnd.bergmann@linaro.org>
      Cc: Paul Walmsley <paul@pwsan.com>
      Cc: Shawn Guo <shawn.guo@freescale.com>
      Cc: Sascha Hauer <s.hauer@pengutronix.de>
      Cc: Richard Zhao <richard.zhao@linaro.org>
      Cc: Saravana Kannan <skannan@codeaurora.org>
      Cc: Magnus Damm <magnus.damm@gmail.com>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: Linus Walleij <linus.walleij@stericsson.com>
      Cc: Stephen Boyd <sboyd@codeaurora.org>
      Cc: Amit Kucheria <amit.kucheria@linaro.org>
      Cc: Deepak Saxena <dsaxena@linaro.org>
      Cc: Grant Likely <grant.likely@secretlab.ca>
      Signed-off-by: 's avatarArnd Bergmann <arnd@arndb.de>
      69fe8a8e