From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Osipenko Subject: Re: [PATCH V5 09/18] clk: tegra: Add save and restore context support for peripheral clocks Date: Sat, 29 Jun 2019 16:17:59 +0300 Message-ID: <711a6e01-f3c2-9bbe-60af-4f8701102d6d@gmail.com> References: <1561687972-19319-1-git-send-email-skomatineni@nvidia.com> <1561687972-19319-10-git-send-email-skomatineni@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <1561687972-19319-10-git-send-email-skomatineni@nvidia.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org To: Sowjanya Komatineni , thierry.reding@gmail.com, jonathanh@nvidia.com, tglx@linutronix.de, jason@lakedaemon.net, marc.zyngier@arm.com, linus.walleij@linaro.org, stefan@agner.ch, mark.rutland@arm.com Cc: pdeschrijver@nvidia.com, pgaikwad@nvidia.com, sboyd@kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, jckuo@nvidia.com, josephl@nvidia.com, talho@nvidia.com, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, mperttunen@nvidia.com, spatra@nvidia.com, robh+dt@kernel.org, devicetree@vger.kernel.org List-Id: devicetree@vger.kernel.org 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 > Signed-off-by: Sowjanya Komatineni > --- > 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() ?