diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-03 23:48:49 +0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-12-29 13:16:28 +0300 |
commit | 7572f9c5575c721f43b575a71fda1ecd896e0327 (patch) | |
tree | daf8a4b2dde8a319bb4bf44ef59685a2ffcfd6ab /drivers/media | |
parent | 55fa288deca4b17e539ba49a9b0d0ed474afa6f8 (diff) | |
download | linux-7572f9c5575c721f43b575a71fda1ecd896e0327.tar.xz |
[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')
-rw-r--r-- | drivers/media/dvb/frontends/mb86a20s.c | 18 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/mb86a20s.h | 1 | ||||
-rw-r--r-- | drivers/media/video/cx231xx/cx231xx-dvb.c | 1 |
3 files changed, 15 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 { const struct mb86a20s_config *config; struct dvb_frontend frontend; - - - - }; struct regdata { @@ -175,7 +171,7 @@ static struct regdata mb86a20s_init[] = { { 0x45, 0x04 }, { 0x48, 0x04 }, { 0x50, 0xd5 }, - { 0x51, 0x01 }, + { 0x51, 0x01 }, /* Serial */ { 0x50, 0xd6 }, { 0x51, 0x1f }, { 0x50, 0xd2 }, @@ -376,6 +372,7 @@ static int mb86a20s_initfe(struct dvb_frontend *fe) { struct mb86a20s_state *state = fe->demodulator_priv; int rc; + u8 regD5 = 1; dprintk("\n"); @@ -384,6 +381,17 @@ static int mb86a20s_initfe(struct dvb_frontend *fe) if (rc < 0) return rc; + if (!state->config->is_serial) { + regD5 &= ~1; + + rc = mb86a20s_writereg(state, 0x50, 0xd5); + if (rc < 0) + return rc; + rc = mb86a20s_writereg(state, 0x51, regD5); + if (rc < 0) + return rc; + } + return 0; } diff --git a/drivers/media/dvb/frontends/mb86a20s.h b/drivers/media/dvb/frontends/mb86a20s.h index e3461983a831..bf22e77888b9 100644 --- a/drivers/media/dvb/frontends/mb86a20s.h +++ b/drivers/media/dvb/frontends/mb86a20s.h @@ -26,6 +26,7 @@ struct mb86a20s_config { u8 demod_address; + bool is_serial; }; #if defined(CONFIG_DVB_MB86A20S) || (defined(CONFIG_DVB_MB86A20S_MODULE) \ diff --git a/drivers/media/video/cx231xx/cx231xx-dvb.c b/drivers/media/video/cx231xx/cx231xx-dvb.c index b55e7e0bc245..fe59a1c3f064 100644 --- a/drivers/media/video/cx231xx/cx231xx-dvb.c +++ b/drivers/media/video/cx231xx/cx231xx-dvb.c @@ -143,6 +143,7 @@ static struct tda18271_config hcw_tda18271_config = { static const struct mb86a20s_config pv_mb86a20s_config = { .demod_address = 0x10, + .is_serial = true, }; static struct tda18271_config pv_tda18271_config = { |