[PATCH v5 1/2] mmc: dw_mmc: silent verbose log when calling from PM context

Shawn Lin shawn.lin at rock-chips.com
Sun Jan 15 18:43:21 PST 2017


On 2017/1/15 11:50, ayaka wrote:
>
>
> On 01/13/2017 10:59 AM, Shawn Lin wrote:
>> When deploying runtime PM, it's quite verbose to print the
>> log of ios setting. Also it's useless to print it from system
>> PM as it should be the same with booting time. We also have
>> sysfs to get all these information from ios attribute, so let's
>> skip this print from PM context.
>>
>> Signed-off-by: Shawn Lin <shawn.lin at rock-chips.com>
>> ---
>>
>> Changes in v5: None
>> Changes in v4: None
>> Changes in v3: None
>> Changes in v2: None
>>
>>   drivers/mmc/host/dw_mmc.c | 21 ++++++++++++---------
>>   1 file changed, 12 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index 3d213e7..dc58ec3 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -1153,7 +1153,8 @@ static void mci_send_cmd(struct dw_mci_slot
>> *slot, u32 cmd, u32 arg)
>>           cmd, arg, cmd_status);
>>   }
>>   -static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool
>> force_clkinit)
>> +static void dw_mci_setup_bus(struct dw_mci_slot *slot,
>> +                 bool force_clkinit, bool pm_context)
>>   {
>>       struct dw_mci *host = slot->host;
>>       unsigned int clock = slot->clock;
>> @@ -1182,11 +1183,13 @@ static void dw_mci_setup_bus(struct
>> dw_mci_slot *slot, bool 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);
>> +            /* Silent the verbose log if calling from PM context */
>> +            if (!pm_context)
>> +                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
>> @@ -1434,12 +1437,12 @@ static void dw_mci_set_ios(struct mmc_host
>> *mmc, struct mmc_ios *ios)
>>           }
>>             /* Adjust clock / bus width after power is up */
>> -        dw_mci_setup_bus(slot, false);
>> +        dw_mci_setup_bus(slot, false, false);
>>             break;
>>       case MMC_POWER_OFF:
>>           /* Turn clock off before power goes down */
>> -        dw_mci_setup_bus(slot, false);
>> +        dw_mci_setup_bus(slot, false, false);
>>             if (!IS_ERR(mmc->supply.vmmc))
>>               mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0);
>> @@ -3366,7 +3369,7 @@ int dw_mci_runtime_resume(struct device *dev)
>>               continue;
>>           if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
>>               dw_mci_set_ios(slot->mmc, &slot->mmc->ios);
>> -            dw_mci_setup_bus(slot, true);
>> +            dw_mci_setup_bus(slot, true, true);
> Sadness, it seems not work for firefly reload, maybe there is some
> problems with the card detect in that board.

This patch is intended to prevent the spamming log from pm context but
your firefly-reload board should have a another problem. So IIRC you
still see the spamming log with polling mode, we need to dig that later
but we need this two patches(at least 2/2) merged into 4.10-rc cycle to
fix the boot problem.





>>           }
>>       }
>>
>
>
>
>


-- 
Best Regards
Shawn Lin




More information about the Linux-rockchip mailing list