1. 23 2月, 2014 1 次提交
  2. 14 2月, 2014 6 次提交
  3. 18 1月, 2014 1 次提交
  4. 14 1月, 2014 2 次提交
  5. 07 1月, 2014 1 次提交
  6. 31 10月, 2013 5 次提交
    • U
      mmc: core: Add MMC_CAP_RUNTIME_RESUME to resume at runtime_resume · 4d223782
      Ulf Hansson 提交于
      In some environments it is to prefer to postpone the resume of the card
      device until runtime_resume is being carried out, since it will mean a
      signficant decrease of the total system resume time.
      
      The reason of the decreased resume time is simply because of the actual
      re-initalization of the card, which typically takes hundreds of
      milliseconds, is performed outside the resume sequence and wont thus
      affect it.
      
      For removable card, the detect work tries to re-detect the card to make
      sure it is still present, as a part of that sequence the card will also
      be runtime_resumed and thus also fully resumed.
      
      For a non-removable card, typically a mmc blk request will trigger a
      runtime_resume and thus fully resume the card. This also means the
      first request will likely suffer from an inital latency since the
      re-initialization of the card needs to be performed.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      4d223782
    • U
      mmc: Don't force card to active state when entering suspend/shutdown · 9ec775f7
      Ulf Hansson 提交于
      By adding a card state that records if it is suspended or resumed, we
      can accept asyncronus suspend/resume requests for the mmc and sd
      bus_ops.
      
      MMC_CAP_AGGRESSIVE_PM, will at request inactivity through the runtime
      bus_ops callbacks, execute a suspend of the the card. In the state were
      this has been done, we can receive a suspend request for the mmc bus,
      which for sd and mmc forced the card to active state by a
      pm_runtime_get_sync. In other words, the card was resumed and then
      immediately suspended again, completely unnecessary.
      
      Since the suspend/resume bus_ops callbacks for sd and mmc are now
      capable of handling asynchronous requests, we no longer need to force
      the card to active state before executing suspend. Evidently preventing
      the above sequence for MMC_CAP_AGGRESSIVE_PM.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      9ec775f7
    • U
      mmc: core: Remove deprecated mmc_suspend|resume_host APIs · 3c0d22e8
      Ulf Hansson 提交于
      The are no more users of the deprecated mmc_suspend|resume_host API,
      so let's remove it.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      3c0d22e8
    • U
      mmc: core: Move cached value of the negotiated ocr mask to card struct · 69041150
      Ulf Hansson 提交于
      The negotiated ocr mask is directly related to the card. Once a card
      gets removed, the mask shall be dropped. By moving the cache of the ocr
      mask from the host struct to the card struct we have accomplished this.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      69041150
    • U
      mmc: core: Do not poll for busy with status cmd for all switch cmds · 878e200b
      Ulf Hansson 提交于
      Some switch operations like poweroff notify, shall according to the
      spec not be followed by any other new commands. For these cases and
      when the host does'nt support MMC_CAP_WAIT_WHILE_BUSY, we must not
      send status commands to poll for busy detection. Instead wait for
      the stated timeout from the EXT_CSD before completing the request.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Cc: Jaehoon Chung <jh80.chung@samsung.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      878e200b
  7. 26 9月, 2013 5 次提交
  8. 26 8月, 2013 2 次提交
  9. 25 8月, 2013 8 次提交
  10. 06 7月, 2013 1 次提交
    • O
      mmc: esdhc: Fix bug when writing to SDHCI_HOST_CONTROL register · dcaff04d
      Oded Gabbay 提交于
      The P2020 has a non-standard implementation of the SDHCI_HOST_CONTROL
      register. This patch adds a QUIRK in the SDHCI header to signal that
      a host controller has a non-standard SDHCI_HOST_CONTROL register. The
      patch adds a check to the function esdhc_writeb in file
      sdhci-of-esdhc.c, where it checks if the write is done to the
      SDHCI_HOST_CONTROL register and th host has the above mentioned QUIRK,
      then the function simply returns instead of writing to the register.
      The patch also detects if the processor is P2020 (by looking in dev
      tree) and if so, adds the QUIRK to the host->quirk2
      Signed-off-by: NOded Gabbay <ogabbay@advaoptical.com>
      Reviewed-by: NAnton Vorontsov <anton@enomsg.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      dcaff04d
  11. 28 6月, 2013 3 次提交
  12. 27 6月, 2013 1 次提交
  13. 27 5月, 2013 4 次提交
    • A
      mmc: sdhci: add ability to stay runtime-resumed if the card is powered up · f0710a55
      Adrian Hunter 提交于
      If card power is dependent on SD bus power then the host controller
      must not be runtime suspended while the card is powered up.  Add
      the ability to stay runtime-resumed in that case and enable it with a new
      quirk SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      f0710a55
    • F
      mmc: core: Fix select power class after resume · 60443712
      Fredrik Soderstedt 提交于
      Use the saved values in card->ext_csd when selecting power class.
      By doing this the power class will be selected even if mmc_init_card
      is called with oldcard != NULL, which is the case after a suspend/resume.
      
      Today ext_csd is NULL if mmc_init_card is called with oldcard != NULL
      and power class will not be selected.
      
      According to the eMMC specification the POWER_CLASS value is reset after
      power failure, H/W reset assertion and any CMD0 reset.
      Signed-off-by: NFredrik Soderstedt <fredrik.soderstedt@stericsson.com>
      Reviewed-by: NJohan Rudholm <jrudholm@gmail.com>
      Acked By: Girish K S <girish.shivananjappa@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      60443712
    • U
      mmc: core: Restructure and simplify code for mmc sleep|awake · 07a68216
      Ulf Hansson 提交于
      The mmc_card_sleep|awake APIs are not being used since the support is
      already properly encapsulated within the suspend sequence. Sleep|awake
      command is also specific for eMMC.
      
      We remove the sleep|awake bus_ops, the mmc_card_sleep|awake APIs and
      move the code into the mmc specific core instead. This also includes
      the mmc ops function, mmc_sleepawake. All releated functions have then
      become static and we have got far less code to maintain.
      
      Additionally this patch also simplifies the code from mmc_sleepawake,
      since it is only used to put the card to sleep and not awake.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      07a68216
    • U
      mmc: core: Support aggressive power management for (e)MMC/SD · c4d770d7
      Ulf Hansson 提交于
      Aggressive power management is suitable when saving power is
      essential. At request inactivity timeout, aka pm runtime
      autosuspend timeout, the card will be suspended.
      
      Once a new request arrives, the card will be re-initalized and
      thus the first request will suffer from a latency. This latency
      is card-specific, experiments has shown in general that SD-cards
      has quite poor initialization time, around 300ms-1100ms. eMMC is
      not surprisingly far better but still a couple of hundreds of ms
      has been observed.
      
      Except for the request latency, it is important to know that
      suspending the card will also prevent the card from executing
      internal house-keeping operations in idle mode. This could mean
      degradation in performance.
      
      To use this feature make sure the request inactivity timeout is
      chosen carefully. This has not been done as a part of this patch.
      
      Enable this feature by using host cap MMC_CAP_AGGRESSIVE_PM and
      by setting CONFIG_MMC_UNSAFE_RESUME.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      c4d770d7