1. 14 8月, 2011 1 次提交
  2. 26 7月, 2011 1 次提交
  3. 21 7月, 2011 5 次提交
    • D
      mmc: print debug messages for runtime PM actions · bb9cab94
      Daniel Drake 提交于
      At http://www.mail-archive.com/linux-mmc@vger.kernel.org/msg08371.html
      (thread: "mmc: sdio: reset card during power_restore") we found and
      fixed a bug where mmc's runtime power management functions were not being
      called. We have now also made improvements to the SDIO powerup routine
      which could possibly mask this kind of issue in future.
      
      Add debug messages to the runtime PM hooks so that it is easy to verify
      if and when runtime PM is happening.
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      bb9cab94
    • O
      mmc: fix runtime PM with -ENOSYS suspend case · ecc02441
      Ohad Ben-Cohen 提交于
      In the case where a driver returns -ENOSYS from its suspend handler
      to indicate that the device should be powered down over suspend, the
      remove routine of the driver was not being called, leading to lots of
      confusion during resume.
      
      The problem is that runtime PM is disabled during this process,
      and when we reach mmc_sdio_remove, calling the runtime PM functions here
      (validly) return errors, and this was causing us to skip the remove
      function.
      
      Fix this by ignoring the error value of pm_runtime_get_sync(), which
      can return valid errors. This also matches the behaviour of
      pci_device_remove().
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      ecc02441
    • P
      mmc: core: Set non-default Drive Strength via platform hook · ca8e99b3
      Philip Rakity 提交于
      Non default Drive Strength cannot be set automatically.  It is a function
      of the board design and only if there is a specific platform handler can
      it be set.  The platform handler needs to take into account the board
      design.  Pass to the platform code the necessary information.
      
      For example:  The card and host controller may indicate they support HIGH
      and LOW drive strength.  There is no way to know what should be chosen
      without specific board knowledge.  Setting HIGH may lead to reflections
      and setting LOW may not suffice.  There is no mechanism (like ethernet
      duplex or speed pulses) to determine what should be done automatically.
      
      If no platform handler is defined -- use the default value.
      Signed-off-by: NPhilip Rakity <prakity@marvell.com>
      Reviewed-by: NArindam Nath <arindam.nath@amd.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      ca8e99b3
    • P
      mmc: core: add non-blocking mmc request function · aa8b683a
      Per Forlin 提交于
      Previously there has only been one function mmc_wait_for_req()
      to start and wait for a request. This patch adds:
      
       * mmc_start_req() - starts a request wihtout waiting
         If there is on ongoing request wait for completion
         of that request and start the new one and return.
         Does not wait for the new command to complete.
      
      This patch also adds new function members in struct mmc_host_ops
      only called from core.c:
      
       * pre_req - asks the host driver to prepare for the next job
       * post_req - asks the host driver to clean up after a completed job
      
      The intention is to use pre_req() and post_req() to do cache maintenance
      while a request is active. pre_req() can be called while a request is
      active to minimize latency to start next job. post_req() can be used after
      the next job is started to clean up the request. This will minimize the
      host driver request end latency. post_req() is typically used before
      ending the block request and handing over the buffer to the block layer.
      
      Add a host-private member in mmc_data to be used by pre_req to mark the
      data. The host driver will then check this mark to see if the data is
      prepared or not.
      Signed-off-by: NPer Forlin <per.forlin@linaro.org>
      Acked-by: NKyungmin Park <kyungmin.park@samsung.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Reviewed-by: NVenkatraman S <svenkatr@ti.com>
      Tested-by: NSourav Poddar <sourav.poddar@ti.com>
      Tested-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      aa8b683a
    • A
      mmc: queue: let host controllers specify maximum discard timeout · e056a1b5
      Adrian Hunter 提交于
      Some host controllers will not operate without a hardware
      timeout that is limited in value.  However large discards
      require large timeouts, so there needs to be a way to
      specify the maximum discard size.
      
      A host controller driver may now specify the maximum discard
      timeout possible so that max_discard_sectors can be calculated.
      
      However, for eMMC when the High Capacity Erase Group Size
      is not in use, the timeout calculation depends on clock
      rate which may change.  For that case Preferred Erase Size
      is used instead.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      e056a1b5
  4. 14 7月, 2011 1 次提交
  5. 26 6月, 2011 3 次提交
  6. 26 5月, 2011 2 次提交
  7. 25 5月, 2011 27 次提交