Commit 607a4453 authored by Jaroslav Kysela's avatar Jaroslav Kysela

[ALSA] emu10k1 - add 'voices' /proc entry for debugging the voice allocator

EMU10K1/EMU10K2 driver
This patch adds a 'voices' /proc entry for debugging the voice
allocator.  It also increases the size of the ptr_regs files to display
the values for all channels.  Finally it updates the names of the EFX
recording inputs from '???' to 'FXBUS2_*'.
Signed-Off-By: default avatarLee Revell <rlrevell@joe-job.com>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 27ae958c
...@@ -140,38 +140,38 @@ static void snd_emu10k1_proc_read(snd_info_entry_t *entry, ...@@ -140,38 +140,38 @@ static void snd_emu10k1_proc_read(snd_info_entry_t *entry,
/* 29 */ "???", /* 29 */ "???",
/* 30 */ "???", /* 30 */ "???",
/* 31 */ "???", /* 31 */ "???",
/* 32 */ "???", /* 32 */ "FXBUS2_0",
/* 33 */ "???", /* 33 */ "FXBUS2_1",
/* 34 */ "???", /* 34 */ "FXBUS2_2",
/* 35 */ "???", /* 35 */ "FXBUS2_3",
/* 36 */ "???", /* 36 */ "FXBUS2_4",
/* 37 */ "???", /* 37 */ "FXBUS2_5",
/* 38 */ "???", /* 38 */ "FXBUS2_6",
/* 39 */ "???", /* 39 */ "FXBUS2_7",
/* 40 */ "???", /* 40 */ "FXBUS2_8",
/* 41 */ "???", /* 41 */ "FXBUS2_9",
/* 42 */ "???", /* 42 */ "FXBUS2_10",
/* 43 */ "???", /* 43 */ "FXBUS2_11",
/* 44 */ "???", /* 44 */ "FXBUS2_12",
/* 45 */ "???", /* 45 */ "FXBUS2_13",
/* 46 */ "???", /* 46 */ "FXBUS2_14",
/* 47 */ "???", /* 47 */ "FXBUS2_15",
/* 48 */ "???", /* 48 */ "FXBUS2_16",
/* 49 */ "???", /* 49 */ "FXBUS2_17",
/* 50 */ "???", /* 50 */ "FXBUS2_18",
/* 51 */ "???", /* 51 */ "FXBUS2_19",
/* 52 */ "???", /* 52 */ "FXBUS2_20",
/* 53 */ "???", /* 53 */ "FXBUS2_21",
/* 54 */ "???", /* 54 */ "FXBUS2_22",
/* 55 */ "???", /* 55 */ "FXBUS2_23",
/* 56 */ "???", /* 56 */ "FXBUS2_24",
/* 57 */ "???", /* 57 */ "FXBUS2_25",
/* 58 */ "???", /* 58 */ "FXBUS2_26",
/* 59 */ "???", /* 59 */ "FXBUS2_27",
/* 60 */ "???", /* 60 */ "FXBUS2_28",
/* 61 */ "???", /* 61 */ "FXBUS2_29",
/* 62 */ "???", /* 62 */ "FXBUS2_30",
/* 33 */ "???" /* 63 */ "FXBUS2_31"
}; };
emu10k1_t *emu = entry->private_data; emu10k1_t *emu = entry->private_data;
...@@ -221,7 +221,7 @@ static void snd_emu10k1_proc_read(snd_info_entry_t *entry, ...@@ -221,7 +221,7 @@ static void snd_emu10k1_proc_read(snd_info_entry_t *entry,
snd_iprintf(buffer, " Output %02i [%s]\n", idx, outputs[idx]); snd_iprintf(buffer, " Output %02i [%s]\n", idx, outputs[idx]);
} }
snd_iprintf(buffer, "\nAll FX Outputs :\n"); snd_iprintf(buffer, "\nAll FX Outputs :\n");
for (idx = 0; idx < 32; idx++) for (idx = 0; idx < (emu->audigy ? 64 : 32); idx++)
snd_iprintf(buffer, " Output %02i [%s]\n", idx, outputs[idx]); snd_iprintf(buffer, " Output %02i [%s]\n", idx, outputs[idx]);
snd_emu10k1_proc_spdif_status(emu, buffer, "S/PDIF Output 0", SPCS0, -1); snd_emu10k1_proc_spdif_status(emu, buffer, "S/PDIF Output 0", SPCS0, -1);
snd_emu10k1_proc_spdif_status(emu, buffer, "S/PDIF Output 1", SPCS1, -1); snd_emu10k1_proc_spdif_status(emu, buffer, "S/PDIF Output 1", SPCS1, -1);
...@@ -322,6 +322,26 @@ static long snd_emu10k1_fx8010_read(snd_info_entry_t *entry, void *file_private_ ...@@ -322,6 +322,26 @@ static long snd_emu10k1_fx8010_read(snd_info_entry_t *entry, void *file_private_
return 0; return 0;
} }
static void snd_emu10k1_proc_voices_read(snd_info_entry_t *entry,
snd_info_buffer_t * buffer)
{
emu10k1_t *emu = entry->private_data;
emu10k1_voice_t *voice;
int idx;
snd_iprintf(buffer, "ch\tuse\tpcm\tefx\tsynth\tmidi\n");
for (idx = 0; idx < NUM_G; idx++) {
voice = &emu->voices[idx];
snd_iprintf(buffer, "%i\t%i\t%i\t%i\t%i\t%i\n",
idx,
voice->use,
voice->pcm,
voice->efx,
voice->synth,
voice->midi);
}
}
#ifdef CONFIG_SND_DEBUG #ifdef CONFIG_SND_DEBUG
static void snd_emu_proc_io_reg_read(snd_info_entry_t *entry, static void snd_emu_proc_io_reg_read(snd_info_entry_t *entry,
snd_info_buffer_t * buffer) snd_info_buffer_t * buffer)
...@@ -405,7 +425,7 @@ static void snd_emu_proc_ptr_reg_read(snd_info_entry_t *entry, ...@@ -405,7 +425,7 @@ static void snd_emu_proc_ptr_reg_read(snd_info_entry_t *entry,
snd_iprintf(buffer, "Registers 0x%x\n", iobase); snd_iprintf(buffer, "Registers 0x%x\n", iobase);
for(i = offset; i < offset+length; i++) { for(i = offset; i < offset+length; i++) {
snd_iprintf(buffer, "%02X: ",i); snd_iprintf(buffer, "%02X: ",i);
for (j = 0; j < 4; j++) { for (j = 0; j < 64; j++) {
if(iobase == 0) if(iobase == 0)
value = snd_ptr_read(emu, 0, i, j); value = snd_ptr_read(emu, 0, i, j);
else else
...@@ -482,22 +502,22 @@ int __devinit snd_emu10k1_proc_init(emu10k1_t * emu) ...@@ -482,22 +502,22 @@ int __devinit snd_emu10k1_proc_init(emu10k1_t * emu)
entry->c.text.write = snd_emu_proc_io_reg_write; entry->c.text.write = snd_emu_proc_io_reg_write;
} }
if (! snd_card_proc_new(emu->card, "ptr_regs00a", &entry)) { if (! snd_card_proc_new(emu->card, "ptr_regs00a", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read00a); snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read00a);
entry->c.text.write_size = 64; entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write00; entry->c.text.write = snd_emu_proc_ptr_reg_write00;
} }
if (! snd_card_proc_new(emu->card, "ptr_regs00b", &entry)) { if (! snd_card_proc_new(emu->card, "ptr_regs00b", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read00b); snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read00b);
entry->c.text.write_size = 64; entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write00; entry->c.text.write = snd_emu_proc_ptr_reg_write00;
} }
if (! snd_card_proc_new(emu->card, "ptr_regs20a", &entry)) { if (! snd_card_proc_new(emu->card, "ptr_regs20a", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read20a); snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read20a);
entry->c.text.write_size = 64; entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write20; entry->c.text.write = snd_emu_proc_ptr_reg_write20;
} }
if (! snd_card_proc_new(emu->card, "ptr_regs20b", &entry)) { if (! snd_card_proc_new(emu->card, "ptr_regs20b", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read20b); snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read20b);
entry->c.text.write_size = 64; entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write20; entry->c.text.write = snd_emu_proc_ptr_reg_write20;
} }
...@@ -506,6 +526,9 @@ int __devinit snd_emu10k1_proc_init(emu10k1_t * emu) ...@@ -506,6 +526,9 @@ int __devinit snd_emu10k1_proc_init(emu10k1_t * emu)
if (! snd_card_proc_new(emu->card, "emu10k1", &entry)) if (! snd_card_proc_new(emu->card, "emu10k1", &entry))
snd_info_set_text_ops(entry, emu, 2048, snd_emu10k1_proc_read); snd_info_set_text_ops(entry, emu, 2048, snd_emu10k1_proc_read);
if (! snd_card_proc_new(emu->card, "voices", &entry))
snd_info_set_text_ops(entry, emu, 2048, snd_emu10k1_proc_voices_read);
if (! snd_card_proc_new(emu->card, "fx8010_gpr", &entry)) { if (! snd_card_proc_new(emu->card, "fx8010_gpr", &entry)) {
entry->content = SNDRV_INFO_CONTENT_DATA; entry->content = SNDRV_INFO_CONTENT_DATA;
entry->private_data = emu; entry->private_data = emu;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment