Commit 5bea1cd3 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab

V4L/DVB (6435): tda8290: add support for NXP TDA18271 tuner and TDA8295 analog demod

Add basic support for NXP TDA8295 analog demod and TDA18271 tuner silicon.

TDA8295 + TDA8275a not yet tested.
TDA8290 + TDA18271 not yet supported.

Digital mode of TDA18271 not yet tested & needs more work.
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Reviewed-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent ce1f8bdb
...@@ -73,3 +73,4 @@ tuner=71 - Xceive xc2028/xc3028 tuner ...@@ -73,3 +73,4 @@ tuner=71 - Xceive xc2028/xc3028 tuner
tuner=72 - Thomson FE6600 tuner=72 - Thomson FE6600
tuner=73 - Samsung TCPG 6121P30A tuner=73 - Samsung TCPG 6121P30A
tuner=75 - Philips TEA5761 FM Radio tuner=75 - Philips TEA5761 FM Radio
tuner=76 - tda8295+18271
...@@ -105,9 +105,10 @@ config TUNER_MT20XX ...@@ -105,9 +105,10 @@ config TUNER_MT20XX
Say Y here to include support for the MT2032 / MT2050 tuner. Say Y here to include support for the MT2032 / MT2050 tuner.
config TUNER_TDA8290 config TUNER_TDA8290
tristate "TDA 8290+8275(a) tuner combo" tristate "TDA 8290/8295 + 8275(a)/18271 tuner combo"
depends on I2C depends on I2C
select DVB_TDA827X select DVB_TDA827X
select DVB_TDA18271
default m if VIDEO_TUNER_CUSTOMIZE default m if VIDEO_TUNER_CUSTOMIZE
help help
Say Y here to include support for Philips TDA8290+8275(a) tuner. Say Y here to include support for Philips TDA8290+8275(a) tuner.
......
...@@ -316,6 +316,13 @@ config DVB_TDA827X ...@@ -316,6 +316,13 @@ config DVB_TDA827X
help help
A DVB-T silicon tuner module. Say Y when you want to support this tuner. A DVB-T silicon tuner module. Say Y when you want to support this tuner.
config DVB_TDA18271
tristate "NXP TDA18271 silicon tuner"
depends on I2C
default m if DVB_FE_CUSTOMISE
help
A silicon tuner module. Say Y when you want to support this tuner.
config DVB_TUNER_QT1010 config DVB_TUNER_QT1010
tristate "Quantek QT1010 silicon tuner" tristate "Quantek QT1010 silicon tuner"
depends on DVB_CORE && I2C depends on DVB_CORE && I2C
......
...@@ -39,6 +39,7 @@ obj-$(CONFIG_DVB_ISL6421) += isl6421.o ...@@ -39,6 +39,7 @@ obj-$(CONFIG_DVB_ISL6421) += isl6421.o
obj-$(CONFIG_DVB_TDA10086) += tda10086.o obj-$(CONFIG_DVB_TDA10086) += tda10086.o
obj-$(CONFIG_DVB_TDA826X) += tda826x.o obj-$(CONFIG_DVB_TDA826X) += tda826x.o
obj-$(CONFIG_DVB_TDA827X) += tda827x.o obj-$(CONFIG_DVB_TDA827X) += tda827x.o
obj-$(CONFIG_DVB_TDA18271) += tda18271.o
obj-$(CONFIG_DVB_TUNER_MT2060) += mt2060.o obj-$(CONFIG_DVB_TUNER_MT2060) += mt2060.o
obj-$(CONFIG_DVB_TUNER_MT2266) += mt2266.o obj-$(CONFIG_DVB_TUNER_MT2266) += mt2266.o
obj-$(CONFIG_DVB_TUNER_DIB0070) += dib0070.o obj-$(CONFIG_DVB_TUNER_DIB0070) += dib0070.o
......
This diff is collapsed.
/*
tda18271.h - header for the Philips / NXP TDA18271 silicon tuner
Copyright (C) 2007 Michael Krufky (mkrufky@linuxtv.org)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __TDA18271_H__
#define __TDA18271_H__
#include <linux/i2c.h>
#include "dvb_frontend.h"
#if defined(CONFIG_DVB_TDA18271) || (defined(CONFIG_DVB_TDA18271_MODULE) && defined(MODULE))
extern struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
struct i2c_adapter *i2c);
#else
static inline struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe,
u8 addr,
struct i2c_adapter *i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif
#endif /* __TDA18271_H__ */
This diff is collapsed.
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
extern int tda8290_probe(struct tuner *t); extern int tda8290_probe(struct tuner *t);
extern int tda8290_attach(struct tuner *t); extern int tda8290_attach(struct tuner *t);
extern int tda8295_attach(struct tuner *t);
#else #else
static inline int tda8290_probe(struct tuner *t) static inline int tda8290_probe(struct tuner *t)
{ {
...@@ -37,6 +38,13 @@ static inline int tda8290_attach(struct tuner *t) ...@@ -37,6 +38,13 @@ static inline int tda8290_attach(struct tuner *t)
__FUNCTION__); __FUNCTION__);
return -EINVAL; return -EINVAL;
} }
static inline int tda8295_attach(struct tuner *t)
{
printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
__FUNCTION__);
return -EINVAL;
}
#endif #endif
#endif /* __TDA8290_H__ */ #endif /* __TDA8290_H__ */
...@@ -278,6 +278,11 @@ static void set_type(struct i2c_client *c, unsigned int type, ...@@ -278,6 +278,11 @@ static void set_type(struct i2c_client *c, unsigned int type,
tda8290_attach(t); tda8290_attach(t);
break; break;
} }
case TUNER_PHILIPS_TDA8295:
{
tda8295_attach(t);
break;
}
case TUNER_TEA5767: case TUNER_TEA5767:
if (tea5767_attach(&t->fe, t->i2c.adapter, t->i2c.addr) == NULL) { if (tea5767_attach(&t->fe, t->i2c.adapter, t->i2c.addr) == NULL) {
t->type = TUNER_ABSENT; t->type = TUNER_ABSENT;
......
...@@ -1475,6 +1475,9 @@ struct tunertype tuners[] = { ...@@ -1475,6 +1475,9 @@ struct tunertype tuners[] = {
.name = "Philips TEA5761 FM Radio", .name = "Philips TEA5761 FM Radio",
/* see tea5767.c for details */ /* see tea5767.c for details */
}, },
[TUNER_PHILIPS_TDA8295] = { /* Philips PAL|NTSC */
.name = "tda8295+18271",
/* see tda8290.c for details */ },
}; };
unsigned const int tuner_count = ARRAY_SIZE(tuners); unsigned const int tuner_count = ARRAY_SIZE(tuners);
...@@ -257,7 +257,7 @@ hauppauge_tuner[] = ...@@ -257,7 +257,7 @@ hauppauge_tuner[] =
{ TUNER_ABSENT, "LG TAPQ_H702F"}, { TUNER_ABSENT, "LG TAPQ_H702F"},
{ TUNER_ABSENT, "TCL M09WPP_4N_E"}, { TUNER_ABSENT, "TCL M09WPP_4N_E"},
{ TUNER_ABSENT, "MaxLinear MXL5005_v2"}, { TUNER_ABSENT, "MaxLinear MXL5005_v2"},
{ TUNER_ABSENT, "Philips 18271_8295"}, { TUNER_PHILIPS_TDA8295, "Philips 18271_8295"},
}; };
static struct HAUPPAUGE_AUDIOIC static struct HAUPPAUGE_AUDIOIC
......
...@@ -124,6 +124,8 @@ extern int tuner_debug; ...@@ -124,6 +124,8 @@ extern int tuner_debug;
#define TUNER_TDA9887 74 /* This tuner should be used only internally */ #define TUNER_TDA9887 74 /* This tuner should be used only internally */
#define TUNER_TEA5761 75 /* Only FM Radio Tuner */ #define TUNER_TEA5761 75 /* Only FM Radio Tuner */
#define TUNER_PHILIPS_TDA8295 76
/* tv card specific */ /* tv card specific */
#define TDA9887_PRESENT (1<<0) #define TDA9887_PRESENT (1<<0)
#define TDA9887_PORT1_INACTIVE (1<<1) #define TDA9887_PORT1_INACTIVE (1<<1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment