[PATCH 1/2] firmware: PSCI: Fix PSCI support for OF live trees

Peter Robinson pbrobinson at gmail.com
Thu Jun 18 17:44:14 CEST 2020


On Thu, Jun 18, 2020 at 12:55 PM Jon Hunter <jonathanh at nvidia.com> wrote:
>
> When CONFIG_OF_LIVE is enabled, dev_of_offset() cannot be used and
> if used returns an invalid offset. This causes the call to
> fdt_stringlist_get() in the psci_probe() to fail to read the 'method'
> property from the PSCI node for the device and hence prevents PSCI
> from working. Fix this by using the ofnode_read_string() API instead
> of the fdt_stringlist_get() because this will handle reading the
> property both when CONFIG_OF_LIVE is enabled or disabled.
>
> Due to the above problem and since commit 81ea00838c68 ("efi_loader:
> PSCI reset and shutdown") was added, the EFI system reset has been
> broken for Tegra210 and Tegra196 platforms. This also fixes the EFI
> system reset for these Tegra platforms.
>
> Signed-off-by: Jon Hunter <jonathanh at nvidia.com>
Tested-by: Peter Robinson <pbrobinson at gmail.com>

Tested on the Jetson Nano and it now reboots as expected.

> ---
>  drivers/firmware/psci.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
> index e0d66d74f54d..23cf807591c4 100644
> --- a/drivers/firmware/psci.c
> +++ b/drivers/firmware/psci.c
> @@ -67,11 +67,9 @@ static int psci_bind(struct udevice *dev)
>
>  static int psci_probe(struct udevice *dev)
>  {
> -       DECLARE_GLOBAL_DATA_PTR;
>         const char *method;
>
> -       method = fdt_stringlist_get(gd->fdt_blob, dev_of_offset(dev), "method",
> -                                   0, NULL);
> +       method = ofnode_read_string(dev_ofnode(dev), "method");
>         if (!method) {
>                 pr_warn("missing \"method\" property\n");
>                 return -ENXIO;
> --
> 2.17.1
>


More information about the U-Boot mailing list