diff options
Diffstat (limited to 'sound/i2c/other/ak4114.c')
| -rw-r--r-- | sound/i2c/other/ak4114.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/sound/i2c/other/ak4114.c b/sound/i2c/other/ak4114.c index 15061bd72776..d20d893b3b60 100644 --- a/sound/i2c/other/ak4114.c +++ b/sound/i2c/other/ak4114.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <sound/pcm.h> | 27 | #include <sound/pcm.h> |
| 28 | #include <sound/ak4114.h> | 28 | #include <sound/ak4114.h> |
| 29 | #include <sound/asoundef.h> | 29 | #include <sound/asoundef.h> |
| 30 | #include <sound/info.h> | ||
| 30 | 31 | ||
| 31 | MODULE_AUTHOR("Jaroslav Kysela <perex@perex.cz>"); | 32 | MODULE_AUTHOR("Jaroslav Kysela <perex@perex.cz>"); |
| 32 | MODULE_DESCRIPTION("AK4114 IEC958 (S/PDIF) receiver by Asahi Kasei"); | 33 | MODULE_DESCRIPTION("AK4114 IEC958 (S/PDIF) receiver by Asahi Kasei"); |
| @@ -446,6 +447,26 @@ static struct snd_kcontrol_new snd_ak4114_iec958_controls[] = { | |||
| 446 | } | 447 | } |
| 447 | }; | 448 | }; |
| 448 | 449 | ||
| 450 | |||
| 451 | static void snd_ak4114_proc_regs_read(struct snd_info_entry *entry, | ||
| 452 | struct snd_info_buffer *buffer) | ||
| 453 | { | ||
| 454 | struct ak4114 *ak4114 = entry->private_data; | ||
| 455 | int reg, val; | ||
| 456 | /* all ak4114 registers 0x00 - 0x1f */ | ||
| 457 | for (reg = 0; reg < 0x20; reg++) { | ||
| 458 | val = reg_read(ak4114, reg); | ||
| 459 | snd_iprintf(buffer, "0x%02x = 0x%02x\n", reg, val); | ||
| 460 | } | ||
| 461 | } | ||
| 462 | |||
| 463 | static void snd_ak4114_proc_init(struct ak4114 *ak4114) | ||
| 464 | { | ||
| 465 | struct snd_info_entry *entry; | ||
| 466 | if (!snd_card_proc_new(ak4114->card, "ak4114", &entry)) | ||
| 467 | snd_info_set_text_ops(entry, ak4114, snd_ak4114_proc_regs_read); | ||
| 468 | } | ||
| 469 | |||
| 449 | int snd_ak4114_build(struct ak4114 *ak4114, | 470 | int snd_ak4114_build(struct ak4114 *ak4114, |
| 450 | struct snd_pcm_substream *ply_substream, | 471 | struct snd_pcm_substream *ply_substream, |
| 451 | struct snd_pcm_substream *cap_substream) | 472 | struct snd_pcm_substream *cap_substream) |
| @@ -478,6 +499,7 @@ int snd_ak4114_build(struct ak4114 *ak4114, | |||
| 478 | return err; | 499 | return err; |
| 479 | ak4114->kctls[idx] = kctl; | 500 | ak4114->kctls[idx] = kctl; |
| 480 | } | 501 | } |
| 502 | snd_ak4114_proc_init(ak4114); | ||
| 481 | /* trigger workq */ | 503 | /* trigger workq */ |
| 482 | schedule_delayed_work(&ak4114->work, HZ / 10); | 504 | schedule_delayed_work(&ak4114->work, HZ / 10); |
| 483 | return 0; | 505 | return 0; |
| @@ -590,7 +612,7 @@ static void ak4114_stats(struct work_struct *work) | |||
| 590 | struct ak4114 *chip = container_of(work, struct ak4114, work.work); | 612 | struct ak4114 *chip = container_of(work, struct ak4114, work.work); |
| 591 | 613 | ||
| 592 | if (!chip->init) | 614 | if (!chip->init) |
| 593 | snd_ak4114_check_rate_and_errors(chip, 0); | 615 | snd_ak4114_check_rate_and_errors(chip, chip->check_flags); |
| 594 | 616 | ||
| 595 | schedule_delayed_work(&chip->work, HZ / 10); | 617 | schedule_delayed_work(&chip->work, HZ / 10); |
| 596 | } | 618 | } |
