On Wed, 2009-01-21 at 06:52 +0100, . . wrote:
> I was able to compile ~awalls/v4l-dvb/ revision 10252 and the same issue is 
> occurring again. Thanks!
> 


Try this patch.

Regards,
Andy



diff -r db4a95792cf6 linux/drivers/media/video/cx18/cx18-audio.c
--- a/linux/drivers/media/video/cx18/cx18-audio.c       Mon Jan 19 16:31:22 
2009 -0500
+++ b/linux/drivers/media/video/cx18/cx18-audio.c       Wed Jan 21 20:32:53 
2009 -0500
@@ -64,8 +64,7 @@
        val = cx18_read_reg(cx, CX18_AUDIO_ENABLE) & ~0x30;
        val |= (audio_input > CX18_AV_AUDIO_SERIAL2) ? 0x20 :
                                        (audio_input << 4);
-       cx18_write_reg(cx, val | 0xb00, CX18_AUDIO_ENABLE);
-       cx18_vapi(cx, CX18_APU_RESETAI, 1, 0);
+       cx18_write_reg_expect(cx, val | 0xb00, CX18_AUDIO_ENABLE, val, 0x30);
        return 0;
 }
 
diff -r db4a95792cf6 linux/drivers/media/video/cx18/cx18-av-firmware.c
--- a/linux/drivers/media/video/cx18/cx18-av-firmware.c Mon Jan 19 16:31:22 
2009 -0500
+++ b/linux/drivers/media/video/cx18/cx18-av-firmware.c Wed Jan 21 20:32:53 
2009 -0500
@@ -131,7 +131,8 @@
        v = cx18_read_reg(cx, CX18_AUDIO_ENABLE);
        /* If bit 11 is 1, clear bit 10 */
        if (v & 0x800)
-               cx18_write_reg(cx, v & 0xFFFFFBFF, CX18_AUDIO_ENABLE);
+               cx18_write_reg_expect(cx, v & 0xFFFFFBFF, CX18_AUDIO_ENABLE,
+                                     0, 0x400);
 
        /* Enable WW auto audio standard detection */
        v = cx18_av_read4(cx, CXADEC_STD_DET_CTL);
diff -r db4a95792cf6 linux/drivers/media/video/cx18/cx18-driver.c
--- a/linux/drivers/media/video/cx18/cx18-driver.c      Mon Jan 19 16:31:22 
2009 -0500
+++ b/linux/drivers/media/video/cx18/cx18-driver.c      Wed Jan 21 20:32:53 
2009 -0500
@@ -1058,19 +1058,7 @@
        /*
         * Init the firmware twice to work around a silicon bug
         * with the digital TS.
-        *
-        * The second firmware load requires us to normalize the APU state,
-        * or the audio for the first analog capture will be badly incorrect.
-        *
-        * I can't seem to call APU_RESETAI and have it succeed without the
-        * APU capturing audio, so we start and stop it here to do the reset
         */
-
-       /* MPEG Encoding, 224 kbps, MPEG Layer II, 48 ksps */
-       cx18_vapi(cx, CX18_APU_START, 2, CX18_APU_ENCODING_METHOD_MPEG|0xb9, 0);
-       cx18_vapi(cx, CX18_APU_RESETAI, 0);
-       cx18_vapi(cx, CX18_APU_STOP, 1, CX18_APU_ENCODING_METHOD_MPEG);
-
        fw_retry_count = 3;
        while (--fw_retry_count > 0) {
                /* load firmware */
@@ -1084,6 +1072,19 @@
                set_bit(CX18_F_I_FAILED, &cx->i_flags);
                return -ENXIO;
        }
+
+       /*
+        * The second firmware load requires us to normalize the APU state,
+        * or the audio for the first analog capture will be badly incorrect.
+        *
+        * I can't seem to call APU_RESETAI and have it succeed without the
+        * APU capturing audio, so we start and stop it here to do the reset
+        */
+
+       /* MPEG Encoding, 224 kbps, MPEG Layer II, 48 ksps */
+       cx18_vapi(cx, CX18_APU_START, 2, CX18_APU_ENCODING_METHOD_MPEG|0xb9, 0);
+       cx18_vapi(cx, CX18_APU_RESETAI, 0);
+       cx18_vapi(cx, CX18_APU_STOP, 1, CX18_APU_ENCODING_METHOD_MPEG);
 
        vf.tuner = 0;
        vf.type = V4L2_TUNER_ANALOG_TV;



_______________________________________________
ivtv-users mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-users

Reply via email to