1. 14 6月, 2009 1 次提交
    • J
      mmc: mmc_rescan detects card change in one run · 94d89efb
      Jorg Schummer 提交于
      With this patch, mmc_rescan can detect the removal of an mmc card and
      the insertion of (possibly another) card in the same run. This means
      that a card change can be detected without having to call
      mmc_detect_change multiple times.
      
      This change generalises the core such that it can be easily used by
      hosts which provide a mechanism to detect only the presence of a card
      reader cover, which has to be taken off in order to insert a card. Other
      hosts ("card detect" or "MMC_CAP_NEEDS_POLL") each receive an event when
      a card is removed and when a card is inserted, so it is sufficient for
      them if mmc_rescan handles only one event at a time. "Cover detect"
      hosts, however, only receive events about the cover status. This means
      that between 2 subsequent events, both a card removal and a card
      insertion can occur. In this case, the pre-patch version of mmc_rescan
      would only detect the removal of the previous card but not the insertion
      of the new card.
      Signed-off-by: NJorg Schummer <ext-jorg.2.schummer@nokia.com>
      Signed-off-by: NPierre Ossman <pierre@ossman.eu>
      94d89efb
  2. 04 5月, 2009 1 次提交
  3. 31 3月, 2009 1 次提交
  4. 25 3月, 2009 3 次提交
  5. 01 1月, 2009 2 次提交
  6. 09 11月, 2008 1 次提交
  7. 02 8月, 2008 1 次提交
  8. 15 7月, 2008 2 次提交
    • P
      mmc,sdio: helper function for transfer padding · ad3868b2
      Pierre Ossman 提交于
      There are a lot of crappy controllers out there that cannot handle
      all the request sizes that the MMC/SD/SDIO specifications require.
      In case the card driver can pad the data to overcome the problems,
      this commit adds a helper that calculates how much that padding
      should be.
      
      A corresponding helper is also added for SDIO, but it can also deal
      with all the complexities of splitting up a large transfer efficiently.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      ad3868b2
    • A
      mmc: add support for card-detection polling · 28f52482
      Anton Vorontsov 提交于
      Some hosts (and boards that use mmc_spi) do not use interrupts on the CD
      line, so they can't trigger mmc_detect_change. We want to poll the card
      and see if there was a change. 1 second poll interval seems resonable.
      
      This patch also implements .get_cd() host operation, that could be used
      by the hosts that are able to report card-detect status without need to
      talk MMC.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      28f52482
  9. 19 4月, 2008 2 次提交
  10. 02 11月, 2007 1 次提交
  11. 24 9月, 2007 10 次提交
    • P
      mmc: add led trigger · af8350c7
      Pierre Ossman 提交于
      Add a led trigger for each host controller that indicates if there
      is a request active on the controller.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      af8350c7
    • 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
    • P
      mmc: increase power up delay · f9996aee
      Pierre Ossman 提交于
      Increase delay for power up in order to support some slower boards.
      
      Also add some comments about why the delays are there.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      f9996aee
    • P
      mmc: replace BUG_ON with WARN_ON · d84075c8
      Pierre Ossman 提交于
      Replace all cases of BUG_ON with WARN_ON where there is a chance
      (with varying degrees of slim) that the kernel can continue without
      incidence.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      d84075c8
    • P
      mmc: fix sdio timeout calculation · e6f918bf
      Pierre Ossman 提交于
      SDIO doesn't have a CSD so it uses different timeout values than
      SD memory.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      e6f918bf
    • P
      mmc: fix incorrect divisor in debug output · ce252edd
      Pierre Ossman 提交于
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      ce252edd
    • N
      sdio: allow for mmc_claim_host to be aborted · 2342f332
      Nicolas Pitre 提交于
      It is sometimes necessary to give up on trying to claim the host lock,
      especially if that happens in a thread that has to be stopped.
      
      While at it, fix the description for mmc_claim_host() which was wrong.
      Signed-off-by: NNicolas Pitre <npitre@mvista.com>
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      2342f332
    • N
      mmc: initialize mmc subsystem with subsys_initcall() · 26074962
      Nicolas Pitre 提交于
      The problem is that the sdio_bus must be registered before any SDIO
      drivers are registered against it otherwise the kernel sulks.  Because
      the sdio_bus registration happens through module_init (equivalent to
      device_initcall), then any SDIO
      drivers linked before the SDIO core code in the kernel will be initialized
      first.
      
      Upcoming SDIO function drivers are likely to be located outside the
      drivers/mmc directory as it is common practice to group drivers according
      to their function rather than the bus they use.  SDIO drivers are therefore
      likely to appear at random location in the kernel link.
      
      To make sure the sdio_bus is always initialized before any SDIO drivers,
      let's move the MMC init to the subsys_initcall level.
      Signed-off-by: NNicolas Pitre <npitre@mvista.com>
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      26074962
    • P
      mmc: basic SDIO device model · e29a7d73
      Pierre Ossman 提交于
      Add the sdio bus type and basic device handling.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      e29a7d73
    • P
      mmc: detect SDIO cards · 5c4e6f13
      Pierre Ossman 提交于
      Really basic init sequence for SDIO cards.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      5c4e6f13
  12. 23 9月, 2007 2 次提交
  13. 26 7月, 2007 4 次提交
  14. 10 7月, 2007 3 次提交
  15. 10 5月, 2007 1 次提交
  16. 09 5月, 2007 1 次提交
  17. 01 5月, 2007 4 次提交
    • P
      mmc: support unsafe resume of cards · 6abaa0c9
      Pierre Ossman 提交于
      Since many have the system root on MMC/SD we must allow some foot
      shooting when it comes to resume.
      
      We cannot detect if a card is removed and reinserted during suspend,
      so the safe approach would be to assume it was, avoiding potential
      filesystem corruption. This will of course not work if you cannot
      release the card before suspend.
      
      This commit adds a compile time option that makes the MMC layer
      assume the card wasn't touched if it is redetected upon resume.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      6abaa0c9
    • P
      mmc: add bus handler · 7ea239d9
      Pierre Ossman 提交于
      Delegate protocol handling to "bus handlers". This allows the core to
      just handle the task of arbitrating the bus. Initialisation and
      pampering of cards is now done by the different bus handlers.
      
      This design also allows MMC and SD (and later SDIO) to be more cleanly
      separated, allowing easier maintenance.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      7ea239d9
    • P
      mmc: Separate out protocol ops · da7fbe58
      Pierre Ossman 提交于
      Move protocol operations and definitions into their own files
      in an effort to separate protocol handling and bus
      arbitration more clearly.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      da7fbe58
    • P
      mmc: Move core functions to subdir · aaac1b47
      Pierre Ossman 提交于
      Create a "core" subdirectory to house the central bus handling
      functions.
      Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
      aaac1b47