[alsa-devel] M-Delta Audiophile 192 (ice1724) Recording
Hi,
we use the M-Delta Audiophile 192 with alsa-driver-1.0.15 and the ice1724 module. Playback works but we cannot record anything.
I noticed that this maybe a bug according to the Alsa Changelog:
From Changes v1.0.13 v1.0.14:
ice1724 - Add support of M-Audio Audiophile 192
Added the (experimental) support of M-Audio Audiophile 192 board. Currently, the analog and the digital playbacks seem working fine. The inputs seem not working as far as I've tested yet.
How is the status for that card ? Is someone working on this ? I heard Recording with OSS works but actually we don't want to switch to OSS... Is it worth waiting for a new release ?
We desperately need recording!
Cheers from a free radio station,
Toast
At Mon, 28 Jan 2008 13:29:00 +0100, CAG wrote:
Hi,
we use the M-Delta Audiophile 192 with alsa-driver-1.0.15 and the ice1724 module. Playback works but we cannot record anything.
I noticed that this maybe a bug according to the Alsa Changelog:
From Changes v1.0.13 v1.0.14:
ice1724 - Add support of M-Audio Audiophile 192
Added the (experimental) support of M-Audio Audiophile 192 board. Currently, the analog and the digital playbacks seem working fine. The inputs seem not working as far as I've tested yet.
How is the status for that card ? Is someone working on this ? I heard Recording with OSS works but actually we don't want to switch to OSS... Is it worth waiting for a new release ?
No one is working on this board, AFAIK. I made it a patch from some floating information. But, since I have no hardware, I forgot this after pushing it to the upstream.
Basically, the analog input doesn't need so much initialization because the codec chip AK5385A has no software control. Maybe the EEPROM setup isn't correct for the actual board configuration. (It means, BTW, that you have no input volume control, too.)
Show /proc/asound/card*/ice1724, and let's check the values there.
Takashi
Hi,
hope that helps. Do you need anything else ?
Thanks T.
Takashi Iwai schrieb:
At Mon, 28 Jan 2008 13:29:00 +0100, CAG wrote:
Hi,
we use the M-Delta Audiophile 192 with alsa-driver-1.0.15 and the ice1724 module. Playback works but we cannot record anything.
I noticed that this maybe a bug according to the Alsa Changelog:
From Changes v1.0.13 v1.0.14:
ice1724 - Add support of M-Audio Audiophile 192
Added the (experimental) support of M-Audio Audiophile 192 board. Currently, the analog and the digital playbacks seem working fine. The inputs seem not working as far as I've tested yet.
How is the status for that card ? Is someone working on this ? I heard Recording with OSS works but actually we don't want to switch to OSS... Is it worth waiting for a new release ?
No one is working on this board, AFAIK. I made it a patch from some floating information. But, since I have no hardware, I forgot this after pushing it to the upstream.
Basically, the analog input doesn't need so much initialization because the codec chip AK5385A has no software control. Maybe the EEPROM setup isn't correct for the actual board configuration. (It means, BTW, that you have no input volume control, too.)
Show /proc/asound/card*/ice1724, and let's check the values there.
Takashi
Hi,
we ran the alsa-info.sh script to provide more information on our setup: http://pastebin.ca/886260
The output of /proc/asound/card0/ice1724 is at http://pastebin.ca/884589
Greetings,
Toast / FSK
Takashi Iwai schrieb:
At Mon, 28 Jan 2008 13:29:00 +0100, CAG wrote:
Hi,
we use the M-Delta Audiophile 192 with alsa-driver-1.0.15 and the ice1724 module. Playback works but we cannot record anything.
I noticed that this maybe a bug according to the Alsa Changelog:
From Changes v1.0.13 v1.0.14:
ice1724 - Add support of M-Audio Audiophile 192
Added the (experimental) support of M-Audio Audiophile 192 board. Currently, the analog and the digital playbacks seem working fine. The inputs seem not working as far as I've tested yet.
How is the status for that card ? Is someone working on this ? I heard Recording with OSS works but actually we don't want to switch to OSS... Is it worth waiting for a new release ?
No one is working on this board, AFAIK. I made it a patch from some floating information. But, since I have no hardware, I forgot this after pushing it to the upstream.
Basically, the analog input doesn't need so much initialization because the codec chip AK5385A has no software control. Maybe the EEPROM setup isn't correct for the actual board configuration. (It means, BTW, that you have no input volume control, too.)
Show /proc/asound/card*/ice1724, and let's check the values there.
Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
At Thu, 31 Jan 2008 16:44:06 +0100, CAG wrote:
Hi,
we ran the alsa-info.sh script to provide more information on our setup: http://pastebin.ca/886260
The output of /proc/asound/card0/ice1724 is at http://pastebin.ca/884589
Thanks. One more thing - could you tell how did you test the analog recording exactly? I just need to make sure about your test method.
The patch below enables AK4114, and possibly fixes some ADC setup. Give it a try.
Takashi
diff -r a4c88cbfe2f1 pci/ice1712/revo.c --- a/pci/ice1712/revo.c Wed Jan 30 09:06:47 2008 +0100 +++ b/pci/ice1712/revo.c Thu Jan 31 17:18:35 2008 +0100 @@ -322,17 +322,24 @@ static void ap192_set_rate_val(struct sn static void ap192_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate) { struct snd_ice1712 *ice = ak->private_data[0]; + int dfs;
revo_set_rate_val(ak, rate);
-#if 1 /* FIXME: do we need this procedure? */ - /* reset DFS pin of AK5385A for ADC, too */ - /* DFS0 (pin 18) -- GPIO10 pin 77 */ - snd_ice1712_save_gpio_status(ice); - snd_ice1712_gpio_write_bits(ice, 1 << 10, - rate > 48000 ? (1 << 10) : 0); - snd_ice1712_restore_gpio_status(ice); -#endif + + /* reset CKS */ + snd_ice1712_gpio_write_bits(ice, 1 << 8, rate > 96000 ? 1 : 0); + /* reset DFS pins of AK5385A for ADC, too */ + if (rate > 96000) + dfs = 2; + else if (rate > 48000) + dfs = 1; + else + dfs = 0; + snd_ice1712_gpio_write_bits(ice, 3 << 9, dfs << 9); + /* reset ADC */ + snd_ice1712_gpio_write_bits(ice, 1 << 11, 0); + snd_ice1712_gpio_write_bits(ice, 1 << 11, 1); }
static const struct snd_akm4xxx_dac_channel ap192_dac[] = { @@ -353,28 +360,20 @@ static struct snd_ak4xxx_private akm_ap1 .cif = 0, .data_mask = VT1724_REVO_CDOUT, .clk_mask = VT1724_REVO_CCLK, - .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS3, - .cs_addr = VT1724_REVO_CS3, - .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS3, + .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS1, + .cs_addr = VT1724_REVO_CS1, + .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS1, .add_flags = VT1724_REVO_CCLK, /* high at init */ .mask_flags = 0, };
-#if 0 -/* FIXME: ak4114 makes the sound much lower due to some confliction, - * so let's disable it right now... - */ -#define BUILD_AK4114_AP192 -#endif - -#ifdef BUILD_AK4114_AP192 /* AK4114 support on Audiophile 192 */ /* CDTO (pin 32) -- GPIO2 pin 52 * CDTI (pin 33) -- GPIO3 pin 53 (shared with AK4358) * CCLK (pin 34) -- GPIO1 pin 51 (shared with AK4358) * CSN (pin 35) -- GPIO7 pin 59 */ -#define AK4114_ADDR 0x00 +#define AK4114_ADDR 0x02
static void write_data(struct snd_ice1712 *ice, unsigned int gpio, unsigned int data, int idx) @@ -428,7 +427,7 @@ static unsigned int ap192_4wire_start(st tmp = snd_ice1712_gpio_read(ice); tmp |= VT1724_REVO_CCLK; /* high at init */ tmp |= VT1724_REVO_CS0; - tmp &= ~VT1724_REVO_CS3; + tmp &= ~VT1724_REVO_CS1; snd_ice1712_gpio_write(ice, tmp); udelay(1); return tmp; @@ -436,7 +435,7 @@ static unsigned int ap192_4wire_start(st
static void ap192_4wire_finish(struct snd_ice1712 *ice, unsigned int tmp) { - tmp |= VT1724_REVO_CS3; + tmp |= VT1724_REVO_CS1; tmp |= VT1724_REVO_CS0; snd_ice1712_gpio_write(ice, tmp); udelay(1); @@ -485,13 +484,13 @@ static int __devinit ap192_ak4114_init(s struct ak4114 *ak; int err;
- return snd_ak4114_create(ice->card, + err = snd_ak4114_create(ice->card, ap192_ak4114_read, ap192_ak4114_write, ak4114_init_vals, ak4114_init_txcsb, ice, &ak); + return 0; /* igonre errors from AK4114 */ } -#endif /* BUILD_AK4114_AP192 */
static int __devinit revo_init(struct snd_ice1712 *ice) { @@ -557,6 +556,9 @@ static int __devinit revo_init(struct sn if (err < 0) return err; + /* unmute all codecs */ + snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, + VT1724_REVO_MUTE); break; }
@@ -588,11 +590,9 @@ static int __devinit revo_add_controls(s err = snd_ice1712_akm4xxx_build_controls(ice); if (err < 0) return err; -#ifdef BUILD_AK4114_AP192 err = ap192_ak4114_init(ice); if (err < 0) return err; -#endif break; } return 0;
HI,
Takashi Iwai schrieb:
At Thu, 31 Jan 2008 16:44:06 +0100, CAG wrote:
Hi,
we ran the alsa-info.sh script to provide more information on our setup: http://pastebin.ca/886260
The output of /proc/asound/card0/ice1724 is at http://pastebin.ca/884589
Thanks. One more thing - could you tell how did you test the analog recording exactly? I just need to make sure about your test method.
Well, we tried with arecord, ecasound, jack & audacity, but in the alsamixer / mixer gui in kde, at capture there's just one "Multi Track Peak" without capture switch.
What would be the best record method to test ?
The patch below enables AK4114, and possibly fixes some ADC setup. Give it a try.
Cool! we will try it this evening and give a feedback. It is a patch for 1.0.16rc2 or 1.0.15 ?
Toast
Takashi
diff -r a4c88cbfe2f1 pci/ice1712/revo.c --- a/pci/ice1712/revo.c Wed Jan 30 09:06:47 2008 +0100 +++ b/pci/ice1712/revo.c Thu Jan 31 17:18:35 2008 +0100 @@ -322,17 +322,24 @@ static void ap192_set_rate_val(struct sn static void ap192_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate) { struct snd_ice1712 *ice = ak->private_data[0];
int dfs;
revo_set_rate_val(ak, rate);
-#if 1 /* FIXME: do we need this procedure? */
- /* reset DFS pin of AK5385A for ADC, too */
- /* DFS0 (pin 18) -- GPIO10 pin 77 */
- snd_ice1712_save_gpio_status(ice);
- snd_ice1712_gpio_write_bits(ice, 1 << 10,
rate > 48000 ? (1 << 10) : 0);
- snd_ice1712_restore_gpio_status(ice);
-#endif
- /* reset CKS */
- snd_ice1712_gpio_write_bits(ice, 1 << 8, rate > 96000 ? 1 : 0);
- /* reset DFS pins of AK5385A for ADC, too */
- if (rate > 96000)
dfs = 2;
- else if (rate > 48000)
dfs = 1;
- else
dfs = 0;
- snd_ice1712_gpio_write_bits(ice, 3 << 9, dfs << 9);
- /* reset ADC */
- snd_ice1712_gpio_write_bits(ice, 1 << 11, 0);
- snd_ice1712_gpio_write_bits(ice, 1 << 11, 1);
}
static const struct snd_akm4xxx_dac_channel ap192_dac[] = { @@ -353,28 +360,20 @@ static struct snd_ak4xxx_private akm_ap1 .cif = 0, .data_mask = VT1724_REVO_CDOUT, .clk_mask = VT1724_REVO_CCLK,
- .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS3,
- .cs_addr = VT1724_REVO_CS3,
- .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS3,
- .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS1,
- .cs_addr = VT1724_REVO_CS1,
- .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS1, .add_flags = VT1724_REVO_CCLK, /* high at init */ .mask_flags = 0,
};
-#if 0 -/* FIXME: ak4114 makes the sound much lower due to some confliction,
so let's disable it right now...
- */
-#define BUILD_AK4114_AP192 -#endif
-#ifdef BUILD_AK4114_AP192 /* AK4114 support on Audiophile 192 */ /* CDTO (pin 32) -- GPIO2 pin 52
- CDTI (pin 33) -- GPIO3 pin 53 (shared with AK4358)
- CCLK (pin 34) -- GPIO1 pin 51 (shared with AK4358)
- CSN (pin 35) -- GPIO7 pin 59
*/ -#define AK4114_ADDR 0x00 +#define AK4114_ADDR 0x02
static void write_data(struct snd_ice1712 *ice, unsigned int gpio, unsigned int data, int idx) @@ -428,7 +427,7 @@ static unsigned int ap192_4wire_start(st tmp = snd_ice1712_gpio_read(ice); tmp |= VT1724_REVO_CCLK; /* high at init */ tmp |= VT1724_REVO_CS0;
- tmp &= ~VT1724_REVO_CS3;
- tmp &= ~VT1724_REVO_CS1; snd_ice1712_gpio_write(ice, tmp); udelay(1); return tmp;
@@ -436,7 +435,7 @@ static unsigned int ap192_4wire_start(st
static void ap192_4wire_finish(struct snd_ice1712 *ice, unsigned int tmp) {
- tmp |= VT1724_REVO_CS3;
- tmp |= VT1724_REVO_CS1; tmp |= VT1724_REVO_CS0; snd_ice1712_gpio_write(ice, tmp); udelay(1);
@@ -485,13 +484,13 @@ static int __devinit ap192_ak4114_init(s struct ak4114 *ak; int err;
- return snd_ak4114_create(ice->card,
- err = snd_ak4114_create(ice->card, ap192_ak4114_read, ap192_ak4114_write, ak4114_init_vals, ak4114_init_txcsb, ice, &ak);
- return 0; /* igonre errors from AK4114 */
} -#endif /* BUILD_AK4114_AP192 */
static int __devinit revo_init(struct snd_ice1712 *ice) { @@ -557,6 +556,9 @@ static int __devinit revo_init(struct sn if (err < 0) return err;
/* unmute all codecs */
snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE,
break; }VT1724_REVO_MUTE);
@@ -588,11 +590,9 @@ static int __devinit revo_add_controls(s err = snd_ice1712_akm4xxx_build_controls(ice); if (err < 0) return err; -#ifdef BUILD_AK4114_AP192 err = ap192_ak4114_init(ice); if (err < 0) return err; -#endif break; } return 0; _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
participants (2)
-
CAG
-
Takashi Iwai