diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-03 15:48:49 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-12-29 05:16:28 -0500 |
commit | 7572f9c5575c721f43b575a71fda1ecd896e0327 (patch) | |
tree | daf8a4b2dde8a319bb4bf44ef59685a2ffcfd6ab /drivers/media/dvb/frontends/mb86a20s.c | |
parent | 55fa288deca4b17e539ba49a9b0d0ed474afa6f8 (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.c | 18 |
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 | ||
52 | struct regdata { | 48 | struct 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 | ||