Hi Rakesh, On Thu, Jan 19, 2012 at 11:51 PM, Rakesh Iyer <riyer@xxxxxxxxxx> wrote: >> if (device_may_wakeup(&pdev->dev)) { >> disable_irq_wake(kbc->irq); >> tegra_kbc_setup_wakekeys(kbc, false); >> + /* We will use fifo interrupts for key detection. */ >> + tegra_kbc_set_keypress_interrupt(kbc, false); > Why do yo disable on resume why not have it enabled always? > >> >> /* Restore the resident time of continuous polling mode. */ >> writel(kbc->cp_to_wkup_dly, kbc->mmio + KBC_TO_CNT_0); > > For the relevant discussion, Tegra KBC provides the following interrupts - > a) The keypress interrupt which is generated as soon as a key is pressed, > before matrix scanning begins. > b) FIFO interrupt which is generated when actual keys are decoded from the matrix, > and put into the FIFO. > > During normal operation the keypress interrupt is not useful as we have to wait for the > keys to make it into the FIFO before reporting it to the higher layers. > > Since we have turned off scanning(in the following commit) we cannot use the FIFO interrupt > during the resume, so we rely on the keypress interrupt and generate the wakeup key. > > Commit that turned off scanning > > Input: tegra-kbc - fix wakeup from suspend > > For wakeup to be reliable, kbc needs to be in interrupt mode before suspend. Does it need to be disabled at resume? > Created common routine to control the FIFO interrupt. > Added synchronization to ensure orderly suspend. > > > Regards > Rakesh -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html