1. 20 Jun, 2017 19 commits
  2. 19 Jun, 2017 4 commits
    • Leo Yan's avatar
      clk: Hi3660: register fixed_rate_clks with CLK_OF_DECLARE_DRIVER · a925810f
      Leo Yan authored
      The timer will register into system at very early phase at kernel boot;
      if timer needs to use clock, the clock should be get ready in function
      of_clk_init() so later the timer driver probe can retrieve clock
      successfully. This is finished in below flow on arm64:
      
        start_kernel()
          `-> time_init()
                `-> of_clk_init(NULL)    => register timer's clock
                `-> clocksource_probe()  => register timer
      
      On Hi3660 the sp804 timer uses clock "osc32k", this clock is registered
      as platform driver rather than CLK_OF_DECLARE_DRIVER method. As result,
      sp804 timer probe returns failure due if cannot bind clock properly.
      
      To fix the failure, this patch is to split crgctrl clocks into two
      subsets. One part is for fixed_rate_clks which includes pre-defined
      fixed rate clocks, and "osc32k" clock is in this category; So we change
      their registration to CLK_OF_DECLARE_DRIVER method, as result the clocks
      can be registered ahead with function of_clk_init() and timer driver can
      bind timer clock successfully; the rest of the crgctrl clocks are still
      registered by the probe of the platform driver.
      
      This patch also adds checking for all crgctrl clocks registration and
      print out log if any clock has failure.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      a925810f
    • Konstantin Porotchkin's avatar
      clk: mvebu: cp110: add sdio clock to cp-110 system controller · a45af6d3
      Konstantin Porotchkin authored
      This commit updates the CP110 system controller driver to add the
      definition for a missing clock.
      
      The SDIO clock is dedicated driving the SDHCI interface and its frequency
      is 400MHz (2/5 of PLL source clock).
      
      The SDIO interface should be bound to this clock and not the core clock
      as in the older code.
      Using the wrong clock lead to a maximum SDHCI frequency of 250 Mhz, while
      the HW really supports up to 400 Mhz.
      
      This patch also fixes the NAND clock relationship documentation.
      Signed-off-by: default avatarKonstantin Porotchkin <kostap@marvell.com>
      [gregory.clement@free-electrons.com:
      - use sdio instead of emmc to name the clock]
      Reviewed-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      a45af6d3
    • Gregory CLEMENT's avatar
      clk: mvebu: cp110: introduce a new binding · 5ffeb5f5
      Gregory CLEMENT authored
      The initial intent when the binding of the cp110 system controller was to
      have one flat node. The idea being that what is currently a clock-only
      driver in drivers would become a MFD driver, exposing the clock, GPIO and
      pinctrl functionality. However, after taking a step back, this would lead
      to a messy binding. Indeed, a single node would be a GPIO controller,
      clock controller, pinmux controller, and more.
      
      This patch adopts a more classical solution of a top-level syscon node
      with sub-nodes for the individual devices. The main benefit will be to
      have each functional block associated to its own sub-node where we can
      put its own properties.
      
      The introduction of the Armada 7K/8K is still in the early stage so the
      plan is to remove the old binding. However, we don't want to break the
      device tree compatibility for the few devices already in the field. For
      this we still keep the support of the legacy compatible string with a big
      warning in the kernel about updating the device tree.
      Reviewed-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      5ffeb5f5
    • Gregory CLEMENT's avatar
      clk: mvebu: cp110: do not depend anymore of the *-clock-output-names · f5667274
      Gregory CLEMENT authored
      Using the *-clock-output-names property was a convenient way to have a
      unique name for each clock even when there are multiple cp110 blocks
      as we can find on Armada 8K.
      
      However it has some drawbacks: the main one being a stronger link than
      necessary between the driver and the device tree. For example the clock
      name can't be changed, removed or moved. It is still the early stage of
      introduction of the Armada 7K/8K and the hardware is still not totally
      documented, especially for the clock part. By removing the use of
      *-clock-output-names it will be easier to add new clocks without breaking
      the compatibility.
      
      The name of each clock is now created by using its physical address as a
      prefix (as it was done for the platform device names). Thanks to this we
      have an automatic way to compute a unique name.
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      f5667274
  3. 16 Jun, 2017 6 commits
  4. 15 Jun, 2017 4 commits
    • Tero Kristo's avatar
      clk: ti: omap4: add clkctrl clock data · 1c881b5a
      Tero Kristo authored
      Add data for omap4 clkctrl clocks, and register it within the clkctrl
      driver.
      Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      1c881b5a
    • Tero Kristo's avatar
      dt-bindings: clk: add omap4 clkctrl definitions · 70ab980f
      Tero Kristo authored
      Contains offsets for all omap4 clkctrl main and optional clocks.
      Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      70ab980f
    • Tero Kristo's avatar
      clk: ti: add support for clkctrl clocks · 88a17252
      Tero Kristo authored
      Previously, hwmod core has been used for controlling the hwmod level
      clocks directly. This has certain drawbacks, like being unable to share
      the clocks for multiple users, missing usecounting and generally being
      totally incompatible with the common clock framework.
      
      This patch adds support for clkctrl clocks for addressing the above
      issues. These support the modulemode handling, which will replace the
      direct hwmod clkctrl linkage. Any optional clocks are also supported,
      gate, mux and divider.
      Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      88a17252
    • Tony Lindgren's avatar
      Documentation: dt-bindings: Add binding documentation for TI clkctrl clocks · 35395a9c
      Tony Lindgren authored
      Texas Instruments omap variant SoCs starting with omap4 have a clkctrl
      clock controller instance for each interconnect target module. The clkctrl
      controls functional and interface clocks for the module.
      
      The clkctrl clocks are currently handled by arch/arm/mach-omap2 hwmod code.
      With this binding and a related clock device driver we can start moving the
      clkctrl clock handling to live in drivers/clk/ti.
      
      Note that this binding allows keeping the clockdomain related parts out of
      drivers/clock. The CLKCTCTRL and DYNAMICDEP registers can be handled by
      a separate driver in drivers/soc/ti and genpd. If the clockdomain driver
      needs to know it's clocks, we can just set the the clkctrl device
      instances to be children of the related clockdomain device.
      
      Each clkctrl clock can have multiple optional gate clocks, and multiple
      optional mux clocks. To represent this in device tree, it seems that
      it is best done using four clock cells #clock-cells = <2> property.
      
      The reasons for using #clock-cells = <2> are:
      
      1. We need to specify the clkctrl offset from the instance base. Otherwise
         we end up with a large number of device tree nodes that need to be
         patched when new clocks are discovered in a clkctrl clock with minor
         hardware revision changes for example
      
      2. On omap5 CM_L3INIT_USB_HOST_HS_CLKCTRL has ten OPTFCLKEN bits. So we
         need to use a separate cell for optional gate clocks to avoid address
         space conflicts
      
      There is probably no need to list input clocks for each clkctrl clock
      instance in the binding. If we want to add them, the standard clocks
      binding can be used for that.
      
      For hardware reference, see omap4430 TRM "Table 3-1312. L4PER_CM2 Registers
      Mapping Summary" for example. It shows one instance of a clkctrl clock
      controller with multiple clkctrl registers.
      
      Cc: Paul Walmsley <paul@pwsan.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
      35395a9c
  5. 14 Jun, 2017 5 commits
    • Stephen Boyd's avatar
      Merge branch 'clk-fixes' into clk-next · 9c861f33
      Stephen Boyd authored
      * clk-fixes:
        clk: sunxi-ng: a64: Export PLL_PERIPH0 clock for the PRCM
        clk: sunxi-ng: h3: Export PLL_PERIPH0 clock for the PRCM
        dt-bindings: clock: sunxi-ccu: Add pll-periph to PRCM's needed clocks
        clk: sunxi-ng: enable SUNXI_CCU_MP for PRCM
        clk: sunxi-ng: v3s: Fix usb otg device reset bit
        clk: sunxi-ng: a31: Correct lcd1-ch1 clock register offset
      9c861f33
    • Stephen Boyd's avatar
      Merge tag 'sunxi-clk-fixes-for-4.12' of... · 949bdfed
      Stephen Boyd authored
      Merge tag 'sunxi-clk-fixes-for-4.12' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into clk-fixes
      
      Allwinner clock fixes for 4.12
      
      Some fixes that fix some bindings that went in 4.12, fix a few reset and
      clock offsets and a build error fix
      
      * tag 'sunxi-clk-fixes-for-4.12' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
        clk: sunxi-ng: a64: Export PLL_PERIPH0 clock for the PRCM
        clk: sunxi-ng: h3: Export PLL_PERIPH0 clock for the PRCM
        dt-bindings: clock: sunxi-ccu: Add pll-periph to PRCM's needed clocks
        clk: sunxi-ng: enable SUNXI_CCU_MP for PRCM
        clk: sunxi-ng: v3s: Fix usb otg device reset bit
        clk: sunxi-ng: a31: Correct lcd1-ch1 clock register offset
      949bdfed
    • Stephen Boyd's avatar
      Merge tag 'clk-v4.13-samsung' of... · 7f274d54
      Stephen Boyd authored
      Merge tag 'clk-v4.13-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk into clk-next
      
      Pull samsung clk driver updates from Sylwester Nawrocki
      
       - conversion to the clk_hw API
       - definitions and fixes of exynos5420 SoC audio subsystem
         related clocks
      
      * tag 'clk-v4.13-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk:
        clk: samsung: exynos542x: Add EPLL rate table
        clk: samsung: Add missing exynos5420 audio related clocks
        clk: samsung: Add enable/disable operation for PLL36XX clocks
        clk: samsung: s5pv210-audss: Convert to the new clk_hw API
        clk: samsung: exynos-clkout: Convert to the new clk_hw API
        clk: samsung: exynos-audss: Convert to the new clk_hw API
        clk: samsung: Convert common drivers to the new clk_hw API
        clk: samsung: Add local variable to match its purpose
        clk: samsung: Remove dead code
      7f274d54
    • Stephen Boyd's avatar
      Merge tag 'v4.13-rockchip-clk1' of... · c96da4dd
      Stephen Boyd authored
      Merge tag 'v4.13-rockchip-clk1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into clk-next
      
      Pull rockchip clk driver updates from Heiko Stuebner:
      
      One new clock controller for the rk3128 soc, a fixup for the rk3228 cpuclk
      table and the usual bunch of some new clock-ids and some clocks marked as
      critical.
      
      * tag 'v4.13-rockchip-clk1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip:
        clk: rockchip: mark some special clk as critical on rk3368
        clk: rockchip: mark noc and some special clk as critical on rk3288
        clk: rockchip: mark noc and some special clk as critical on rk3228
        clk: rockchip: mark pclk_ddrupctl as critical_clock on rk3036
        clk: rockchip: add clock controller for rk3128
        dt-bindings: add bindings for rk3128 clock controller
        clk: rockchip: export more rk3228 clocks ids
        clk: rockchip: add ids for rk3399 testclks used for camera handling
        clk: rockchip: add dt-binding header for rk3128
        clk: rockchip: fix up the RK3228 clk cpu setting table
        clk: rockchip: add clock-ids for more rk3228 clocks
        clk: rockchip: add ids for camera on rk3399
      c96da4dd
    • Tero Kristo's avatar
      clk: keystone: Add sci-clk driver support · b745c079
      Tero Kristo authored
      In K2G, the clock handling is done through firmware executing on a
      separate core. Linux kernel needs to communicate to the firmware
      through TI system control interface to access any power management
      related resources, including clocks.
      
      The keystone sci-clk driver does this, by communicating to the
      firmware through the TI SCI driver. The driver adds support for
      registering clocks through DT, and basic required clock operations
      like prepare/get_rate, etc.
      Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
      [sboyd@codeaurora.org: Make ti_sci_init_clocks() static]
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      b745c079
  6. 13 Jun, 2017 1 commit
  7. 12 Jun, 2017 1 commit
    • Martin Blumenstingl's avatar
      clk: meson: meson8b: add compatibles for Meson8 and Meson8m2 · 855f06a1
      Martin Blumenstingl authored
      The clock controller on Meson8, Meson8b and Meson8m2 is very similar
      based on the code from the Amlogic GPL kernel sources. Add separate
      compatibles for each SoC to make sure that we can easily implement
      all the small differences for each SoC later on.
      
      In general the Meson8 and Meson8m2 seem to be almost identical as they
      even share the same mach-meson8 directory in Amlogic's GPL kernel
      sources.
      The main clocks on Meson8, Meson8b and Meson8m2 are very similar,
      because they are all using the same PLL values, 90% of the clock gates
      are the same (the actual diffstat of the mach-meson8/clock.c and
      mach-meson8b/clock.c files is around 30 to 40 lines, when excluding
      all commented out code).
      The difference between the Meson8 and Meson8b clock gates seem to be:
      - Meson8 has AIU_PCLK, HDMI_RX, VCLK2_ENCT, VCLK2_ENCL, UART3,
        CSI_DIG_CLKIN gates which don't seem to be available on Meson8b
      - the gate on Meson8 for bit 7 seems to be named "_1200XXX" instead
        of "PERIPHS_TOP" (on Meson8b)
      - Meson8b has a SANA gate which doesn't seem to exist on Meson8 (or
        on Meson8 the same bit is used by the UART3 gate in Amlogic's GPL
        kernel sources)
      None of these gates is added for now, since it's unclear whether these
      definitions are actually correct (the VCLK2_ENCT gate for example is
      defined, but only used in some commented block).
      
      The main difference between all three SoCs seem to be the video (VPU)
      clocks. Apart from different supported clock rates (according to vpu.c
      in mach-meson8 and mach-meson8b from Amlogic's GPL kernel sources) the
      most notable difference is that Meson8m2 has a GP_PLL clock and a mux
      (probably the same as on the Meson GX SoCs) to support glitch-free
      (clock rate) switching.
      None of these VPU clocks are not supported by our mainline meson8b
      clock driver yet though.
      Signed-off-by: default avatarMartin Blumenstingl <martin.blumenstingl@googlemail.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarKevin Hilman <khilman@baylibre.com>
      Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
      855f06a1