1. 13 2月, 2016 1 次提交
    • S
      Revert "clk: qcom: Specify LE device endianness" · c430daf9
      Stephen Boyd 提交于
      This reverts commit 329cabce.
      
      The commit that caused us to specify LE device endianness here,
      29bb45f2 (regmap-mmio: Use native endianness for read/write,
      2015-10-29), has been reverted in mainline so now when we specify
      LE it actively breaks big endian kernels because the byte
      swapping in regmap-mmio is incorrect. Let's revert this change
      because it will 1) fix the big endian kernels and 2) be redundant
      to specify LE because that will become the default soon.
      
      Cc: Kevin Hilman <khilman@linaro.org>
      Tested-by: NKevin Hilman <khilman@baylibre.com>
      Cc: Mark Brown <broonie@kernel.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      c430daf9
  2. 12 2月, 2016 6 次提交
  3. 09 2月, 2016 1 次提交
  4. 30 1月, 2016 1 次提交
  5. 01 12月, 2015 4 次提交
  6. 21 11月, 2015 2 次提交
    • G
      clk: qcom: msm8916: Move xo and sleep clocks into DT · cf81a1cf
      Georgi Djakov 提交于
      Move the xo and sleep clocks to device-tree, instead of hard-coding
      them in the driver. This allows us to insert the RPM clocks (if they
      are enabled) in between the on-board oscillators and the actual clock.
      Signed-off-by: NGeorgi Djakov <georgi.djakov@linaro.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      cf81a1cf
    • S
      clk: qcom: Specify LE device endianness · 329cabce
      Stephen Boyd 提交于
      All these clock controllers are little endian devices, but so far
      we've been relying on the regmap mmio bus handling this for us
      without explicitly stating that fact. After commit 4a98da2164cf
      (regmap-mmio: Use native endianness for read/write, 2015-10-29),
      the regmap mmio bus will read/write with the __raw_*() IO
      accessors, instead of using the readl/writel() APIs that do
      proper byte swapping for little endian devices.
      
      So if we're running on a big endian processor and haven't
      specified the endianness explicitly in the regmap config or in
      DT, we're going to switch from doing little endian byte swapping
      to big endian accesses without byte swapping, leading to some
      confusing results. On my apq8074 dragonboard, this causes the
      device to fail to boot as we access the clock controller with
      big endian IO accesses even though the device is little endian.
      
      Specify the endianness explicitly so that the regmap core
      properly byte swaps the accesses for us.
      Reported-by: NKevin Hilman <khilman@linaro.org>
      Tested-by: NTyler Baker <tyler.baker@linaro.org>
      Tested-by: NKevin Hilman <khilman@linaro.org>
      Cc: Simon Arlott <simon@fire.lp0.eu>
      Cc: Mark Brown <broonie@kernel.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      329cabce
  7. 17 11月, 2015 2 次提交
    • S
      clk: qcom: Move cxo/pxo/xo into dt files · a085f877
      Stephen Boyd 提交于
      Put these clocks into the dt files instead of registering them
      from C code. This provides a few benefits. It allows us to
      specify the frequency of these clocks at the board level instead
      of hard-coding them in the driver. It allows us to insert an RPM
      clock in between the consumers of the crystals and the actual
      clock. And finally, it helps us transition the GCC driver to use
      RPM clocks when that configuration is enabled.
      
      Cc: Georgi Djakov <georgi.djakov@linaro.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      a085f877
    • S
      clk: qcom: common: Add API to register board clocks backwards compatibly · ee15faff
      Stephen Boyd 提交于
      We want to put the XO board clocks into the dt files, but we also
      need to be backwards compatible with an older dtb. Add an API to
      the common code to do this. This also makes a place for us to
      handle the case when the RPM clock driver is enabled and we don't
      want to register the fixed factor clock.
      
      Cc: Georgi Djakov <georgi.djakov@linaro.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      ee15faff
  8. 28 10月, 2015 1 次提交
    • S
      clk: qcom: msm8960: Fix dsi1/2 halt bits · e5bf1991
      Stephen Boyd 提交于
      The halt bits for these clocks seem wrong. I get the following
      warning while booting on an msm8960-cdp:
      
      WARNING: CPU: 0 PID: 1 at drivers/clk/qcom/clk-branch.c:97 clk_branch_toggle+0xd0/0x138()
      dsi1_clk status stuck at 'on'
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.3.0-rc3-00113-g5532cfb5 #110
      Hardware name: Qualcomm (Flattened Device Tree)
      [<c0216984>] (unwind_backtrace) from [<c02138f8>] (show_stack+0x10/0x14)
      [<c02138f8>] (show_stack) from [<c04a525c>] (dump_stack+0x70/0xbc)
      [<c04a525c>] (dump_stack) from [<c0223c70>] (warn_slowpath_common+0x78/0xb4)
      [<c0223c70>] (warn_slowpath_common) from [<c0223d40>] (warn_slowpath_fmt+0x30/0x40)
      [<c0223d40>] (warn_slowpath_fmt) from [<c05fc2dc>] (clk_branch_toggle+0xd0/0x138)
      [<c05fc2dc>] (clk_branch_toggle) from [<c05f3f3c>] (clk_disable_unused_subtree+0x98/0x1b0)
      [<c05f3f3c>] (clk_disable_unused_subtree) from [<c05f3ec4>] (clk_disable_unused_subtree+0x20/0x1b0)
      [<c05f3ec4>] (clk_disable_unused_subtree) from [<c05f5474>] (clk_disable_unused+0x58/0xd8)
      [<c05f5474>] (clk_disable_unused) from [<c0209710>] (do_one_initcall+0xac/0x1ec)
      [<c0209710>] (do_one_initcall) from [<c0991db4>] (kernel_init_freeable+0x11c/0x1e8)
      [<c0991db4>] (kernel_init_freeable) from [<c0727ae0>] (kernel_init+0x8/0xec)
      [<c0727ae0>] (kernel_init) from [<c0210238>] (ret_from_fork+0x14/0x3c)
      
      Fix the status bits and the errors go away.
      
      Fixes: 5532cfb5 ("clk: qcom: mmcc-8960: Add DSI related clocks")
      Acked-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      e5bf1991
  9. 17 10月, 2015 2 次提交
    • A
      clk: qcom: mmcc-8960: Add DSI related clocks · 5532cfb5
      Archit Taneja 提交于
      Add rcg and branch clk structs for DSI1 and DSI2 blocks found in MSM8960
      and APQ8064. Each DSI instance has 4 pairs of rcg and branch clocks.
      Populate arrays mmcc_msm8960_clks and mmcc_apq8064_clks with these clocks.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      5532cfb5
    • A
      clk: qcom: clk-rcg: Add customized clk_ops for DSI RCGs · d8aa2bee
      Archit Taneja 提交于
      DSI specific RCG clocks required customized clk_ops. There are
      a total of 4 RCGs per DSI block: DSI, BYTE, ESC and PIXEL.
      
      There are a total of 2 clocks coming from the DSI PLL, which serve as
      inputs to these RCGs. The BYTE and ESC RCGs are fed by one of the
      post dividers of DSI1 or DSI2 PLLs, and the DSI and PIXEL RCGs are fed by
      another divider of the PLL.
      
      In each of the 2 groups above, only one of the clocks sets its parent.
      These are BYTE RCG and DSI RCG for each of the groups respectively, as
      shown in the diagram below.
      
      The DSI and BYTE RCGs serve as bypass clocks. We create a new set of ops
      clk_rcg_bypass2_ops, which are like the regular bypass ops, but don't
      take in a freq table, since the DSI driver using these clocks is
      parent-able.
      
      The PIXEL RCG needs to derive the required pixel clock using dsixpll.
      It parses a m/n frac table to retrieve the correct clock.
      
      The ESC RCG doesn't have a frac M/N block, it can just apply a pre-
      divider. Its ops simply check if the required clock rate can be
      achieved by the pre-divider.
      
            +-------------------+
            |                   |---dsixpllbyte---o---> To byte RCG
            |                   |                 | (sets parent rate)
            |                   |                 |
            |                   |                 |
            |    DSI 1/2 PLL    |                 |
            |                   |                 o---> To esc RCG
            |                   |                 (doesn't set parent rate)
            |                   |
            |                   |----dsixpll-----o---> To dsi RCG
            +-------------------+                | (sets parent rate)
                                   ( x = 1, 2 )  |
                                                 |
                                                 o---> To pixel rcg
                                                 (doesn't set parent rate)
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      d8aa2bee
  10. 09 10月, 2015 5 次提交
  11. 18 9月, 2015 4 次提交
  12. 17 9月, 2015 10 次提交
  13. 26 8月, 2015 1 次提交