The patch number 10453 was added via Antti Palosaari <cr...@iki.fi>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        Linux Media Mailing List <linux-me...@vger.kernel.org>

------

From: Jochen Friedrich  <joc...@scram.de>
af9015: add MC44S803 support


Add MC44S803 support to AF9015 driver.

Priority: normal

Signed-off-by: Jochen Friedrich <joc...@scram.de>
Signed-off-by: Antti Palosaari <cr...@iki.fi>


---

 linux/drivers/media/dvb/dvb-usb/Kconfig  |    1 
 linux/drivers/media/dvb/dvb-usb/af9015.c |   40 +++++++++++++++--------
 2 files changed, 28 insertions(+), 13 deletions(-)

diff -r 94cef01c0e8c -r 2897893ebd11 linux/drivers/media/dvb/dvb-usb/Kconfig
--- a/linux/drivers/media/dvb/dvb-usb/Kconfig   Mon Feb 02 19:50:09 2009 +0200
+++ b/linux/drivers/media/dvb/dvb-usb/Kconfig   Mon Feb 02 19:59:50 2009 +0200
@@ -297,5 +297,6 @@ config DVB_USB_AF9015
        select MEDIA_TUNER_QT1010   if !MEDIA_TUNER_CUSTOMIZE
        select MEDIA_TUNER_TDA18271 if !MEDIA_TUNER_CUSTOMIZE
        select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMIZE
+       select MEDIA_TUNER_MC44S803 if !MEDIA_TUNER_CUSTOMISE
        help
          Say Y here to support the Afatech AF9015 based DVB-T USB2.0 receiver
diff -r 94cef01c0e8c -r 2897893ebd11 linux/drivers/media/dvb/dvb-usb/af9015.c
--- a/linux/drivers/media/dvb/dvb-usb/af9015.c  Mon Feb 02 19:50:09 2009 +0200
+++ b/linux/drivers/media/dvb/dvb-usb/af9015.c  Mon Feb 02 19:59:50 2009 +0200
@@ -27,9 +27,7 @@
 #include "qt1010.h"
 #include "tda18271.h"
 #include "mxl5005s.h"
-#if 0 /* keep */
-#include "mc44s80x.h"
-#endif
+#include "mc44s803.h"
 
 static int dvb_usb_af9015_debug;
 module_param_named(debug, dvb_usb_af9015_debug, int, 0644);
@@ -280,6 +278,21 @@ Due to that the only way to select corre
                        req.data = &msg[i+1].buf[0];
                        ret = af9015_ctrl_msg(d, &req);
                        i += 2;
+               } else if (msg[i].flags & I2C_M_RD) {
+                       ret = -EINVAL;
+                       if (msg[i].addr ==
+                               af9015_af9013_config[0].demod_address)
+                               goto error;
+                       else
+                               req.cmd = READ_I2C;
+                       req.i2c_addr = msg[i].addr;
+                       req.addr = addr;
+                       req.mbox = mbox;
+                       req.addr_len = addr_len;
+                       req.data_len = msg[i].len;
+                       req.data = &msg[i].buf[0];
+                       ret = af9015_ctrl_msg(d, &req);
+                       i += 1;
                } else {
                        if (msg[i].addr ==
                                af9015_af9013_config[0].demod_address)
@@ -942,7 +955,6 @@ static int af9015_read_config(struct usb
                switch (val) {
                case AF9013_TUNER_ENV77H11D5:
                case AF9013_TUNER_MT2060:
-               case AF9013_TUNER_MC44S803:
                case AF9013_TUNER_QT1010:
                case AF9013_TUNER_UNKNOWN:
                case AF9013_TUNER_MT2060_2:
@@ -954,6 +966,10 @@ static int af9015_read_config(struct usb
                case AF9013_TUNER_MXL5005D:
                case AF9013_TUNER_MXL5005R:
                        af9015_af9013_config[i].rf_spec_inv = 0;
+                       break;
+               case AF9013_TUNER_MC44S803:
+                       af9015_af9013_config[i].gpio[1] = AF9013_GPIO_LO;
+                       af9015_af9013_config[i].rf_spec_inv = 1;
                        break;
                default:
                        warn("tuner id:%d not supported, please report!", val);
@@ -1140,6 +1156,11 @@ static struct mxl5005s_config af9015_mxl
        .mod_mode        = MXL_DIGITAL_MODE,
        .if_mode         = MXL_ZERO_IF,
        .AgcMasterByte   = 0x00,
+};
+
+static struct mc44s803_config af9015_mc44s803_config = {
+       .i2c_address = 0xc0,
+       .dig_out = 1,
 };
 
 static int af9015_tuner_attach(struct dvb_usb_adapter *adap)
@@ -1186,15 +1207,8 @@ static int af9015_tuner_attach(struct dv
                        DVB_PLL_TDA665X) == NULL ? -ENODEV : 0;
                break;
        case AF9013_TUNER_MC44S803:
-#if 0 /* keep */
-               ret = dvb_attach(mc44s80x_attach, adap->fe, i2c_adap)
-                       == NULL ? -ENODEV : 0;
-#else
-               ret = -ENODEV;
-               info("Freescale MC44S803 tuner found but no driver for that" \
-                       "tuner. Look at the Linuxtv.org for tuner driver" \
-                       "status.");
-#endif
+               ret = dvb_attach(mc44s803_attach, adap->fe, i2c_adap,
+                       &af9015_mc44s803_config) == NULL ? -ENODEV : 0;
                break;
        case AF9013_TUNER_UNKNOWN:
        default:


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/2897893ebd11ab3656d1c9722f579950357141ff

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to