v4l: tuner update
PATCH 1/1 v4l: tuner update
- add new tuner types.
- add support for digital tv tuning.
- make tda9887 output ports more configurable.
Signed-off-by Gerd Knorr <[email protected]>
--- drivers/media/video/tda9887.c | 38 +++++++++++++++------ drivers/media/video/tuner.c | 60 +++++++++++++++++++--------------- include/media/tuner.h | 8 +++- 3 files changed, 69 insertions(+), 37 deletions(-)
include/media/tuner.h +6 -2
@@ -77,6 +77,7 @@#define TUNER_MICROTUNE_4042FI5 49/* FusionHDTV 3 Gold - 4042 FI5 (3X 8147) */ #define TUNER_TCL_2002N 50#define TUNER_PHILIPS_FM1256_IH3 51 +#define TUNER_THOMSON_DTT7610 52#define NOTUNER 0#define PAL 1/* PAL_BG */
@@ -97,6 +98,7 @@#define HITACHI 9#define Panasonic 10#define TCL 11 +#define THOMSON 12#define TUNER_SET_TYPE _IOW('t',1,int)/* set tuner type */ #define TUNER_SET_TVFREQ _IOW('t',2,int)/* set tv freq */
@@ -108,10 +110,12 @@#define TDA9887_SET_CONFIG _IOW('t',5,int)/* tv card specific */ # define TDA9887_PRESENT (1<<0) -# define TDA9887_PORT1 (1<<1) -# define TDA9887_PORT2 (1<<2) +# define TDA9887_PORT1_INACTIVE (1<<1) +# define TDA9887_PORT2_INACTIVE (1<<2)# define TDA9887_QSS (1<<3)# define TDA9887_INTERCARRIER (1<<4) +# define TDA9887_PORT1_ACTIVE (1<<5) +# define TDA9887_PORT2_ACTIVE (1<<6)/* config options */ # define TDA9887_DEEMPHASIS_MASK (3<<16)# define TDA9887_DEEMPHASIS_NONE (1<<16)
drivers/media/video/tuner.c +35 -25
155 lines not on this page · raw message
drivers/media/video/tda9887.c +28 -10
@@ -1,4 +1,5 @@#include <linux/module.h> +#include <linux/moduleparam.h> #include <linux/kernel.h> #include <linux/i2c.h> #include <linux/types.h>
@@ -27,6 +28,7 @@/* Addresses to scan */ static unsigned short normal_i2c[] = { +0x84 >>1 ,0x86 >>1 ,0x96 >>1 ,I2C_CLIENT_END ,
@@ -374,8 +376,8 @@ static int tda9887_set_tvnorm(struct tdareturn 0 ; } -static unsigned int port1 =1 ; -static unsigned int port2 =1 ; +static unsigned int port1 =UNSET ; +static unsigned int port2 =UNSET ;static unsigned int qss =UNSET ;static unsigned int adjust =0x10 ;module_param (port1, int,0644 );
@@ -385,10 +387,19 @@ module_param(adjust, int, 0644);static int tda9887_set_insmod (struct tda9887 *t,char *buf) { -if (port1) - buf[1 ] |= cOutputPort1Inactive; -if (port2) - buf[1 ] |= cOutputPort2Inactive; +if (UNSET != port1) { +if (port1) + buf[1 ] |= cOutputPort1Inactive; +else + buf[1 ] &= ~cOutputPort1Inactive; + } +if (UNSET != port2) { +if (port2) + buf[1 ] |= cOutputPort2Inactive; +else + buf[1 ] &= ~cOutputPort2Inactive; + } +if (UNSET != qss) {if (qss) buf[1 ] |= cQSS;
@@ -403,10 +414,15 @@ static int tda9887_set_insmod(struct tdastatic int tda9887_set_config (struct tda9887 *t,char *buf) { -if (t->config &TDA9887_PORT1 ) +if (t->config &TDA9887_PORT1_ACTIVE ) + buf[1 ] &= ~cOutputPort1Inactive; +if (t->config &TDA9887_PORT1_INACTIVE ) buf[1 ] |= cOutputPort1Inactive; -if (t->config &TDA9887_PORT2 ) +if (t->config &TDA9887_PORT2_ACTIVE ) + buf[1 ] &= ~cOutputPort2Inactive; +if (t->config &TDA9887_PORT2_INACTIVE ) buf[1 ] |= cOutputPort2Inactive; +if (t->config &TDA9887_QSS ) buf[1 ] |= cQSS;if (t->config &TDA9887_INTERCARRIER )
@@ -437,14 +453,14 @@ static int tda9887_set_pinnacle(struct t {unsigned int bCarrierMode =UNSET ; -if (t->std &V4L2_STD_PAL ) { +if (t->std &V4L2_STD_625_50 ) {if ((1 == t->pinnacle_id) || (7 == t->pinnacle_id)) { bCarrierMode = cIntercarrier; }else { bCarrierMode = cQSS; } } -if (t->std &V4L2_STD_NTSC ) { +if (t->std &V4L2_STD_525_60 ) {if ((5 == t->pinnacle_id) || (6 == t->pinnacle_id)) { bCarrierMode = cIntercarrier; }else {
@@ -529,6 +545,8 @@ static int tda9887_configure(struct tda9int rc;memset (buf,0 ,sizeof (buf)); + buf[1 ] |= cOutputPort1Inactive; + buf[1 ] |= cOutputPort2Inactive;tda9887_set_tvnorm (t,buf);if (UNSET != t->pinnacle_id) {tda9887_set_pinnacle (t,buf);
Signature · 1 line
#define printk(args...) fprintf(stderr, ## args)