26 Jun, 2020

1 commit

  • The (struct __prci_data).hw_clks.hws is an array with dynamic elements.
    Using struct_size(pd, hw_clks.hws, ARRAY_SIZE(__prci_init_clocks))
    instead of sizeof(*pd) to get the correct memory size of
    struct __prci_data for sifive/fu540-prci. After applying this
    modifications, the kernel runs smoothly with CONFIG_SLAB_FREELIST_RANDOM
    enabled on the HiFive unleashed board.

    Fixes: 30b8e27e3b58 ("clk: sifive: add a driver for the SiFive FU540 PRCI IP block")
    Signed-off-by: Vincent Chen
    Signed-off-by: Palmer Dabbelt

    Vincent Chen
     

31 May, 2019

1 commit

  • Pull clk driver fixes from Stephen Boyd:

    - Don't expose the SiFive clk driver on non-RISCV architectures

    - Fix some bits describing clks in the imx8mm driver

    - Always call clk domain code in the TI driver so non-legacy platforms
    work

    * tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
    clk: ti: clkctrl: Fix clkdm_clk handling
    clk: imx: imx8mm: fix int pll clk gate
    clk: sifive: restrict Kconfig scope for the FU540 PRCI driver

    Linus Torvalds
     

22 May, 2019

1 commit

  • Restrict Kconfig scope for SiFive clock and reset IP block drivers
    such that they won't appear on most configurations that are unlikely
    to support them. This is based on a suggestion from Pavel Machek
    . Ideally this should be dependent on
    CONFIG_ARCH_SIFIVE, but since that Kconfig directive does not yet
    exist, add dependencies on RISCV or COMPILE_TEST for now.

    Signed-off-by: Paul Walmsley
    Signed-off-by: Paul Walmsley
    Reported-by: Pavel Machek
    Cc: Michael Turquette
    Acked-by: Pavel Machek
    Signed-off-by: Stephen Boyd

    Paul Walmsley
     

21 May, 2019

1 commit


16 May, 2019

1 commit

  • Now that we've gotten rid of clk_readl() we can remove io.h from the
    clk-provider header and push out the io.h include to any code that isn't
    already including the io.h header but using things like readl/writel,
    etc.

    Found with this grep:

    git grep -l clk-provider.h | grep '.c$' | xargs git grep -L 'linux/io.h' | \
    xargs git grep -l \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\'

    I also reordered a couple includes when they weren't alphabetical and
    removed clk.h from kona, replacing it with clk-provider.h because
    that driver doesn't use clk consumer APIs.

    Acked-by: Geert Uytterhoeven
    Cc: Chen-Yu Tsai
    Acked-by: Maxime Ripard
    Acked-by: Tero Kristo
    Acked-by: Sekhar Nori
    Cc: Krzysztof Kozlowski
    Acked-by: Mark Brown
    Cc: Chris Zankel
    Acked-by: Max Filippov
    Acked-by: John Crispin
    Acked-by: Heiko Stuebner
    Signed-off-by: Stephen Boyd

    Stephen Boyd
     

04 May, 2019

1 commit

  • Add driver code for the SiFive FU540 PRCI IP block. This IP block
    handles reset and clock control for the SiFive FU540 device and
    implements SoC-level clock tree controls and dividers.

    Based on code written by Wesley Terpstra :
    https://github.com/riscv/riscv-linux/commit/999529edf517ed75b56659d456d221b2ee56bb60

    Boot and PLL rate change were tested on a SiFive HiFive Unleashed
    board.

    This version includes several changes requested by Stephen Boyd
    .

    Signed-off-by: Paul Walmsley
    Signed-off-by: Paul Walmsley
    Cc: Michael Turquette
    Cc: Stephen Boyd
    Cc: Albert Ou
    Cc: Wesley W. Terpstra
    Cc: Palmer Dabbelt
    Cc: Megan Wachs
    Cc: linux-riscv@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    [sboyd@kernel.org: Fix some const and ARRAY_SIZE() issues, make makefile
    only descend if CLK_SIFIVE=y]
    Signed-off-by: Stephen Boyd

    Paul Walmsley