1. 03 11月, 2012 1 次提交
  2. 01 11月, 2012 1 次提交
    • T
      ARM: OMAP: Move omap-pm-noop.c local to mach-omap2 · 6e740f9a
      Tony Lindgren 提交于
      This code should be private to mach-omap2.
      
      The only use for it in for omap1 has been in dmtimer.c
      to check for context loss. However, omap1 does not
      lose context during idle, so the code is not needed.
      Further, omap1 timer has OMAP_TIMER_ALWON set, so omap1
      was not hitting omap_pm_get_dev_context_loss_count()
      test.
      
      Cc: Jon Hunter <jon-hunter@ti.com>
      Cc: Kevin Hilman <khilman@deeprootsystems.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      6e740f9a
  3. 19 10月, 2012 1 次提交
  4. 13 8月, 2012 1 次提交
  5. 08 8月, 2012 1 次提交
    • J
      ARM: OMAP2+: Fix dmtimer set source clock failure · 54f32a35
      Jon Hunter 提交于
      Calling the dmtimer function omap_dm_timer_set_source() fails if following a
      call to pm_runtime_put() to disable the timer. For example the following
      sequence would fail to set the parent clock ...
      
      	omap_dm_timer_stop(gptimer);
      	omap_dm_timer_set_source(gptimer, OMAP_TIMER_SRC_32_KHZ);
      
      The following error message would be seen ...
      
      omap_dm_timer_set_source: failed to set timer_32k_ck as parent
      
      The problem is that, by design, pm_runtime_put() simply decrements the usage
      count and returns before the timer has actually been disabled. Therefore,
      setting the parent clock failed because the timer was still active when the
      trying to set the parent clock. Setting a parent clock will fail if the clock
      you are setting the parent of has a non-zero usage count. To ensure that this
      does not fail use pm_runtime_put_sync() when disabling the timer.
      
      Note that this will not be seen on OMAP1 devices, because these devices do
      not use the clock framework for dmtimers.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Acked-by: NKevin Hilman <khilman@ti.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      54f32a35
  6. 05 7月, 2012 1 次提交
  7. 14 6月, 2012 8 次提交
    • J
      ARM: OMAP2+: Simplify dmtimer clock aliases · c59b537d
      Jon Hunter 提交于
      The OMAP dmtimer driver allows you to dynamically configure the functional
      clock that drives the timer logic. The dmtimer driver uses the device name and
      a "con-id" string to search for the appropriate functional clock.
      
      Currently, we define a clock alias for each functional clock source each timer
      supports. Some functional clock sources are common to all of the timers on a
      device and so for these clock sources we can use a single alias with a unique
      con-id string.
      
      The possible functional clock sources for an OMAP device are a 32kHz clock,
      a system (MHz range) clock and (for OMAP2 only) an external clock. By defining
      a unique con-id name for each of these (timer_32k_ck, timer_sys_ck and
      timer_ext_ck) we can eliminate a lot of the clock aliases for timers. This
      reduces code, speeds-up searches and clock initialisation time.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Acked-by: NPaul Walmsley <paul@pwsan.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      c59b537d
    • J
      ARM: OMAP2+: Move dmtimer clock set function to dmtimer driver · 2b2d3523
      Jon Hunter 提交于
      OMAP1 uses an architecture specific function for setting the dmtimer clock
      source, where as the OMAP2+ devices use the clock framework. Eventually OMAP1
      device should also use the clock framework and hence we should not any
      architecture specific functions.
      
      For now move the OMAP2+ function for configuring the clock source into the
      dmtimer driver. Therefore, we do no longer need to specify an architecture
      specific function for setting the clock source for OMAP2+ devices. This will
      simplify device tree migration of the dmtimers for OMAP2+ devices.
      
      From now on, only OMAP1 devices should specify an architecture specific
      function for setting the clock source via the platform data set_dmtimer_src()
      function pointer.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      2b2d3523
    • J
      ARM: OMAP1: Fix dmtimer support · bca45808
      Jon Hunter 提交于
      OMAP1 dmtimer support is currently broken. When a dmtimer is requested by the
      omap_dm_timer_request() function fails to allocate a dmtimer because the call
      to clk_get() inside omap_dm_timer_prepare fails. The clk_get() fails simply
      because the clock data for the OMAP1 dmtimers is not present.
      
      Ideally this should be fixed by moving OMAP1 dmtimers to use the clock
      framework. For now simply fix this by using the "TIMER_NEEDS_RESET" flag to
      identify an OMAP1 device and avoid calling clk_get(). Although this is not
      the ideal fix and should be corrected, this flag has already been use for the
      same purpose in omap_dm_timer_stop().
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      bca45808
    • J
      ARM: OMAP: Add flag to indicate if a timer needs a manual reset · 6615975b
      Jon Hunter 提交于
      For OMAP1 devices, it is necessary to perform a manual reset of the timer.
      Currently, this is indicating by setting the "needs_manual_reset" variable in
      the platform data. Instead of using an extra variable to indicate this add a new
      timer capabilities flag to indicate this and remove the "needs_manual_reset"
      member from the platform data.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      6615975b
    • J
      ARM: OMAP: Remove timer function pointer for context loss counter · 0b30ec1c
      Jon Hunter 提交于
      For OMAP2+ devices, a function pointer that returns the number of times a timer
      power domain has lost context is passed to the dmtimer driver. This function
      pointer is only populated for OMAP2+ devices and it is pointing to a platform
      function. Given that this is a platform function, we can simplify the code by
      removing the function pointer and referencing the function directly. We can use
      the OMAP_TIMER_ALWON flag to determine if we need to call this function for
      OMAP1 and OMAP2+ devices.
      
      The benefit of this change is the we can remove the function pointer from the
      platform data and simplifies the dmtimer migration to device-tree.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      0b30ec1c
    • J
      ARM: OMAP: Remove loses_context variable from timer platform data · 1c2d076b
      Jon Hunter 提交于
      The platform data variable loses_context is used to determine if the timer may
      lose its logic state during power transitions and so needs to be restored. This
      information is also provided in the HWMOD device attributes for OMAP2+ devices
      via the OMAP_TIMER_ALWON flag. When this flag is set the timer will not lose
      context. So use the HWMOD device attributes to determine this.
      
      For OMAP1 devices, loses_context is never set and so set the OMAP_TIMER_ALWON
      flag for OMAP1 timers to ensure that code is equivalent.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      1c2d076b
    • J
      ARM: OMAP: Add DMTIMER capability variable to represent timer features · d1c1691b
      Jon Hunter 提交于
      Although the OMAP timers share a common hardware design, there are some
      differences between the timer instances in a given device. For example, a timer
      maybe in a power domain that can be powered-of, so can lose its logic state and
      need restoring where as another may be in power domain that is always be on.
      Another example, is a timer may support different clock sources to drive the
      timer. This information is passed to the dmtimer via the following platform data
      structure.
      
      struct dmtimer_platform_data {
      	int (*set_timer_src)(struct platform_device *pdev, int source);
      	int timer_ip_version;
      	u32 needs_manual_reset:1;
      	bool loses_context;
      	int (*get_context_loss_count)(struct device *dev);
      };
      
      The above structure uses multiple variables to represent the timer features.
      HWMOD also stores the timer capabilities using a bit-mask that represents the
      features supported. By using the same format for representing the timer
      features in the platform data as used by HWMOD, we can ...
      
      1. Use the flags defined in the plat/dmtimer.h to represent the features
         supported.
      2. For devices using HWMOD, we can retrieve the features supported from HWMOD.
      3. Eventually, simplify the platform data structure to be ...
      
      struct dmtimer_platform_data {
      	int (*set_timer_src)(struct platform_device *pdev, int source);
      	u32 timer_capability;
      }
      
      Another benefit from doing this, is that it will simplify the migration of the
      dmtimer driver to device-tree. For example, in the current OMAP2+ timer code the
      "loses_context" variable is configured at runtime by calling an architecture
      specific function. For device tree this creates a problem, because we would need
      to call the architecture specific function from within the dmtimer driver.
      However, such attributes do not need to be queried at runtime and we can look up
      the attributes via HWMOD or device-tree.
      
      This changes a new "capability" variable to the platform data and timer
      structure so we can start removing and simplifying the platform data structure.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      d1c1691b
    • J
      ARM: OMAP2+: Add dmtimer platform function to reserve systimers · b7b4ff76
      Jon Hunter 提交于
      During early boot, one or two dmtimers are reserved by the kernel as system
      timers (for clocksource and clockevents). These timers are marked as reserved
      and the dmtimer driver is notified which timers have been reserved via the
      platform data information.
      
      For OMAP2+ devices the timers reserved may vary depending on device and compile
      flags. Therefore, it is not easy to assume which timers we be reserved for the
      system timers. In order to migrate the dmtimer driver to support device-tree we
      need a way to pass the timers reserved for system timers to the dmtimer driver.
      Using the platform data structure will not work in the same way as it is
      currently used because the platform data structure will be stored statically in
      the dmtimer itself and the platform data will be selected via the device-tree
      match device function (of_match_device).
      
      There are a couple ways to workaround this. One option is to store the system
      timers reserved for the kernel in the device-tree and query them on boot.
      The downside of this approach is that it adds some delay to parse the DT blob
      to search for the system timers. Secondly, for OMAP3 devices we have a
      dependency on compile time flags and the device-tree would not be aware of that
      kernel compile flags and so we would need to address that.
      
      The second option is to add a function to the dmtimer code to reserved the
      system timers during boot and so the dmtimer knows exactly which timers are
      being used for system timers. This also allows us to remove the "reserved"
      member from the timer platform data. This seemed like the simpler approach and
      so was implemented here.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      b7b4ff76
  8. 11 5月, 2012 1 次提交
  9. 18 4月, 2012 1 次提交
    • P
      ARM: OMAP2+: clean up some cppcheck warnings · eeb3711b
      Paul Walmsley 提交于
      Resolve some warnings identified by cppcheck in arch/arm/mach-omap2:
      
          [arch/arm/mach-omap2/usb-tusb6010.c:129]: (style) Checking if unsigned variable 'tmp' is less than zero.
          [arch/arm/mach-omap2/prm_common.c:241]: (error) Possible null pointer dereference: irq_setup - otherwise it is redundant to check if irq_setup is null at line 247
          [arch/arm/mach-omap2/pm34xx.c:790]: (style) Variable 'per_clkdm' is assigned a value that is never used
          [arch/arm/mach-omap2/pm34xx.c:790]: (style) Variable 'core_clkdm' is assigned a value that is never used
          [arch/arm/mach-omap2/pm24xx.c:185]: (style) Variable 'only_idle' is assigned a value that is never used
          [arch/arm/mach-omap2/mux.c:254]: (error) Possible null pointer dereference: mux
          [arch/arm/mach-omap2/mux.c:258]: (error) Possible null pointer dereference: mux
          [arch/arm/mach-omap2/gpmc-onenand.c:178]: (style) Variable 'tick_ns' is assigned a value that is never used
          [arch/arm/mach-omap2/gpio.c:56]: (error) Possible null pointer dereference: pdata - otherwise it is redundant to check if pdata is null at line 57
          [arch/arm/mach-omap2/devices.c:45]: (style) Variable 'l' is assigned a value that is never used
          [arch/arm/mach-omap2/board-omap3evm.c:641] -> [arch/arm/mach-omap2/board-omap3evm.c:639]: (style) Found duplicate branches for if and else.
          [arch/arm/mach-omap2/am35xx-emac.c:95]: (style) Variable 'regval' is assigned a value that is never used
          [arch/arm/mach-omap2/devices.c:74]: (style) Variable 'l' is assigned a value that is never used
          [arch/arm/mach-omap2/pm34xx.c:277]: (style) Variable 'per_prev_state' is assigned a value that is never used
          [arch/arm/plat-omap/dmtimer.c:352]: (error) Possible null pointer dereference: timer - otherwise it is redundant to check if timer is null at line 354
          [arch/arm/plat-omap/omap_device.c:478]: (style) Variable 'c' is assigned a value that is never used
          [arch/arm/plat-omap/usb.c:42]: (style) Variable 'status' is assigned a value that is never used
          [arch/arm/mach-omap1/clock.c:197]: (style) Variable 'dpll1_rate' is assigned a value that is never used
          [arch/arm/mach-omap1/lcd_dma.c:60]: (style) struct or union member 'lcd_dma_info::size' is never used
          [arch/arm/mach-omap1/pm.c:572]: (style) Variable 'entry' is assigned a value that is never used
      
      Some of them are pretty good catches, such as gpio.c:56 and
      usb-tusb6010.c:129.
      
      Thanks to Jarkko Nikula for some comments on the sscanf() warnings.
      It seems that the kernel sscanf() ignores the field width anyway for the
      %d format, so those changes have been dropped from this second version.
      
      Thanks to Daniel Marjamäki <daniel.marjamaki@gmail.com> for pointing
      out that a variable was unnecessarily marked static in the
      board-omap3evm.c change.
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      Cc: Felipe Balbi <balbi@ti.com>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Kevin Hilman <khilman@ti.com>
      Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
      Cc: Jarkko Nikula <jarkko.nikula@bitmer.com>
      Cc: Charulatha Varadarajan <charu@ti.com>
      Cc: Daniel Marjamäki <daniel.marjamaki@gmail.com>
      Cc: Tarun Kanti DebBarma <tarun.kanti@ti.com>
      Reviewed-by: Charulatha Varadarajan <charu@ti.com> # for gpio.c
      eeb3711b
  10. 06 3月, 2012 1 次提交
  11. 25 2月, 2012 1 次提交
  12. 05 11月, 2011 1 次提交
    • A
      ARM: OMAP: dmtimer: Include linux/module.h · 869dec15
      Axel Lin 提交于
      Include linux/module.h to fix below build error:
      
        CC      arch/arm/plat-omap/dmtimer.o
      arch/arm/plat-omap/dmtimer.c:184: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:184: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:184: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:215: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:215: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:215: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:228: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:228: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:228: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:234: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:234: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:234: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:240: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:240: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:240: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:248: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:248: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:248: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:294: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:294: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:294: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:302: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:302: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:302: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:316: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:316: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:316: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:344: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:344: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:344: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:361: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:361: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:361: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:380: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:380: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:380: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:406: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:406: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:406: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:443: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:443: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:443: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:468: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:468: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:468: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:494: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:494: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:494: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:517: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:517: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:517: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:534: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:534: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:534: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:549: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:549: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:549: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:561: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:561: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:561: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:572: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:572: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:572: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:587: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:587: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:587: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:604: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:604: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/arm/plat-omap/dmtimer.c:604: warning: parameter names (without types) in function declaration
      arch/arm/plat-omap/dmtimer.c:746: error: expected declaration specifiers or '...' before string constant
      arch/arm/plat-omap/dmtimer.c:746: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:746: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION'
      arch/arm/plat-omap/dmtimer.c:746: warning: function declaration isn't a prototype
      arch/arm/plat-omap/dmtimer.c:747: error: expected declaration specifiers or '...' before string constant
      arch/arm/plat-omap/dmtimer.c:747: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:747: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE'
      arch/arm/plat-omap/dmtimer.c:747: warning: function declaration isn't a prototype
      arch/arm/plat-omap/dmtimer.c:748: error: expected declaration specifiers or '...' before string constant
      arch/arm/plat-omap/dmtimer.c:748: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:748: warning: type defaults to 'int' in declaration of 'MODULE_ALIAS'
      arch/arm/plat-omap/dmtimer.c:748: warning: function declaration isn't a prototype
      arch/arm/plat-omap/dmtimer.c:749: error: expected declaration specifiers or '...' before string constant
      arch/arm/plat-omap/dmtimer.c:749: warning: data definition has no type or storage class
      arch/arm/plat-omap/dmtimer.c:749: warning: type defaults to 'int' in declaration of 'MODULE_AUTHOR'
      arch/arm/plat-omap/dmtimer.c:749: warning: function declaration isn't a prototype
      make[1]: *** [arch/arm/plat-omap/dmtimer.o] Error 1
      make: *** [arch/arm/plat-omap] Error 2
      Signed-off-by: NAxel Lin <axel.lin@gmail.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      869dec15
  13. 02 10月, 2011 1 次提交
  14. 22 9月, 2011 7 次提交
  15. 20 9月, 2011 1 次提交
  16. 04 7月, 2011 1 次提交
  17. 28 6月, 2011 1 次提交
  18. 20 6月, 2011 2 次提交
  19. 10 3月, 2011 1 次提交
  20. 24 9月, 2010 1 次提交
    • S
      omap4: Fix bootup crash observed with higher CPU clocks · e7193cc8
      Santosh Shilimkar 提交于
      This patch is temporary fix to below crash. This is observed when
      CPU is clocked more than 600 MHz.
      
      Unhandled fault: imprecise external abort (0x1406) at 0xbf9ef65c
      Internal error: : 1406 [#1] PREEMPT SMP
      last sysfs file:
      Modules linked in:
      CPU: 0    Not tainted  (2.6.36-rc3+ #18)
      PC is at kernel_thread_helper+0x0/0x14
      LR is at kernel_thread_helper+0x0/0x14
      pc : [<c003ce14>]    lr : [<c003ce14>]    psr: 00000093
      sp : dc83bff8  ip : 00000000  fp : 00000000
      r10: 00000000  r9 : 00000000  r8 : 00000000
      r7 : 00000013  r6 : c003ce28  r5 : c008935c  r4 : 00000000
      r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 00000000
      Flags: nzcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c53c7f  Table: 8000404a  DAC: 00000017
      Process swapper (pid: 2, stack limit = 0xdc83a2f0)
      Stack: (0xdc83bff8 to 0xdc83c000)
      bfe0: 00000000 ffffffff
      [<c003ce14>] (kernel_thread_helper+0x0/0x14) from [<fffffffe>] (0xfffffffe)
      Code: c03a0ba3 c03a5fcb c045c880 c0394035 (eb017701)
      ---[ end trace 1b75b31a2719ed1c ]---
      
      The timer hwmod adaptation will eventually fix it in a proper way.
      Signed-off-by: NRajendra Nayak <rnayak@ti.com>
      Signed-off-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      e7193cc8
  21. 10 6月, 2010 1 次提交
    • T
      omap: DMTIMER: Ack pending interrupt always when stopping a timer · 856f1914
      Tero Kristo 提交于
      The kernel timer queue is being run currently from a GP timer running in a one
      shot mode, which works in a way that when it expires, it will also stop.
      Usually during this situation, the interrupt handler will ack the interrupt,
      load a new value to the timer and start it again. During suspend, the
      situation is slightly different, as we disable interrupts just before
      timekeeping is suspended, which leaves a small window where the timer can
      expire before it is stopped, and will leave the interrupt flag pending.
      This pending interrupt will prevent ARM sleep entry, thus now we ack it always
      when we are attempting to stop a timer.
      Signed-off-by: NTero Kristo <tero.kristo@nokia.com>
      Acked-by: NKevin Hilman <khilman@deeprootsystems.com>
      [tony@atomide.com: removed the ifdef to make the patch cover omap1 also]
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      856f1914
  22. 21 5月, 2010 1 次提交
  23. 24 2月, 2010 1 次提交
  24. 16 2月, 2010 2 次提交
  25. 22 1月, 2010 1 次提交