[alsa-devel] M-Audio Audiophile 192 (ice1724)'s broken spdif capture
Pavel Hofman
pavel.hofman at ivitera.com
Wed Jan 30 11:26:09 CET 2013
On 29.1.2013 20:14, Jonas Petersen wrote:
> Am 29.01.2013 10:39, schrieb Pavel Hofman:
>
> I did that with no success. Same behaviour, no change, still no ak4114.
> The only difference I got was:
>
> $ diff ~/Audiophile192-proc-a.txt ~/Audiophile192-proc-b.txt
> 90c90
> < MT05 : 0x08
> ---
>> MT05 : 0x00
>
> I printk'ed a message in ap192_ak4114_init() and it's definitely being
> called.
>
I see, ak4114 support in revo.c is incomplete. ak4114 controls incl. the
proc file are never built. Please try the following patch (applicable to
clean git checkout):
diff --git a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
index 7641080..3f39c42 100644
--- a/sound/pci/ice1712/revo.c
+++ b/sound/pci/ice1712/revo.c
@@ -35,6 +35,7 @@
struct revo51_spec {
struct snd_i2c_device *dev;
struct snd_pt2258 *pt2258;
+ struct ak4114 *ak4114;
};
static void revo_i2s_mclk_changed(struct snd_ice1712 *ice)
@@ -487,10 +488,10 @@ static int ap192_ak4114_init(struct snd_ice1712 *ice)
ap192_ak4114_read,
ap192_ak4114_write,
ak4114_init_vals, ak4114_init_txcsb,
- ice, &ak);
+ ice, &spec->ak4114);
/* AK4114 in Revo cannot detect external rate correctly.
* No reason to stop capture stream due to incorrect checks */
- ak->check_flags = AK4114_CHECK_NO_RATE;
+ spec->ak4114->check_flags = AK4114_CHECK_NO_RATE;
return 0; /* error ignored; it's no fatal error */
}
@@ -562,6 +563,9 @@ static int revo_init(struct snd_ice1712 *ice)
ice);
if (err < 0)
return err;
+ err = ap192_ak4114_init(ice);
+ if (err < 0)
+ return err;
/* unmute all codecs */
snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE,
@@ -597,9 +601,13 @@ static int revo_add_controls(struct snd_ice1712 *ice)
err = snd_ice1712_akm4xxx_build_controls(ice);
if (err < 0)
return err;
- err = ap192_ak4114_init(ice);
+ /* only capture SPDIF over AK4114 */
+ spec = ice->spec;
+ err = snd_ak4114_build(spec->ak4114, NULL,
+
ice->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);
if (err < 0)
- return err;
+ return err;
+
break;
}
return 0;
Thanks,
Pavel.
More information about the Alsa-devel
mailing list