diff options
author | Beomho Seo <beomho.seo@samsung.com> | 2015-07-08 19:37:06 +0900 |
---|---|---|
committer | Seung-Woo Kim <sw0312.kim@samsung.com> | 2016-12-14 13:46:35 +0900 |
commit | 1cbadefba55789a5f6580ced85a99d77ca07a2ea (patch) | |
tree | bc208f7d764408aaad5911cfedcc899ba0a7b516 /net | |
parent | 31d820949c9145d7323f79fc8f0b1842b9b5f823 (diff) |
LOCAL / net: rfkill: rfkill-bcm: Add hci registered flag
This patch add hci registered flag for handling abnormal interrupt
signal.
Signed-off-by: Beomho Seo <beomho.seo@samsung.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/rfkill/rfkill-bcm.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/rfkill/rfkill-bcm.c b/net/rfkill/rfkill-bcm.c index c1419782cb06..1f53dcca98d8 100644 --- a/net/rfkill/rfkill-bcm.c +++ b/net/rfkill/rfkill-bcm.c @@ -46,6 +46,7 @@ struct rfkill_bcm_data { struct clk *clk; bool clk_enabled; + bool hci_registered; int irq; struct device *dev; struct bt_lpm_timer timer; @@ -101,9 +102,11 @@ static int rfkill_bcm_hci_event(struct notifier_block *this, switch (event) { case HCI_DEV_REG: dev_dbg(rfkill->dev, "HCI device is registered\n"); + rfkill->hci_registered = true; break; case HCI_DEV_UNREG: dev_dbg(rfkill->dev, "HCI device is unregistered\n"); + rfkill->hci_registered = false; break; case HCI_DEV_WRITE: dev_dbg(rfkill->dev, "HCI Tx is on going\n"); @@ -184,9 +187,11 @@ static irqreturn_t rfkill_bcm_irq_handler(int irq, void *data) unsigned int type; host_wake = gpiod_get_value(rfkill->host_wake_gpio); + if (host_wake) { /* host is waked until Rx is finished */ - pm_stay_awake(rfkill->dev); + if (rfkill->hci_registered) + pm_stay_awake(rfkill->dev); dev_dbg(rfkill->dev, "HCI Rx is started\n"); } else { struct hrtimer *htimer = &rfkill->timer.htimer; |