On 15 December 2011 11:33, amit kachhap <[email protected]> wrote:
> On Thu, Dec 15, 2011 at 9:28 AM, Girish K S
> <[email protected]> wrote:
>> This patch adds a check whether the host supports maximum current value
>> obtained from the device's extended csd register for a selected interface
>> voltage and frequency.
>>
>> cc: Chris Ball <[email protected]>
>> Signed-off-by: Girish K S <[email protected]>
>> ---
>> Changes in v2:
>> deleted a unnecessary if else condition identified by subhash J
>> Changes in v1:
>> reduced the number of comparisons as per Hein's suggestion
>>
>> drivers/mmc/core/mmc.c | 19 +++++++++++++++++++
>> include/linux/mmc/card.h | 4 ++++
>> 2 files changed, 23 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
>> index 006e932..b9ef777 100644
>> --- a/drivers/mmc/core/mmc.c
>> +++ b/drivers/mmc/core/mmc.c
>> @@ -688,6 +688,25 @@ static int mmc_select_powerclass(struct mmc_card *card,
>> pwrclass_val = (pwrclass_val & EXT_CSD_PWR_CL_4BIT_MASK) >>
>> EXT_CSD_PWR_CL_4BIT_SHIFT;
>>
>> + if (pwrclass_val >= MMC_MAX_CURRENT_800)
> Hi girish,
>
> These checks can be made like ,
> if (pwrclass_val > MMC_MAX_CURRENT_800)
> pwrclass_val = MMC_MAX_CURRENT_800;
> Applicable in all below conditional checks.
I feel that should be OK. Since there will be no significant
improvement or side effects with the current implementation.
>
> Thanks,
> Amit D
>
>> + pwrclass_val = MMC_MAX_CURRENT_800;
>> + else if (pwrclass_val >= MMC_MAX_CURRENT_600)
>> + pwrclass_val = MMC_MAX_CURRENT_600;
>> + else if (pwrclass_val >= MMC_MAX_CURRENT_400)
>> + pwrclass_val = MMC_MAX_CURRENT_400;
>> + else
>> + pwrclass_val = MMC_MAX_CURRENT_200;
>> +
>> + if ((pwrclass_val == MMC_MAX_CURRENT_800) &&
>> + !(card->host->caps & MMC_CAP_MAX_CURRENT_800))
>> + pwrclass_val = MMC_MAX_CURRENT_600;
>> + if ((pwrclass_val == MMC_MAX_CURRENT_600) &&
>> + !(card->host->caps & MMC_CAP_MAX_CURRENT_600))
>> + pwrclass_val = MMC_MAX_CURRENT_400;
>> + if ((pwrclass_val == MMC_MAX_CURRENT_400) &&
>> + !(card->host->caps & MMC_CAP_MAX_CURRENT_400))
>> + pwrclass_val = MMC_MAX_CURRENT_200;
>> +
>> /* If the power class is different from the default value */
>> if (pwrclass_val > 0) {
>> err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
>> diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
>> index 9478a6b..c5e031a 100644
>> --- a/include/linux/mmc/card.h
>> +++ b/include/linux/mmc/card.h
>> @@ -195,6 +195,10 @@ struct mmc_part {
>> #define MMC_BLK_DATA_AREA_GP (1<<2)
>> };
>>
>> +#define MMC_MAX_CURRENT_200 (0)
>> +#define MMC_MAX_CURRENT_400 (7)
>> +#define MMC_MAX_CURRENT_600 (11)
>> +#define MMC_MAX_CURRENT_800 (13)
>> /*
>> * MMC device
>> */
>> --
>> 1.7.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc"
>> in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html