Kevin Hilman writes: > "Peter Reid" writes: > >> Hello kevin, >> Here is what i did to put it to suspend, which fails. >> >> [root@beagleboard]# echo mem > /sys/power/state >> PM: Syncing filesystems ... done. >> Freezing user space processes ... (elapsed 0.00 seconds) done. >> Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done. >> Suspending console(s) >> Class driver suspend failed for cpu0 >> PM: Some devices failed to power down > > Hi Peter, > > Thanks for testing on Beagle. Do you mind sharing your .config? And, > would you mind testing with the attached config? This PM branch will > currently only work with a minimal set of drivers. Many of the > current drivers will still prevent retention and OFF mode. This time, with the .config attached. > Do you have CPUfreq enabled? I saw this 'class driver suspend' > problem when I had CPUfreq enabled. This branch doesn't currently > have CPUfreq support, so you can leave that disabled. > > I've also noticed problems on ES2 Beagle as well that I haven't > figured out yet. Namely, I think the bootloader is leaving certain > modules (namely DSS and IVA) in a state that is preventing hitting > retention. > > Immediately after boot, the DSS powerdomain is still ON and it should > be in retention, same for IVA but I haven't debugged this further on > Beagle. The same kernel works on 3430SDP so that's why my hunch > points to the u-boot. > > The kernel needs a way to ensure that after booting all the unused > modules are in a state where they are not preventing idle. Even with > disabled clocks, certain modules can prevent idle. Paul Walmsley has > written the 'omapdev' layer which will now make it easier to do this > boot-time init, but it is currently not there. We currently have to > rely on bootloaders doing the right thing. > > The beagle bootloader does all sorts of stuff with DSS, MMC, audio > etc. so it is a likely candidate. > > Kevin > >> >> On Thu, Nov 20, 2008 at 6:23 AM, Kevin Hilman >> wrote: >>> Hello, >>> >>> A new PM branch is available named pm-20081119. >>> >>> This is mostly a new set of patches on top of the previous PM branch, >>> rather than a rebase. We finally found the root cause of some DPLL >>> relocking bugs. Special thanks to Paul Walmsley and Tero Kristo for >>> debugging and fixing this problem. Now the DPLL fix that was reverted >>> in the previous PM branch is re-applied as well as some fixes on top >>> of it. It also has some additional UART fixes, so I think the UART >>> idle work is ready to go to Tony. Special thanks to Jouni Hogander >>> for the extra testing and fixes here. >>> >>> The shortlog is below[1] and the root of the tree is still >>> v2.6.27-omap1 + T2 power patches from Peter. >>> >>> This has primarily been tested on custom HW since I'm _still_ waiting >>> for my SDP to arrive. I have boot tested on Beagle, but I think there >>> are still some problems with ES2 silicon. On my ES2 Beagle, neither >>> DSS or IVA will leave the ON state, even when all clocks in their >>> powerdomains are off. I have not debugged this further yet. >>> >>> Functionally, this tree is in pretty good shape, so I will do some >>> bugfixes here when necessary, but will now spent some time focusing on >>> getting the patches in this branch merged into linux-omap. >>> >>> Kevin >>> >>> >>> [1] git shortlog: >>> >>> Amit Kucheria (2): >>> OMAP: PM: Typo fix for clock_allow_idle >>> HSMMC: Make driver support dynamic idle >>> >>> Jouni Hogander (11): >>> OMAP3: PM: Use pwrdm_set_next_pwrst instead of set_pwrdm_state in idle loop >>> OMAP3: Do not set mpu, core, neon states if cpuidle is used >>> OMAP3: PM: Do not set next states sw to control those is available >>> OMAP3: PM: Always return value in pwrdms_setup >>> OMAP3: PM: Fix wrong sequence in suspend. >>> OMAP3: UART: Make sure that uart clocks are enabled when needed >>> OMAP3: PM: Check in set_pwrdm_state that target state is supported by pwrdm v2 >>> OMAP3: PM: Do not build suspend code if SUSPEND is not enabled >>> OMAP: PM: Build fails if PM is not enabled >>> OMAP2: PM: Fix omap2 build >>> OMAP: MCSPI: Enable mcspi wake-up >>> >>> Kalle Jokiniemi (4): >>> OMAP: PM: sysfs interface for enabling voltage off in idle >>> OMAP3: PM: Fix cpu idle init sequencing >>> OMAP: SRF: Fixes to shared resource framework (Ver.3) >>> OMAP3: I2C: Enable I2C wakeups >>> >>> Kevin Hilman (16): >>> OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X >>> OMAP3: PM: Allow UARTs to be unclocked when inactive >>> 8250: Allow platform to register PM hook >>> 8250: when waking, PM hook should be called before accessing port >>> OMAP3: PM: UART: Add 8250 UART PM hook for suspend/resume >>> OMAP3: PM: UART save/restore support for OFF-mode >>> OMAP2/3: HSMMC: Ensure HSMMC is fully reset on boot >>> OMAP3: PM: CPUidle: obey enable_off_mode flag >>> OMAP3: PM: CPUidle: restrict C-states on UART activity >>> OMAP3: PM: decouple PER and CORE context save and restore >>> Revert "OMAP3 clock: fix non-CORE DPLL rate assignment bugs" >>> Revert "OMAP3: PM: Do not set next states sw to control those is available" >>> Revert "OMAP3: Do not set mpu, core, neon states if cpuidle is used" >>> OMAP: PM: UART: fix can_sleep hook to return correct value >>> OMAP: PM: UART: Only disable clocks in prepare-idle hook >>> OMAP3: PM: Check for UART wakeups in 'resume_idle' hook >>> >>> Paul Walmsley (14): >>> OMAP2/3 PM: create the OMAP PM interface and add a default OMAP PM no-op layer. >>> OMAP2/3 omapdev: add basic omapdev structure >>> OMAP242x omapdev: add OMAP242x omapdev records >>> OMAP243x omapdev: add OMAP243x omapdev records >>> OMAP3xxx omapdev: add OMAP3xxx omapdev records >>> OMAP2/3 omapdev: add code to walk the omapdev records >>> OMAP3 clock: fix non-CORE DPLL rate assignment bugs >>> OMAP3 powerdomains: remove RET from SGX power states list >>> OMAP3 powerdomains: remove RET from SGX power states list >>> OMAP3 clock: remove unnecessary dpll_data dereferences >>> OMAP3 clock: optimize DPLL rate rounding algorithm >>> OMAP3 clock: avoid invalid FREQSEL values during DPLL rate rounding >>> OMAP2/3 I2C: reprogram OCP_SYSCONFIG register after reset >>> OMAP: I2C: convert 'rev1' flag to generic 'rev' u8 >>> >>> Peter 'p2' De Schrijver (9): >>> OMAP: PM counter infrastructure. >>> OMAP: PM: Hook into PM counters >>> OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each. >>> OMAP: PM: Add pm-debug counters >>> OMAP: PM debug: make powerdomains use PM-debug counters >>> OMAP: PM: Add definitions for ETK pads and observability registers >>> OMAP: Debug observability and ETK padconf implementation >>> OMAP: Add debug observablity (debobs) Kconfig item >>> OMAP: PM: Implement get_last_off_on_transaction_id() >>> >>> Rajendra Nayak (23): >>> OMAP3: PM: GPMC context save/restore >>> OMAP3: PM: GPIO context save/restore >>> OMAP3: PM: I2C context save/restore >>> OMAP3: PM: INTC context save/restore >>> OMAP3: PM: PRCM context save/restore >>> OMAP3: PM: Populate scratchpad contents >>> OMAP3: PM: SCM context save/restore >>> OMAP3: PM: SRAM restore function >>> OMAP3: PM: handle PER/NEON/CORE in idle >>> OMAP3: PM: Restore MMU table entry >>> OMAP3: PM: MPU off-mode support >>> OMAP3: PM: CORE domain off-mode support >>> OMAP3: PM: allow runtime enable/disable of OFF mode >>> OMAP3: 3430SDP minimal kernel defconfig >>> OMAP3: PM: CPUidle: Basic support for C1-C2 >>> OMAP3: PM: CPUidle: Enables state C4 >>> OMAP3: PM: CPUidle: Enables C3 and C5 >>> OMAP3: PM: CPUidle: Safe-state on bm-activity >>> OMAP3: PM: CPUidle: Enable Kconfig option for OMAP >>> OMAP3 SRF: Generic shared resource f/w >>> OMAP3 SRF: MPU/CORE/PD latency modeling >>> OMAP3 SRF: omap3 srf driver >>> OMAP3 SRF: OMAP PM srf implementation >>> >>> Tero Kristo (13): >>> OMAP: PM debug: do not print out status for meta powerdomains (dpll*) >>> OMAP: PM debug: Add PRCM register dump support >>> OMAP: PM: DMA context save / restore >>> OMAP: PM: off-mode support for DMA on EMU/HS devices >>> OMAP3: SRAM size fix for HS/EMU devices >>> OMAP3 PM: off-mode support for HS/EMU devices >>> OMAP3: PM: Enable SDRAM auto-refresh during sleep >>> OMAP: SDRC: Add new register definitions for SDRAM controller >>> OMAP3: PM: SDRC auto-refresh workaround for off-mode >>> PM: Fix a bug with noncore dpll rate calculation >>> PM: Added three PLL registers to the PRCM context save >>> PM: OMAP3: Make sure clk_disable_unused() order is correct >>> PM: Changed secure RAM storage size from 0x8000 to 0x803F >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-omap" in >>> the body of a message to majordomo@vger.kernel.org >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>>