RE: Suspend/Resume support with Omap2fb

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2009-03-11 at 09:46 +0100, ext Hiremath, Vaibhav wrote:
> 
> Thanks,
> Vaibhav Hiremath
> 
> > -----Original Message-----
> > From: Tomi Valkeinen [mailto:tomi.valkeinen@xxxxxxxxx]
> > Sent: Wednesday, March 11, 2009 1:23 PM
> > To: Hiremath, Vaibhav
> > Cc: linux-omap@xxxxxxxxxxxxxxx
> > Subject: Re: Suspend/Resume support with Omap2fb
> > 
> > Hi,
> > 
> > On Wed, 2009-03-11 at 07:55 +0100, ext Hiremath, Vaibhav wrote:
> > > Hi,
> > >
> > > I am using New Frame-Buffer driver which is based on DSS2 library
> > submitted by Tomi, and I am trying to add full power management
> > support. But things are not working out as expected, every time when
> > I am issuing command "echo mem > /sys/power/state" the system
> > doesn't go into off state. It always points to dss_prwdm, below are
> > the steps I am following -
> > 
> > OFF mode should work. I have verified it with DSI, DPI and SDI.
> > However,
> > it needs passing the get_last_off_on_transaction_id pointer in
> > omap_dss_platform_data.
> > 
> > Also, see below.
> > 
> [Hiremath, Vaibhav] I believe this is only required when you do save and restore context right?

Well, yes. But you need to save and restore context if you want OFF
mode.

> Actually I have modified that part of code where it doesn't expect this pointer and save/restore happens perfectly fine, which I am very will sure about, since I am hitting state5 of CPU_IDLE (Full OFF state) and it resumes back with the same state.
> 
> Again one more data point which I missed in last mail is, I am following clk->usecount which shows me 0. That means clocks are already disabled.
> 
> root@arago:~# cat /sys/devices/platform/omap-dss/clk
> - dss -
> internal clk count      0
> dss_ick         83000000        0
> dss1_alwon_fck  96000000        0
> dss2_alwon_fck  13000000        0
> dss_tv_fck      54000000        0
> dss_96m_fck     96000000        0
> - dispc -
> dispc fclk source = dss1_alwon_fclk
> pixel clk = 96000000 / 1 / 5 = 19200000
> root@arago:~#
> 
> 
> > > 	- Build the kernel with CPU_IDLE
> > > 	- Enable all the PM flags
> > >
> > > 		# echo 1 > /sys/power/sleep_while_idle
> > > 		# echo 1 > /sys/power/clocks_off_while_idle
> > > 		# echo 1 > /sys/power/enable_off_mode
> > >
> > >  	- From Linux prompt issue command
> > >
> > > 		# echo mem > /sys/power/state
> > >
> > > The log is -
> > > ------------
> > >
> > > root@arago:~# echo mem > /sys/power/state
> > > <6>PM: Syncing filesystems ... PM: Syncing filesystems ... done.
> > > done.
> > > Freezing user space processes ... Freezing user space processes
> > ... (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.
> > > done.
> > > Freezing remaining freezable tasks ... Freezing remaining
> > freezable tasks ... (elapsed 0.06 seconds) (elapsed 0.06 seconds)
> > done.done.
> > > Suspending console(s) (use no_console_suspend to debug)
> > > Suspending console(s) (use no_console_suspend to debug)
> > > <6>omap-backlight: suspending...
> > > omapfb_suspend
> > >
> > > omapfb_resume
> > > <6>omap-backlight: resuming...
> > > omap-backlight: suspending...
> > > omapfb_suspend
> > > Powerdomain (core_pwrdm) didn't enter target state 0
> > > Powerdomain (dss_pwrdm) didn't enter target state 0
> > > Powerdomain (per_pwrdm) didn't enter target state 0
> > > Could not enter target state in pm_suspend
> > > eth0: link down
> > > omapfb_resume
> > > omap-backlight: resuming...
> > > Restarting tasks ... Restarting tasks ... done.
> > > done.
> > >
> > > root@arago:~#
> > >
> > >
> > > Some analysis which I observed during debugging this issue -
> > >
> > > 	- The root-cause is, DSS PowerDomain always shows it is in ON
> > state (PWRDM_POWER_ON), and if I understand correctly this is only
> > dependent on clocks. But I am making sure that DSS clocks are
> > disabled. And with CPU_IDLE enabled I am going to complete OFF
> > state. (/sys/devices/system/cpu/cpu0/cpuidle/state5/usage is
> > incrementing).
> > >
> > > 	- If I compile out framebuffer driver and include DSS2 and
> > V4L2 driver, everything works fine. I am not sure how "omapfb" is
> > being tied with PowerDomain. Again I have seen references in
> > arch/arm/mach-omap2/omapdev3xxx.h to the pdev_name = "omapfb", not
> > sure how this is being used.
> > 
> > You have to change it to omapdss (or omap-dss in earlier DSS2
> > versions).
> > 
> [Hiremath, Vaibhav] I have tried this option also, didn't work out.
> Tomi,
> 
> Do you have summary or list of changes required in clock and PowerDomain related files to make it work?
> 
> How have you tested this? 
> Have you also tested with "echo mem > /sys/power/state"?
> Are you using Kevin's power management tree? What is default configuration of your kernel during this test?

It's been some time since I tested it, but it did work on OMAP3 SDP with
the pm-branch. Only changed needed were the
get_last_off_on_transaction_id and omapfb -> omapdss. I also tested echo
mem > ....

I'll try to find time to test it again with latest trees.

 Tomi


--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux