[U-Boot] [PATCH 1/2] arm: k3: Fix getting ti_sci handle

API get_ti_sci_handle() is relying on the device-tree node name to be "dmsc" for probing the ti_sci device. But with the introduction of debug messages for dmsc, the node name changed to dmsc@44083000. Because of this ti_sci is never probed cause a boot failure. Instead of relying on device-tree node name, use the first available firmware node for probing ti_sci.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com --- arch/arm/mach-k3/common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c index bab5ffdf40..3e36d90ace 100644 --- a/arch/arm/mach-k3/common.c +++ b/arch/arm/mach-k3/common.c @@ -20,7 +20,7 @@ struct ti_sci_handle *get_ti_sci_handle(void) struct udevice *dev; int ret;
- ret = uclass_get_device_by_name(UCLASS_FIRMWARE, "dmsc", &dev); + ret = uclass_get_device(UCLASS_FIRMWARE, 0, &dev); if (ret) panic("Failed to get SYSFW (%d)\n", ret);

Instead of calling uclass apis everywhere, use get_ti_sci_handle() when ever ti_sci is needed.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com --- arch/arm/mach-k3/am6_init.c | 16 +++------------- arch/arm/mach-k3/security.c | 15 +++------------ 2 files changed, 6 insertions(+), 25 deletions(-)
diff --git a/arch/arm/mach-k3/am6_init.c b/arch/arm/mach-k3/am6_init.c index 6558fe0ef4..0b564f7bd1 100644 --- a/arch/arm/mach-k3/am6_init.c +++ b/arch/arm/mach-k3/am6_init.c @@ -219,10 +219,9 @@ u32 spl_boot_device(void)
void release_resources_for_core_shutdown(void) { - struct udevice *dev; - struct ti_sci_handle *ti_sci; - struct ti_sci_dev_ops *dev_ops; - struct ti_sci_proc_ops *proc_ops; + struct ti_sci_handle *ti_sci = get_ti_sci_handle(); + struct ti_sci_dev_ops *dev_ops = &ti_sci->ops.dev_ops; + struct ti_sci_proc_ops *proc_ops = &ti_sci->ops.proc_ops; int ret; u32 i;
@@ -231,15 +230,6 @@ void release_resources_for_core_shutdown(void) AM6_DEV_MCU_RTI1, };
- /* Get handle to Device Management and Security Controller (SYSFW) */ - ret = uclass_get_device_by_name(UCLASS_FIRMWARE, "dmsc", &dev); - if (ret) - panic("Failed to get handle to SYSFW (%d)\n", ret); - - ti_sci = (struct ti_sci_handle *)(ti_sci_get_handle_from_sysfw(dev)); - dev_ops = &ti_sci->ops.dev_ops; - proc_ops = &ti_sci->ops.proc_ops; - /* Iterate through list of devices to put (shutdown) */ for (i = 0; i < ARRAY_SIZE(put_device_ids); i++) { u32 id = put_device_ids[i]; diff --git a/arch/arm/mach-k3/security.c b/arch/arm/mach-k3/security.c index 52f49bf01f..4e011ee10e 100644 --- a/arch/arm/mach-k3/security.c +++ b/arch/arm/mach-k3/security.c @@ -11,25 +11,16 @@ #include <linux/soc/ti/ti_sci_protocol.h> #include <mach/spl.h> #include <spl.h> +#include <asm/arch/sys_proto.h>
void board_fit_image_post_process(void **p_image, size_t *p_size) { - struct udevice *dev; - struct ti_sci_handle *ti_sci; - struct ti_sci_proc_ops *proc_ops; + struct ti_sci_handle *ti_sci = get_ti_sci_handle(); + struct ti_sci_proc_ops *proc_ops = &ti_sci->ops.proc_ops; u64 image_addr; u32 image_size; int ret;
- /* Get handle to Device Management and Security Controller (SYSFW) */ - ret = uclass_get_device_by_name(UCLASS_FIRMWARE, "dmsc", &dev); - if (ret) { - printf("Failed to get handle to SYSFW (%d)\n", ret); - hang(); - } - ti_sci = (struct ti_sci_handle *)(ti_sci_get_handle_from_sysfw(dev)); - proc_ops = &ti_sci->ops.proc_ops; - image_addr = (uintptr_t)*p_image;
debug("Authenticating image at address 0x%016llx\n", image_addr);

On Mon, Sep 09, 2019 at 12:47:38PM +0530, Lokesh Vutla wrote:
Instead of calling uclass apis everywhere, use get_ti_sci_handle() when ever ti_sci is needed.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com
Applied to u-boot/master, thanks!

On Mon, Sep 09, 2019 at 12:47:37PM +0530, Lokesh Vutla wrote:
API get_ti_sci_handle() is relying on the device-tree node name to be "dmsc" for probing the ti_sci device. But with the introduction of debug messages for dmsc, the node name changed to dmsc@44083000. Because of this ti_sci is never probed cause a boot failure. Instead of relying on device-tree node name, use the first available firmware node for probing ti_sci.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com
Applied to u-boot/master, thanks!
participants (2)
-
Lokesh Vutla
-
Tom Rini