diff options
Diffstat (limited to 'drivers/char/keyboard.c')
-rw-r--r-- | drivers/char/keyboard.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c index 5619007e7e05..f706b1dffdb3 100644 --- a/drivers/char/keyboard.c +++ b/drivers/char/keyboard.c | |||
@@ -233,7 +233,8 @@ int setkeycode(unsigned int scancode, unsigned int keycode) | |||
233 | } | 233 | } |
234 | 234 | ||
235 | /* | 235 | /* |
236 | * Making beeps and bells. | 236 | * Making beeps and bells. Note that we prefer beeps to bells, but when |
237 | * shutting the sound off we do both. | ||
237 | */ | 238 | */ |
238 | 239 | ||
239 | static int kd_sound_helper(struct input_handle *handle, void *data) | 240 | static int kd_sound_helper(struct input_handle *handle, void *data) |
@@ -242,9 +243,12 @@ static int kd_sound_helper(struct input_handle *handle, void *data) | |||
242 | struct input_dev *dev = handle->dev; | 243 | struct input_dev *dev = handle->dev; |
243 | 244 | ||
244 | if (test_bit(EV_SND, dev->evbit)) { | 245 | if (test_bit(EV_SND, dev->evbit)) { |
245 | if (test_bit(SND_TONE, dev->sndbit)) | 246 | if (test_bit(SND_TONE, dev->sndbit)) { |
246 | input_inject_event(handle, EV_SND, SND_TONE, *hz); | 247 | input_inject_event(handle, EV_SND, SND_TONE, *hz); |
247 | if (test_bit(SND_BELL, handle->dev->sndbit)) | 248 | if (*hz) |
249 | return 0; | ||
250 | } | ||
251 | if (test_bit(SND_BELL, dev->sndbit)) | ||
248 | input_inject_event(handle, EV_SND, SND_BELL, *hz ? 1 : 0); | 252 | input_inject_event(handle, EV_SND, SND_BELL, *hz ? 1 : 0); |
249 | } | 253 | } |
250 | 254 | ||