Re: [PATCH] i2c: busses: i2c-tegra: Using suspend_noirq()/resume_noirq() for suspend/resume

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

 



On Sun, Mar 27, 2011 at 11:22 PM,  <wni@xxxxxxxxxx> wrote:
> From: Wei Ni <wni@xxxxxxxxxx>
>
> When use rtc-tps6586x wakealarm to suspend/resume,
> it will show a lot error messages:
> "tps6586x 4-0034: failed to read interrupt status
> tps6586x 4-0034: failed reading from 0xb5"
> After resume, the system will call tps6586x_irq() because of the alarm
> interrupt. This irq handle will read tps6586x interrupt status (0xb5), but at
> that time the i2c driver didn't resume yet, the system didn't call the
> tegra_i2c_resume(), so the reading will be failed.
> I2C driver needs to be suspended late and resumed early than other drivers.
> So, I2C driver uses the suspend_noirq/resume_noirq callbacks of struct dev_pm_ops
> for early/late power management system.

This sounds like a bug in rtc-tps6586x.  I think you need to call
disable_irq in the rtc-tps6586x suspend function and an enable_irq in
the resume function, which will delay the delivery of the wake irq
until the rtc driver (and its parent, the i2c driver) has been
resumed.
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux