git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to kernel-2.6.20-1.2949.fc6.vs2.2.0.1
[linux-2.6.git]
/
drivers
/
media
/
video
/
cx88
/
cx88-tvaudio.c
diff --git
a/drivers/media/video/cx88/cx88-tvaudio.c
b/drivers/media/video/cx88/cx88-tvaudio.c
index
da8d97c
..
2bd84d3
100644
(file)
--- a/
drivers/media/video/cx88/cx88-tvaudio.c
+++ b/
drivers/media/video/cx88/cx88-tvaudio.c
@@
-38,6
+38,7
@@
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/errno.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/errno.h>
+#include <linux/freezer.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mm.h>
@@
-137,22
+138,12
@@
static void set_audio_finish(struct cx88_core *core, u32 ctl)
{
u32 volume;
{
u32 volume;
-#ifndef USING_CX88_ALSA
/* restart dma; This avoids buzz in NICAM and is good in others */
cx88_stop_audio_dma(core);
/* restart dma; This avoids buzz in NICAM and is good in others */
cx88_stop_audio_dma(core);
-#endif
cx_write(AUD_RATE_THRES_DMD, 0x000000C0);
cx_write(AUD_RATE_THRES_DMD, 0x000000C0);
-#ifndef USING_CX88_ALSA
cx88_start_audio_dma(core);
cx88_start_audio_dma(core);
-#endif
-
- if (cx88_boards[core->board].blackbird) {
- /* sets sound input from external adc */
- if (core->board == CX88_BOARD_HAUPPAUGE_ROSLYN)
- cx_clear(AUD_CTL, EN_I2SIN_ENABLE);
- else
- cx_set(AUD_CTL, EN_I2SIN_ENABLE);
+ if (cx88_boards[core->board].mpeg & CX88_MPEG_BLACKBIRD) {
cx_write(AUD_I2SINPUTCNTL, 4);
cx_write(AUD_BAUDRATE, 1);
/* 'pass-thru mode': this enables the i2s output to the mpeg encoder */
cx_write(AUD_I2SINPUTCNTL, 4);
cx_write(AUD_BAUDRATE, 1);
/* 'pass-thru mode': this enables the i2s output to the mpeg encoder */
@@
-161,7
+152,7
@@
static void set_audio_finish(struct cx88_core *core, u32 ctl)
cx_write(AUD_I2SCNTL, 0);
/* cx_write(AUD_APB_IN_RATE_ADJ, 0); */
}
cx_write(AUD_I2SCNTL, 0);
/* cx_write(AUD_APB_IN_RATE_ADJ, 0); */
}
- if ((always_analog) || (!
cx88_boards[core->board].blackbird
)) {
+ if ((always_analog) || (!
(cx88_boards[core->board].mpeg & CX88_MPEG_BLACKBIRD)
)) {
ctl |= EN_DAC_ENABLE;
cx_write(AUD_CTL, ctl);
}
ctl |= EN_DAC_ENABLE;
cx_write(AUD_CTL, ctl);
}
@@
-718,7
+709,7
@@
static void set_audio_standard_FM(struct cx88_core *core,
/* ----------------------------------------------------------- */
/* ----------------------------------------------------------- */
-int cx88_detect_nicam(struct cx88_core *core)
+
static
int cx88_detect_nicam(struct cx88_core *core)
{
int i, j = 0;
{
int i, j = 0;
@@
-885,6
+876,7
@@
void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual)
set_audio_standard_BTSC(core, 1, EN_BTSC_FORCE_SAP);
break;
case V4L2_TUNER_MODE_STEREO:
set_audio_standard_BTSC(core, 1, EN_BTSC_FORCE_SAP);
break;
case V4L2_TUNER_MODE_STEREO:
+ case V4L2_TUNER_MODE_LANG1_LANG2:
set_audio_standard_BTSC(core, 0, EN_BTSC_FORCE_STEREO);
break;
}
set_audio_standard_BTSC(core, 0, EN_BTSC_FORCE_STEREO);
break;
}
@@
-905,6
+897,7
@@
void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual)
EN_NICAM_FORCE_MONO2);
break;
case V4L2_TUNER_MODE_STEREO:
EN_NICAM_FORCE_MONO2);
break;
case V4L2_TUNER_MODE_STEREO:
+ case V4L2_TUNER_MODE_LANG1_LANG2:
set_audio_standard_NICAM(core,
EN_NICAM_FORCE_STEREO);
break;
set_audio_standard_NICAM(core,
EN_NICAM_FORCE_STEREO);
break;
@@
-926,6
+919,7
@@
void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual)
EN_A2_FORCE_MONO2);
break;
case V4L2_TUNER_MODE_STEREO:
EN_A2_FORCE_MONO2);
break;
case V4L2_TUNER_MODE_STEREO:
+ case V4L2_TUNER_MODE_LANG1_LANG2:
set_audio_standard_A2(core,
EN_A2_FORCE_STEREO);
break;
set_audio_standard_A2(core,
EN_A2_FORCE_STEREO);
break;
@@
-968,6
+962,7
@@
int cx88_audio_thread(void *data)
msleep_interruptible(1000);
if (kthread_should_stop())
break;
msleep_interruptible(1000);
if (kthread_should_stop())
break;
+ try_to_freeze();
/* just monitor the audio status for now ... */
memset(&t, 0, sizeof(t));
/* just monitor the audio status for now ... */
memset(&t, 0, sizeof(t));