15 Aug, 2016

1 commit

  • Commit 'b09d6d991' removes include/linux/clk-private.h and
    re-arranges the clock related structures contained in it in
    different files. The documentation has not been updated
    accordingly, thus it wasn't anymore consistent.

    Place the structures referenced by Documentation/clk.txt in the
    correct files and update their contents to the latest status.

    Signed-off-by: Andi Shyti
    [geert: Fix path to clk.c, whitespace, more clk_core, ...]
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Jonathan Corbet

    Andi Shyti
     

28 Jul, 2015

1 commit

  • 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: Boris Brezillon
    CC: Jonathan Corbet
    CC: Tony Lindgren
    CC: Ralf Baechle
    CC: "Emilio López"
    CC: Maxime Ripard
    Acked-by: Tero Kristo
    CC: Peter De Schrijver
    CC: Prashant Gaikwad
    CC: Stephen Warren
    CC: Thierry Reding
    CC: Alexandre Courbot
    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: Stephen Boyd
    Tested-by: Romain Perier
    Signed-off-by: Heiko Stuebner
    [sboyd@codeaurora.org: Folded in fix from Heiko for fixed-rate
    clocks without parents or a rate determining op]
    Signed-off-by: Stephen Boyd

    Boris Brezillon
     

14 May, 2015

1 commit

  • Currently Documentation/clk.txt describes an obsolete techinique to
    statically define struct clk objects.

    This capability was removed by b09d6d991025("clk: remove clk-private.h")
    and is no longer supported. The documentation describing the feature should
    be removed.

    Signed-off-by: Daniel Thompson
    Cc: Jonathan Corbet
    Cc: Michael Turquette
    Cc: Stephen Boyd
    Signed-off-by: Stephen Boyd

    Daniel Thompson
     

03 Feb, 2015

1 commit

  • Adds a way for clock consumers to set maximum and minimum rates. This
    can be used for thermal drivers to set minimum rates, or by misc.
    drivers to set maximum rates to assure a minimum performance level.

    Changes the signature of the determine_rate callback by adding the
    parameters min_rate and max_rate.

    Signed-off-by: Tomeu Vizoso
    Signed-off-by: Stephen Boyd
    [sboyd@codeaurora.org: set req_rate in __clk_init]
    Signed-off-by: Michael Turquette
    [mturquette@linaro.org: min/max rate for sun6i_ahb1_clk_determine_rate
    migrated clk-private.h changes to clk.c]

    Tomeu Vizoso
     

04 Dec, 2014

1 commit


13 May, 2014

1 commit

  • General:
    - Add parameter names to .round_rate() and .set_rate().

    Documentation/clk.txt:
    - Add missing parameter for .set_rate(),
    - Add missing .debug_init().

    include/linux/clk-provider.h:
    - Add parent rate documentation for .round_rate(),
    - Reorder documentation to match implementation order,
    - Add missing documentation for .init().

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Mike Turquette

    Geert Uytterhoeven
     

20 Mar, 2014

1 commit


17 Jan, 2014

1 commit

  • Some of Qualcomm's clocks can change their parent and rate at the
    same time with a single register write. Add support for this
    hardware to the common clock framework by adding a new
    set_rate_and_parent() op. When the clock framework determines
    that both the parent and the rate are going to change during
    clk_set_rate() it will call the .set_rate_and_parent() op if
    available and fall back to calling .set_parent() followed by
    .set_rate() otherwise.

    Reviewed-by: James Hogan
    Signed-off-by: Stephen Boyd
    Signed-off-by: Mike Turquette

    Stephen Boyd
     

23 Dec, 2013

1 commit

  • 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: Boris BREZILLON
    Signed-off-by: Mike Turquette

    Boris BREZILLON
     

20 Aug, 2013

1 commit

  • 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: James Hogan
    Reviewed-by: Stephen Boyd
    Cc: Mike Turquette
    Cc: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Mike Turquette

    James Hogan
     

11 Jun, 2013

1 commit


28 Apr, 2013

1 commit

  • This is primarily useful when there's a driver that doesn't claim clocks
    properly, but the bootloader leaves them on. It's not expected to be used
    in normal cases, but for bringup and debug it's very useful to have the
    option to not gate unclaimed clocks that are still on.

    Signed-off-by: Olof Johansson
    Signed-off-by: Mike Turquette
    [mturquette@linaro.org: fixed up trivial merge issue]

    Olof Johansson
     

22 Mar, 2013

1 commit


17 Mar, 2012

1 commit

  • 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: Mike Turquette
    Signed-off-by: Mike Turquette
    Reviewed-by: Andrew Lunn
    Cc: Russell King
    Cc: Jeremy Kerr
    Cc: Thomas Gleixner
    Cc: Arnd Bergman
    Cc: Paul Walmsley
    Cc: Shawn Guo
    Cc: Sascha Hauer
    Cc: Richard Zhao
    Cc: Saravana Kannan
    Cc: Magnus Damm
    Cc: Rob Herring
    Cc: Mark Brown
    Cc: Linus Walleij
    Cc: Stephen Boyd
    Cc: Amit Kucheria
    Cc: Deepak Saxena
    Cc: Grant Likely
    Signed-off-by: Arnd Bergmann

    Mike Turquette