1. 25 Jul, 2007 2 commits
  2. 09 Jul, 2007 3 commits
  3. 09 May, 2007 1 commit
  4. 08 May, 2007 1 commit
  5. 01 May, 2007 12 commits
  6. 06 Mar, 2007 1 commit
  7. 04 Feb, 2007 5 commits
    • Pierre Ossman's avatar
      mmc: Graceful fallback for fancy features · ae06eaf9
      Pierre Ossman authored
      
      
      MMC high-speed, wide bus support and SD high-speed
      are functions that aren't critical for correct
      operation of the card. As such, they shouldn't mark
      the card as bad or dead when there is a failure
      activating these features.
      
      This is needed in particular on some really stupid
      hardware (e.g. Winbond's) where not all data transfer
      commands are supported.
      
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      ae06eaf9
    • Pierre Ossman's avatar
      mmc: Allow host drivers to specify max block count · 55db890a
      Pierre Ossman authored
      
      
      Many controllers have an upper limit on the number of blocks that can be
      transferred in one request. Allow the host drivers to specify this and make
      sure we avoid hitting this limit.
      
      Also change the max_sectors field to avoid confusion. This makes it map
      less directly to the block layer limits, but as they didn't apply directly
      on MMC cards anyway, this isn't a great loss.
      
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      55db890a
    • Pierre Ossman's avatar
      mmc: Allow host drivers to specify a max block size · fe4a3c7a
      Pierre Ossman authored
      
      
      Most controllers have an upper limit on the block size. Allow the host
      drivers to specify this and make sure we avoid hitting this limit.
      
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      fe4a3c7a
    • Philip Langdale's avatar
      mmc: Add support for SDHC cards · fba68bd2
      Philip Langdale authored
      
      
      Thanks to the generous donation of an SDHC card by John Gilmore, and
      the surprisingly enlightened decision by the SD Card Association to
      publish useful specs, I've been able to bash out support for SDHC. The
      changes are not too profound:
      
      i) Add a card flag indicating the card uses block level addressing and
      check it in the block driver. As we never took advantage of byte-level
      addressing, this simply involves skipping the block -> byte
      translation when sending commands.
      
      ii) The layout of the CSD is changed - a set of fields are discarded
      to make space for a larger C_SIZE. We did not reference any of the
      discarded fields except those related to the C_SIZE.
      
      iii) Read and write timeouts are fixed values and not calculated from
      CSD values.
      
      iv) Before invoking SEND_APP_OP_COND, we must invoke the new
      SEND_IF_COND to inform the card we support SDHC.
      
      Signed-off-by: default avatarPhilipl Langdale <philipl@overt.org>
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      fba68bd2
    • Pierre Ossman's avatar
      mmc: replace host->card_busy · f22ee4ed
      Pierre Ossman authored
      
      
      As card_busy was only used to indicate if the host was exclusively
      claimed and not really used to identify a particular card, replacing
      it with just a boolean makes things a lot more easily understandable.
      
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      f22ee4ed
  8. 01 Dec, 2006 4 commits
    • Pierre Ossman's avatar
      mmc: Support for high speed SD cards · 7ccd266e
      Pierre Ossman authored
      
      
      Modern SD cards support a clock speed of 50 MHz. Make sure we test for
      this capability and do the song and dance required to activate it.
      
      Activating high speed support actually modifies the TRAN_SPEED field
      of the CSD. But as the spec says that the cards must report 50 MHz,
      we might as well skip re-reading the CSD.
      
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      7ccd266e
    • Pierre Ossman's avatar
      mmc: Fix mmc_delay() function · 73778120
      Pierre Ossman authored
      
      
      Several fixes for mmc_delay():
      
       * Repair if-clause that was supposed to detect sub-hz delays.
       * Change yield() to cond_resched() as yield() no longer has the
         semantics we desire.
       * mmc_delay() is used to guarantee protocol delays, so we cannot
         return early (i.e. use _interruptable).
      
      Based on patch by Amol Lad.
      
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      73778120
    • Philip Langdale's avatar
      mmc: Add support for mmc v4 wide-bus modes · e45a1bd2
      Philip Langdale authored
      
      
      This change adds support for the mmc4 4-bit wide-bus mode.
      
      The mmc4 spec defines 8-bit and 4-bit transfer modes. As we do not support
      any 8-bit hardware, this patch only adds support for the 4-bit mode, but
      it can easily be built upon when the time comes.
      
      The 4-bit mode is electrically compatible with SD's 4-bit mode but the
      procedure for turning it on is different. This patch implements only
      the essential parts of the procedure as defined by the spec. Two additional
      steps are recommended but not compulsory. I am documenting them here so
      that there's a record.
      
      1) A bus-test mechanism is implemented using dedicated mmc commands which allow
      for testing the functionality of the data bus at the electrical level. This is
      pretty paranoid and they way the commands work is not compatible with the mmc
      subsystem (they don't set valid CRC values).
      
      2) MMC v4 cards can indicate they would like to draw more than the default
      amount of current in wide-bus modes. We currently will never switch the card
      into a higher draw mode. Supposedly, allowing the card to draw more current
      will let it perform better, but the specs seem to indicate that the card will
      function correctly without the mode change. Empirical testing supports this
      interpretation.
      
      Signed-off-by: default avatarPhilip Langdale <philipl@overt.org>
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      e45a1bd2
    • Philip Langdale's avatar
      [PATCH] mmc: Add support for mmc v4 high speed mode · bce40a36
      Philip Langdale authored
      
      
      This adds support for the high-speed modes defined by mmc v4
      (assuming the host controller is up to it). On a TI sdhci controller,
      it improves read speed from 1.3MBps to 2.3MBps. The TI controller can
      only go up to 24MHz, but everything helps. Another person has taken
      this basic patch and used it on a Nokia 770 to get a bigger boost
      because that controller can run at 48MHZ.
      
      Signed-off-by: default avatarPhilip Langdale <philipl@overt.org>
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      bce40a36
  9. 22 Nov, 2006 1 commit
  10. 08 Nov, 2006 2 commits
  11. 04 Oct, 2006 1 commit
    • Pierre Ossman's avatar
      [PATCH] mmc: use own work queue · 7104e2d5
      Pierre Ossman authored
      
      
      The MMC layer uses the standard work queue for doing card detection.  As this
      queue is shared with other crucial subsystems, the effects of a long (and
      perhaps buggy) detection can cause the system to be unusable.  E.g.  the
      keyboard stops working while the detection routine is running.
      
      The solution is to add a specific mmc work queue to run the detection code in.
      This is similar to how other subsystems handle detection (a full kernel
      thread is the most common theme).
      
      Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7104e2d5
  12. 16 Sep, 2006 1 commit
  13. 07 Sep, 2006 2 commits
  14. 03 Jul, 2006 1 commit
  15. 30 Jun, 2006 1 commit
  16. 19 May, 2006 1 commit
  17. 04 May, 2006 1 commit