mmc: Provide standard block controller refresh function.

The ctrlr_refresh in s5p_mshc module can be re-used on all MMC drivers.

BUG=none
TEST=emerge-daisy depthcharge chromeos-bootimage; # boot successfully.
BRANCH=none

Change-Id: I0e5807dd43ce0e52da8bbc0eee544d38535a76d2
Reviewed-on: https://gerrit.chromium.org/gerrit/60961
Tested-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Reviewed-by: David Hendricks <dhendrix@chromium.org>
Commit-Queue: Hung-Te Lin <hungte@chromium.org>
diff --git a/src/drivers/storage/exynos_dw_mmc.c b/src/drivers/storage/exynos_dw_mmc.c
index cad9c14..4e83712 100644
--- a/src/drivers/storage/exynos_dw_mmc.c
+++ b/src/drivers/storage/exynos_dw_mmc.c
@@ -124,23 +124,12 @@
 	}
 }
 
-// TODO(hungte) Change and move this to a generic function in mmc.c
-static void exynos_dwmmc_ctrlr_refresh(BlockDevCtrlr *ctrlr)
-{
-	MmcDevice *mmc = (MmcDevice *)ctrlr->ctrlr_data;
-	mmc_debug("%s: enter (root=%p).\n", __func__, mmc);
-	for (; mmc; mmc = mmc->next) {
-		block_mmc_refresh(&removable_block_devices, mmc);
-	}
-	mmc_debug("%s: leave.\n", __func__);
-}
-
 int exynos_dwmmc_ctrlr_register(void)
 {
 	static BlockDevCtrlr exynos_dwmmc =
 	{
 		&exynos_dwmmc_ctrlr_init,
-		&exynos_dwmmc_ctrlr_refresh,
+		&block_mmc_ctrlr_refresh,
 		NULL,
 	};
 	list_insert_after(&exynos_dwmmc.list_node, &block_dev_controllers);
diff --git a/src/drivers/storage/mmc.c b/src/drivers/storage/mmc.c
index b472844..68d7156 100644
--- a/src/drivers/storage/mmc.c
+++ b/src/drivers/storage/mmc.c
@@ -1042,6 +1042,16 @@
 	}
 }
 
+void block_mmc_ctrlr_refresh(BlockDevCtrlr *ctrlr)
+{
+	MmcDevice *mmc = (MmcDevice *)ctrlr->ctrlr_data;
+	mmc_debug("%s: enter (root=%p).\n", __func__, mmc);
+	for (; mmc; mmc = mmc->next) {
+		block_mmc_refresh(&removable_block_devices, mmc);
+	}
+	mmc_debug("%s: leave.\n", __func__);
+}
+
 int block_mmc_register(BlockDev *dev, MmcDevice *mmc, MmcDevice **root)
 {
 	if (!mmc->b_max)
diff --git a/src/drivers/storage/mmc.h b/src/drivers/storage/mmc.h
index e9707e4..877033f 100644
--- a/src/drivers/storage/mmc.h
+++ b/src/drivers/storage/mmc.h
@@ -279,6 +279,7 @@
 		   const void *src);
 
 void block_mmc_refresh(ListNode *block_node, MmcDevice *mmc);
+void block_mmc_ctrlr_refresh(BlockDevCtrlr *ctrlr);
 int block_mmc_register(BlockDev *dev, MmcDevice *mmc, MmcDevice **root);
 lba_t block_mmc_read(BlockDev *dev, lba_t start, lba_t count, void *buffer);
 lba_t block_mmc_write(BlockDev *dev, lba_t start, lba_t count,
diff --git a/src/drivers/storage/s5p_mshc.c b/src/drivers/storage/s5p_mshc.c
index dfbf828..d74148a 100644
--- a/src/drivers/storage/s5p_mshc.c
+++ b/src/drivers/storage/s5p_mshc.c
@@ -604,22 +604,12 @@
 	}
 }
 
-static void s5p_mshc_ctrlr_refresh(BlockDevCtrlr *ctrlr)
-{
-	MmcDevice *mmc = (MmcDevice *)ctrlr->ctrlr_data;
-	mmc_debug("%s: enter (root=%p).\n", __func__, mmc);
-	for (; mmc; mmc = mmc->next) {
-		block_mmc_refresh(&removable_block_devices, mmc);
-	}
-	mmc_debug("%s: leave.\n", __func__);
-}
-
 int s5p_mshc_ctrlr_register(void)
 {
 	static BlockDevCtrlr s5p_mshc =
 	{
 		&s5p_mshc_ctrlr_init,
-		&s5p_mshc_ctrlr_refresh,
+		&block_mmc_ctrlr_refresh,
 		NULL,
 	};
 	list_insert_after(&s5p_mshc.list_node, &block_dev_controllers);