[U-Boot] [PATCH] sysreset: Add support for gpio-restart

Simon Glass sjg at chromium.org
Tue Jul 17 03:45:06 UTC 2018


Hi Michal,

On 15 July 2018 at 23:31, Michal Simek <michal.simek at xilinx.com> wrote:
> On 16.7.2018 07:20, Simon Glass wrote:
>> Hi Michal,
>>
>> On 13 July 2018 at 03:15, Michal Simek <michal.simek at xilinx.com> wrote:
>>> The Linux kernel has binding for gpio-restart node.
>>> This patch is adding basic support without supporting any optional
>>> properties.
>>> This driver was tested on Microblaze system where gpio is connected to
>>> SoC reset logic.
>>> Output value is handled via gpios cells values.
>>>
>>> In gpio_reboot_request() set_value is writing 1 because
>>> dm_gpio_set_value() is capable to changing it when it is ACTIVE_LOW.
>>> ...
>>>         if (desc->flags & GPIOD_ACTIVE_LOW)
>>>                 value = !value;
>>> ...
>>>
>>> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
>>> ---
>>>
>>>  drivers/sysreset/Kconfig         |  6 ++++
>>>  drivers/sysreset/Makefile        |  1 +
>>>  drivers/sysreset/sysreset_gpio.c | 59 ++++++++++++++++++++++++++++++++++++++++
>>>  3 files changed, 66 insertions(+)
>>>  create mode 100644 drivers/sysreset/sysreset_gpio.c
>>
>> Reviewed-by: Simon Glass <sjg at chromium.org>
>>
>> But please see below.
>>
>>>
>>> diff --git a/drivers/sysreset/Kconfig b/drivers/sysreset/Kconfig
>>> index a6d48e8a662c..1e228b97443a 100644
>>> --- a/drivers/sysreset/Kconfig
>>> +++ b/drivers/sysreset/Kconfig
>>> @@ -15,6 +15,12 @@ config SYSRESET
>>>
>>>  if SYSRESET
>>>
>>> +config SYSRESET_GPIO
>>> +       bool "Enable support for GPIO restart driver"
>>> +       select GPIO
>>> +       help
>>> +         Restart support via GPIO pin connected reset logic.
>>
>> What does this mean? Please expand this to explain what it means.
>>
>> Also, what is the difference between restart and reset? If there is no
>> difference please use the word 'reset'. If there is a difference,
>> please explain it here.
>
> I have taken restart name because this is what it is written Linux kernel.
>
> Based on this explanation:
> https://kb.netgear.com/1001/Defining-Terms-Power-Cycle-Boot-Reboot-Restart-Reset-and-Hard-Reset
>
> "Unlike a reset which changes something, a restart means to turn
> something on, possibly without changing settings. When upgrading
> firmware or software you are often asked to restart. A restart would be
> probably be used if there were a major change to functionality, while a
> reset often just changes settings of existing functionality."
>

Perhaps this corresponds to warm and cold reset? I'm not sure. But I
don't know of a board which supports resetting without changing
anything. At the least the CPU is put back into a start where it can
start at its reset vector.

This really doesn't make any sense to me. I think we should stick with
'reset' to avoid confusion. By all means add some notes to the uclass
header file about what it should mean. We already have enum
sysreset_t, so you could define 'restart' there, perhaps?

Regards,
Simon


More information about the U-Boot mailing list