mmc: Split device init to decouple OCR-polling delay
authorChe-Liang Chiou <clchiou@chromium.org>
Wed, 28 Nov 2012 15:21:13 +0000 (15:21 +0000)
committerAndy Fleming <afleming@freescale.com>
Mon, 6 May 2013 21:12:38 +0000 (16:12 -0500)
commite95504497ecac46907204b0ee3460b708a2981ac
treec59e230a6096b5883c83d3399717a3408f601355
parent5ed6f447af60aabd2669d913f673793c1ce48f47
mmc: Split device init to decouple OCR-polling delay

Most of time that MMC driver spends on initializing a device is polling
OCR (operation conditions register).  To decouple this polling loop,
device init is split into two parts: The first part fires the OCR query
command, and the second part polls the result.  So the caller is now no
longer bound to the OCR-polling delay; he may fire the query, go
somewhere and then come back later for the result.

To use this, call mmc_set_preinit() on any device which needs this.

This can save significant amounts of time on boot (e.g. 200ms) by
hiding the MMC init time behind other init.

Signed-off-by: Che-Liang Chiou <clchiou@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
drivers/mmc/mmc.c
include/mmc.h