diff options
-rw-r--r-- | drivers/i2c/chips/pcf50633.c | 20 | ||||
-rw-r--r-- | include/linux/pcf506xx.h | 1 |
2 files changed, 16 insertions, 5 deletions
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c index 4be6cd328ad..ead4273b17f 100644 --- a/drivers/i2c/chips/pcf50633.c +++ b/drivers/i2c/chips/pcf50633.c @@ -1036,25 +1036,35 @@ static void pcf50633_work(struct work_struct *work) * this is really "battery not pulling current" -- it can * appear with no battery attached */ - /* FIXME: signal this to userspace */ + if (pcf->pdata->cb) + pcf->pdata->cb(&pcf->client.dev, + PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE); } if (pcfirq[2] & PCF50633_INT3_THLIMON) { DEBUGPC("THLIMON "); pcf->flags |= PCF50633_F_CHG_PROT; - /* FIXME: signal this to userspace */ + if (pcf->pdata->cb) + pcf->pdata->cb(&pcf->client.dev, + PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE); } if (pcfirq[2] & PCF50633_INT3_THLIMOFF) { DEBUGPC("THLIMOFF "); pcf->flags &= ~PCF50633_F_CHG_PROT; - /* FIXME: signal this to userspace */ + if (pcf->pdata->cb) + pcf->pdata->cb(&pcf->client.dev, + PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE); } if (pcfirq[2] & PCF50633_INT3_USBLIMON) { DEBUGPC("USBLIMON "); - /* FIXME: signal this to userspace */ + if (pcf->pdata->cb) + pcf->pdata->cb(&pcf->client.dev, + PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE); } if (pcfirq[2] & PCF50633_INT3_USBLIMOFF) { DEBUGPC("USBLIMOFF "); - /* FIXME: signal this to userspace */ + if (pcf->pdata->cb) + pcf->pdata->cb(&pcf->client.dev, + PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE); } if (pcfirq[2] & PCF50633_INT3_ADCRDY) { /* ADC result ready */ diff --git a/include/linux/pcf506xx.h b/include/linux/pcf506xx.h index a1365e03eae..459b16001c9 100644 --- a/include/linux/pcf506xx.h +++ b/include/linux/pcf506xx.h @@ -23,6 +23,7 @@ enum pmu_event { #endif PMU_EVT_CHARGER_ACTIVE, PMU_EVT_CHARGER_IDLE, + PMU_EVT_CHARGER_CHANGE, __NUM_PMU_EVTS }; |