* Peter Barada <peter.barada@xxxxxxxxxxx> [130709 08:14]: > I'm working with a 3.0.8 kernel in Android ICS and have run into a > problem using wl12xx bluetooth after a suspend/resume cycle. > > GPIO_162 in this design is connected to the BT_EN pin of the wl12xx and > needs to be held high to keep the bluetooth core from resetting while > the DM37x goes into off mode. > > I've tried muxing the pin using OMAP_PIN_OUTPUT | > OMAP_PIN_OFF_OUTPUT_HIGH, but the pin goes low when the chip goes into > off mode. If I disable off mode via "echo 0 > > /sys/kernel/debug/pm_debug/enable_off_mode" the pin remains high while > the chip goes into retention and the bluetooth core works after resume. > > Any ideas why GPIO_162 would go low during suspend to off mode? Unless the GPIO is in a GPIO bank that's connected to the WKUP power domain, the GPIO bank context will be lost. So there's a short period where the GPIO bank is in an uninitialized state between waking from off-idle and before the context to the GPIO bank gets restored in omap_gpio_runtime_resume(). If there's a pull on the line, the period is long enough to change the line. Unless the TI people know some magic tricks that I'm not aware of, there's no way around it, except to use external pulls to keep the GPIO line in desired state, or move the GPIO somewhere else, like TWL. Regards, Tony -- 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