| .. | .. |
|---|
| 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); |
|---|