public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: nm@ti•com (Nishanth Menon)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCHv3 8/9] ARM: OMAP2+: AM33XX: Basic suspend resume support
Date: Wed, 7 Aug 2013 14:16:11 -0500	[thread overview]
Message-ID: <52029CFB.3060808@ti.com> (raw)
In-Reply-To: <52028E15.7080207@ti.com>

On 08/07/2013 01:12 PM, Dave Gerlach wrote:
> On 08/07/2013 11:22 AM, Nishanth Menon wrote:
>> On 08/06/2013 12:49 PM, Dave Gerlach wrote:
>> [...]
>>
>>> +
>>> +struct forced_standby_module am33xx_mod[] = {
>>> +    {.oh_name = "usb_otg_hs"},
>>> +    {.oh_name = "tptc0"},
>>> +    {.oh_name = "tptc1"},
>>> +    {.oh_name = "tptc2"},
>>> +    {.oh_name = "cpgmac0"},
>>> +};
>>> +
>> [...]
>>> +
>>> +static int am33xx_pm_suspend(void)
>>> +{
>>> +    int i, j, ret = 0;
>>> +
>>> +    int status = 0;
>>> +    struct platform_device *pdev;
>>> +    struct omap_device *od;
>>> +
>>> +    /*
>>> +     * By default the following IPs do not have MSTANDBY asserted
>>> +     * which is necessary for PER domain transition. If the drivers
>>> +     * are not compiled into the kernel HWMOD code will not change the
>>> +     * state of the IPs if the IP was not never enabled. To ensure
>>> +     * that there no issues with or without the drivers being compiled
>>> +     * in the kernel, we forcefully put these IPs to idle.
>>> +     */
>>> +    for (i = 0; i < ARRAY_SIZE(am33xx_mod); i++) {
>>> +        pdev = to_platform_device(am33xx_mod[i].dev);
>>> +        od = to_omap_device(pdev);
>>> +        if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) {
>>> +            omap_device_enable_hwmods(od);
>>> +            omap_device_idle_hwmods(od);
>>> +        }
>>> +    }
>>
>> Sorry, I dont like this one bit. this is the job of the suspend / resume
>> handler dealing with the specific device. I recollect having a similar
>> issue on OMAP5 where without USB driver, USB wont idle, hence we cant
>> suspend either. is the solution to do a custom handling for specific
>> nodes as above? is it even necessary - considering that in multiple
>> suspend-resume iterations, do we need to "enable and idle" multiple
>> times? Cant we do it just in hwmod/omap_device level where unbound
>> devices are disabled? Is there absolutely no possible way to do this in
>> a generic manner?
>>
>
> The issue here is that during a low-power transition the peripheral
> power domain loses context so the MSTANDBY config gets lost which is why
> the custom handling is needed on every cycle if there is no driver to
> handle it. I was unable to come up with a more generic way to handle
> this but I am certainly open for suggestions.
>

If the dts entry for device status = "disabled" you should not have 
these even registered right? kinda makes me wonder if M3 could do 
something about it -> since they are minimal?

When they are not,

I think the generic omap_device_pm_domain ops does not apply for these 
devices due to the quirks?

Making a flag for these improper devices should let omap_device 
abstraction setup different pm_domain configuration also shut them up at 
boot as well (if un-bound). that will let a generic device solution 
scale out to more SoCs without custom handling, perhaps?

just an quick idea - not sure about validity about the approach without 
digging in more.


usually, we try to ensure system is exactly the same state as it entered 
-> so at boot, we shut down everything, on wakeup, if unexpected things 
like these are present, we shut them down again (in .finish handler).

