[U-Boot] [PATCH] arm: trats: add the sd-card power control function.

Jaehoon Chung
2013-11-01T01:02:15Z

Hi Lukasz,

Thanks for your comments.

On 11/01/2013 02:03 AM, Lukasz Majewski wrote:
> Hi Jaehoon,
>
>> To use the sd-card, VTF_2.8V will be enabled.
>> Before this patch, VTF_2.8V is always disabled.(card can't
>> initialize.) When card is detected, SD-card power will enable with
>> sd_ldo_control().
>>
>> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>> ---
>> board/samsung/trats/trats.c | 38
>> ++++++++++++++++++++++++++++++++------ 1 file changed, 32
>> insertions(+), 6 deletions(-)
>>
>> diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
>> index 7f61d17..9b6dd12 100644
>> --- a/board/samsung/trats/trats.c
>> +++ b/board/samsung/trats/trats.c
>> @@ -408,11 +408,31 @@ int checkboard(void)
>> #endif
>>
>> #ifdef CONFIG_GENERIC_MMC
>> +static int sd_ldo_control(int on)
>> +{
>> + struct pmic *p = pmic_get("MAX8997_PMIC");
>> + u32 val = 0;
>> + int ret = 0;
>> + if (pmic_probe(p))
>> + return -1;
>
> Maybe -1 -> -ENODEV
Will fix..
>
>> +
>> + /* LDO17 VTF: 2.8V */
>> + val = max8997_reg_ldo(2800000) | (on? EN_LDO : DIS_LDO);
> ^^^ on ?
Will fix
>> + ret |= pmic_reg_write(p, MAX8997_REG_LDO17CTRL, val);
> ^^^^^ ret =
Will fix.
>> +
>> + if (ret) {
>> + puts("MAX8997 SD setting error!\n");
>
> Please use error() instead of puts()
Using error().
>
>> + return -1;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> int board_mmc_init(bd_t *bis)
>> {
>> struct exynos4_gpio_part2 *gpio =
>> (struct exynos4_gpio_part2
>> *)samsung_get_base_gpio_part2();
>> - int err;
>> + int err, err_sd = 0;
>
> I think that the err_sd is not needed here. Please use the err as is
> was at the original code.
As like the goni, I think sd_err needs herre.
We need to consider the cases when eMMC is intiailzed and SD-card is failed.
If SD-card is failed, then it's always retunred "Fail", although eMMC is initialized.
how about?
After replying your, i will send the fixing patch.

Best Regards,
Jaehoon Chung
>
>>
>> /* eMMC_EN: SD_0_CDn: GPK0[2] Output High */
>> s5p_gpio_direction_output(&gpio->k0, 2, 1);
>> @@ -438,14 +458,20 @@ int board_mmc_init(bd_t *bis)
>> * GPX3[4] T-flash detect pin
>> */
>> if (!s5p_gpio_get_value(&gpio->x3, 4)) {
>> - err = exynos_pinmux_config(PERIPH_ID_SDMMC2,
>> PINMUX_FLAG_NONE);
>> - if (err)
>> + err_sd = exynos_pinmux_config(PERIPH_ID_SDMMC2,
>> PINMUX_FLAG_NONE);
>> + if (err_sd)
>> debug("SDMMC2 not configured\n");
>> - else
>> - err = s5p_mmc_init(2, 4);
>> + else {
>> + if (!sd_ldo_control(1)) {
>> + err_sd = s5p_mmc_init(2, 4);
>> + if (err_sd) {
>> + sd_ldo_control(0);
>> + }
> Parenthesis with this if aren't needed.
>> + }
>> + }
>> }
>>
>> - return err;
>> + return err & err_sd;
>> }
>> #endif
>>
>
>
>