1. 18 12月, 2015 1 次提交
    • G
      ARM: OMAP2+: am43xx: enable GENERIC_CLOCKEVENTS_BROADCAST · 0b3e6fca
      Grygorii Strashko 提交于
      System will misbehave in the following case:
      - AM43XX only build (UP);
      - CONFIG_CPU_IDLE=y
      - ARM TWD timer enabled and selected as clockevent device.
      
      In the above case, It's expected that broadcast timer will be used as
      backup timer when CPUIdle will put MPU in low power states where ARM
      TWD will stop and lose its context. But, the CONFIG_SMP might not be
      selected when kernel is built for AM43XX SoC only and, as result,
      GENERIC_CLOCKEVENTS_BROADCAST option will not be selected also. This
      will break CPUIdle and System will stuck in low power states.
      
      Hence, fix it by selecting GENERIC_CLOCKEVENTS_BROADCAST option for
      AM43XX SoCs always and add empty tick_broadcast() function
      implementation - no need to send any IPI on UP. After this change
      timer1 will be selected as broadcast timer the same way as for SMP,
      and CPUIdle will work properly.
      Signed-off-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      0b3e6fca
  2. 17 10月, 2015 3 次提交
  3. 16 10月, 2015 6 次提交
  4. 01 10月, 2015 1 次提交
  5. 02 9月, 2015 1 次提交
    • T
      ARM: OMAP2+: Fix booting if no timer parent clock is available · 874b300a
      Tony Lindgren 提交于
      When bringing up a new SoC we needlessly prevent booting at timer
      init if timer clock_set_parent fails. This can fail if the system
      is booting on bootloader configured PLL values until the clock
      framework driver for the PLL is implemented.
      
      Let's just WARN instead, this will provide helpful information
      for anybody bringing up a new SoC what needs to be fixed.
      
      This allows to boot dm814x that's still missing the PLL driver.
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      874b300a
  6. 17 7月, 2015 1 次提交
  7. 16 7月, 2015 2 次提交
  8. 12 5月, 2015 1 次提交
    • T
      ARM: OMAP2+: Remove bogus struct clk comparison for timer clock · b0897972
      Tony Lindgren 提交于
      With recent changes to use determine_rate, the comparison of two
      clocks won't work without clk_is_match that does __clk_get_hw
      on the clocks first.
      
      As we've been unconditionally already calling clk_set_parent
      already because of the bogus comparison, let's just remove the
      check as suggested by Stephen Boyd <sboyd@codeaurora.org>.
      
      Cc: Michael Turquette <mturquette@linaro.org>
      Cc: Paul Walmsley <paul@pwsan.com>
      Cc: Tero Kristo <t-kristo@ti.com>
      Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
      Acked-by: NStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      b0897972
  9. 15 1月, 2015 1 次提交
  10. 06 1月, 2015 2 次提交
  11. 12 9月, 2014 1 次提交
  12. 08 5月, 2014 1 次提交
  13. 06 5月, 2014 1 次提交
  14. 01 3月, 2014 1 次提交
  15. 18 1月, 2014 1 次提交
  16. 22 11月, 2013 1 次提交
  17. 12 10月, 2013 1 次提交
  18. 11 10月, 2013 1 次提交
  19. 09 10月, 2013 2 次提交
  20. 04 10月, 2013 1 次提交
  21. 21 8月, 2013 1 次提交
  22. 13 8月, 2013 1 次提交
  23. 03 8月, 2013 1 次提交
  24. 04 7月, 2013 1 次提交
  25. 25 6月, 2013 1 次提交
  26. 13 6月, 2013 2 次提交
  27. 08 5月, 2013 1 次提交
  28. 07 5月, 2013 1 次提交
  29. 03 5月, 2013 1 次提交
    • R
      ARM: OMAP: use consistent error checking · c48cd659
      Russell King 提交于
      Consistently check errors using the usual method used in the kernel
      for much of its history.  For instance:
      
      int gpmc_cs_set_timings(int cs, const struct gpmc_timings *t)
      {
      	int div;
      	div = gpmc_calc_divider(t->sync_clk);
      	if (div < 0)
      		return div;
      static int gpmc_set_async_mode(int cs, struct gpmc_timings *t)
      {
      ...
      	return gpmc_cs_set_timings(cs, t);
      
      .....
      	ret = gpmc_set_async_mode(gpmc_onenand_data->cs, &t);
      	if (IS_ERR_VALUE(ret))
      		return ret;
      
      So, gpmc_cs_set_timings() thinks any negative return value is an error,
      but where we check that in higher levels, only a limited range are
      errors...
      
      There is only _one_ use of IS_ERR_VALUE() in arch/arm which is really
      appropriate, and that is in arch/arm/include/asm/syscall.h:
      
      static inline long syscall_get_error(struct task_struct *task,
      				     struct pt_regs *regs)
      {
      	unsigned long error = regs->ARM_r0;
      	return IS_ERR_VALUE(error) ? error : 0;
      }
      
      because this function really does have to differentiate between error
      return values and addresses which look like negative numbers (eg, from
      mmap()).
      
      So, here's a patch to remove them from OMAP, except for the above.
      Acked-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      c48cd659