-- 
Regards,
Nishanth Menon

  reply	other threads:[~2013-08-07 19:16 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-06 17:49 [PATCHv3 0/9] ARM: OMAP2+: AM33XX: Add suspend-resume support Dave Gerlach
2013-08-06 17:49 ` [PATCHv3 1/9] memory: emif: Move EMIF register defines to include/linux/ Dave Gerlach
2013-08-08  0:48   ` Russ Dill
2013-08-08 13:35   ` Santosh Shilimkar
2013-08-12 19:32     ` Greg Kroah-Hartman
2013-08-12 19:33       ` Santosh Shilimkar
2013-08-06 17:49 ` [PATCHv3 2/9] ARM: OMAP2+: AM33XX: control: Add some control module registers and APIs Dave Gerlach
2013-08-08  0:52   ` Russ Dill
2013-08-08 13:44   ` Santosh Shilimkar
2013-08-08 16:16     ` Dave Gerlach
2013-08-09  5:11       ` Tony Lindgren
2013-08-09 20:55         ` Dave Gerlach
2013-08-12  7:54           ` Tony Lindgren
2013-08-12 19:17           ` Kevin Hilman
2013-08-12 21:40             ` Dave Gerlach
2013-08-13 14:29               ` Kevin Hilman
2013-08-13 15:08                 ` Santosh Shilimkar
2013-08-13 16:19                   ` Kevin Hilman
2013-08-13 18:18                     ` Santosh Shilimkar
2013-08-13 18:30                       ` Russ Dill
2013-08-13 18:40                         ` Santosh Shilimkar
2013-08-13 19:11                         ` Kevin Hilman
2013-08-14 17:27                           ` Suman Anna
2013-08-14 19:16                             ` Russ Dill
2013-08-20 23:39                             ` Paul Walmsley
2013-08-21 17:32                               ` Suman Anna
2013-08-06 17:49 ` [PATCHv3 3/9] ARM: OMAP: DTB: Update IRQ data for WKUP_M3 Dave Gerlach
2013-08-08  0:53   ` Russ Dill
2013-08-08 13:46   ` Santosh Shilimkar
2013-08-06 17:49 ` [PATCHv3 4/9] ARM: OMAP2+: AM33XX: Reserve memory to comply with EMIF spec Dave Gerlach
2013-08-08  2:30   ` Russ Dill
2013-08-08 14:19   ` Santosh Shilimkar
2013-08-08 18:16   ` Kevin Hilman
2013-08-08 19:31     ` Santosh Shilimkar
2013-08-08 20:05       ` Kevin Hilman
2013-08-08 20:11         ` Santosh Shilimkar
2013-08-09 15:11           ` Kevin Hilman
2013-08-09 16:25             ` Dave Gerlach
2013-08-06 17:49 ` [PATCHv3 5/9] ARM: OMAP2+: AM33XX: Add assembly code for PM operations Dave Gerlach
2013-08-08  7:02   ` Russ Dill
2013-08-08 14:50   ` Santosh Shilimkar
2013-08-08 15:16     ` Russ Dill
2013-08-08 15:22       ` Santosh Shilimkar
2013-08-08 16:03         ` Russ Dill
2013-08-19 12:54   ` Gururaja Hebbar
2013-08-19 17:51     ` Dave Gerlach
2013-08-06 17:49 ` [PATCHv3 6/9] ARM: OMAP2+: timer: Add suspend-resume callbacks for clkevent device Dave Gerlach
2013-08-08  7:03   ` Russ Dill
2013-08-08 14:23   ` Santosh Shilimkar
2013-08-08 16:09     ` Dave Gerlach
2013-08-08 18:25   ` Kevin Hilman
2013-08-08 19:49     ` Dave Gerlach
2013-08-06 17:49 ` [PATCHv3 7/9] ARM: OMAP: omap_device: Add APIs to enable and idle hwmods Dave Gerlach
2013-08-08  7:05   ` Russ Dill
2013-08-08 14:26   ` Santosh Shilimkar
2013-08-06 17:49 ` [PATCHv3 8/9] ARM: OMAP2+: AM33XX: Basic suspend resume support Dave Gerlach
2013-08-07 16:22   ` Nishanth Menon
2013-08-07 18:12     ` Dave Gerlach
2013-08-07 19:16       ` Nishanth Menon [this message]
2013-08-08  8:45   ` Russ Dill
2013-08-08 12:26     ` Nishanth Menon
2013-08-08 15:03       ` Santosh Shilimkar
2013-08-08 16:06         ` Dave Gerlach
2013-08-08 16:22           ` Nishanth Menon
2013-08-08 21:14           ` Kevin Hilman
2013-08-08 21:32             ` Nishanth Menon
2013-08-08 23:04               ` Kevin Hilman
2013-08-09 15:11                 ` Nishanth Menon
2013-08-09 16:12                   ` Kevin Hilman
2013-08-09 16:36                     ` Nishanth Menon
2013-08-09 20:34                       ` Kevin Hilman
2013-08-09 21:35                         ` Nishanth Menon
2013-08-09 22:28                         ` Russ Dill
2013-08-12 16:09                           ` Kevin Hilman
2013-08-30 17:29                 ` Vaibhav Bedia
2013-08-20 22:48             ` Paul Walmsley
2013-08-23 14:56               ` Dave Gerlach
2013-08-13  7:43   ` Russ Dill
2013-08-13 14:59     ` Kevin Hilman
2013-08-27 21:45   ` Kevin Hilman
2013-08-29 21:41     ` Dave Gerlach
2013-08-29 22:02       ` Kevin Hilman
2013-08-30 17:39     ` Vaibhav Bedia
2013-08-30 21:18       ` Kevin Hilman
2013-08-06 17:49 ` [PATCHv3 9/9] ARM: OMAP2+: AM33XX: Hookup AM33XX PM code into OMAP builds Dave Gerlach
2013-08-08  8:47   ` Russ Dill
2013-08-08 14:53   ` Santosh Shilimkar
2013-08-08 13:31 ` [PATCHv3 0/9] ARM: OMAP2+: AM33XX: Add suspend-resume support Santosh Shilimkar
2013-08-11 11:53 ` Daniel Mack
2013-08-12 18:59   ` Dave Gerlach
2013-08-13 12:39     ` Daniel Mack
2013-08-13 15:33       ` Dave Gerlach
2013-08-13 15:51         ` Daniel Mack
2013-08-19  9:23 ` Gururaja Hebbar
2013-08-19 17:47   ` Dave Gerlach
2013-08-27 20:23     ` Kevin Hilman
2013-08-29 21:30       ` Dave Gerlach
2013-08-29 21:52         ` Kevin Hilman
2013-08-29 22:20           ` Dave Gerlach
2013-08-29 22:20         ` Kevin Hilman
2013-08-29 22:43           ` Russ Dill
2013-08-29 23:02             ` Kevin Hilman
2013-09-03 17:24               ` Dave Gerlach
2013-09-04 15:01                 ` Kevin Hilman
2013-09-04 15:12                   ` Russ Dill
2013-09-04 15:18                     ` Kevin Hilman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52029CFB.3060808@ti.com \
    --to=nm@ti$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox