28.06.2019 5:12, Sowjanya Komatineni пишет: > This patch implements save and restore context for peripheral fixed > clock ops, peripheral gate clock ops, sdmmc mux clock ops, and > peripheral clock ops. > > During system suspend, core power goes off and looses the settings > of the Tegra CAR controller registers. > > So during suspend entry clock and reset state of peripherals is saved > and on resume they are restored to have clocks back to same rate and > state as before suspend. > > Acked-by: Thierry Reding <treding@xxxxxxxxxx> > Signed-off-by: Sowjanya Komatineni <skomatineni@xxxxxxxxxx> > --- > drivers/clk/tegra/clk-periph-fixed.c | 31 ++++++++++++++++++++++++++ > drivers/clk/tegra/clk-periph-gate.c | 34 ++++++++++++++++++++++++++++ > drivers/clk/tegra/clk-periph.c | 43 ++++++++++++++++++++++++++++++++++++ > drivers/clk/tegra/clk-sdmmc-mux.c | 30 +++++++++++++++++++++++++ > drivers/clk/tegra/clk.h | 8 +++++++ > 5 files changed, 146 insertions(+) > > diff --git a/drivers/clk/tegra/clk-periph-fixed.c b/drivers/clk/tegra/clk-periph-fixed.c > index c088e7a280df..981f68b0a937 100644 > --- a/drivers/clk/tegra/clk-periph-fixed.c > +++ b/drivers/clk/tegra/clk-periph-fixed.c > @@ -60,11 +60,42 @@ tegra_clk_periph_fixed_recalc_rate(struct clk_hw *hw, > return (unsigned long)rate; > } > > +static int tegra_clk_periph_fixed_save_context(struct clk_hw *hw) > +{ > + struct tegra_clk_periph_fixed *fixed = to_tegra_clk_periph_fixed(hw); > + u32 mask = 1 << (fixed->num % 32); > + > + fixed->enb_ctx = readl(fixed->base + fixed->regs->enb_reg) & mask; > + fixed->rst_ctx = readl(fixed->base + fixed->regs->rst_reg) & mask; > + readl_relaxed() ?