1. 29 1月, 2019 1 次提交
    • T
      bus: ti-sysc: Fix timer handling with drop pm_runtime_irq_safe() · 9bd34c63
      Tony Lindgren 提交于
      Commit 84badc5e ("ARM: dts: omap4: Move l4 child devices to probe
      them with ti-sysc") started producing a warning for pwm-omap-dmtimer:
      
      WARNING: CPU: 0 PID: 77 at drivers/bus/omap_l3_noc.c:147
      l3_interrupt_handler+0x2f8/0x388
      44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4PER2 (Idle):
      Data Access in Supervisor mode during Functional access
      ...
      __pm_runtime_idle
      omap_dm_timer_disable
      pwm_omap_dmtimer_start
      pwm_omap_dmtimer_enable
      pwm_apply_state
      pwm_vibrator_start
      pwm_vibrator_play_work
      
      This is because the timer that pwm-omap-dmtimer is using is now being
      probed with ti-sysc interconnect target module instead of omap_device
      and the ti-sysc quirk for SYSC_QUIRK_LEGACY_IDLE is not fully
      compatible with what omap_device has been doing.
      
      We could fix this by reverting the timer changes and have the timer
      probe again with omap_device. Or we could add more quirk handling to
      ti-sysc driver. But as these options don't work nicely as longer term
      solutions, let's just make timers probe with ti-sysc without any
      quirks.
      
      To do this, all we need to do is remove quirks for timers for ti-sysc,
      and drop the bogus pm_runtime_irq_safe() flag for timer-ti-dm.
      
      We should not use pm_runtime_irq_safe() anyways for drivers as it will
      take a permanent use count on the parent device blocking the parent
      devices from idling and has been forcing ti-sysc driver to use a
      quirk flag.
      
      Note that we will move the timer data to DEBUG section later on in
      clean-up patches.
      
      Fixes: 84badc5e ("ARM: dts: omap4: Move l4 child devices to probe them with ti-sysc")
      Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
      Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: H. Nikolaus Schaller <hns@goldelico.com>
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Ladislav Michl <ladis@linux-mips.org>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Sebastian Reichel <sre@kernel.org>
      Cc: Tero Kristo <t-kristo@ti.com>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Reported-by: NH. Nikolaus Schaller <hns@goldelico.com>
      Tested-By: NAndreas Kemnade <andreas@kemnade.info>
      Tested-By: NH. Nikolaus Schaller <hns@goldelico.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      9bd34c63
  2. 11 12月, 2018 1 次提交
    • T
      bus: ti-sysc: Check for no-reset and no-idle flags at the child level · 4014c08b
      Tony Lindgren 提交于
      With ti-sysc, we need to now have the device tree properties for
      ti,no-reset-on-init and ti,no-idle-on-init at the module level instead
      of the child device level.
      
      Let's check for these properties at the child device level to enable
      quirks, and warn about moving the properties to the module level.
      
      Otherwise am335x-evm based boards tagging gpio1 with ti,no-reset-on-init
      will have their DDR power disabled if wired up in such a tricky way.
      
      Note that this should not be an issue for earlier kernels as we don't
      rely on this until the dts files have been updated to probe with ti-sysc
      interconnect target driver.
      
      Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
      Reported-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      4014c08b
  3. 16 11月, 2018 3 次提交
  4. 02 10月, 2018 1 次提交
  5. 29 9月, 2018 3 次提交
  6. 25 9月, 2018 4 次提交
  7. 22 8月, 2018 1 次提交
  8. 17 8月, 2018 1 次提交
    • T
      bus: ti-sysc: Fix module register ioremap for larger offsets · 0ef8e3bb
      Tony Lindgren 提交于
      We can have the interconnect target module control registers pretty
      much anywhere within the module range. The current code attempts an
      incomplete optimization of the ioremap size but does it wrong and
      it only works for registers at the beginning of the module.
      
      Let's just use the largest control register to calculate the ioremap
      size. The ioremapped range is for most part cached anyways so there
      is no need for size optimization. Let's also update the comments
      accordingly.
      
      Fixes: 0eecc636 ("bus: ti-sysc: Add minimal TI sysc interconnect
      target driver")
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      0ef8e3bb
  9. 10 7月, 2018 2 次提交
  10. 02 7月, 2018 1 次提交
  11. 18 5月, 2018 1 次提交
  12. 01 5月, 2018 10 次提交
  13. 27 2月, 2018 7 次提交
    • T
      bus: ti-sysc: Handle some devices in omap_device compatible way · a885f0fe
      Tony Lindgren 提交于
      Now that ti-sysc can manage child devices, we must also be backwards
      compatible with the current omap_device code. With omap_device, we
      assume that the child device manages the interconnect target module
      directly.
      
      The drivers needing special handling are the ones that still set
      pm_runtime_irq_safe(). In the long run we want to update those drivers
      as otherwise they will cause problems with genpd as a permanent PM
      runtime usage count is set on the parent device.
      
      We can handle omap_device these devices by improving the ti-sysc quirk
      handling to detect the devices needing special handling based on
      register map and revision register if usable. We also need to implement
      dev_pm_domain for these child devices just like omap_device does.
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      a885f0fe
    • T
      bus: ti-sysc: Add support for platform data callbacks · ef70b0bd
      Tony Lindgren 提交于
      We want to pass the device tree configuration for interconnect target
      modules from ti-sysc driver to the existing platform hwmod code.
      
      This allows us to first validate the dts data against the existing
      platform data before we start dropping the platform data in favor of
      device tree data.
      
      To do this, let's add platform data callbacks for PM runtime functions
      to call for the interconnect target modules if platform data is
      available.
      
      Note that as ti-sysc driver can rebind, omap_auxdata_lookup and related
      functions can no longer be __init.
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      ef70b0bd
    • T
      bus: ti-sysc: Remove unnecessary debugging statements · dd57ac1e
      Tony Lindgren 提交于
      We already show the status for the interconnect target module
      when debugging is enabled, there's no need to be more verbose
      about that. So let's just cut down the noise and remove the
      extra debug statements.
      Signed-off-by: NTony Lindgren <tony@atomide.coM>
      dd57ac1e
    • T
      bus: ti-sysc: Improve handling for no-reset-on-init and no-idle-on-init · 76f0f772
      Tony Lindgren 提交于
      At least earlycon needs a delayed idle before the 8250 driver probes
      to avoid glitches in the console output. Let's handle the delayed idle
      for devices tagged with ti,no-reset-on-init and ti,no-idle-on-init with
      delayed_work. Others don't need it, and there should be no need to use
      runtime PM autosuspend for the interconnect target driver as it's the
      child device drivers that should configure it.
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      76f0f772
    • T
      bus: ti-sysc: Handle stdout-path for debug console · 3bb37c8e
      Tony Lindgren 提交于
      If we have stdout-path specified for earlycon, we must prevent
      the debug console from idling until runtime PM kicks in.
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      3bb37c8e
    • T
      bus: ti-sysc: Add suspend and resume handling · 62020f23
      Tony Lindgren 提交于
      This allows us to idle the module on suspend after the children
      are suspended.
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      62020f23
    • T
      bus: ti-sysc: Add fck clock alias for children with notifier_block · 2c355ff6
      Tony Lindgren 提交于
      The functional clock is used by several child device drivers to query
      the rate for the child device internal configuration. The functional
      clock is really for the whole interconnect target module, and not just
      for the child device, and can also be shared across multiple children.
      At least the timers, i2c and mmc driver query the fck for rate.
      
      So let's just create a clock alias for the child fck if it does not
      yet exits. We can do this with the BUS_NOTIFY_ADD_DEVICE before the
      child is probed.
      
      Note that we need to now also remove the legacy mode check for getting
      the dts clocks in ti-sysc driver.
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      2c355ff6
  14. 16 2月, 2018 1 次提交
  15. 23 1月, 2018 1 次提交
  16. 21 12月, 2017 2 次提交