1. 07 12月, 2012 1 次提交
    • K
      mmc: sdio: Use multiple scatter/gather list · 968a64ea
      Kyoungil Kim 提交于
      Before this patch, we always used only single sg entry for SDIO transfer.
      This patch switches to using multiple sg entries. In the case of dwmci,
      it supports only up to 4KB size per single sg entry. So if we want to
      transfer more than 4KB, we should send more than 1 command.
      
      When we tested before applying this patch, it took around 335 us for
      5K(5120) bytes transfer with dwmci controller. After applying this patch,
      it takes 242 us for 5K bytes. So this patch makes around 38% performance
      improvement for 5K bytes transfer. If the transfer size is bigger, then
      the performance improvement ratio will be increased.
      Signed-off-by: NKyoungil Kim <ki0351.kim@samsung.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      968a64ea
  2. 12 1月, 2012 1 次提交
    • S
      mmc: sdio: Fix to support any block size optimally · 052d81da
      Stefan Nilsson XK 提交于
      This patch allows any block size to be set on the SDIO link,
      and still have an arbitrary sized packet (adjusted in size by
      using sdio_align_size) transferred in an optimal way
      (preferably one transfer).
      
      Previously if the block size was larger than the default of
      512 bytes and the transfer size was exactly one block size
      (possibly thanks to using sdio_align_size to get an optimal
      transfer size), it was sent as a number of byte transfers instead
      of one block transfer. Also if the number of blocks was
      (max_blocks * N) + 1, the tranfer would be conducted with a number
      of blocks and finished off with a number of byte transfers.
      
      When doing this change it was also possible to break out the quirk
      for broken byte mode in a much cleaner way, and collect the logic of
      when to do byte or block transfer in one function instead of two.
      Signed-off-by: NStefan Nilsson XK <stefan.xk.nilsson@stericsson.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@stericsson.com>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      052d81da
  3. 27 10月, 2011 2 次提交
  4. 25 5月, 2011 3 次提交
  5. 13 3月, 2010 1 次提交
  6. 25 3月, 2009 1 次提交
  7. 19 4月, 2008 1 次提交
  8. 02 11月, 2007 1 次提交
  9. 24 9月, 2007 5 次提交
    • D
      MMC core learns about SPI · af517150
      David Brownell 提交于
      Teach the MMC/SD/SDIO core about using SPI mode.
      
       - Use mmc_host_is_spi() so enumeration works through SPI signaling
         and protocols, not just the native versions.
      
       - Provide the SPI response type flags with each request issued,
         including requests from the new lock/unlock code.
      
       - Understand that cmd->resp[0] and mmc_get_status() results for SPI
         return different values than for "native" MMC/SD protocol; this
         affects resetting, checking card lock status, and some others.
      
       - Understand that some commands act a bit differently ... notably:
           * OP_COND command doesn't return the OCR
           * APP_CMD status doesn't have an R1_APP_CMD analogue
      
      Those changes required some new and updated primitives:
      
       - Provide utilities to access two SPI-only requests, and one
         request that wasn't previously needed:
           * mmc_spi_read_ocr() ... SPI only
           * mmc_spi_set_crc() ... SPI only (override by module parm)
           * mmc_send_cid() ... for use without broadcast mode
      
       - Updated internal routines:
           * Previous mmc_send_csd() modified into mmc_send_cxd_native();
             it uses native "R2" responses, which include 16 bytes of data.
           * Previous mmc_send_ext_csd() becomes new mmc_send_cxd_data()
             helper for command-and-data access
           * Bugfix to that mmc_send_cxd_data() code:  dma-to-stack is
             unsafe/nonportable, so kmalloc a bounce buffer instead.
      
       - Modified mmc_send_ext_csd() now uses mmc_send_cxd_data() helper
      
       - Modified mmc_send_csd(), and new mmc_spi_send_cid(), routines use
         those helper routines based on whether they're native or SPI
      
      The newest categories of cards supported by the MMC stack aren't expected
      to work yet with SPI:  MMC or SD cards with over 4GB data, and SDIO.
      All those cards support SPI mode, so eventually they should work too.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      af517150
    • D
      sdio: extend sdio_readsb() and friends to handle any length of buffer · eb659468
      David Vrabel 提交于
      Extend sdio_readsb(), sdio_writesb(), sdio_memcpy_fromio(), and
      sdio_memcpy_toio() to handle any length of buffer by splitting the transfer
      into several IO_RW_EXTENDED commands. Typically, a transfer would be split
      into a single block mode transfer followed by a byte mode transfer for the
      remainder but we also handle lack of block mode support and the block size
      being greater than 512 (the maximum byte mode transfer size).
      
      host->max_seg_size <= host->max_req_size so there's no need to check both
      when determining the maximum data size for a single command.
      Signed-off-by: NDavid Vrabel <david.vrabel@csr.com>
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      eb659468
    • P
      sdio: support IO_RW_EXTENDED · 112c9db9
      Pierre Ossman 提交于
      Support the multi-byte transfer operation, including handlers for
      common operations like writel()/readl().
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      112c9db9
    • P
      mmc: implement SDIO IO_RW_DIRECT operation · b2bcc798
      Pierre Ossman 提交于
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      b2bcc798
    • P
      mmc: detect SDIO cards · 5c4e6f13
      Pierre Ossman 提交于
      Really basic init sequence for SDIO cards.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      5c4e6f13