1. 25 3月, 2011 3 次提交
  2. 23 3月, 2011 3 次提交
  3. 18 3月, 2011 1 次提交
  4. 16 3月, 2011 5 次提交
  5. 09 1月, 2011 8 次提交
    • A
      mmc: tmio_mmc: fix CMD irq handling · 2bd6a935
      Arnd Hannemann 提交于
      With current code card insert/eject interrupts will acknowledge outstanding
      commands. Normally this seems to be no problem, however if the hardware gets
      stuck and no interrupts for CMD_TIMEOUT or CMD_RESPEND are generated, then
      inserting and ejecting cards will falsely acknowledge outstanding commands
      from the core.
      
      This patch changes the behavior so that CMDs are only acked, if
      CMD_TIMEOUT or CMD_RESPEND is received.
      Signed-off-by: NArnd Hannemann <arnd@arndnet.de>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      2bd6a935
    • A
      mmc: tmio_mmc: handle missing HW interrupts · 6ff56e0d
      Arnd Hannemann 提交于
      When doing excessive hotplug, e.g., repeated insert/eject operations,
      the hardware may get confused to a point where no CMDTIMEOUT/CMDRESPEND
      interrupts are generated any more.  As a result requests get stuck, e.g.:
      
      [  360.351562] INFO: task kworker/u:0:5 blocked for more than 120 seconds.
      [  360.351562] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [  360.359375] kworker/u:0   D c020c2b4     0     5      2 0x00000000
      [  360.367187] Backtrace:
      [  360.367187] [<c020bfb0>] (schedule+0x0/0x340) from [<c020c480>] (schedule_timeout+0x20/0x190)
      [  360.375000]  r8:c702fd70 r7:00000002 r6:c702e000 r5:c702fdc4 r4:7fffffff
      [  360.375000] r3:c701e040
      [  360.382812] [<c020c460>] (schedule_timeout+0x0/0x190) from [<c020be78>] (wait_for_common+0xc4/0x150)
      [  360.390625]  r6:c702e000 r5:c702fdc4 r4:7fffffff
      [  360.390625] [<c020bdb4>] (wait_for_common+0x0/0x150) from [<c020bfac>] (wait_for_completion+0x18/0x1c)
      [  360.398437] [<c020bf94>] (wait_for_completion+0x0/0x1c) from [<c0185590>] (mmc_wait_for_req+0x214/0x234)
      [  360.406250] [<c018537c>] (mmc_wait_for_req+0x0/0x234) from [<c01889d0>] (mmc_sd_switch+0xfc/0x114)
      [  360.414062]  r7:c702fe4c r6:c702fe20 r5:c7179800 r4:00fffff0
      [  360.421875] [<c01888d4>] (mmc_sd_switch+0x0/0x114) from [<c0187f70>] (mmc_sd_setup_card+0x260/0x384)
      [  360.429687] [<c0187d10>] (mmc_sd_setup_card+0x0/0x384) from [<c01885e0>] (mmc_sd_init_card+0x13c/0x1e0)
      [  360.437500] [<c01884a4>] (mmc_sd_init_card+0x0/0x1e0) from [<c01887a8>] (mmc_attach_sd+0x124/0x1a8)
      [  360.445312]  r8:c02db404 r7:ffffff92 r6:c702ff34 r5:c6007da8 r4:c6007c00
      [  360.453125] [<c0188684>] (mmc_attach_sd+0x0/0x1a8) from [<c0185140>] (mmc_rescan+0x248/0x2f0)
      [  360.460937]  r5:c6007da8 r4:c6007c00
      [  360.468750] [<c0184ef8>] (mmc_rescan+0x0/0x2f0) from [<c00467f0>] (process_one_work+0x1ec/0x318)
      [  360.476562]  r7:c6007da8 r6:00000000 r5:c710ec00 r4:c701bde0
      [  360.484375] [<c0046604>] (process_one_work+0x0/0x318) from [<c0047fb0>] (worker_thread+0x1b0/0x2cc)
      [  360.492187] [<c0047e00>] (worker_thread+0x0/0x2cc) from [<c004b338>] (kthread+0x8c/0x94)
      [  360.500000] [<c004b2ac>] (kthread+0x0/0x94) from [<c0037fc4>] (do_exit+0x0/0x590)
      [  360.507812]  r7:00000013 r6:c0037fc4 r5:c004b2ac r4:c7021f00
      
      This patch addresses this problem by introducing timeouts for outstanding
      interrupts. If a hardware interrupt is missing, a soft reset will be
      performed to bring the hardware back to a working state.
      Tested with the SDHI hardware block in sh7372 / AP4EVB.
      Signed-off-by: NArnd Hannemann <arnd@arndnet.de>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      6ff56e0d
    • A
      mmc: tmio_mmc: implement SDIO IRQ support · 845ecd20
      Arnd Hannemann 提交于
      This patch implements SDIO IRQ support for mfds which
      announce the TMIO_MMC_SDIO_IRQ flag for tmio_mmc.
      If MMC_CAP_SDIO_IRQ is also set SDIO IRQ signalling is activated.
      Tested with a b43-based wireless SDIO card and sh_mobile_sdhi.
      Signed-off-by: NArnd Hannemann <arnd@arndnet.de>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      845ecd20
    • A
      mmc: tmio_mmc: silence compiler warnings · eba46030
      Arnd Hannemann 提交于
      with "mmc: tmio: implement a bounce buffer for unaligned DMA"
      gcc generates the following warnings:
      
      drivers/mmc/host/tmio_mmc.c:654:6: warning: 'ret' may be used uninitialized in this function
      drivers/mmc/host/tmio_mmc.c:730:6: warning: 'ret' may be used uninitialized in this function
      
      This patch fixes these by setting ret to -EINVAL in the affected code paths.
      Signed-off-by: NArnd Hannemann <arnd@arndnet.de>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      eba46030
    • G
      mmc: tmio_mmc: implement a bounce buffer for unaligned DMA · 93173054
      Guennadi Liakhovetski 提交于
      For example, with SDIO WLAN cards, some transfers happen with buffers at
      odd addresses, whereas the SH-Mobile DMA engine requires even addresses
      for SDHI. This patch extends the tmio driver with a bounce buffer, that
      is used for single entry scatter-gather lists both for sending and
      receiving. If we ever encounter unaligned transfers with multi-element
      sg lists, this patch will have to be extended. For now it just falls
      back to PIO in this and other unsupported cases.
      Signed-off-by: NGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Acked-by: NSamuel Ortiz <sameo@linux.intel.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      93173054
    • G
      mmc: tmio_mmc: merge the private header into the driver · e0bc6ff8
      Guennadi Liakhovetski 提交于
      drivers/mmc/host/tmio_mmc.h is only used by drivers/mmc/host/tmio_mmc.c,
      this needlessly complicates source-code handling.
      Signed-off-by: NGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      e0bc6ff8
    • G
      mmc: tmio_mmc: fix PIO fallback on DMA descriptor allocation failure · ef17fee1
      Guennadi Liakhovetski 提交于
      The easiest way to fall back to PIO, when a DMA descriptor allocation
      fails is to disable DMA on the controller but continue with the current
      request in PIO mode. This way tmio_mmc_start_dma() can become void, since
      it cannot be failing any more. The current version is also broken: it is
      testing a wrong pointer and thus failing to recognise, that a descriptor
      allocation wasn't successful.
      Signed-off-by: NGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      ef17fee1
    • G
      mmc: tmio_mmc: allow multi-element scatter-gather lists · 729b0c79
      Guennadi Liakhovetski 提交于
      The driver is capable of handling multi-element sg lists in both PIO and
      DMA modes. In DMA mode this also allows to use the DMA sg capability more
      efficiently and almost doubles the throughput.
      Signed-off-by: NGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      729b0c79
  6. 29 10月, 2010 2 次提交
  7. 10 9月, 2010 1 次提交
  8. 28 5月, 2010 1 次提交
  9. 22 5月, 2010 3 次提交
  10. 08 3月, 2010 3 次提交
  11. 18 1月, 2010 1 次提交
  12. 16 12月, 2009 1 次提交
  13. 14 6月, 2009 7 次提交
  14. 25 3月, 2009 1 次提交