[PATCH 30/34] staging: mt7621-mmc: Fix different caps for different devices

Christian Lütke-Stetzkamp christian at lkamp.de
Mon Apr 2 16:45:32 UTC 2018


Current code saves the need for polling in a global variable, that
leeds to problems, when the driver should handle multiple devices with
different capabilities. By looking up the capability in the mmc_host
capabilities, they now have per device scope.

Signed-off-by: Christian Lütke-Stetzkamp <christian at lkamp.de>
---
 drivers/staging/mt7621-mmc/sd.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/mt7621-mmc/sd.c b/drivers/staging/mt7621-mmc/sd.c
index e7a4adf53e1d..acee35282678 100644
--- a/drivers/staging/mt7621-mmc/sd.c
+++ b/drivers/staging/mt7621-mmc/sd.c
@@ -153,7 +153,6 @@
 static struct msdc_regs *msdc_reg[HOST_MAX_NUM];
 #endif
 
-static int mtk_sw_poll;
 
 static int cd_active_low = 1;
 
@@ -2361,7 +2360,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
 
 	/* card change interrupt */
 	if (intsts & MSDC_INT_CDSC) {
-		if (mtk_sw_poll)
+		if (host->mmc->caps & MMC_CAP_NEEDS_POLL)
 			return IRQ_HANDLED;
 		IRQ_MSG("MSDC_INT_CDSC irq<0x%.8x>", intsts);
 #if 0 /* ---/+++ by chhung: fix slot mechanical bounce issue */
@@ -2739,9 +2738,8 @@ static int msdc_drv_probe(struct platform_device *pdev)
 		mmc->caps |= MMC_CAP_SDIO_IRQ;  /* yes for sdio */
 
 	cd_active_low = !of_property_read_bool(pdev->dev.of_node, "mediatek,cd-high");
-	mtk_sw_poll = of_property_read_bool(pdev->dev.of_node, "mediatek,cd-poll");
 
-	if (mtk_sw_poll)
+	if (of_property_read_bool(pdev->dev.of_node, "mediatek,cd-poll"))
 		mmc->caps |= MMC_CAP_NEEDS_POLL;
 
 	/* MMC core transfer sizes tunable parameters */
-- 
2.16.1



More information about the devel mailing list