diff --git a/drivers/input/misc/cm109.c b/drivers/input/misc/cm109.c index 353d3c1d347d..c7d97c17bb82 100644 --- a/drivers/input/misc/cm109.c +++ b/drivers/input/misc/cm109.c @@ -366,6 +366,11 @@ static void cm109_submit_ctl(struct cm109_dev *dev) if (unlikely(dev->shutdown)) return; + if (dev->ctl_urb_pending) { + dev->buzzer_pending = 1; + return; + } + if (dev->buzzer_state) dev->ctl_data->byte[HID_OR0] |= BUZZER_ON; else @@ -611,7 +616,7 @@ static int cm109_input_ev(struct input_dev *idev, unsigned int type, case SND_TONE: case SND_BELL: dev->buzzer_state = !!value; - if (!dev->resetting) + if (!dev->resetting && dev->open) cm109_toggle_buzzer_async(dev); return 0;