Re: [PATCH 1/9] regulator: tps65217: Enable suspend configuration
From: Keerthy
Date: Wed Jun 22 2016 - 06:19:16 EST
On Wednesday 22 June 2016 12:38 AM, Mark Brown wrote:
On Mon, Jun 20, 2016 at 02:13:30PM +0530, Keerthy wrote:
+static struct tps65217_regulator_data regulator_data[TPS65217_NUM_REGULATOR];
Why is this a static global?
+ /* Store default strobe info */
+ ret = tps65217_reg_read(tps, regulators[i].bypass_reg, &val);
+
+ regulator_data[i].strobe = val & regulators[i].bypass_mask;
+
Not sure what this is doing... I think this needs splitting up a bit,
it looks like it's a bit more than just adding the ops (which should be
generic things), that bit seems OK but there's these other bits in
there as well.
Okay. Let me explain a bit more here:
The TPS65217 has a pre-defined power-up / power-down sequence which in a
typical application does not need
to be changed. However, it is possible to define custom sequences under
I2C control. The power-up sequence is
defined by strobes and delay times. Each output rail is assigned to a
strobe to determine the order in which the
rails are enabled.
Every regulator of tps65217 PMIC has sequence registers and every
regulator has a default strobe value
and gets disabled when a particular power down sequence occurs.
So as to keep it on during suspend we write value 0 to strobe so that
the regulator is out of all sequencers and is not impacted by any power
down sequence. We are saving the default strobe value during probe so
that when we want to regulator to be enabled during suspend we write 0
to strobe and when we want it to get disabled during suspend we write
the default saved strobe value.
Hence saving it in a static array and using it later in the ops
functions to disable or enable regulator during suspend.