ALSA: emu10k1: actually show some S/PDIF status in /proc for E-MU cards
authorOswald Buddenhagen <oswald.buddenhagen@gmx.de>
Mon, 12 Jun 2023 19:13:25 +0000 (21:13 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 13 Jun 2023 05:47:34 +0000 (07:47 +0200)
The file is called spdif-in, but we abused it to show only sample rates
from various sources. Rectify it as far as possible (the FPGA doesn't
give us a lot of information).

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230612191325.1315854-10-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/emu10k1/emuproc.c

index 993b353..7e2cc53 100644 (file)
@@ -194,6 +194,14 @@ static void snd_emu10k1_proc_spdif_read(struct snd_info_entry *entry,
                    emu->card_capabilities->emu_model == EMU_MODEL_EMU1010)
                        snd_iprintf(buffer, "BNC rate: %dHz\n",
                                    snd_emu1010_get_raw_rate(emu, EMU_HANA_WCLOCK_SYNC_BNC));
+
+               snd_emu1010_fpga_read(emu, EMU_HANA_SPDIF_MODE, &value);
+               if (value & EMU_HANA_SPDIF_MODE_RX_INVALID)
+                       snd_iprintf(buffer, "\nS/PDIF input invalid\n");
+               else
+                       snd_iprintf(buffer, "\nS/PDIF mode: %s%s\n",
+                                   value & EMU_HANA_SPDIF_MODE_RX_PRO ? "professional" : "consumer",
+                                   value & EMU_HANA_SPDIF_MODE_RX_NOCOPY ? ", no copy" : "");
        } else {
                snd_emu10k1_proc_spdif_status(emu, buffer, "CD-ROM S/PDIF In", CDCS, CDSRCS);
                snd_emu10k1_proc_spdif_status(emu, buffer, "Optical or Coax S/PDIF In", GPSCS, GPSRCS);