summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/cx18
diff options
context:
space:
mode:
authorAndy Walls <awalls@radix.net>2009-01-30 20:48:40 -0500
committerAndy Walls <awalls@radix.net>2009-01-30 20:48:40 -0500
commita5bbba89bd5698bdbde479d385a44a7b9bdecb70 (patch)
tree034154d8761d50b72ad7bc48ed7b15d052ba4c6e /linux/drivers/media/video/cx18
parentbb9067ce37544bf82eebcee5ce959dcef1720113 (diff)
downloadmediapointer-dvb-s2-a5bbba89bd5698bdbde479d385a44a7b9bdecb70.tar.gz
mediapointer-dvb-s2-a5bbba89bd5698bdbde479d385a44a7b9bdecb70.tar.bz2
cx18: Normalize APU after second APU firmware load
From: Andy Walls <awalls@radix.net> Priority: normal Signed-off-by: Andy Walls <awalls@radix.net>
Diffstat (limited to 'linux/drivers/media/video/cx18')
-rw-r--r--linux/drivers/media/video/cx18/cx18-driver.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/linux/drivers/media/video/cx18/cx18-driver.c b/linux/drivers/media/video/cx18/cx18-driver.c
index fe2324ef2..f48d18f69 100644
--- a/linux/drivers/media/video/cx18/cx18-driver.c
+++ b/linux/drivers/media/video/cx18/cx18-driver.c
@@ -1085,6 +1085,19 @@ int cx18_init_on_first_open(struct cx18 *cx)
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;
vf.frequency = 6400; /* the tuner 'baseline' frequency */