]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
[media] si2157: Add support for Si2147-A30 tuner
authorOlli Salonen <olli.salonen@iki.fi>
Thu, 11 Sep 2014 20:01:38 +0000 (17:01 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 23 Sep 2014 19:13:39 +0000 (16:13 -0300)
This patch adds support for Si2147-A30 tuner. Fairly trivial, no firmware needed for this tuner. However, command 14 00 02 07 01 00 seems to be mandatory. On Si2157 and Si2158 the value 0x0100 is the default value, so this patch does not impact the existing tuners/devices. On Si2147 the default is 0x0000 and I can't get a lock with that value.

While here, fix the return length of the previous set command to 4 bytes.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Acked-by: Antti Palosaari <crope@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/tuners/si2157.c
drivers/media/tuners/si2157.h
drivers/media/tuners/si2157_priv.h

index 5901484011b90b29b7fae95684d6cac69722a4e3..cf97142e01e6a34c3ebd30cf6e143c5599dab919 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Silicon Labs Si2157/2158 silicon tuner driver
+ * Silicon Labs Si2147/2157/2158 silicon tuner driver
  *
  * Copyright (C) 2014 Antti Palosaari <crope@iki.fi>
  *
@@ -113,12 +113,14 @@ static int si2157_init(struct dvb_frontend *fe)
 
        #define SI2158_A20 ('A' << 24 | 58 << 16 | '2' << 8 | '0' << 0)
        #define SI2157_A30 ('A' << 24 | 57 << 16 | '3' << 8 | '0' << 0)
+       #define SI2147_A30 ('A' << 24 | 47 << 16 | '3' << 8 | '0' << 0)
 
        switch (chip_id) {
        case SI2158_A20:
                fw_file = SI2158_A20_FIRMWARE;
                break;
        case SI2157_A30:
+       case SI2147_A30:
                goto skip_fw_download;
                break;
        default:
@@ -265,7 +267,14 @@ static int si2157_set_params(struct dvb_frontend *fe)
        if (s->inversion)
                cmd.args[5] = 0x01;
        cmd.wlen = 6;
-       cmd.rlen = 1;
+       cmd.rlen = 4;
+       ret = si2157_cmd_execute(s, &cmd);
+       if (ret)
+               goto err;
+
+       memcpy(cmd.args, "\x14\x00\x02\x07\x01\x00", 6);
+       cmd.wlen = 6;
+       cmd.rlen = 4;
        ret = si2157_cmd_execute(s, &cmd);
        if (ret)
                goto err;
index 6da4d5d1c8178b25ad5e3965e5a90b06dbd2865f..d3b19cadb4a16d04fa83fbafd7e483514bfc6e1e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Silicon Labs Si2157/2158 silicon tuner driver
+ * Silicon Labs Si2147/2157/2158 silicon tuner driver
  *
  * Copyright (C) 2014 Antti Palosaari <crope@iki.fi>
  *
index 4080a57962f012474d3733c9059d4af365ae9e85..e71ffafed951b804f7a272a5ecc12795e86f30d5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Silicon Labs Si2157/2158 silicon tuner driver
+ * Silicon Labs Si2147/2157/2158 silicon tuner driver
  *
  * Copyright (C) 2014 Antti Palosaari <crope@iki.fi>
  *