Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 17331
b: refs/heads/master
c: 9bb13a6
h: refs/heads/master
i:
  17329: 528427e
  17327: df03007
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Jan 9, 2006
1 parent cf8559f commit c2b675d
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e1bc80adaf801bf75ca176b9c1b60b3cceee1e03
refs/heads/master: 9bb13a6dc3a6f68c990264838ff0493d900c48d7
8 changes: 2 additions & 6 deletions trunk/drivers/media/video/em28xx/em28xx-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
#include <media/tuner.h>
#include <media/audiochip.h>
#include <media/tveeprom.h>
#include <media/v4l2-common.h>
#include "msp3400.h"

#include "em28xx.h"
Expand Down Expand Up @@ -261,7 +262,6 @@ void em28xx_card_setup(struct em28xx *dev)
/* request some modules */
if (dev->model == EM2820_BOARD_HAUPPAUGE_WINTV_USB_2) {
struct tveeprom tv;
struct v4l2_audioout ao;
#ifdef CONFIG_MODULES
request_module("tveeprom");
request_module("ir-kbd-i2c");
Expand All @@ -274,12 +274,8 @@ void em28xx_card_setup(struct em28xx *dev)

dev->tuner_type= tv.tuner_type;
if (tv.audio_processor == AUDIO_CHIP_MSP34XX) {
dev->i2s_speed=2048000;
dev->has_msp34xx=1;
memset (&ao,0,sizeof(ao));

ao.index=2;
ao.mode=V4L2_AUDMODE_32BITS;
em28xx_i2c_call_clients(dev, VIDIOC_S_AUDOUT, &ao);
} else
dev->has_msp34xx=0;
}
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/media/video/em28xx/em28xx-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,8 @@ static void video_mux(struct em28xx *dev, int index)
em28xx_videodbg("Setting input index=%d, vmux=%d, amux=%d\n",index,input,dev->ctl_ainput);

if (dev->has_msp34xx) {
if (dev->i2s_speed)
em28xx_i2c_call_clients(dev, VIDIOC_INT_I2S_CLOCK_FREQ, &dev->i2s_speed);
em28xx_i2c_call_clients(dev, VIDIOC_S_AUDIO, &dev->ctl_ainput);
ainput = EM28XX_AUDIO_SRC_TUNER;
em28xx_audio_source(dev, ainput);
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/media/video/em28xx/em28xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,8 @@ struct em28xx {
unsigned int has_msp34xx:1;
unsigned int has_tda9887:1;

u32 i2s_speed; /* I2S speed for audio digital stream */

enum em28xx_decoder decoder;

int tuner_type; /* type of the tuner */
Expand Down
30 changes: 22 additions & 8 deletions trunk/drivers/media/video/msp3400.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@

#include <linux/videodev.h>
#include <media/audiochip.h>
#include <media/v4l2-common.h>
#include "msp3400.h"

/* ---------------------------------------------------------------------- */
Expand Down Expand Up @@ -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) {
Expand Down
1 change: 0 additions & 1 deletion trunk/include/linux/videodev2.h
Original file line number Diff line number Diff line change
Expand Up @@ -895,7 +895,6 @@ struct v4l2_audio

/* Flags for the 'mode' field */
#define V4L2_AUDMODE_AVL 0x00001
#define V4L2_AUDMODE_32BITS 0x00002

struct v4l2_audioout
{
Expand Down
7 changes: 7 additions & 0 deletions trunk/include/media/v4l2-common.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,11 @@ enum v4l2_chip_ident {
be made. */
#define VIDIOC_INT_G_CHIP_IDENT _IOR ('d', 107, enum v4l2_chip_ident *)

/* Sets I2S speed in bps. This is used to provide a standard way to select I2S
clock used by driving digital audio streams at some board designs.
Usual values for the frequency are 1024000 and 2048000.
If the frequency is not supported, then -EINVAL is returned. */
#define VIDIOC_INT_I2S_CLOCK_FREQ _IOW ('d', 108, u32)


#endif /* V4L2_COMMON_H_ */

0 comments on commit c2b675d

Please sign in to comment.