Skip to content

Commit 1737229

Browse files
Taniya Dasbebarino
authored andcommitted
clk: qcom: gdsc: Add support to enable retention of GSDCR
Add support for the RETAIN_FF_ENABLE feature which enables the usage of retention registers. These registers maintain their state after disabling and re-enabling a GDSC. Signed-off-by: Taniya Das <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Stephen Boyd <[email protected]>
1 parent 413d84b commit 1737229

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

drivers/clk/qcom/gdsc.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
/* CFG_GDSCR */
3131
#define GDSC_POWER_UP_COMPLETE BIT(16)
3232
#define GDSC_POWER_DOWN_COMPLETE BIT(15)
33+
#define GDSC_RETAIN_FF_ENABLE BIT(11)
3334
#define CFG_GDSCR_OFFSET 0x4
3435

3536
/* Wait 2^n CXO cycles between all states. Here, n=2 (4 cycles). */
@@ -217,6 +218,14 @@ static inline void gdsc_assert_reset_aon(struct gdsc *sc)
217218
regmap_update_bits(sc->regmap, sc->clamp_io_ctrl,
218219
GMEM_RESET_MASK, 0);
219220
}
221+
222+
static void gdsc_retain_ff_on(struct gdsc *sc)
223+
{
224+
u32 mask = GDSC_RETAIN_FF_ENABLE;
225+
226+
regmap_update_bits(sc->regmap, sc->gdscr, mask, mask);
227+
}
228+
220229
static int gdsc_enable(struct generic_pm_domain *domain)
221230
{
222231
struct gdsc *sc = domain_to_gdsc(domain);
@@ -269,6 +278,9 @@ static int gdsc_enable(struct generic_pm_domain *domain)
269278
udelay(1);
270279
}
271280

281+
if (sc->flags & RETAIN_FF_ENABLE)
282+
gdsc_retain_ff_on(sc);
283+
272284
return 0;
273285
}
274286

drivers/clk/qcom/gdsc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ struct gdsc {
5050
#define AON_RESET BIT(4)
5151
#define POLL_CFG_GDSCR BIT(5)
5252
#define ALWAYS_ON BIT(6)
53+
#define RETAIN_FF_ENABLE BIT(7)
5354
struct reset_controller_dev *rcdev;
5455
unsigned int *resets;
5556
unsigned int reset_count;

0 commit comments

Comments
 (0)