diff mbox

[v2,3/5] mfd: palmas: Reset the POWERHOLD mux during power off

Message ID 1478754560-27923-4-git-send-email-j-keerthy@ti.com
State New
Headers show

Commit Message

J, KEERTHY Nov. 10, 2016, 5:09 a.m. UTC
POWERHOLD signal has higher priority  over the DEV_ON bit.
So power off will not happen if the POWERHOLD is held high.
Hence reset the MUX to GPIO_7 mode to release the POWERHOLD
and the DEV_ON bit to take effect to power off the PMIC.

PMIC Power off happens in dire situations like thermal shutdown
so irrespective of the POWERHOLD setting go ahead and turn off
the powerhold.  Currently poweroff is broken on boards that have
powerhold enabled. This fixes poweroff on those boards.

Signed-off-by: Keerthy <j-keerthy@ti.com>
---

Changes in v2:

  * Changed pr_err to dev_err
  * removed redundant boolean variable override-powerhold

 drivers/mfd/palmas.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Lee Jones Nov. 22, 2016, 1:03 p.m. UTC | #1
On Thu, 10 Nov 2016, Keerthy wrote:

> POWERHOLD signal has higher priority  over the DEV_ON bit.
> So power off will not happen if the POWERHOLD is held high.
> Hence reset the MUX to GPIO_7 mode to release the POWERHOLD
> and the DEV_ON bit to take effect to power off the PMIC.
> 
> PMIC Power off happens in dire situations like thermal shutdown
> so irrespective of the POWERHOLD setting go ahead and turn off
> the powerhold.  Currently poweroff is broken on boards that have
> powerhold enabled. This fixes poweroff on those boards.
> 
> Signed-off-by: Keerthy <j-keerthy@ti.com>
> ---
> 
> Changes in v2:
> 
>   * Changed pr_err to dev_err
>   * removed redundant boolean variable override-powerhold
> 
>  drivers/mfd/palmas.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)

Applied, thanks.

> diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
> index ee9e9ea..da90124 100644
> --- a/drivers/mfd/palmas.c
> +++ b/drivers/mfd/palmas.c
> @@ -430,6 +430,20 @@ static void palmas_power_off(void)
>  {
>  	unsigned int addr;
>  	int ret, slave;
> +	struct device_node *np = palmas_dev->dev->of_node;
> +
> +	if (of_property_read_bool(np, "ti,palmas-override-powerhold")) {
> +		addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE,
> +					  PALMAS_PRIMARY_SECONDARY_PAD2);
> +		slave = PALMAS_BASE_TO_SLAVE(PALMAS_PU_PD_OD_BASE);
> +
> +		ret = regmap_update_bits(palmas_dev->regmap[slave], addr,
> +				PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_MASK, 0);
> +		if (ret)
> +			dev_err(palmas_dev->dev,
> +				"Unable to write PRIMARY_SECONDARY_PAD2 %d\n",
> +				ret);
> +	}
>  
>  	slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
>  	addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE, PALMAS_DEV_CTRL);
J, KEERTHY March 24, 2017, 10 a.m. UTC | #2
On Tuesday 22 November 2016 06:33 PM, Lee Jones wrote:
> On Thu, 10 Nov 2016, Keerthy wrote:
> 
>> POWERHOLD signal has higher priority  over the DEV_ON bit.
>> So power off will not happen if the POWERHOLD is held high.
>> Hence reset the MUX to GPIO_7 mode to release the POWERHOLD
>> and the DEV_ON bit to take effect to power off the PMIC.
>>
>> PMIC Power off happens in dire situations like thermal shutdown
>> so irrespective of the POWERHOLD setting go ahead and turn off
>> the powerhold.  Currently poweroff is broken on boards that have
>> powerhold enabled. This fixes poweroff on those boards.
>>
>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>> ---
>>
>> Changes in v2:
>>
>>   * Changed pr_err to dev_err
>>   * removed redundant boolean variable override-powerhold
>>
>>  drivers/mfd/palmas.c | 14 ++++++++++++++
>>  1 file changed, 14 insertions(+)
> 
> Applied, thanks.

Lee Jones,

For some strange reason this patch is missing!
The other patch in the series is applied through mfd tree but somehow
this particular patch is missed out.

https://patchwork.kernel.org/patch/9420631/ is applied.

https://patchwork.kernel.org/patch/9420655/ is not.

I tried applying this very patch and it applies cleanly on the next
branch. Let me know if you want me to send this again on top of latest
next branch.

- Keerthy

> 
>> diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
>> index ee9e9ea..da90124 100644
>> --- a/drivers/mfd/palmas.c
>> +++ b/drivers/mfd/palmas.c
>> @@ -430,6 +430,20 @@ static void palmas_power_off(void)
>>  {
>>  	unsigned int addr;
>>  	int ret, slave;
>> +	struct device_node *np = palmas_dev->dev->of_node;
>> +
>> +	if (of_property_read_bool(np, "ti,palmas-override-powerhold")) {
>> +		addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE,
>> +					  PALMAS_PRIMARY_SECONDARY_PAD2);
>> +		slave = PALMAS_BASE_TO_SLAVE(PALMAS_PU_PD_OD_BASE);
>> +
>> +		ret = regmap_update_bits(palmas_dev->regmap[slave], addr,
>> +				PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_MASK, 0);
>> +		if (ret)
>> +			dev_err(palmas_dev->dev,
>> +				"Unable to write PRIMARY_SECONDARY_PAD2 %d\n",
>> +				ret);
>> +	}
>>  
>>  	slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
>>  	addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE, PALMAS_DEV_CTRL);
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lee Jones March 24, 2017, 11:30 a.m. UTC | #3
On Fri, 24 Mar 2017, Keerthy wrote:

> 
> 
> On Tuesday 22 November 2016 06:33 PM, Lee Jones wrote:
> > On Thu, 10 Nov 2016, Keerthy wrote:
> > 
> >> POWERHOLD signal has higher priority  over the DEV_ON bit.
> >> So power off will not happen if the POWERHOLD is held high.
> >> Hence reset the MUX to GPIO_7 mode to release the POWERHOLD
> >> and the DEV_ON bit to take effect to power off the PMIC.
> >>
> >> PMIC Power off happens in dire situations like thermal shutdown
> >> so irrespective of the POWERHOLD setting go ahead and turn off
> >> the powerhold.  Currently poweroff is broken on boards that have
> >> powerhold enabled. This fixes poweroff on those boards.
> >>
> >> Signed-off-by: Keerthy <j-keerthy@ti.com>
> >> ---
> >>
> >> Changes in v2:
> >>
> >>   * Changed pr_err to dev_err
> >>   * removed redundant boolean variable override-powerhold
> >>
> >>  drivers/mfd/palmas.c | 14 ++++++++++++++
> >>  1 file changed, 14 insertions(+)
> > 
> > Applied, thanks.
> 
> Lee Jones,
> 
> For some strange reason this patch is missing!
> The other patch in the series is applied through mfd tree but somehow
> this particular patch is missed out.
> 
> https://patchwork.kernel.org/patch/9420631/ is applied.
> 
> https://patchwork.kernel.org/patch/9420655/ is not.
> 
> I tried applying this very patch and it applies cleanly on the next
> branch. Let me know if you want me to send this again on top of latest
> next branch.

Sorry about this.

Reapplied and re-pushed.

> >> diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
> >> index ee9e9ea..da90124 100644
> >> --- a/drivers/mfd/palmas.c
> >> +++ b/drivers/mfd/palmas.c
> >> @@ -430,6 +430,20 @@ static void palmas_power_off(void)
> >>  {
> >>  	unsigned int addr;
> >>  	int ret, slave;
> >> +	struct device_node *np = palmas_dev->dev->of_node;
> >> +
> >> +	if (of_property_read_bool(np, "ti,palmas-override-powerhold")) {
> >> +		addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE,
> >> +					  PALMAS_PRIMARY_SECONDARY_PAD2);
> >> +		slave = PALMAS_BASE_TO_SLAVE(PALMAS_PU_PD_OD_BASE);
> >> +
> >> +		ret = regmap_update_bits(palmas_dev->regmap[slave], addr,
> >> +				PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_MASK, 0);
> >> +		if (ret)
> >> +			dev_err(palmas_dev->dev,
> >> +				"Unable to write PRIMARY_SECONDARY_PAD2 %d\n",
> >> +				ret);
> >> +	}
> >>  
> >>  	slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
> >>  	addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE, PALMAS_DEV_CTRL);
> >
J, KEERTHY March 24, 2017, 11:36 a.m. UTC | #4
On Friday 24 March 2017 05:00 PM, Lee Jones wrote:
> On Fri, 24 Mar 2017, Keerthy wrote:
> 
>>
>>
>> On Tuesday 22 November 2016 06:33 PM, Lee Jones wrote:
>>> On Thu, 10 Nov 2016, Keerthy wrote:
>>>
>>>> POWERHOLD signal has higher priority  over the DEV_ON bit.
>>>> So power off will not happen if the POWERHOLD is held high.
>>>> Hence reset the MUX to GPIO_7 mode to release the POWERHOLD
>>>> and the DEV_ON bit to take effect to power off the PMIC.
>>>>
>>>> PMIC Power off happens in dire situations like thermal shutdown
>>>> so irrespective of the POWERHOLD setting go ahead and turn off
>>>> the powerhold.  Currently poweroff is broken on boards that have
>>>> powerhold enabled. This fixes poweroff on those boards.
>>>>
>>>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>>>> ---
>>>>
>>>> Changes in v2:
>>>>
>>>>   * Changed pr_err to dev_err
>>>>   * removed redundant boolean variable override-powerhold
>>>>
>>>>  drivers/mfd/palmas.c | 14 ++++++++++++++
>>>>  1 file changed, 14 insertions(+)
>>>
>>> Applied, thanks.
>>
>> Lee Jones,
>>
>> For some strange reason this patch is missing!
>> The other patch in the series is applied through mfd tree but somehow
>> this particular patch is missed out.
>>
>> https://patchwork.kernel.org/patch/9420631/ is applied.
>>
>> https://patchwork.kernel.org/patch/9420655/ is not.
>>
>> I tried applying this very patch and it applies cleanly on the next
>> branch. Let me know if you want me to send this again on top of latest
>> next branch.
> 
> Sorry about this.
> 
> Reapplied and re-pushed.

Thanks Lee Jones.

> 
>>>> diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
>>>> index ee9e9ea..da90124 100644
>>>> --- a/drivers/mfd/palmas.c
>>>> +++ b/drivers/mfd/palmas.c
>>>> @@ -430,6 +430,20 @@ static void palmas_power_off(void)
>>>>  {
>>>>  	unsigned int addr;
>>>>  	int ret, slave;
>>>> +	struct device_node *np = palmas_dev->dev->of_node;
>>>> +
>>>> +	if (of_property_read_bool(np, "ti,palmas-override-powerhold")) {
>>>> +		addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE,
>>>> +					  PALMAS_PRIMARY_SECONDARY_PAD2);
>>>> +		slave = PALMAS_BASE_TO_SLAVE(PALMAS_PU_PD_OD_BASE);
>>>> +
>>>> +		ret = regmap_update_bits(palmas_dev->regmap[slave], addr,
>>>> +				PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_MASK, 0);
>>>> +		if (ret)
>>>> +			dev_err(palmas_dev->dev,
>>>> +				"Unable to write PRIMARY_SECONDARY_PAD2 %d\n",
>>>> +				ret);
>>>> +	}
>>>>  
>>>>  	slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
>>>>  	addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE, PALMAS_DEV_CTRL);
>>>
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
index ee9e9ea..da90124 100644
--- a/drivers/mfd/palmas.c
+++ b/drivers/mfd/palmas.c
@@ -430,6 +430,20 @@  static void palmas_power_off(void)
 {
 	unsigned int addr;
 	int ret, slave;
+	struct device_node *np = palmas_dev->dev->of_node;
+
+	if (of_property_read_bool(np, "ti,palmas-override-powerhold")) {
+		addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE,
+					  PALMAS_PRIMARY_SECONDARY_PAD2);
+		slave = PALMAS_BASE_TO_SLAVE(PALMAS_PU_PD_OD_BASE);
+
+		ret = regmap_update_bits(palmas_dev->regmap[slave], addr,
+				PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_MASK, 0);
+		if (ret)
+			dev_err(palmas_dev->dev,
+				"Unable to write PRIMARY_SECONDARY_PAD2 %d\n",
+				ret);
+	}
 
 	slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
 	addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE, PALMAS_DEV_CTRL);