media: si2168: Add spectrum inversion property
authorBrad Love <brad@nextdimension.cc>
Wed, 17 Jan 2018 22:31:58 +0000 (17:31 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Mar 2018 12:40:14 +0000 (07:40 -0500)
Some tuners produce inverted spectrum, but the si2168 is not
currently set up to accept it. This adds an optional parameter
to set the frontend up to receive inverted spectrum.

Parameter is optional and only boards who enable inversion
will utilize this.

Signed-off-by: Brad Love <brad@nextdimension.cc>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-frontends/si2168.c
drivers/media/dvb-frontends/si2168.h
drivers/media/dvb-frontends/si2168_priv.h

index c1a638c8565d8e311798c310aafe549edeeac8ce..282dc92cb1028cb9ab09c511178d14130ec0e8f8 100644 (file)
@@ -339,6 +339,8 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
 
        memcpy(cmd.args, "\x14\x00\x0a\x10\x00\x00", 6);
        cmd.args[4] = delivery_system | bandwidth;
+       if (dev->spectral_inversion)
+               cmd.args[5] |= 1;
        cmd.wlen = 6;
        cmd.rlen = 4;
        ret = si2168_cmd_execute(client, &cmd);
@@ -798,6 +800,7 @@ static int si2168_probe(struct i2c_client *client,
        dev->ts_mode = config->ts_mode;
        dev->ts_clock_inv = config->ts_clock_inv;
        dev->ts_clock_gapped = config->ts_clock_gapped;
+       dev->spectral_inversion = config->spectral_inversion;
 
        dev_info(&client->dev, "Silicon Labs Si2168-%c%d%d successfully identified\n",
                 dev->version >> 24 & 0xff, dev->version >> 16 & 0xff,
index f48f0fb0ad697d7124c9f9b60e8a57e10f1ef4bb..d519edd26c216c16722dac109ecc95013cb90de8 100644 (file)
@@ -46,6 +46,9 @@ struct si2168_config {
 
        /* TS clock gapped */
        bool ts_clock_gapped;
+
+       /* Inverted spectrum */
+       bool spectral_inversion;
 };
 
 #endif
index 3c8746a2003810ab0951a26ba518c58b1a7c373f..2d362e162aded7bf4b32ea5b0a873ea9f3512eaa 100644 (file)
@@ -48,6 +48,7 @@ struct si2168_dev {
        u8 ts_mode;
        bool ts_clock_inv;
        bool ts_clock_gapped;
+       bool spectral_inversion;
 };
 
 /* firmware command struct */