aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlli Salonen <olli.salonen@iki.fi>2014-08-11 15:58:10 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-09-02 14:03:19 -0400
commit389ce3984b337690ed5124f2379fc8c3f3975c53 (patch)
treee9e60f5dc6febfd48e0860ef75ed4068e24cd411
parent79d0933032d657e8f80e916b14b47b03731d6bea (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.c17
-rw-r--r--drivers/media/dvb-frontends/si2168.h6
-rw-r--r--drivers/media/dvb-frontends/si2168_priv.h1
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 */