Commit df7fa09c authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (10654): em28xx: VideoMate For You USB TV box requires tvaudio

As reported by Vitaly Wool <vital@embeddedalley.com>:

> about half a year ago I posted the patch that basically enabled Compro
> VideoMate For You USB TV box support.
> The main problem is I couldn't get the sound working.
> So I kind of decomposed the box and found out the audio decoder chip
> used there was Philips TDA9874A. As far as I can see, it's not supported
> within the em28xx suite although it is for other TV tuner drivers.

A tvaudio modprobing confirms that tda9874a chip is accessible via i2c:

tvaudio: TV audio decoder + audio/video mux driver
tvaudio: known chips: tda9840, tda9873h, tda9874h/a, tda9850, tda9855, tea6300, tea6320, tea6420, tda8425, pic16c54 (PV951), ta8874z
tvaudio' 1-0058: chip found @ 0xb0
tvaudio' 1-0058: tvaudio': chip_read2: reg254=0x11
tvaudio' 1-0058: tvaudio': chip_read2: reg255=0x2
tvaudio' 1-0058: tda9874a_checkit(): DIC=0x11, SIC=0x2.
tvaudio' 1-0058: found tda9874a.
tvaudio' 1-0058: tda9874h/a found @ 0xb0 (em28xx #0)
tvaudio' 1-0058: tda9874h/a: chip_write: reg0=0x0
tvaudio' 1-0058: tda9874h/a: chip_write: reg1=0xc0
tvaudio' 1-0058: tda9874h/a: chip_write: reg2=0x2
tvaudio' 1-0058: tda9874h/a: chip_write: reg11=0x80
tvaudio' 1-0058: tda9874h/a: chip_write: reg12=0x0
tvaudio' 1-0058: tda9874h/a: chip_write: reg13=0x0
tvaudio' 1-0058: tda9874h/a: chip_write: reg14=0x1
tvaudio' 1-0058: tda9874h/a: chip_write: reg15=0x0
tvaudio' 1-0058: tda9874h/a: chip_write: reg16=0x14
tvaudio' 1-0058: tda9874h/a: chip_write: reg17=0x50
tvaudio' 1-0058: tda9874h/a: chip_write: reg18=0xf9
tvaudio' 1-0058: tda9874h/a: chip_write: reg19=0x80
tvaudio' 1-0058: tda9874h/a: chip_write: reg20=0x80
tvaudio' 1-0058: tda9874h/a: chip_write: reg24=0x80
tvaudio' 1-0058: tda9874h/a: chip_write: reg255=0x0
tvaudio' 1-0058: tda9874a_setup(): A2, B/G [0x00].
tvaudio' 1-0058: tda9874h/a: thread started]

This patch automatically loads tvaudio when needed (currently, only
with this board).
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 50144aee
...@@ -1244,6 +1244,7 @@ struct em28xx_board em28xx_boards[] = { ...@@ -1244,6 +1244,7 @@ struct em28xx_board em28xx_boards[] = {
.tuner_type = TUNER_LG_PAL_NEW_TAPC, .tuner_type = TUNER_LG_PAL_NEW_TAPC,
.tda9887_conf = TDA9887_PRESENT, .tda9887_conf = TDA9887_PRESENT,
.decoder = EM28XX_TVP5150, .decoder = EM28XX_TVP5150,
.adecoder = EM28XX_TVAUDIO,
.input = { { .input = { {
.type = EM28XX_VMUX_TELEVISION, .type = EM28XX_VMUX_TELEVISION,
.vmux = TVP5150_COMPOSITE0, .vmux = TVP5150_COMPOSITE0,
...@@ -1917,6 +1918,8 @@ void em28xx_card_setup(struct em28xx *dev) ...@@ -1917,6 +1918,8 @@ void em28xx_card_setup(struct em28xx *dev)
request_module("tvp5150"); request_module("tvp5150");
if (dev->board.tuner_type != TUNER_ABSENT) if (dev->board.tuner_type != TUNER_ABSENT)
request_module("tuner"); request_module("tuner");
if (dev->board.adecoder == EM28XX_TVAUDIO)
request_module("tvaudio");
#endif #endif
em28xx_config_tuner(dev); em28xx_config_tuner(dev);
......
...@@ -357,6 +357,11 @@ enum em28xx_decoder { ...@@ -357,6 +357,11 @@ enum em28xx_decoder {
EM28XX_SAA711X, EM28XX_SAA711X,
}; };
enum em28xx_adecoder {
EM28XX_NOADECODER = 0,
EM28XX_TVAUDIO,
};
struct em28xx_board { struct em28xx_board {
char *name; char *name;
int vchannels; int vchannels;
...@@ -382,6 +387,7 @@ struct em28xx_board { ...@@ -382,6 +387,7 @@ struct em28xx_board {
unsigned char xclk, i2c_speed; unsigned char xclk, i2c_speed;
enum em28xx_decoder decoder; enum em28xx_decoder decoder;
enum em28xx_adecoder adecoder;
struct em28xx_input input[MAX_EM28XX_INPUT]; struct em28xx_input input[MAX_EM28XX_INPUT];
struct em28xx_input radio; struct em28xx_input radio;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment