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 45b1a3d..b44306b 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 4a6ae75..c594658 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;
 };