• Haibo Chen's avatar
    mmc: sdhci: use pipeline mmc requests to improve performance · 348487cb
    Haibo Chen authored
    This patch is based on the patches by Per Forlin, Tony Lin and Ryan QIAN.
    
    This patch complete the API 'post_req' and 'pre_req' in sdhci host side,
    
    Test Env:
    1. i.MX6Q-SABREAUTO board, CPU @ 996MHz, use ADMA in uSDHC controller.
    2. Test command:
    		$ echo 1 > /proc/sys/vm/drop_caches
    	write to sd card:
    		$ dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=2000 conv=fsync
    	read the sd card:
    		$ dd if=/dev/mmcblk0 of=/dev/null bs=1M count=2000
    
    3. TOSHIBA 16GB SD3.0 card, running at 4 bit, SDR104 @ 198MHZ
    	Performance with and without this patch:
          -------------------------------------------------
    	  |                    | read speed | write speed |
    	  |------------------------------------------------
    	  | with this patch    | ~76.7 MB/s |  ~23.3 MB/s |
    	  |------------------------------------------------
    	  |without this patch  | ~60.5 MB/s |  ~22.5 MB/s |
    	  -------------------------------------------------
    
    4. SanDisk 8GB SD3.0 card, running at 4 bit, DDR50 @ 50MHZ
    	Performance with and without this patch:
          -------------------------------------------------
    	  |                    | read speed | write speed |
    	  |------------------------------------------------
    	  | with this patch    | ~40.5 MB/s |  ~15.6 MB/s |
    	  |------------------------------------------------
    	  |without this patch  | ~36.1 MB/s |  ~14.1 MB/s |
    	  -------------------------------------------------
    
    5. Kingston 8GB SD2.0 card, running at 4 bit, High-speed @ 50MHZ
    	Performance with and without this patch:
          -------------------------------------------------
    	  |                    | read speed | write speed |
    	  |------------------------------------------------
    	  | with this patch    | ~22.7 MB/s |  ~8.2 MB/s  |
    	  |------------------------------------------------
    	  |without this patch  | ~21.3 MB/s |  ~8.0 MB/s  |
    	  -------------------------------------------------
    
    6. About eMMC, Sandisk 8GB eMMC on i.MX6DL-sabresd board, CPU @ 792MHZ,
       eMMC running at 8 bit, DDR52 @ 52MHZ.
    	Performance with and without this patch:
          -------------------------------------------------
    	  |                    | read speed | write speed |
    	  |------------------------------------------------
    	  | with this patch    | ~37.3 MB/s |  ~10.5 MB/s |
    	  |------------------------------------------------
    	  |without this patch  | ~33.4 MB/s |  ~10.5 MB/s |
    	  -------------------------------------------------
    Signed-off-by: default avatarHaibo Chen <haibo.chen@freescale.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    348487cb
sdhci.c 92.8 KB