aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/pvrusb2/pvrusb2-hdw.c
diff options
context:
space:
mode:
authorMike Isely <isely@pobox.com>2009-03-07 00:48:09 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-03-30 12:43:35 -0300
commit01c59df818001b0bd3a31e2301a92a8c73bccbce (patch)
treee14e94b71dcbcfdca784cdf5a37a41224a3b2b79 /drivers/media/video/pvrusb2/pvrusb2-hdw.c
parent6f9565120f5c2944b3d31daf03a07c272e12867b (diff)
downloadkernel_samsung_smdk4412-01c59df818001b0bd3a31e2301a92a8c73bccbce.zip
kernel_samsung_smdk4412-01c59df818001b0bd3a31e2301a92a8c73bccbce.tar.gz
kernel_samsung_smdk4412-01c59df818001b0bd3a31e2301a92a8c73bccbce.tar.bz2
V4L/DVB (11178): pvrusb2: Make audio sample rate update into a sub-device broadcast
The pvrusb2 driver had previously been using i2c module specific calls to set the sample rate (a long long time ago this was needed). These days it is safe to use a broadcast so let's just broadcast this when communicating audio sample rate to sub-devices. Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/pvrusb2/pvrusb2-hdw.c')
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index e92ea6a..8a96f26 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -2983,6 +2983,26 @@ static void pvr2_subdev_update(struct pvr2_hdw *hdw)
v4l2_device_call_all(&hdw->v4l2_dev, 0, video, s_fmt, &fmt);
}
+ if (hdw->srate_dirty) {
+ u32 val;
+ pvr2_trace(PVR2_TRACE_CHIPS, "subdev v4l2 set_audio %d",
+ hdw->srate_val);
+ switch (hdw->srate_val) {
+ default:
+ case V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000:
+ val = 48000;
+ break;
+ case V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100:
+ val = 44100;
+ break;
+ case V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000:
+ val = 32000;
+ break;
+ }
+ v4l2_device_call_all(&hdw->v4l2_dev, 0,
+ audio, s_clock_freq, val);
+ }
+
/* Unable to set crop parameters; there is apparently no equivalent
for VIDIOC_S_CROP */