[U-Boot] [PATCH 1/3] samsung: board: support eMMC reset using DT
Jaehoon Chung
jh80.chung at samsung.com
Fri Jan 9 12:13:26 CET 2015
On 01/09/2015 04:31 PM, Joonyoung Shim wrote:
> +Cc Jaehoon,
>
> On 01/09/2015 03:18 AM, Simon Glass wrote:
>> Hi Joonyoung,
>>
>> On 7 January 2015 at 22:44, Joonyoung Shim <jy0922.shim at samsung.com> wrote:
>>> Some exynos boards require special handling of SD4_nRESET_OUT line for
>>> eMMC memory to perform complete reboot e.g. Odroid X2/U3/XU3 boards.
>>>
>>> This will support eMMC reset using DT from reset_misc of samsung common
>>> board file and each board files can support eMMC reset on non DT case.
>>>
>>> Signed-off-by: Joonyoung Shim <jy0922.shim at samsung.com>
>>> ---
>>> board/samsung/common/board.c | 27 ++++++++++++++++++++++++++
>>> board/samsung/odroid/odroid.c | 2 +-
>>> doc/device-tree-bindings/exynos/emmc-reset.txt | 15 ++++++++++++++
>>> 3 files changed, 43 insertions(+), 1 deletion(-)
>>> create mode 100644 doc/device-tree-bindings/exynos/emmc-reset.txt
>>>
>>> diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c
>>> index c04ab3c..3218463 100644
>>> --- a/board/samsung/common/board.c
>>> +++ b/board/samsung/common/board.c
>>> @@ -40,6 +40,8 @@ __weak int exynos_power_init(void)
>>> return 0;
>>> }
>>>
>>> +__weak void exynos_reset_misc(void) {}
>>> +
>>> #if defined CONFIG_EXYNOS_TMU
>>> /* Boot Time Thermal Analysis for SoC temperature threshold breach */
>>> static void boot_temp_check(void)
>>> @@ -400,3 +402,28 @@ int misc_init_r(void)
>>> return 0;
>>> }
>>> #endif
>>> +
>>> +void reset_misc(void)
>>> +{
>>> +#ifdef CONFIG_OF_CONTROL
>>
>> I think all Samsung boards have this defined, so this #ifdef can be removed.
>>
>
> OK, if it is true, we can remove this and i will not to support non DT case.
>
>>> + struct gpio_desc gpio = {};
>>> + int node;
>>> +
>>> + node = fdt_node_offset_by_compatible(gd->fdt_blob, 0,
>>> + "samsung,emmc-reset");
>>> + if (node < 0)
>>> + return;
>>> +
>>> + gpio_request_by_name_nodev(gd->fdt_blob, node, "reset-gpio", 0, &gpio,
>>> + GPIOD_IS_OUT);
>>> +
>>> + if (dm_gpio_is_valid(&gpio)) {
>>> + /* Reset eMMC*/
>>> + dm_gpio_set_value(&gpio, 0);
>>> + mdelay(10);
>>
>> That's a very long reset! Is that what it needs?
>>
>
> Jaehoon, is there any guide about wait time of reset at eMMC spec?
Well, I'm not sure, but as Simon's comments, it's long time.
(Minimum is 1us...Maximum isn't defined.)
Best Regards,
Jaehoon Chung
>
> Thanks.
>
More information about the U-Boot
mailing list