summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/msp3400.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@brturbo.com.br>2006-01-09 15:25:37 -0200
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>2006-01-09 15:25:37 -0200
commit9bb13a6dc3a6f68c990264838ff0493d900c48d7 (patch)
tree274f9dfdcbbbff9f7a382df772a6f2efa9247cc7 /drivers/media/video/msp3400.c
parente1bc80adaf801bf75ca176b9c1b60b3cceee1e03 (diff)
V4L/DVB (3233): Fixed API to set I2S speed control
- Created a new ioctl to control I2S speed. Old calls to an inadequate V4L2 API replaced. Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Diffstat (limited to 'drivers/media/video/msp3400.c')
-rw-r--r--drivers/media/video/msp3400.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/drivers/media/video/msp3400.c b/drivers/media/video/msp3400.c
index fd058935282..11235c1ac5c 100644
--- a/drivers/media/video/msp3400.c
+++ b/drivers/media/video/msp3400.c
@@ -54,6 +54,7 @@
#include <linux/videodev.h>
#include <media/audiochip.h>
+#include <media/v4l2-common.h>
#include "msp3400.h"
/* ---------------------------------------------------------------------- */
@@ -2104,23 +2105,36 @@ static int msp_command(struct i2c_client *client, unsigned int cmd, void *arg)
if (a->index<0||a->index>2)
return -EINVAL;
- if (a->index==2) {
- if (a->mode == V4L2_AUDMODE_32BITS)
- msp->i2s_mode=1;
- else
- msp->i2s_mode=0;
- }
- msp3400_dbg("Setting audio out on msp34xx to input %i, mode %i\n",a->index,msp->i2s_mode);
+ msp3400_dbg("Setting audio out on msp34xx to input %i\n",a->index);
msp3400c_set_scart(client,msp->in_scart,a->index+1);
break;
}
+ case VIDIOC_INT_I2S_CLOCK_FREQ:
+ {
+ u32 *a=(u32 *)arg;
+
+ msp3400_dbg("Setting I2S speed to %d\n",*a);
+
+ switch (*a) {
+ case 1024000:
+ msp->i2s_mode=0;
+ break;
+ case 2048000:
+ msp->i2s_mode=1;
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ }
+
case VIDIOC_QUERYCTRL:
{
struct v4l2_queryctrl *qc = arg;
int i;
- msp3400_dbg("VIDIOC_QUERYCTRL");
+ msp3400_dbg("VIDIOC_QUERYCTRL\n");
for (i = 0; i < ARRAY_SIZE(msp34xx_qctrl); i++)
if (qc->id && qc->id == msp34xx_qctrl[i].id) {