[media] si2168: add ts_mode setting and move to si2168_init
authorOlli Salonen <olli.salonen@iki.fi>
Mon, 11 Aug 2014 19:58:10 +0000 (16:58 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 2 Sep 2014 18:03:19 +0000 (15:03 -0300)
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>
drivers/media/dvb-frontends/si2168.c
drivers/media/dvb-frontends/si2168.h
drivers/media/dvb-frontends/si2168_priv.h

index 59a4218..97614db 100644 (file)
@@ -296,13 +296,6 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
        if (ret)
                goto err;
 
-       memcpy(cmd.args, "\x14\x00\x01\x10\x16\x00", 6);
-       cmd.wlen = 6;
-       cmd.rlen = 4;
-       ret = si2168_cmd_execute(s, &cmd);
-       if (ret)
-               goto err;
-
        memcpy(cmd.args, "\x14\x00\x09\x10\xe3\x18", 6);
        cmd.wlen = 6;
        cmd.rlen = 4;
@@ -464,6 +457,15 @@ static int si2168_init(struct dvb_frontend *fe)
        dev_info(&s->client->dev, "found a '%s' in warm state\n",
                        si2168_ops.info.name);
 
+       /* set ts mode */
+       memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6);
+       cmd.args[4] |= s->ts_mode;
+       cmd.wlen = 6;
+       cmd.rlen = 4;
+       ret = si2168_cmd_execute(s, &cmd);
+       if (ret)
+               goto err;
+
        s->active = true;
 
        return 0;
@@ -630,6 +632,7 @@ static int si2168_probe(struct i2c_client *client,
 
        *config->i2c_adapter = s->adapter;
        *config->fe = &s->fe;
+       s->ts_mode = config->ts_mode;
 
        i2c_set_clientdata(client, s);
 
index 3c5b5ab..e086d67 100644 (file)
@@ -34,6 +34,12 @@ struct si2168_config {
         * returned by driver
         */
        struct i2c_adapter **i2c_adapter;
+
+       /* TS mode */
+       u8 ts_mode;
 };
 
+#define SI2168_TS_PARALLEL     0x06
+#define SI2168_TS_SERIAL       0x03
+
 #endif
index ebbf502..0f83284 100644 (file)
@@ -36,6 +36,7 @@ struct si2168 {
        fe_delivery_system_t delivery_system;
        fe_status_t fe_status;
        bool active;
+       u8 ts_mode;
 };
 
 /* firmare command struct */