V4L/DVB (6430): Convert tuner-xc2028 driver to the newer hybrid approach
authorMauro Carvalho Chehab <mchehab@infradead.org>
Tue, 23 Oct 2007 18:24:06 +0000 (15:24 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Jan 2008 21:01:05 +0000 (19:01 -0200)
This changeset converts tuner-xc2028 to the newer hybrid approach. It also
prevents creating twice the xc3028 private struct by both DVB and V4L parts.

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/Kconfig
drivers/media/video/Kconfig
drivers/media/video/Makefile
drivers/media/video/tuner-core.c
drivers/media/video/tuner-driver.h
drivers/media/video/tuner-xc2028.c
drivers/media/video/tuner-xc2028.h

index 1604f04..dfb5259 100644 (file)
@@ -69,6 +69,7 @@ source "drivers/media/common/Kconfig"
 config VIDEO_TUNER
        tristate
        depends on I2C
+       select TUNER_XC2028 if !VIDEO_TUNER_CUSTOMIZE
        select TUNER_MT20XX if !VIDEO_TUNER_CUSTOMIZE
        select TUNER_TDA8290 if !VIDEO_TUNER_CUSTOMIZE
        select TUNER_TEA5761 if !VIDEO_TUNER_CUSTOMIZE
@@ -89,6 +90,13 @@ menuconfig VIDEO_TUNER_CUSTOMIZE
 
 if VIDEO_TUNER_CUSTOMIZE
 
+config TUNER_XC2028
+       tristate "XCeive xc2028/xc3028 tuners"
+       depends on I2C
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for the xc2028/xc3028 tuners.
+
 config TUNER_MT20XX
        tristate "Microtune 2032 / 2050 tuners"
        depends on I2C
index 4548463..ea5be37 100644 (file)
@@ -505,18 +505,6 @@ config TUNER_3036
          Say Y here to include support for Philips SAB3036 compatible tuners.
          If in doubt, say N.
 
-config TUNER_XC2028
-       tristate "Xceive xc2028 support for tm5600/tm6000 driver"
-       depends on I2C
-       select VIDEO_TUNER
-       help
-         Say Y here to include support for Xceive xc2028 tuner. This is
-         required on a few tm5600/tm6000 designs. You should notice
-         that this module currently works only with the special
-         firmware versions used on those Trident chips.
-
-         If in doubt, say N.
-
 config VIDEO_VINO
        tristate "SGI Vino Video For Linux (EXPERIMENTAL)"
        depends on I2C && SGI_IP22 && EXPERIMENTAL && VIDEO_V4L2
index 1fd775e..08ac197 100644 (file)
@@ -6,10 +6,6 @@ zr36067-objs   :=      zoran_procfs.o zoran_device.o \
                        zoran_driver.o zoran_card.o
 tuner-objs     :=      tuner-core.o tuner-types.o tda9887.o
 
-ifneq ($(CONFIG_TUNER_XC2028),)
-  tuner-objs   +=      tuner-xc2028.o
-endif
-
 msp3400-objs   :=      msp3400-driver.o msp3400-kthreads.o
 
 obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-common.o compat_ioctl32.o \
@@ -85,6 +81,7 @@ obj-$(CONFIG_TUNER_3036) += tuner-3036.o
 
 obj-$(CONFIG_VIDEO_TUNER) += tuner.o
 
+obj-$(CONFIG_TUNER_XC2028) += tuner-xc2028.o
 obj-$(CONFIG_TUNER_SIMPLE) += tuner-simple.o
 obj-$(CONFIG_TUNER_MT20XX) += mt20xx.o
 obj-$(CONFIG_TUNER_TDA8290) += tda8290.o
index ce817a1..1311273 100644 (file)
@@ -24,6 +24,7 @@
 #include "tda8290.h"
 #include "tea5761.h"
 #include "tea5767.h"
+#include "tuner-xc2028.h"
 #include "tuner-simple.h"
 
 #define UNSET (-1U)
@@ -323,8 +324,17 @@ static void set_type(struct i2c_client *c, unsigned int type,
                attach_simple_tuner(t);
                break;
        case TUNER_XC2028:
-               xc2028_tuner_init(c);
+       {
+               int rc=xc2028_attach(&t->fe, t->i2c.adapter, t->i2c.addr,
+                                    &c->dev, c->adapter->algo_data,
+                                    t->tuner_callback);
+               if (rc<0) {
+                       t->type = TUNER_ABSENT;
+                       t->mode_mask = T_UNINITIALIZED;
+                       return;
+               }
                break;
+       }
        case TUNER_TDA9887:
                tda9887_tuner_init(t);
                break;
Simple merge
Simple merge
Simple merge