On Tue, Mar 02, 2021 at 03:25:00PM +0300, Dmitry Osipenko wrote: > Switch all clocks of a power domain to a safe rate which is suitable > for all possible voltages in order to ensure that hardware constraints > aren't violated when power domain state toggles. > > Tested-by: Peter Geis # Ouya T30 > Tested-by: Nicolas Chauvet # PAZ00 T20 and TK1 T124 > Tested-by: Matt Merhar # Ouya T30 > Signed-off-by: Dmitry Osipenko > --- > drivers/soc/tegra/pmc.c | 92 ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 90 insertions(+), 2 deletions(-) > > diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c > index f970b615ee27..a87645fac735 100644 > --- a/drivers/soc/tegra/pmc.c > +++ b/drivers/soc/tegra/pmc.c > @@ -237,6 +237,7 @@ struct tegra_powergate { > unsigned int id; > struct clk **clks; > unsigned int num_clks; > + unsigned long *clk_rates; > struct reset_control *reset; > }; > > @@ -641,6 +642,57 @@ static int __tegra_powergate_remove_clamping(struct tegra_pmc *pmc, > return 0; > } > > +static int tegra_powergate_prepare_clocks(struct tegra_powergate *pg) > +{ > + unsigned long safe_rate = 100 * 1000 * 1000; This seems a bit arbitrary. Where did you come up with that value? I'm going to apply this to see how it fares in our testing. Thierry