1. 13 6月, 2013 3 次提交
  2. 30 4月, 2013 4 次提交
  3. 06 4月, 2013 1 次提交
  4. 23 3月, 2013 1 次提交
    • N
      drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR · 0ef1594c
      Nicolas Ferre 提交于
      On some revisions of AT91 SoCs, the RTC IMR register is not working.
      Instead of elaborating a workaround for that specific SoC or IP version,
      we simply use a software variable to store the Interrupt Mask Register
      and modify it for each enabling/disabling of an interrupt.  The overhead
      of this is negligible anyway.
      
      The interrupt mask register (IMR) for the RTC is broken on the AT91SAM9x5
      sub-family of SoCs (good overview of the members here:
      http://www.eewiki.net/display/linuxonarm/AT91SAM9x5 ).  The "user visible
      effect" is the RTC doesn't work.
      
      That sub-family is less than two years old and only has devicetree (DT)
      support and came online circa lk 3.7 .  The dust is yet to settle on the
      DT stuff at least for AT91 SoCs (translation: lots of stuff is still
      broken, so much that it is hard to know where to start).
      
      The fix in the patch is pretty simple: just shadow the silicon IMR
      register with a variable in the driver.  Some older SoCs (pre-DT) use the
      the rtc-at91rm9200 driver (e.g.  obviously the AT91RM9200) and they should
      not be impacted by the change.  There shouldn't be a large volume of
      interrupts associated with a RTC.
      Signed-off-by: NNicolas Ferre <nicolas.ferre@atmel.com>
      Reported-by: NDouglas Gilbert <dgilbert@interlog.com>
      Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
      Cc: Ludovic Desroches <ludovic.desroches@atmel.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0ef1594c
  5. 22 2月, 2013 1 次提交
  6. 06 11月, 2012 1 次提交
  7. 04 7月, 2012 1 次提交
  8. 28 11月, 2011 1 次提交
  9. 31 3月, 2011 1 次提交
  10. 10 3月, 2011 1 次提交
    • J
      RTC: Clean out UIE icotl implementations · e428c6a2
      John Stultz 提交于
      With the generic RTC rework, the UIE mode irqs are handled
      in the generic layer, and only hardware specific ioctls
      get passed down to the rtc driver layer.
      
      So this patch removes the UIE mode ioctl handling in the rtc
      driver layer, which never get used.
      
      CC: Thomas Gleixner <tglx@linutronix.de>
      CC: Alessandro Zummo <a.zummo@towertech.it>
      CC: Marcelo Roberto Jimenez <mroberto@cpti.cetuc.puc-rio.br>
      CC: rtc-linux@googlegroups.com
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      e428c6a2
  11. 04 2月, 2011 1 次提交
  12. 23 9月, 2009 1 次提交
  13. 20 10月, 2008 1 次提交
  14. 17 10月, 2008 1 次提交
  15. 07 8月, 2008 1 次提交
  16. 25 7月, 2008 1 次提交
  17. 22 5月, 2008 2 次提交
  18. 28 4月, 2008 1 次提交
  19. 11 4月, 2008 1 次提交
  20. 09 5月, 2007 2 次提交
  21. 21 2月, 2007 1 次提交
    • D
      [PATCH] at91_rtc updates · 5d4675a8
      David Brownell 提交于
      Various bug fixes to the at91rm9200 RTC:
      
       - alarm:  setalarm() should pay attention to the "enabled" flag
      
       - init:  cleaner handling of the wakeup flags, which cpu init should
         really have set up.  Doing it here is just a workaround.
      
       - linkage:  since the at91_rtc driver probe() routine is in the init
         section, it should use platform_driver_probe() instead of leaving
         that pointer around in the driver struct after init section removal.
      
       - linkage:  likewise, remove() belongs in the exit section.
      
      Among other things, the init and alarm changes ensure that this driver
      handles the new sysfs "wakealarm" attribute properly.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5d4675a8
  22. 06 1月, 2007 1 次提交
  23. 14 12月, 2006 1 次提交
  24. 11 12月, 2006 1 次提交
  25. 26 11月, 2006 1 次提交
  26. 05 10月, 2006 1 次提交
    • D
      IRQ: Maintain regs pointer globally rather than passing to IRQ handlers · 7d12e780
      David Howells 提交于
      Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
      of passing regs around manually through all ~1800 interrupt handlers in the
      Linux kernel.
      
      The regs pointer is used in few places, but it potentially costs both stack
      space and code to pass it around.  On the FRV arch, removing the regs parameter
      from all the genirq function results in a 20% speed up of the IRQ exit path
      (ie: from leaving timer_interrupt() to leaving do_IRQ()).
      
      Where appropriate, an arch may override the generic storage facility and do
      something different with the variable.  On FRV, for instance, the address is
      maintained in GR28 at all times inside the kernel as part of general exception
      handling.
      
      Having looked over the code, it appears that the parameter may be handed down
      through up to twenty or so layers of functions.  Consider a USB character
      device attached to a USB hub, attached to a USB controller that posts its
      interrupts through a cascaded auxiliary interrupt controller.  A character
      device driver may want to pass regs to the sysrq handler through the input
      layer which adds another few layers of parameter passing.
      
      I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
      main part of the code on FRV and i386, though I can't test most of the drivers.
      I've also done partial conversion for powerpc and MIPS - these at least compile
      with minimal configurations.
      
      This will affect all archs.  Mostly the changes should be relatively easy.
      Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
      
      	struct pt_regs *old_regs = set_irq_regs(regs);
      
      And put the old one back at the end:
      
      	set_irq_regs(old_regs);
      
      Don't pass regs through to generic_handle_irq() or __do_IRQ().
      
      In timer_interrupt(), this sort of change will be necessary:
      
      	-	update_process_times(user_mode(regs));
      	-	profile_tick(CPU_PROFILING, regs);
      	+	update_process_times(user_mode(get_irq_regs()));
      	+	profile_tick(CPU_PROFILING);
      
      I'd like to move update_process_times()'s use of get_irq_regs() into itself,
      except that i386, alone of the archs, uses something other than user_mode().
      
      Some notes on the interrupt handling in the drivers:
      
       (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
           the input_dev struct.
      
       (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
           something different depending on whether it's been supplied with a regs
           pointer or not.
      
       (*) Various IRQ handler function pointers have been moved to type
           irq_handler_t.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
      7d12e780
  27. 01 10月, 2006 2 次提交
  28. 03 7月, 2006 1 次提交
  29. 26 6月, 2006 2 次提交