1. 25 1月, 2012 1 次提交
    • R
      PCMCIA: fix sa1111 oops on remove · 171cf94c
      Russell King 提交于
      The sa1111 socket driver oopses when removed:
      
      Unable to handle kernel NULL pointer dereference at virtual address 000003b0
      pgd = c1b40000
      [000003b0] *pgd=00000000
      Internal error: Oops: 41b43005 [#1]
      Modules linked in:
      CPU: 0    Not tainted  (3.3.0-rc1+ #744)
      PC is at pcmcia_remove+0x3c/0x60
      LR is at pcmcia_remove+0x34/0x60
      
      This is because we try to dereference a NULL 's' to obtain the next
      pointer.  Fix this.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      171cf94c
  2. 23 1月, 2012 1 次提交
    • R
      MFD: ucb1x00-ts: fix resume failure · 0af5e4c3
      Russell King 提交于
      If the ucb1x00 touchscreen is resumed while the touchscreen is being
      touched, the main thread stops responding.  This occurs because two
      things happen:
      
      1. When we suspended, we were woken up, and executed the loop.
         Finding that the touchscreen was not pressed, we prepare to
         schedule for a maximum timeout, before being stopped in
         try_to_freeze().
      
      2. an irq occurs, we disable the irq, and mark it as disabled,
         and wake the thread.  This wake occurs while the thread is
         still within __refrigerator()
      
      3. The thread is unfrozen, and __refrigerator() sets the threads
         state back to INTERRUPTIBLE.
      
      We then drop into schedule_timeout() with an infinite timeout and the
      IRQ disabled.  This prevents any further screen touches activating
      the thread.
      
      Fix this by using kthread_freezable_should_stop() which handles the
      freezing issues for us outside of the hotspot where the task state
      matters.  Include a flag to ignore the touchscreen until it is
      released to avoid sending unintended data to the application.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      0af5e4c3
  3. 22 1月, 2012 2 次提交
  4. 21 1月, 2012 3 次提交
    • R
      MFD: mcp-core: fix complaints from the genirq layer · 98250221
      Russell King 提交于
      The genirq layer complains if an interrupt handler returns with
      interrupts enabled.  The UCB1x00 handler does just this, because
      ucb1x00_enable() calls mcp_enable(), which uses spin_lock_irq()
      rather than spin_lock_irqsave().  Convert this, and the divisor
      setting functions to use spin_lock_irqsave().
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      98250221
    • R
      Revert "ARM: sa11x0: Implement autoloading of codec and codec pdata for mcp bus." · 65f2e753
      Russell King 提交于
      This reverts commit 5dd7bf59.
      
      Conflicts:
      
      	scripts/mod/file2alias.c
      
      This change is wrong on many levels.  First and foremost, it causes a
      regression.  On boot on Assabet, which this patch gives a codec id of
      'ucb1x00', it gives:
      
      	ucb1x00 ID not found: 1005
      
      0x1005 is a valid ID for the UCB1300 device.
      
      Secondly, this patch is way over the top in terms of complexity.  The
      only device which has been seen to be connected with this MCP code is
      the UCB1x00 (UCB1200, UCB1300 etc) devices, and they all use the same
      driver.  Adding a match table, requiring the codec string to match the
      hardware ID read out of the ID register, etc is completely over the top
      when we can just read the hardware ID register.
      65f2e753
    • R
      Revert "ARM: sa1100: Refactor mcp-sa11x0 to use platform resources." · 216f63c4
      Russell King 提交于
      This reverts commit af9081ae.
      
      This revert is necessary to revert 5dd7bf59.
      216f63c4
  5. 20 1月, 2012 2 次提交
    • R
      Revert "RTC: sa1100: remove redundant code of setting alarm" · 57270fcd
      Russell King 提交于
      This reverts commit 42874759.
      
      This wasn't tested as a stand-alone patch, and it has build errors
      without the following patches applied:
      
      drivers/rtc/rtc-sa1100.c: In function 'sa1100_rtc_set_alarm':
      drivers/rtc/rtc-sa1100.c:208: error: 'now' undeclared (first use in this function)
      drivers/rtc/rtc-sa1100.c:208: error: (Each undeclared identifier is reported only once
      drivers/rtc/rtc-sa1100.c:208: error: for each function it appears in.)
      drivers/rtc/rtc-sa1100.c:210: error: incompatible type for argument 3 of 'rtc_next_alarm_time'
      drivers/rtc/rtc-sa1100.c:211: error: 'time' undeclared (first use in this function)
      
      So it too gets reverted to bring us back to a working point.
      57270fcd
    • R
      Revert "RTC: sa1100: support sa1100, pxa and mmp soc families" · a0164a57
      Russell King 提交于
      This reverts commit 7cea0065.
      
      The sa1100 cleanups fatally broke the SA1100 RTC driver - the first
      hint that something is wrong are these compiler warnings:
      
      drivers/rtc/rtc-sa1100.c:42:1: warning: "RCNR" redefined
      In file included from arch/arm/mach-sa1100/include/mach/hardware.h:73,
                       from drivers/rtc/rtc-sa1100.c:35:
      arch/arm/mach-sa1100/include/mach/SA-1100.h:877:1: warning: this is the location of the previous definition
      drivers/rtc/rtc-sa1100.c:43:1: warning: "RTAR" redefined
      arch/arm/mach-sa1100/include/mach/SA-1100.h:876:1: warning: this is the location of the previous definition
      drivers/rtc/rtc-sa1100.c:44:1: warning: "RTSR" redefined
      arch/arm/mach-sa1100/include/mach/SA-1100.h:879:1: warning: this is the location of the previous definition
      drivers/rtc/rtc-sa1100.c:45:1: warning: "RTTR" redefined
      arch/arm/mach-sa1100/include/mach/SA-1100.h:878:1: warning: this is the location of the previous definition
      drivers/rtc/rtc-sa1100.c:47:1: warning: "RTSR_HZE" redefined
      arch/arm/mach-sa1100/include/mach/SA-1100.h:891:1: warning: this is the location of the previous definition
      drivers/rtc/rtc-sa1100.c:48:1: warning: "RTSR_ALE" redefined
      arch/arm/mach-sa1100/include/mach/SA-1100.h:890:1: warning: this is the location of the previous definition
      drivers/rtc/rtc-sa1100.c:49:1: warning: "RTSR_HZ" redefined
      arch/arm/mach-sa1100/include/mach/SA-1100.h:889:1: warning: this is the location of the previous definition
      drivers/rtc/rtc-sa1100.c:50:1: warning: "RTSR_AL" redefined
      arch/arm/mach-sa1100/include/mach/SA-1100.h:888:1: warning: this is the location of the previous definition
      
      and the second problem, which is far more severe, are the different
      register layouts, resulting in the wrong registers being read on
      SA11x0 platforms.  This patch adds:
      
      	#define RCNR           0x00    /* RTC Count Register */
      	#define RTAR           0x04    /* RTC Alarm Register */
      	#define RTSR           0x08    /* RTC Status Register */
      	#define RTTR           0x0c    /* RTC Timer Trim Register */
      
      but the SA11x0 registers are:
      
      	#define RTAR            __REG(0x90010000)  /* RTC Alarm Reg. */
      	#define RCNR            __REG(0x90010004)  /* RTC CouNt Reg. */
      	#define RTTR            __REG(0x90010008)  /* RTC Trim Reg. */
      	#define RTSR            __REG(0x90010010)  /* RTC Status Reg. */
      a0164a57
  6. 19 1月, 2012 4 次提交
  7. 18 1月, 2012 27 次提交