[media] dvb-frontends/cxd2841er: support CXD2837/38/43ER demods/Chip IDs
authorDaniel Scheller <d.scheller@gmx.net>
Sun, 9 Apr 2017 19:38:13 +0000 (16:38 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 20 Jun 2017 12:40:55 +0000 (09:40 -0300)
Those demods are programmed in the same way as the CXD2841ER/54ER and can
be handled by this driver. Support added in a way matching the existing
code, supported delivery systems are set according to what each demod
supports.

Updates the type string setting used for printing the "attaching..." log
line aswell.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Acked-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-frontends/cxd2841er.c
drivers/media/dvb-frontends/cxd2841er_priv.h

index 7d6b82eaeebf32e0027c9592e8a79793b9aadd61..309c9026a405157b376e7934afaba0891b628b8d 100644 (file)
@@ -3733,16 +3733,39 @@ static struct dvb_frontend *cxd2841er_attach(struct cxd2841er_config *cfg,
                priv->i2c_addr_slvx, priv->i2c_addr_slvt);
        chip_id = cxd2841er_chip_id(priv);
        switch (chip_id) {
+       case CXD2837ER_CHIP_ID:
+               snprintf(cxd2841er_t_c_ops.info.name, 128,
+                               "Sony CXD2837ER DVB-T/T2/C demodulator");
+               name = "CXD2837ER";
+               type = "C/T/T2";
+               break;
+       case CXD2838ER_CHIP_ID:
+               snprintf(cxd2841er_t_c_ops.info.name, 128,
+                               "Sony CXD2838ER ISDB-T demodulator");
+               cxd2841er_t_c_ops.delsys[0] = SYS_ISDBT;
+               cxd2841er_t_c_ops.delsys[1] = SYS_UNDEFINED;
+               cxd2841er_t_c_ops.delsys[2] = SYS_UNDEFINED;
+               name = "CXD2838ER";
+               type = "ISDB-T";
+               break;
        case CXD2841ER_CHIP_ID:
                snprintf(cxd2841er_t_c_ops.info.name, 128,
                                "Sony CXD2841ER DVB-T/T2/C demodulator");
                name = "CXD2841ER";
+               type = "T/T2/C/ISDB-T";
+               break;
+       case CXD2843ER_CHIP_ID:
+               snprintf(cxd2841er_t_c_ops.info.name, 128,
+                               "Sony CXD2843ER DVB-T/T2/C/C2 demodulator");
+               name = "CXD2843ER";
+               type = "C/C2/T/T2";
                break;
        case CXD2854ER_CHIP_ID:
                snprintf(cxd2841er_t_c_ops.info.name, 128,
                                "Sony CXD2854ER DVB-T/T2/C and ISDB-T demodulator");
                cxd2841er_t_c_ops.delsys[3] = SYS_ISDBT;
                name = "CXD2854ER";
+               type = "C/C2/T/T2/ISDB-T";
                break;
        default:
                dev_err(&priv->i2c->dev, "%s(): invalid chip ID 0x%02x\n",
@@ -3762,7 +3785,6 @@ static struct dvb_frontend *cxd2841er_attach(struct cxd2841er_config *cfg,
                memcpy(&priv->frontend.ops,
                        &cxd2841er_t_c_ops,
                        sizeof(struct dvb_frontend_ops));
-               type = "T/T2/C/ISDB-T";
        }
 
        dev_info(&priv->i2c->dev,
index 0bbce451149f71d5957cfb414c4e815765e61f44..6a7126480889ab111083e540cddd755533a62a97 100644 (file)
 #define I2C_SLVX                       0
 #define I2C_SLVT                       1
 
+#define CXD2837ER_CHIP_ID              0xb1
+#define CXD2838ER_CHIP_ID              0xb0
 #define CXD2841ER_CHIP_ID              0xa7
+#define CXD2843ER_CHIP_ID              0xa4
 #define CXD2854ER_CHIP_ID              0xc1
 
 #define CXD2841ER_DVBS_POLLING_INVL    10