mmc: dw_mmc: display the clock message only one time when card is polling
authorJaehoon Chung <jh80.chung@samsung.com>
Thu, 24 Nov 2016 11:04:42 +0000 (20:04 +0900)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 5 Dec 2016 09:31:17 +0000 (10:31 +0100)
When card is polling (broken-cd), there is a spamming messge related to
clock.
After applied this patch, display the message only one time at boot
time. It's enough to check which clock values is used.
Also prevent to display the spamming message.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/dw_mmc.c
drivers/mmc/host/dw_mmc.h

index 45b1a3de0b688c0ac9aab0278634c694876cb6c7..b44306b886cb6d7a383abae4d985cd18ea1d48e3 100644 (file)
@@ -1176,13 +1176,24 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
 
                div = (host->bus_hz != clock) ? DIV_ROUND_UP(div, 2) : 0;
 
-               if (clock != slot->__clk_old || force_clkinit)
+               if ((clock != slot->__clk_old &&
+                       !test_bit(DW_MMC_CARD_NEEDS_POLL, &slot->flags)) ||
+                       force_clkinit) {
                        dev_info(&slot->mmc->class_dev,
                                 "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
                                 slot->id, host->bus_hz, clock,
                                 div ? ((host->bus_hz / div) >> 1) :
                                 host->bus_hz, div);
 
+                       /*
+                        * If card is polling, display the message only
+                        * one time at boot time.
+                        */
+                       if (slot->mmc->caps & MMC_CAP_NEEDS_POLL &&
+                                       slot->mmc->f_min == clock)
+                               set_bit(DW_MMC_CARD_NEEDS_POLL, &slot->flags);
+               }
+
                /* disable clock */
                mci_writel(host, CLKENA, 0);
                mci_writel(host, CLKSRC, 0);
index 4a6ae750feebc70377a77c8b88a7032f52b08d27..c59465829387757ddd3d8257c409b400534f048c 100644 (file)
@@ -272,6 +272,7 @@ struct dw_mci_slot {
 #define DW_MMC_CARD_NEED_INIT  1
 #define DW_MMC_CARD_NO_LOW_PWR 2
 #define DW_MMC_CARD_NO_USE_HOLD 3
+#define DW_MMC_CARD_NEEDS_POLL 4
        int                     id;
        int                     sdio_id;
 };