ONKEY interrupt is trapped in PMU occasionally on resuming

Andy Green andy at openmoko.com
Mon Feb 4 16:47:46 CET 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Somebody in the thread at some point said:

> So I tried to use i2cdump to read PCF50633 after every suspend/resume
> process. This issue would not happen anymore. Obviously, INTs of
> PCF50633 are not read & clear indeed as resuming occasionally.  

Hi Matt -

I look at the driver and I dunno if IRQT_FALLING for the PCF50633 is a
good idea.  The interrupt is disabled

static void pcf50633_work(struct work_struct *work)
{
	struct pcf50633_data *pcf =
			container_of(work, struct pcf50633_data, work);
	u_int8_t int1, int2, int3, int4, int5;

	pcf->working = 1;

	/* FIXME: read in one i2c transaction */
	int1 = __reg_read(pcf, PCF50633_REG_INT1); <== IRQ# can go up here
	int2 = __reg_read(pcf, PCF50633_REG_INT2);
	int3 = __reg_read(pcf, PCF50633_REG_INT3);
	int4 = __reg_read(pcf, PCF50633_REG_INT4);
	int5 = __reg_read(pcf, PCF50633_REG_INT5);

... various handlers ...

	enable_irq(pcf->irq); <=== does the CPU recognize any interrupt that
happened since PCF50633_REG_INT1 was read?
}


If another interrupt happens between the I2C reads that clear the
interrupt source, and re-enabling interrupt service at the end of the
workqueue handler, I don't actually know if the CPU interrupt hardware
will understand that it should rememer about it and signal on re-enable.
 If it doesn't take care, then the IRQ line will stick low forever
because we never see a falling edge any more if it is stuck low.

How about trying

	set_irq_type(irq, IRQT_FALLING);

changed to

	set_irq_type(irq, IRQT_LOW);

in drivers/i2c/chips/pcf50633.c

Still it doesn't explain the 0xff INT2 register.

- -Andy



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFHpzOiOjLpvpq7dMoRAs5DAJ9qoy+gRnIXrAjXdetaz2aVUYeb/QCgk/2T
TarnHCqn6LdUZnchnclzdcY=
=0IEi
-----END PGP SIGNATURE-----




More information about the openmoko-kernel mailing list