1. 06 8月, 2011 2 次提交
    • C
      OMAP2+: PM: SmartReflex: use put_sync_suspend for IRQ-safe disabling · 98333b3d
      Colin Cross 提交于
      omap_sr_disable_reset_volt is called with irqs off in omapx_enter_sleep,
      as part of idle sequence, this eventually calls sr_disable and
      pm_runtime_put_sync. pm_runtime_put_sync calls rpm_idle, which will
      enable interrupts in order to call the callback. In this short interval
      when interrupts are enabled, scenarios such as the following can occur:
      while interrupts are enabled, the timer interrupt that is supposed to
      wake the device out of idle occurs and is acked, so when the CPU finally
      goes to off, the timer is already gone, missing a wakeup event.
      
      Further, as the documentation for runtime states:"
       However, subsystems can use the pm_runtime_irq_safe() helper function
       to tell the PM core that a device's ->runtime_suspend() and ->runtime_resume()
       callbacks should be invoked in atomic context with interrupts disabled
       (->runtime_idle() is still invoked the default way)."
      
      Hence, replace pm_runtime_put_sync with pm_runtime_put_sync_suspend
      to invoke the suspend handler and shut off the fclk for SmartReflex
      module instead of using the idle handler in interrupt disabled context.
      Signed-off-by: NNishanth Menon <nm@ti.com>
      Signed-off-by: NColin Cross <ccross@google.com>
      [khilman@ti.com: minor Subject edits]
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      98333b3d
    • N
      OMAP3+: SR: ensure pm-runtime callbacks can be invoked with IRQs disabled · e13d8f38
      Nishanth Menon 提交于
      SmartReflex should be disabled while entering low power mode due to
      a) SmartReflex values are not defined for retention voltage, further
      b) with SmartReflex enabled, if CPU enters lower c-states, FSM will try
      to bump the voltage to current OPP's voltage for which it has entered c-state;
      hence SmartReflex needs to be disabled for MPU, CORE and IVA voltage
      domains in idle path before enabling auto retention voltage achievement
      on the device.
      
      However, since the current pm_runtime setup for SmartReflex devices are
      setup to allow callbacks to be invoked with interrupts enabled, calling
      SmartReflex enable/disable from other contexts such as idle paths
      where preemption is disabled causes warnings such as the following
      indicating of a potential race.
      [   82.023895] [<c04d079c>] (__irq_svc+0x3c/0x120) from [<c04d0484>] (_raw_spin_unlock_irq+0x28/0x2c)
      [   82.023895] [<c04d0484>] (_raw_spin_unlock_irq+0x28/0x2c) from [<c0323234>] (rpm_callback+0x4c/0x68)
      [   82.023956] [<c0323234>] (rpm_callback+0x4c/0x68) from [<c0323f7c>] (rpm_resume+0x338/0x53c)
      [   82.023956] [<c0323f7c>] (rpm_resume+0x338/0x53c) from [<c03243f4>] (__pm_runtime_resume+0x48/0x60)
      [   82.023986] [<c03243f4>] (__pm_runtime_resume+0x48/0x60) from [<c008aee0>] (sr_enable+0xa8/0x19c)
      [   82.023986] [<c008aee0>] (sr_enable+0xa8/0x19c) from [<c008b2fc>] (omap_sr_enable+0x50/0x90)
      [   82.024017] [<c008b2fc>] (omap_sr_enable+0x50/0x90) from [<c00888c0>] (omap4_enter_sleep+0x138/0x168)
      
      Instead, we use pm_runtime_irq_safe to tell the PM core that callbacks can be
      invoked in interrupt disabled contexts.
      Acked-by: NRajendra Nayak <rnayak@ti.com>
      Signed-off-by: NNishanth Menon <nm@ti.com>
      [khilman@ti.com: minor changelog edits]
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      e13d8f38
  2. 21 6月, 2011 4 次提交
  3. 03 5月, 2011 5 次提交
  4. 31 3月, 2011 1 次提交
  5. 10 3月, 2011 2 次提交
  6. 08 3月, 2011 1 次提交
    • P
      OMAP: smartreflex: move plat/smartreflex.h to mach-omap2/smartreflex.h · 7328ff4d
      Paul Walmsley 提交于
      There's no reason for this header file to be in
      plat-omap/include/plat/smartreflex.h.  The hardware devices are in
      OMAP2+ SoCs only.  Leaving this header file in plat-omap causes
      problems due to cross-dependencies with other header files that should
      live in mach-omap2/.
      
      Thanks to Benoît Cousson <b-cousson@ti.com> for suggesting the removal
      of the smartreflex.h include from the OMAP3xxx hwmod data.
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      Cc: Benoît Cousson <b-cousson@ti.com>
      7328ff4d
  7. 03 3月, 2011 2 次提交
    • S
      OMAP2+: PM: SmartReflex: fix memory leaks in Smartreflex driver · b3329a33
      Shweta Gulati 提交于
      This Patch frees all the dynamically allocated memory
      which couldn't have been released in some error hitting cases.
      Signed-off-by: NShweta Gulati <shweta.gulati@ti.com>
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      b3329a33
    • A
      arm: mach-omap2: smartreflex: fix another memory leak · 865212ab
      Aaro Koskinen 提交于
      Temporary strings with volt_* file names should be released after the
      debugfs entries are created. While at it, also simplify the string
      allocation, and use just snprintf() to create the name.
      
      The patch eliminates kmemleak reports with the following stack trace
      (multiple objects depending on HW):
      
      unreferenced object 0xcedbc5a0 (size 64):
        comm "swapper", pid 1, jiffies 4294929375 (age 423.734s)
        hex dump (first 32 bytes):
          76 6f 6c 74 5f 39 37 35 30 30 30 00 00 00 00 00  volt_975000.....
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<c012fee0>] create_object+0x104/0x208
          [<c012dbc8>] kmem_cache_alloc_trace+0xf0/0x17c
          [<c0013f64>] omap_sr_probe+0x314/0x420
          [<c02a1724>] platform_drv_probe+0x18/0x1c
          [<c02a088c>] driver_probe_device+0xc8/0x188
          [<c02a09b4>] __driver_attach+0x68/0x8c
          [<c02a00ac>] bus_for_each_dev+0x44/0x74
          [<c029f9e0>] bus_add_driver+0xa0/0x228
          [<c02a0cac>] driver_register+0xa8/0x130
          [<c02a1b2c>] platform_driver_probe+0x18/0x8c
          [<c0013c1c>] sr_init+0x40/0x74
          [<c005a554>] do_one_initcall+0xc8/0x1a0
          [<c00084f4>] kernel_init+0x150/0x218
          [<c0065d64>] kernel_thread_exit+0x0/0x8
          [<ffffffff>] 0xffffffff
      Signed-off-by: NAaro Koskinen <aaro.koskinen@nokia.com>
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      865212ab
  8. 08 2月, 2011 1 次提交
  9. 01 2月, 2011 2 次提交
  10. 25 1月, 2011 1 次提交
  11. 23 12月, 2010 3 次提交
    • T
      OMAP4: Smartreflex framework extensions · b35cecf9
      Thara Gopinath 提交于
      This patch extends the smartreflex framework to support
      OMAP4. The changes are minor like compiling smartreflex Kconfig
      option for OMAP4 also, and a couple of OMAP4 checks in
      the smartreflex framework.
      
      The change in sr_device.c where new logic has to be introduced
      for reading the efuse registers is due to the fact that in OMAP4
      the efuse registers are 24 bit aligned. A __raw_readl will
      fail for non-32 bit aligned address and hence the 8-bit read
      and shift.
      Signed-off-by: NThara Gopinath <thara@ti.com>
      Signed-off-by: NKevin Hilman <khilman@deeprootsystems.com>
      b35cecf9
    • T
      OMAP3: PM: Adding debug support to Voltage and Smartreflex drivers · 077fceca
      Thara Gopinath 提交于
      This patch adds debug support to the voltage and smartreflex drivers.
      This means a whole bunch of voltage processor and smartreflex
      parameters are now visible through the pm debugfs.
      The voltage parameters can be viewed at
              /debug/voltage/vdd_<x>/<parameter>
      and the smartreflex parameters can be viewed at
              /debug/voltage/vdd_<x>/smartreflex/<parameter>
      
      Also smartreflex n-target values are now exposed out at
      	/debug/voltage/vdd_<x>/smartreflex/nvalue/<voltage>
      
      This is a read-write interface which means user has the
      flexibility to change the n-target values for any opp.
      Signed-off-by: NThara Gopinath <thara@ti.com>
      Signed-off-by: NKevin Hilman <khilman@deeprootsystems.com>
      077fceca
    • T
      OMAP3: PM: Adding smartreflex driver support. · 984aa6db
      Thara Gopinath 提交于
      SmartReflex modules do adaptive voltage control for real-time
      voltage adjustments. With Smartreflex the power supply voltage
      can be adapted to the silicon performance(manufacturing process,
      temperature induced performance, age induced performance etc).
      
      There are differnet classes of smartreflex implementation.
      	Class-0: Manufacturing Test Calibration
      	Class-1: Boot-Time Software Calibration
      	Class-2: Continuous Software Calibration
      	Class-3: Continuous Hardware Calibration
      	Class-4: Fully Integrated Power Management
      
      OMAP3 has two smartreflex modules one associated with VDD MPU and the
      other associated with VDD CORE.
      This patch adds support for  smartreflex driver. The driver is designed
      for Class-1 , Class-2 and Class-3 support and is  a platform driver.
      Smartreflex driver can be enabled through a Kconfig option
      "SmartReflex support" under "System type"->"TI OMAP implementations" menu.
      
      Smartreflex autocompensation feature can be enabled runtime through
      a debug fs option.
      To enable smartreflex autocompensation feature
      	echo 1 > /debug/voltage/vdd_<X>/smartreflex/autocomp
      To disable smartreflex autocompensation feature
      	echo 0 > /debug/voltage/vdd_<X>/smartreflex/autocomp
      
      where X can be mpu, core , iva etc.
      
      This patch contains code originally in linux omap pm branch.
      Major contributors to this driver are
      Lesly A M, Rajendra Nayak, Kalle Jokiniemi, Paul Walmsley,
      Nishant Menon, Kevin Hilman.
      Signed-off-by: NThara Gopinath <thara@ti.com>
      Signed-off-by: NKevin Hilman <khilman@deeprootsystems.com>
      984aa6db