Re: [PATCH 4/4] mmc: core: Send HPI only till it is successful

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Apr 19, 2012 at 9:59 AM, Chris Ball <cjb@xxxxxxxxxx> wrote:
> Hi,
>
> On Fri, Apr 13 2012, Venkatraman S wrote:
>> Try to send HPI only a fixed number of times till it is
>> successful. One successful transfer is enough - but wait
>> till the card comes out of transfer state.
>> Return an error if the card was not in programming state to
>> begin with - so that the caller knows that HPI was not sent.
>>
>> Reported-by: Alex Lemberg <Alex.Lemberg@xxxxxxxxxxx>
>> Signed-off-by: Venkatraman S <svenkatr@xxxxxx>
>> ---
>>  drivers/mmc/core/core.c |   34 ++++++++++++++++++----------------
>>  1 file changed, 18 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
>> index e541efb..ceabef5 100644
>> --- a/drivers/mmc/core/core.c
>> +++ b/drivers/mmc/core/core.c
>> @@ -401,7 +401,7 @@ EXPORT_SYMBOL(mmc_wait_for_req);
>>   */
>>  int mmc_interrupt_hpi(struct mmc_card *card)
>>  {
>> -     int err;
>> +     int err, i;
>>       u32 status;
>>
>>       BUG_ON(!card);
>> @@ -421,27 +421,29 @@ int mmc_interrupt_hpi(struct mmc_card *card)
>>       /*
>>        * If the card status is in PRG-state, we can send the HPI command.
>>        */
>> +     err = -EINVAL;
>>       if (R1_CURRENT_STATE(status) == R1_STATE_PRG) {
>> -             do {
>> -                     /*
>> -                      * We don't know when the HPI command will finish
>> -                      * processing, so we need to resend HPI until out
>> -                      * of prg-state, and keep checking the card status
>> -                      * with SEND_STATUS.  If a timeout error occurs when
>> -                      * sending the HPI command, we are already out of
>> -                      * prg-state.
>> -                      */
>> +             /* To prevent an infinite lockout, try to send HPI
>> +              * a fixed number of times and bailout if it can't
>> +              * succeed.
>> +              */
>> +             for (i = 0; i < 10 && err != 0 ; i++)
>>                       err = mmc_send_hpi_cmd(card, &status);
>> -                     if (err)
>> +             /* Once HPI was sent successfully, the card is
>> +              * supposed to be back to transfer state.
>> +              */
>
> Minor nit: for consistency, please always use:
>
>                /*
>                 * Kernel-style comment blocks.
>                 */
>
> .. even though they waste the first line.  :)
>
Thanks - I'll be more careful - but that comment is not present on the
last version I posted.
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux