firmware: tegra: Defer BPMP probe if shared memory not available
Since commit 93d2e4322a
("of: platform: Batch fwnode parsing when
adding all top level devices") was added, the probing of the Tegra
SRAM device has occurred later in the boot sequence, after the BPMP
has been probed. The BPMP uses sections of the SRAM for shared memory
and if the BPMP is probed before the SRAM then it fails to probe and
never tries again. This is causing a boot failure on Tegra186 and
Tegra194. Fix this by allowing the probe of the BPMP to be deferred if
the SRAM is not available yet.
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
b720aaa347
commit
10b2006681
|
@ -176,7 +176,7 @@ static int tegra186_bpmp_init(struct tegra_bpmp *bpmp)
|
|||
priv->tx.pool = of_gen_pool_get(bpmp->dev->of_node, "shmem", 0);
|
||||
if (!priv->tx.pool) {
|
||||
dev_err(bpmp->dev, "TX shmem pool not found\n");
|
||||
return -ENOMEM;
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
priv->tx.virt = gen_pool_dma_alloc(priv->tx.pool, 4096, &priv->tx.phys);
|
||||
|
@ -188,7 +188,7 @@ static int tegra186_bpmp_init(struct tegra_bpmp *bpmp)
|
|||
priv->rx.pool = of_gen_pool_get(bpmp->dev->of_node, "shmem", 1);
|
||||
if (!priv->rx.pool) {
|
||||
dev_err(bpmp->dev, "RX shmem pool not found\n");
|
||||
err = -ENOMEM;
|
||||
err = -EPROBE_DEFER;
|
||||
goto free_tx;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user