Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a263394a authored by Peter De Schrijver's avatar Peter De Schrijver Committed by Thierry Reding
Browse files

soc/tegra: pmc: MBIST work around for Tegra210



Apply the memory built-in self test work around when ungating certain
Tegra210 power domains.

Signed-off-by: default avatarPeter De Schrijver <pdeschrijver@nvidia.com>
Reviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
Tested-by: default avatarHector Martin <marcan@marcan.st>
Tested-by: default avatarAndre Heider <a.heider@gmail.com>
Tested-by: default avatarMikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 56327f54
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ struct tegra_pmc_soc {

	bool has_tsense_reset;
	bool has_gpu_clamps;
	bool needs_mbist_war;

	const struct tegra_io_pad_soc *io_pads;
	unsigned int num_io_pads;
@@ -396,6 +397,11 @@ static int tegra_powergate_reset_deassert(struct tegra_powergate *pg)
	return 0;
}

int __weak tegra210_clk_handle_mbist_war(unsigned int id)
{
	return 0;
}

static int tegra_powergate_power_up(struct tegra_powergate *pg,
				    bool disable_clocks)
{
@@ -431,6 +437,11 @@ static int tegra_powergate_power_up(struct tegra_powergate *pg,

	usleep_range(10, 20);

	if (pg->pmc->soc->needs_mbist_war)
		err = tegra210_clk_handle_mbist_war(pg->id);
	if (err)
		goto disable_clks;

	if (disable_clocks)
		tegra_powergate_disable_clocks(pg);

@@ -1815,6 +1826,7 @@ static const struct tegra_pmc_soc tegra210_pmc_soc = {
	.cpu_powergates = tegra210_cpu_powergates,
	.has_tsense_reset = true,
	.has_gpu_clamps = true,
	.needs_mbist_war = true,
	.num_io_pads = ARRAY_SIZE(tegra210_io_pads),
	.io_pads = tegra210_io_pads,
	.regs = &tegra20_pmc_regs,