mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
drivers: firmware: ti_sci: Get SCI revision only if TIFS/SYSFW is up
When setting up boot media to load the TIFS binary in legacy boot flow (followed by J721E), get_timer() is called which calls dm_timer_init() which then gets the tick-timer: mcu_timer0. mcu_timer0 uses k3_clks (clock controller) and k3_pds (power controller) from the dmsc node that forces probe of the ti_sci driver of TIFS that hasn't been loaded yet! Running ti_sci_cmd_get_revision from the probe leads to panic since no TIFS and board config binaries have been loaded yet. Resolve this by moving ti_sci_cmd_get_revision to ti_sci_get_handle_from_sysfw as a common point of invocation for both legacy and combined boot flows. Before doing this, it is important to go through whether any sync points exist where revision is needed before ti_sci_get_handle_from_sysfw is invoked. Going through the code along with boot tests on both flows ensures that there are none. Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
This commit is contained in:
committed by
Tom Rini
parent
50fa67d091
commit
a9c2b7326b
@@ -2690,6 +2690,8 @@ static void ti_sci_setup_ops(struct ti_sci_info *info)
|
||||
const
|
||||
struct ti_sci_handle *ti_sci_get_handle_from_sysfw(struct udevice *sci_dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!sci_dev)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
@@ -2703,6 +2705,11 @@ struct ti_sci_handle *ti_sci_get_handle_from_sysfw(struct udevice *sci_dev)
|
||||
if (!handle)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
ret = ti_sci_cmd_get_revision(handle);
|
||||
|
||||
if (ret)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
||||
@@ -2825,11 +2832,9 @@ static int ti_sci_probe(struct udevice *dev)
|
||||
list_add_tail(&info->list, &ti_sci_list);
|
||||
ti_sci_setup_ops(info);
|
||||
|
||||
ret = ti_sci_cmd_get_revision(&info->handle);
|
||||
|
||||
INIT_LIST_HEAD(&info->dev_list);
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user