From: Nishanth Menon <nm@ti.com>
To: Dave Gerlach <d-gerlach@ti.com>
Cc: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
Paul Walmsley <paul@pwsan.com>, Kevin Hilman <khilman@linaro.org>,
Vaibhav Bedia <vaibhav.bedia@ti.com>,
Tony Lingren <tony@atomide.com>,
Santosh Shilimkar <santosh.shilimkar@ti.com>,
Benoit Cousson <benoit.cousson@linaro.org>
Subject: Re: [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
WARNING: multiple messages have this Message-ID (diff)
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
next prev parent reply other threads:[~2013-08-07 19:16 UTC|newest]
Thread overview: 212+ 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 ` Dave Gerlach
2013-08-06 17:49 ` [PATCHv3 1/9] memory: emif: Move EMIF register defines to include/linux/ Dave Gerlach
2013-08-06 17:49 ` Dave Gerlach
2013-08-08 0:48 ` Russ Dill
2013-08-08 0:48 ` Russ Dill
2013-08-08 13:35 ` Santosh Shilimkar
2013-08-08 13:35 ` Santosh Shilimkar
2013-08-12 19:32 ` Greg Kroah-Hartman
2013-08-12 19:32 ` Greg Kroah-Hartman
2013-08-12 19:33 ` Santosh Shilimkar
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-06 17:49 ` Dave Gerlach
2013-08-08 0:52 ` Russ Dill
2013-08-08 0:52 ` Russ Dill
2013-08-08 13:44 ` Santosh Shilimkar
2013-08-08 13:44 ` Santosh Shilimkar
2013-08-08 16:16 ` Dave Gerlach
2013-08-08 16:16 ` Dave Gerlach
2013-08-09 5:11 ` Tony Lindgren
2013-08-09 5:11 ` Tony Lindgren
2013-08-09 20:55 ` Dave Gerlach
2013-08-09 20:55 ` Dave Gerlach
2013-08-12 7:54 ` Tony Lindgren
2013-08-12 7:54 ` Tony Lindgren
2013-08-12 19:17 ` Kevin Hilman
2013-08-12 19:17 ` Kevin Hilman
2013-08-12 21:40 ` Dave Gerlach
2013-08-12 21:40 ` Dave Gerlach
2013-08-13 14:29 ` Kevin Hilman
2013-08-13 14:29 ` Kevin Hilman
2013-08-13 15:08 ` Santosh Shilimkar
2013-08-13 15:08 ` Santosh Shilimkar
2013-08-13 16:19 ` Kevin Hilman
2013-08-13 16:19 ` Kevin Hilman
2013-08-13 18:18 ` Santosh Shilimkar
2013-08-13 18:18 ` Santosh Shilimkar
2013-08-13 18:30 ` Russ Dill
2013-08-13 18:30 ` Russ Dill
2013-08-13 18:40 ` Santosh Shilimkar
2013-08-13 18:40 ` Santosh Shilimkar
2013-08-13 19:11 ` Kevin Hilman
2013-08-13 19:11 ` Kevin Hilman
2013-08-14 17:27 ` Suman Anna
2013-08-14 17:27 ` Suman Anna
2013-08-14 19:16 ` Russ Dill
2013-08-14 19:16 ` Russ Dill
2013-08-20 23:39 ` Paul Walmsley
2013-08-20 23:39 ` Paul Walmsley
2013-08-21 17:32 ` Suman Anna
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-06 17:49 ` Dave Gerlach
2013-08-08 0:53 ` Russ Dill
2013-08-08 0:53 ` Russ Dill
2013-08-08 13:46 ` Santosh Shilimkar
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-06 17:49 ` Dave Gerlach
2013-08-08 2:30 ` Russ Dill
2013-08-08 2:30 ` Russ Dill
2013-08-08 14:19 ` Santosh Shilimkar
2013-08-08 14:19 ` Santosh Shilimkar
2013-08-08 18:16 ` Kevin Hilman
2013-08-08 18:16 ` Kevin Hilman
2013-08-08 19:31 ` Santosh Shilimkar
2013-08-08 19:31 ` Santosh Shilimkar
2013-08-08 20:05 ` Kevin Hilman
2013-08-08 20:05 ` Kevin Hilman
2013-08-08 20:11 ` Santosh Shilimkar
2013-08-08 20:11 ` Santosh Shilimkar
2013-08-09 15:11 ` Kevin Hilman
2013-08-09 15:11 ` Kevin Hilman
2013-08-09 16:25 ` Dave Gerlach
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-06 17:49 ` Dave Gerlach
2013-08-08 7:02 ` Russ Dill
2013-08-08 7:02 ` Russ Dill
2013-08-08 14:50 ` Santosh Shilimkar
2013-08-08 14:50 ` Santosh Shilimkar
2013-08-08 15:16 ` Russ Dill
2013-08-08 15:16 ` Russ Dill
2013-08-08 15:22 ` Santosh Shilimkar
2013-08-08 15:22 ` Santosh Shilimkar
2013-08-08 16:03 ` Russ Dill
2013-08-08 16:03 ` Russ Dill
2013-08-19 12:54 ` Gururaja Hebbar
2013-08-19 12:54 ` Gururaja Hebbar
2013-08-19 17:51 ` Dave Gerlach
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-06 17:49 ` Dave Gerlach
2013-08-08 7:03 ` Russ Dill
2013-08-08 7:03 ` Russ Dill
2013-08-08 14:23 ` Santosh Shilimkar
2013-08-08 14:23 ` Santosh Shilimkar
2013-08-08 16:09 ` Dave Gerlach
2013-08-08 16:09 ` Dave Gerlach
2013-08-08 18:25 ` Kevin Hilman
2013-08-08 18:25 ` Kevin Hilman
2013-08-08 19:49 ` Dave Gerlach
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-06 17:49 ` Dave Gerlach
2013-08-08 7:05 ` Russ Dill
2013-08-08 7:05 ` Russ Dill
2013-08-08 14:26 ` Santosh Shilimkar
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-06 17:49 ` Dave Gerlach
2013-08-07 16:22 ` Nishanth Menon
2013-08-07 16:22 ` Nishanth Menon
2013-08-07 18:12 ` Dave Gerlach
2013-08-07 18:12 ` Dave Gerlach
2013-08-07 19:16 ` Nishanth Menon [this message]
2013-08-07 19:16 ` Nishanth Menon
2013-08-08 8:45 ` Russ Dill
2013-08-08 8:45 ` Russ Dill
2013-08-08 12:26 ` Nishanth Menon
2013-08-08 12:26 ` Nishanth Menon
2013-08-08 15:03 ` Santosh Shilimkar
2013-08-08 15:03 ` Santosh Shilimkar
2013-08-08 16:06 ` Dave Gerlach
2013-08-08 16:06 ` Dave Gerlach
2013-08-08 16:22 ` Nishanth Menon
2013-08-08 16:22 ` Nishanth Menon
2013-08-08 21:14 ` Kevin Hilman
2013-08-08 21:14 ` Kevin Hilman
2013-08-08 21:32 ` Nishanth Menon
2013-08-08 21:32 ` Nishanth Menon
2013-08-08 23:04 ` Kevin Hilman
2013-08-08 23:04 ` Kevin Hilman
2013-08-09 15:11 ` Nishanth Menon
2013-08-09 15:11 ` Nishanth Menon
2013-08-09 16:12 ` Kevin Hilman
2013-08-09 16:12 ` Kevin Hilman
2013-08-09 16:36 ` Nishanth Menon
2013-08-09 16:36 ` Nishanth Menon
2013-08-09 20:34 ` Kevin Hilman
2013-08-09 20:34 ` Kevin Hilman
2013-08-09 21:35 ` Nishanth Menon
2013-08-09 21:35 ` Nishanth Menon
2013-08-09 22:28 ` Russ Dill
2013-08-09 22:28 ` Russ Dill
2013-08-12 16:09 ` Kevin Hilman
2013-08-12 16:09 ` Kevin Hilman
2013-08-30 17:29 ` Vaibhav Bedia
2013-08-30 17:29 ` Vaibhav Bedia
2013-08-20 22:48 ` Paul Walmsley
2013-08-20 22:48 ` Paul Walmsley
2013-08-23 14:56 ` Dave Gerlach
2013-08-23 14:56 ` Dave Gerlach
2013-08-13 7:43 ` Russ Dill
2013-08-13 7:43 ` Russ Dill
2013-08-13 14:59 ` Kevin Hilman
2013-08-13 14:59 ` Kevin Hilman
2013-08-27 21:45 ` Kevin Hilman
2013-08-27 21:45 ` Kevin Hilman
2013-08-29 21:41 ` Dave Gerlach
2013-08-29 21:41 ` Dave Gerlach
2013-08-29 22:02 ` Kevin Hilman
2013-08-29 22:02 ` Kevin Hilman
2013-08-30 17:39 ` Vaibhav Bedia
2013-08-30 17:39 ` Vaibhav Bedia
2013-08-30 21:18 ` Kevin Hilman
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-06 17:49 ` Dave Gerlach
2013-08-08 8:47 ` Russ Dill
2013-08-08 8:47 ` Russ Dill
2013-08-08 14:53 ` Santosh Shilimkar
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-08 13:31 ` Santosh Shilimkar
2013-08-11 11:53 ` Daniel Mack
2013-08-11 11:53 ` Daniel Mack
2013-08-12 18:59 ` Dave Gerlach
2013-08-12 18:59 ` Dave Gerlach
2013-08-13 12:39 ` Daniel Mack
2013-08-13 12:39 ` Daniel Mack
2013-08-13 15:33 ` Dave Gerlach
2013-08-13 15:33 ` Dave Gerlach
2013-08-13 15:51 ` Daniel Mack
2013-08-13 15:51 ` Daniel Mack
2013-08-19 9:23 ` Gururaja Hebbar
2013-08-19 9:23 ` Gururaja Hebbar
2013-08-19 17:47 ` Dave Gerlach
2013-08-19 17:47 ` Dave Gerlach
2013-08-27 20:23 ` Kevin Hilman
2013-08-27 20:23 ` Kevin Hilman
2013-08-29 21:30 ` Dave Gerlach
2013-08-29 21:30 ` Dave Gerlach
2013-08-29 21:52 ` Kevin Hilman
2013-08-29 21:52 ` Kevin Hilman
2013-08-29 22:20 ` Dave Gerlach
2013-08-29 22:20 ` Dave Gerlach
2013-08-29 22:20 ` Kevin Hilman
2013-08-29 22:20 ` Kevin Hilman
2013-08-29 22:43 ` Russ Dill
2013-08-29 22:43 ` Russ Dill
2013-08-29 23:02 ` Kevin Hilman
2013-08-29 23:02 ` Kevin Hilman
2013-09-03 17:24 ` Dave Gerlach
2013-09-03 17:24 ` Dave Gerlach
2013-09-04 15:01 ` Kevin Hilman
2013-09-04 15:01 ` Kevin Hilman
2013-09-04 15:12 ` Russ Dill
2013-09-04 15:12 ` Russ Dill
2013-09-04 15:18 ` Kevin Hilman
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.com \
--cc=benoit.cousson@linaro.org \
--cc=d-gerlach@ti.com \
--cc=khilman@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=santosh.shilimkar@ti.com \
--cc=tony@atomide.com \
--cc=vaibhav.bedia@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.