Re: [PATCH 10/14] gpio: omap: Drop the concept of gpio banks not being able to lose context.

From: Grygorii Strashko
Date: Thu Apr 12 2018 - 16:11:02 EST




On 04/12/2018 09:22 AM, Tony Lindgren wrote:
> * Keerthy <j-keerthy@xxxxxx> [180412 03:56]:
>> From: Russ Dill <Russ.Dill@xxxxxx>
>> --- a/drivers/gpio/gpio-omap.c
>> +++ b/drivers/gpio/gpio-omap.c
>> @@ -68,7 +68,7 @@ struct gpio_bank {
>> bool dbck_enabled;
>> bool is_mpuio;
>> bool dbck_flag;
>> - bool loses_context;
>> +
>> bool context_valid;
>> int stride;
>> u32 width;
>
> For some SoCs GPIO bank1 won't lose the context ever. So I'd like to
> keep loses_context flag around to avoid pointless save and restore.
> But maybe this still happens with get_context_loss_count and I'm
> misreading this patch?
>

Agree with Tony here. More over, even if platform supports RTC suspend
(gpio1 context loss) it might support suspend to RAM - gpio1 will not lose context.

Not sure how to handle this correctly now - always-on gpio bank should not be touched
by omap device framework during suspend otherwise it may hit "in transition" state forever.
>From another side it must be handled the same way as other gpio banks in case of RTC suspend.
Q: How to know if current suspend is RTC suspend and not regular suspend to mem?

> However..
>
>> @@ -1198,15 +1198,9 @@ static int omap_gpio_probe(struct platform_device *pdev)
>> #ifdef CONFIG_OF_GPIO
>> bank->chip.of_node = of_node_get(node);
>> #endif
>> - if (node) {
>> - if (!of_property_read_bool(node, "ti,gpio-always-on"))
>> - bank->loses_context = true;
>> - } else {
>> - bank->loses_context = pdata->loses_context;
>> -
>> - if (bank->loses_context)
>> - bank->get_context_loss_count =
>> - pdata->get_context_loss_count;
>> + if (!node) {
>> + bank->get_context_loss_count =
>> + pdata->get_context_loss_count;
>> }
>>
>> if (bank->regs->set_dataout && bank->regs->clr_dataout)
>
> .. I do have a patch ready here that I'll post after -rc1 to remove
> CONFIG_OMAP_PM_NOOP related stuff, turns out that's noop anyways :)
>
> So yeah the pdata->get_context_loss_count parts are noop and can
> be just removed.
>

--
regards,
-grygorii