Paul Walmsley <paul@xxxxxxxxx> writes: > cc Tero, Govindraj > > On Thu, 12 Jan 2012, NeilBrown wrote: > >> On Wed, 11 Jan 2012 06:43:04 -0700 (MST) Paul Walmsley <paul@xxxxxxxxx> wrote: >> >> I spent some time exploring why cpuidle never drops below state 0 and found >> out that the code explicitly disables other states when uart is active - for >> a fairly broad definition of 'active'. >> >> I found the "sleep_timeout" setting and set them all to 1 second. This meant >> that cpuidle started working, but I got a lot of garbage characters. >> > > ... > >> Does this really mean CPU_IDLE cannot be used when you might expect chars >> from a serial port - e.g. GPS or Bluetooth? > > Hmmm. Looking at mach-omap2/pm34xx.c and mach-omap2/cpuidle34xx.c, it > indeed prevents even the MPU from entering a low-power state when the UART > is active, as you write. That doesn't seem correct. > > Please try the following patch. It works fine for me on v3.2 with > omap2plus_defconfig on a 35xx BeagleBoard. No dropped or garbled > characters with console use. Not too surprising, since the UART has a > receive FIFO to withstand interrupt servicing delays. > > > - Paul > > From: Paul Walmsley <paul@xxxxxxxxx> > Date: Fri, 13 Jan 2012 02:10:30 -0700 > Subject: [PATCH] ARM: OMAP3: PM: allow MPU to enter low-power states even > when the UART is active > > For some reason, both the existing OMAP3 PM code and the OMAP3 CPUIdle > driver prevent the MPU powerdomain from entering low-power modes when > any UART isn't asleep. Possibly it is intended to minimize the ARM > wakeup latency when UART activity arrives, but the UART has a FIFO > that should handle this for most cases, with no dropped characters. I > may be forgetting something important, though. And CORE/PER low-power > states are a different matter entirely. Just FYI... the UART can_sleep hackery was removed for v3.3 and replaced by using a PM QoS constraint: commit 2fd149645eb46d26130d7070c6de037dddf34880 Author: Govindraj.R <govindraj.raja@xxxxxx> Date: Wed Nov 9 17:41:21 2011 +0530 ARM: OMAP2+: UART: Remove omap_uart_can_sleep and add pm_qos Kevin -- 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