From d94d0b993494af18025b0980810ddbd44964ad04 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Fri, 25 Jul 2008 23:06:14 +0100 Subject: [PATCH] fix-pcf50633-add-back-gratuitous-isr-work-call-in-resume.patch Sean McNeil reports that he doesn't get pcf50633 interrupts any more after resume. This adds back the call to ISR work in the resume, removal of which is probably to do with it. Signed-off-by: Andy Green --- drivers/i2c/chips/pcf50633.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c index 3bc9fa7..4002c03 100644 --- a/drivers/i2c/chips/pcf50633.c +++ b/drivers/i2c/chips/pcf50633.c @@ -2467,6 +2467,16 @@ static int pcf50633_resume(struct device *dev) mutex_unlock(&pcf->lock); + /* gratuitous call to PCF work function, in the case that the PCF + * interrupt edge was missed during resume, this forces the pending + * register clear and lifts the interrupt back high again. In the + * case nothing is waiting for service, no harm done. + */ + + get_device(&pcf->client.dev); + if (!schedule_work(&pcf->work) && !pcf->working) + dev_err(&pcf->client.dev, "resume work item may be lost\n"); + callback_all_resume_dependencies(&pcf->resume_dependency); return 0; -- 1.5.6.3