aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/mb86a20s.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2010-10-03 15:48:49 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-12-29 05:16:28 -0500
commit7572f9c5575c721f43b575a71fda1ecd896e0327 (patch)
treedaf8a4b2dde8a319bb4bf44ef59685a2ffcfd6ab /drivers/media/dvb/frontends/mb86a20s.c
parent55fa288deca4b17e539ba49a9b0d0ed474afa6f8 (diff)
[media] mb86a20s: add support for serial streams
By comparing the traffic between Pixelview (cx23102-based and Kworld (saa7134-based), the only difference is at register 0xd5. After some tests, It seems that it is used to change mode between serial and parallel. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/mb86a20s.c')
-rw-r--r--drivers/media/dvb/frontends/mb86a20s.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/media/dvb/frontends/mb86a20s.c b/drivers/media/dvb/frontends/mb86a20s.c
index 1e6bec6aa0f9..b4de8f12df27 100644
--- a/drivers/media/dvb/frontends/mb86a20s.c
+++ b/drivers/media/dvb/frontends/mb86a20s.c
@@ -43,10 +43,6 @@ struct mb86a20s_state {
43 const struct mb86a20s_config *config; 43 const struct mb86a20s_config *config;
44 44
45 struct dvb_frontend frontend; 45 struct dvb_frontend frontend;
46
47
48
49
50}; 46};
51 47
52struct regdata { 48struct regdata {
@@ -175,7 +171,7 @@ static struct regdata mb86a20s_init[] = {
175 { 0x45, 0x04 }, 171 { 0x45, 0x04 },
176 { 0x48, 0x04 }, 172 { 0x48, 0x04 },
177 { 0x50, 0xd5 }, 173 { 0x50, 0xd5 },
178 { 0x51, 0x01 }, 174 { 0x51, 0x01 }, /* Serial */
179 { 0x50, 0xd6 }, 175 { 0x50, 0xd6 },
180 { 0x51, 0x1f }, 176 { 0x51, 0x1f },
181 { 0x50, 0xd2 }, 177 { 0x50, 0xd2 },
@@ -376,6 +372,7 @@ static int mb86a20s_initfe(struct dvb_frontend *fe)
376{ 372{
377 struct mb86a20s_state *state = fe->demodulator_priv; 373 struct mb86a20s_state *state = fe->demodulator_priv;
378 int rc; 374 int rc;
375 u8 regD5 = 1;
379 376
380 dprintk("\n"); 377 dprintk("\n");
381 378
@@ -384,6 +381,17 @@ static int mb86a20s_initfe(struct dvb_frontend *fe)
384 if (rc < 0) 381 if (rc < 0)
385 return rc; 382 return rc;
386 383
384 if (!state->config->is_serial) {
385 regD5 &= ~1;
386
387 rc = mb86a20s_writereg(state, 0x50, 0xd5);
388 if (rc < 0)
389 return rc;
390 rc = mb86a20s_writereg(state, 0x51, regD5);
391 if (rc < 0)
392 return rc;
393 }
394
387 return 0; 395 return 0;
388} 396}
389 397