diff options
-rw-r--r-- | drivers/media/Kconfig | 10 | ||||
-rw-r--r-- | drivers/media/video/Makefile | 3 | ||||
-rw-r--r-- | drivers/media/video/tda9887.c | 23 | ||||
-rw-r--r-- | drivers/media/video/tda9887.h | 33 | ||||
-rw-r--r-- | drivers/media/video/tuner-core.c | 3 | ||||
-rw-r--r-- | drivers/media/video/tuner-driver.h | 4 |
6 files changed, 62 insertions, 14 deletions
diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig index e52229380984..8f4a45346de7 100644 --- a/drivers/media/Kconfig +++ b/drivers/media/Kconfig | |||
@@ -75,6 +75,7 @@ config VIDEO_TUNER | |||
75 | select TUNER_TEA5761 if !VIDEO_TUNER_CUSTOMIZE | 75 | select TUNER_TEA5761 if !VIDEO_TUNER_CUSTOMIZE |
76 | select TUNER_TEA5767 if !VIDEO_TUNER_CUSTOMIZE | 76 | select TUNER_TEA5767 if !VIDEO_TUNER_CUSTOMIZE |
77 | select TUNER_SIMPLE if !VIDEO_TUNER_CUSTOMIZE | 77 | select TUNER_SIMPLE if !VIDEO_TUNER_CUSTOMIZE |
78 | select TUNER_TDA9887 if !VIDEO_TUNER_CUSTOMIZE | ||
78 | 79 | ||
79 | menuconfig VIDEO_TUNER_CUSTOMIZE | 80 | menuconfig VIDEO_TUNER_CUSTOMIZE |
80 | bool "Customize analog tuner modules to build" | 81 | bool "Customize analog tuner modules to build" |
@@ -130,10 +131,19 @@ config TUNER_TEA5767 | |||
130 | config TUNER_SIMPLE | 131 | config TUNER_SIMPLE |
131 | tristate "Simple tuner support" | 132 | tristate "Simple tuner support" |
132 | depends on I2C | 133 | depends on I2C |
134 | select TUNER_TDA9887 | ||
133 | default m if VIDEO_TUNER_CUSTOMIZE | 135 | default m if VIDEO_TUNER_CUSTOMIZE |
134 | help | 136 | help |
135 | Say Y here to include support for various simple tuners. | 137 | Say Y here to include support for various simple tuners. |
136 | 138 | ||
139 | config TUNER_TDA9887 | ||
140 | tristate "TDA 9885/6/7 analog IF demodulator" | ||
141 | depends on I2C | ||
142 | default m if VIDEO_TUNER_CUSTOMIZE | ||
143 | help | ||
144 | Say Y here to include support for Philips TDA9885/6/7 | ||
145 | analog IF demodulator. | ||
146 | |||
137 | endif # VIDEO_TUNER_CUSTOMIZE | 147 | endif # VIDEO_TUNER_CUSTOMIZE |
138 | 148 | ||
139 | config VIDEOBUF_GEN | 149 | config VIDEOBUF_GEN |
diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile index 08ac197cc1dd..8a2781821232 100644 --- a/drivers/media/video/Makefile +++ b/drivers/media/video/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | zr36067-objs := zoran_procfs.o zoran_device.o \ | 5 | zr36067-objs := zoran_procfs.o zoran_device.o \ |
6 | zoran_driver.o zoran_card.o | 6 | zoran_driver.o zoran_card.o |
7 | tuner-objs := tuner-core.o tuner-types.o tda9887.o | 7 | tuner-objs := tuner-core.o tuner-types.o |
8 | 8 | ||
9 | msp3400-objs := msp3400-driver.o msp3400-kthreads.o | 9 | msp3400-objs := msp3400-driver.o msp3400-kthreads.o |
10 | 10 | ||
@@ -87,6 +87,7 @@ obj-$(CONFIG_TUNER_MT20XX) += mt20xx.o | |||
87 | obj-$(CONFIG_TUNER_TDA8290) += tda8290.o | 87 | obj-$(CONFIG_TUNER_TDA8290) += tda8290.o |
88 | obj-$(CONFIG_TUNER_TEA5767) += tea5767.o | 88 | obj-$(CONFIG_TUNER_TEA5767) += tea5767.o |
89 | obj-$(CONFIG_TUNER_TEA5761) += tea5761.o | 89 | obj-$(CONFIG_TUNER_TEA5761) += tea5761.o |
90 | obj-$(CONFIG_TUNER_TDA9887) += tda9887.o | ||
90 | 91 | ||
91 | obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o | 92 | obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o |
92 | obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o | 93 | obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o |
diff --git a/drivers/media/video/tda9887.c b/drivers/media/video/tda9887.c index 7663a5579757..4f5d76ff0b44 100644 --- a/drivers/media/video/tda9887.c +++ b/drivers/media/video/tda9887.c | |||
@@ -9,7 +9,7 @@ | |||
9 | #include <linux/videodev.h> | 9 | #include <linux/videodev.h> |
10 | #include <media/v4l2-common.h> | 10 | #include <media/v4l2-common.h> |
11 | #include <media/tuner.h> | 11 | #include <media/tuner.h> |
12 | #include "tuner-driver.h" | 12 | #include "tda9887.h" |
13 | 13 | ||
14 | 14 | ||
15 | /* Chips: | 15 | /* Chips: |
@@ -20,13 +20,18 @@ | |||
20 | Used as part of several tuners | 20 | Used as part of several tuners |
21 | */ | 21 | */ |
22 | 22 | ||
23 | static int tda9887_debug; | ||
24 | module_param_named(debug, tda9887_debug, int, 0644); | ||
25 | |||
23 | #define tda9887_info(fmt, arg...) do {\ | 26 | #define tda9887_info(fmt, arg...) do {\ |
24 | printk(KERN_INFO "%s %d-%04x: " fmt, priv->t->i2c.name, \ | 27 | printk(KERN_INFO "%s %d-%04x: " fmt, priv->t->i2c.name, \ |
25 | i2c_adapter_id(priv->t->i2c.adapter), priv->t->i2c.addr , ##arg); } while (0) | 28 | i2c_adapter_id(priv->t->i2c.adapter), \ |
29 | priv->t->i2c.addr, ##arg); } while (0) | ||
26 | #define tda9887_dbg(fmt, arg...) do {\ | 30 | #define tda9887_dbg(fmt, arg...) do {\ |
27 | if (tuner_debug) \ | 31 | if (tda9887_debug) \ |
28 | printk(KERN_INFO "%s %d-%04x: " fmt, priv->t->i2c.name, \ | 32 | printk(KERN_INFO "%s %d-%04x: " fmt, priv->t->i2c.name, \ |
29 | i2c_adapter_id(priv->t->i2c.adapter), priv->t->i2c.addr , ##arg); } while (0) | 33 | i2c_adapter_id(priv->t->i2c.adapter), \ |
34 | priv->t->i2c.addr, ##arg); } while (0) | ||
30 | 35 | ||
31 | struct tda9887_priv { | 36 | struct tda9887_priv { |
32 | struct tuner_i2c_props i2c_props; | 37 | struct tuner_i2c_props i2c_props; |
@@ -573,13 +578,13 @@ static void tda9887_configure(struct dvb_frontend *fe) | |||
573 | 578 | ||
574 | tda9887_dbg("writing: b=0x%02x c=0x%02x e=0x%02x\n", | 579 | tda9887_dbg("writing: b=0x%02x c=0x%02x e=0x%02x\n", |
575 | priv->data[1],priv->data[2],priv->data[3]); | 580 | priv->data[1],priv->data[2],priv->data[3]); |
576 | if (tuner_debug > 1) | 581 | if (tda9887_debug > 1) |
577 | dump_write_message(fe, priv->data); | 582 | dump_write_message(fe, priv->data); |
578 | 583 | ||
579 | if (4 != (rc = tuner_i2c_xfer_send(&priv->i2c_props,priv->data,4))) | 584 | if (4 != (rc = tuner_i2c_xfer_send(&priv->i2c_props,priv->data,4))) |
580 | tda9887_info("i2c i/o error: rc == %d (should be 4)\n",rc); | 585 | tda9887_info("i2c i/o error: rc == %d (should be 4)\n",rc); |
581 | 586 | ||
582 | if (tuner_debug > 2) { | 587 | if (tda9887_debug > 2) { |
583 | msleep_interruptible(1000); | 588 | msleep_interruptible(1000); |
584 | tda9887_status(fe); | 589 | tda9887_status(fe); |
585 | } | 590 | } |
@@ -590,7 +595,8 @@ static void tda9887_configure(struct dvb_frontend *fe) | |||
590 | static void tda9887_tuner_status(struct dvb_frontend *fe) | 595 | static void tda9887_tuner_status(struct dvb_frontend *fe) |
591 | { | 596 | { |
592 | struct tda9887_priv *priv = fe->analog_demod_priv; | 597 | struct tda9887_priv *priv = fe->analog_demod_priv; |
593 | tda9887_info("Data bytes: b=0x%02x c=0x%02x e=0x%02x\n", priv->data[1], priv->data[2], priv->data[3]); | 598 | tda9887_info("Data bytes: b=0x%02x c=0x%02x e=0x%02x\n", |
599 | priv->data[1], priv->data[2], priv->data[3]); | ||
594 | } | 600 | } |
595 | 601 | ||
596 | static int tda9887_get_afc(struct dvb_frontend *fe) | 602 | static int tda9887_get_afc(struct dvb_frontend *fe) |
@@ -636,7 +642,7 @@ static struct analog_tuner_ops tda9887_tuner_ops = { | |||
636 | .release = tda9887_release, | 642 | .release = tda9887_release, |
637 | }; | 643 | }; |
638 | 644 | ||
639 | int tda9887_tuner_init(struct tuner *t) | 645 | int tda9887_attach(struct tuner *t) |
640 | { | 646 | { |
641 | struct tda9887_priv *priv = NULL; | 647 | struct tda9887_priv *priv = NULL; |
642 | 648 | ||
@@ -658,6 +664,7 @@ int tda9887_tuner_init(struct tuner *t) | |||
658 | 664 | ||
659 | return 0; | 665 | return 0; |
660 | } | 666 | } |
667 | EXPORT_SYMBOL_GPL(tda9887_attach); | ||
661 | 668 | ||
662 | /* | 669 | /* |
663 | * Overrides for Emacs so that we follow Linus's tabbing style. | 670 | * Overrides for Emacs so that we follow Linus's tabbing style. |
diff --git a/drivers/media/video/tda9887.h b/drivers/media/video/tda9887.h new file mode 100644 index 000000000000..b879f0ec2855 --- /dev/null +++ b/drivers/media/video/tda9887.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | This program is free software; you can redistribute it and/or modify | ||
3 | it under the terms of the GNU General Public License as published by | ||
4 | the Free Software Foundation; either version 2 of the License, or | ||
5 | (at your option) any later version. | ||
6 | |||
7 | This program is distributed in the hope that it will be useful, | ||
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | GNU General Public License for more details. | ||
11 | |||
12 | You should have received a copy of the GNU General Public License | ||
13 | along with this program; if not, write to the Free Software | ||
14 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
15 | */ | ||
16 | |||
17 | #ifndef __TDA9887_H__ | ||
18 | #define __TDA9887_H__ | ||
19 | |||
20 | #include "tuner-driver.h" | ||
21 | |||
22 | /* ------------------------------------------------------------------------ */ | ||
23 | #if defined(CONFIG_TUNER_TDA9887) || (defined(CONFIG_TUNER_TDA9887_MODULE) && defined(MODULE)) | ||
24 | extern int tda9887_attach(struct tuner *t); | ||
25 | #else | ||
26 | static inline int tda9887_attach(struct tuner *t) | ||
27 | { | ||
28 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__); | ||
29 | return -EINVAL; | ||
30 | } | ||
31 | #endif | ||
32 | |||
33 | #endif /* __TDA9887_H__ */ | ||
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c index 3de03da28da0..da16bf998fbe 100644 --- a/drivers/media/video/tuner-core.c +++ b/drivers/media/video/tuner-core.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "tea5767.h" | 26 | #include "tea5767.h" |
27 | #include "tuner-xc2028.h" | 27 | #include "tuner-xc2028.h" |
28 | #include "tuner-simple.h" | 28 | #include "tuner-simple.h" |
29 | #include "tda9887.h" | ||
29 | 30 | ||
30 | #define UNSET (-1U) | 31 | #define UNSET (-1U) |
31 | 32 | ||
@@ -344,7 +345,7 @@ static void set_type(struct i2c_client *c, unsigned int type, | |||
344 | break; | 345 | break; |
345 | } | 346 | } |
346 | case TUNER_TDA9887: | 347 | case TUNER_TDA9887: |
347 | tda9887_tuner_init(t); | 348 | tda9887_attach(t); |
348 | break; | 349 | break; |
349 | default: | 350 | default: |
350 | attach_simple_tuner(t); | 351 | attach_simple_tuner(t); |
diff --git a/drivers/media/video/tuner-driver.h b/drivers/media/video/tuner-driver.h index cc9c1c74117b..c03d08cd8324 100644 --- a/drivers/media/video/tuner-driver.h +++ b/drivers/media/video/tuner-driver.h | |||
@@ -69,10 +69,6 @@ struct tuner { | |||
69 | 69 | ||
70 | /* ------------------------------------------------------------------------ */ | 70 | /* ------------------------------------------------------------------------ */ |
71 | 71 | ||
72 | extern int tda9887_tuner_init(struct tuner *t); | ||
73 | |||
74 | /* ------------------------------------------------------------------------ */ | ||
75 | |||
76 | #define tuner_warn(fmt, arg...) do {\ | 72 | #define tuner_warn(fmt, arg...) do {\ |
77 | printk(KERN_WARNING "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \ | 73 | printk(KERN_WARNING "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \ |
78 | i2c_adapter_id(t->i2c.adapter), t->i2c.addr , ##arg); } while (0) | 74 | i2c_adapter_id(t->i2c.adapter), t->i2c.addr , ##arg); } while (0) |