.. | .. |
---|
348 | 348 | { |
---|
349 | 349 | struct snd_jack_kctl *jack_kctl; |
---|
350 | 350 | #ifdef CONFIG_SND_JACK_INPUT_DEV |
---|
| 351 | + struct input_dev *idev; |
---|
351 | 352 | int i; |
---|
352 | 353 | #endif |
---|
353 | 354 | |
---|
.. | .. |
---|
359 | 360 | status & jack_kctl->mask_bits); |
---|
360 | 361 | |
---|
361 | 362 | #ifdef CONFIG_SND_JACK_INPUT_DEV |
---|
362 | | - if (!jack->input_dev) |
---|
| 363 | + idev = input_get_device(jack->input_dev); |
---|
| 364 | + if (!idev) |
---|
363 | 365 | return; |
---|
364 | 366 | |
---|
365 | 367 | for (i = 0; i < ARRAY_SIZE(jack->key); i++) { |
---|
366 | 368 | int testbit = SND_JACK_BTN_0 >> i; |
---|
367 | 369 | |
---|
368 | 370 | if (jack->type & testbit) |
---|
369 | | - input_report_key(jack->input_dev, jack->key[i], |
---|
| 371 | + input_report_key(idev, jack->key[i], |
---|
370 | 372 | status & testbit); |
---|
371 | 373 | } |
---|
372 | 374 | |
---|
373 | 375 | for (i = 0; i < ARRAY_SIZE(jack_switch_types); i++) { |
---|
374 | 376 | int testbit = 1 << i; |
---|
375 | 377 | if (jack->type & testbit) |
---|
376 | | - input_report_switch(jack->input_dev, |
---|
| 378 | + input_report_switch(idev, |
---|
377 | 379 | jack_switch_types[i], |
---|
378 | 380 | status & testbit); |
---|
379 | 381 | } |
---|
380 | 382 | |
---|
381 | | - input_sync(jack->input_dev); |
---|
| 383 | + input_sync(idev); |
---|
| 384 | + input_put_device(idev); |
---|
382 | 385 | #endif /* CONFIG_SND_JACK_INPUT_DEV */ |
---|
383 | 386 | } |
---|
384 | 387 | EXPORT_SYMBOL(snd_jack_report); |
---|