diff options
author | Olli Salonen <olli.salonen@iki.fi> | 2014-08-11 15:58:10 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-09-02 14:03:19 -0400 |
commit | 389ce3984b337690ed5124f2379fc8c3f3975c53 (patch) | |
tree | e9e60f5dc6febfd48e0860ef75ed4068e24cd411 | |
parent | 79d0933032d657e8f80e916b14b47b03731d6bea (diff) |
[media] si2168: add ts_mode setting and move to si2168_init
Luis Alves submitted a TS mode patch to si2168 earlier, but the
patch was rejected due to a small issue. Here is a working version.
Also, setting of TS mode is moved from si2168_set_frontend to
si2168_init.
This patch adds the TS mode as a config option for the si2168 demod:
- ts_mode added to config struct.
- Possible (interesting) values are
* Parallel mode = 0x06
* Serial mode = 0x03
Currently the modules using this demod only use parallel mode.
Patches for these modules later in this patch series.
Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
-rw-r--r-- | drivers/media/dvb-frontends/si2168.c | 17 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/si2168.h | 6 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/si2168_priv.h | 1 |
3 files changed, 17 insertions, 7 deletions
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c index 59a4218459da..97614db4d9b3 100644 --- a/drivers/media/dvb-frontends/si2168.c +++ b/drivers/media/dvb-frontends/si2168.c | |||
@@ -296,13 +296,6 @@ static int si2168_set_frontend(struct dvb_frontend *fe) | |||
296 | if (ret) | 296 | if (ret) |
297 | goto err; | 297 | goto err; |
298 | 298 | ||
299 | memcpy(cmd.args, "\x14\x00\x01\x10\x16\x00", 6); | ||
300 | cmd.wlen = 6; | ||
301 | cmd.rlen = 4; | ||
302 | ret = si2168_cmd_execute(s, &cmd); | ||
303 | if (ret) | ||
304 | goto err; | ||
305 | |||
306 | memcpy(cmd.args, "\x14\x00\x09\x10\xe3\x18", 6); | 299 | memcpy(cmd.args, "\x14\x00\x09\x10\xe3\x18", 6); |
307 | cmd.wlen = 6; | 300 | cmd.wlen = 6; |
308 | cmd.rlen = 4; | 301 | cmd.rlen = 4; |
@@ -464,6 +457,15 @@ static int si2168_init(struct dvb_frontend *fe) | |||
464 | dev_info(&s->client->dev, "found a '%s' in warm state\n", | 457 | dev_info(&s->client->dev, "found a '%s' in warm state\n", |
465 | si2168_ops.info.name); | 458 | si2168_ops.info.name); |
466 | 459 | ||
460 | /* set ts mode */ | ||
461 | memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6); | ||
462 | cmd.args[4] |= s->ts_mode; | ||
463 | cmd.wlen = 6; | ||
464 | cmd.rlen = 4; | ||
465 | ret = si2168_cmd_execute(s, &cmd); | ||
466 | if (ret) | ||
467 | goto err; | ||
468 | |||
467 | s->active = true; | 469 | s->active = true; |
468 | 470 | ||
469 | return 0; | 471 | return 0; |
@@ -630,6 +632,7 @@ static int si2168_probe(struct i2c_client *client, | |||
630 | 632 | ||
631 | *config->i2c_adapter = s->adapter; | 633 | *config->i2c_adapter = s->adapter; |
632 | *config->fe = &s->fe; | 634 | *config->fe = &s->fe; |
635 | s->ts_mode = config->ts_mode; | ||
633 | 636 | ||
634 | i2c_set_clientdata(client, s); | 637 | i2c_set_clientdata(client, s); |
635 | 638 | ||
diff --git a/drivers/media/dvb-frontends/si2168.h b/drivers/media/dvb-frontends/si2168.h index 3c5b5ab01796..e086d6719451 100644 --- a/drivers/media/dvb-frontends/si2168.h +++ b/drivers/media/dvb-frontends/si2168.h | |||
@@ -34,6 +34,12 @@ struct si2168_config { | |||
34 | * returned by driver | 34 | * returned by driver |
35 | */ | 35 | */ |
36 | struct i2c_adapter **i2c_adapter; | 36 | struct i2c_adapter **i2c_adapter; |
37 | |||
38 | /* TS mode */ | ||
39 | u8 ts_mode; | ||
37 | }; | 40 | }; |
38 | 41 | ||
42 | #define SI2168_TS_PARALLEL 0x06 | ||
43 | #define SI2168_TS_SERIAL 0x03 | ||
44 | |||
39 | #endif | 45 | #endif |
diff --git a/drivers/media/dvb-frontends/si2168_priv.h b/drivers/media/dvb-frontends/si2168_priv.h index ebbf502ec313..0f832844b831 100644 --- a/drivers/media/dvb-frontends/si2168_priv.h +++ b/drivers/media/dvb-frontends/si2168_priv.h | |||
@@ -36,6 +36,7 @@ struct si2168 { | |||
36 | fe_delivery_system_t delivery_system; | 36 | fe_delivery_system_t delivery_system; |
37 | fe_status_t fe_status; | 37 | fe_status_t fe_status; |
38 | bool active; | 38 | bool active; |
39 | u8 ts_mode; | ||
39 | }; | 40 | }; |
40 | 41 | ||
41 | /* firmare command struct */ | 42 | /* firmare command struct */ |