summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/power/lp8727_charger.c12
-rw-r--r--include/linux/platform_data/lp8727.h2
2 files changed, 11 insertions, 3 deletions
diff --git a/drivers/power/lp8727_charger.c b/drivers/power/lp8727_charger.c
index 7c19c09..1907b1f 100644
--- a/drivers/power/lp8727_charger.c
+++ b/drivers/power/lp8727_charger.c
@@ -17,7 +17,7 @@
#include <linux/power_supply.h>
#include <linux/platform_data/lp8727.h>
-#define DEBOUNCE_MSEC 270
+#define DEFAULT_DEBOUNCE_MSEC 270
/* Registers */
#define CTRL1 0x1
@@ -90,6 +90,7 @@ struct lp8727_chg {
struct lp8727_psy *psy;
struct lp8727_chg_param *chg_parm;
enum lp8727_dev_id devid;
+ unsigned long debounce_jiffies;
};
static int lp8727_read_bytes(struct lp8727_chg *pchg, u8 reg, u8 *data, u8 len)
@@ -236,15 +237,18 @@ static void lp8727_delayed_func(struct work_struct *_work)
static irqreturn_t lp8727_isr_func(int irq, void *ptr)
{
struct lp8727_chg *pchg = ptr;
- unsigned long delay = msecs_to_jiffies(DEBOUNCE_MSEC);
- queue_delayed_work(pchg->irqthread, &pchg->work, delay);
+ queue_delayed_work(pchg->irqthread, &pchg->work,
+ pchg->debounce_jiffies);
return IRQ_HANDLED;
}
static int lp8727_intr_config(struct lp8727_chg *pchg)
{
+ unsigned delay_msec = pchg->pdata ? pchg->pdata->debounce_msec :
+ DEFAULT_DEBOUNCE_MSEC;
+
INIT_DELAYED_WORK(&pchg->work, lp8727_delayed_func);
pchg->irqthread = create_singlethread_workqueue("lp8727-irqthd");
@@ -253,6 +257,8 @@ static int lp8727_intr_config(struct lp8727_chg *pchg)
return -ENOMEM;
}
+ pchg->debounce_jiffies = msecs_to_jiffies(delay_msec);
+
return request_threaded_irq(pchg->client->irq,
NULL,
lp8727_isr_func,
diff --git a/include/linux/platform_data/lp8727.h b/include/linux/platform_data/lp8727.h
index f4bcdd5..54b7788 100644
--- a/include/linux/platform_data/lp8727.h
+++ b/include/linux/platform_data/lp8727.h
@@ -53,6 +53,7 @@ struct lp8727_chg_param {
* @get_batt_temp : get battery temperature
* @ac : charging parameters for AC type charger
* @usb : charging parameters for USB type charger
+ * @debounce_msec : interrupt debounce time
*/
struct lp8727_platform_data {
u8 (*get_batt_present)(void);
@@ -61,6 +62,7 @@ struct lp8727_platform_data {
u8 (*get_batt_temp)(void);
struct lp8727_chg_param *ac;
struct lp8727_chg_param *usb;
+ unsigned int debounce_msec;
};
#endif
OpenPOWER on IntegriCloud