diff options
Diffstat (limited to 'linux/drivers/media')
-rw-r--r-- | linux/drivers/media/dvb/frontends/dvb-pll.c | 42 | ||||
-rw-r--r-- | linux/drivers/media/dvb/frontends/dvb-pll.h | 1 | ||||
-rw-r--r-- | linux/drivers/media/video/saa7134/saa7134-dvb.c | 77 | ||||
-rw-r--r-- | linux/drivers/media/video/saa7134/saa7134.h | 1 |
4 files changed, 47 insertions, 74 deletions
diff --git a/linux/drivers/media/dvb/frontends/dvb-pll.c b/linux/drivers/media/dvb/frontends/dvb-pll.c index cd8f28275..2cab96e1c 100644 --- a/linux/drivers/media/dvb/frontends/dvb-pll.c +++ b/linux/drivers/media/dvb/frontends/dvb-pll.c @@ -362,6 +362,48 @@ struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261 = { }; EXPORT_SYMBOL(dvb_pll_philips_sd1878_tda8261); +/* + * Philips TD1316 Tuner. + */ +static void td1316_bw(u8 *buf, u32 freq, int bandwidth) +{ + u8 band; + + /* determine band */ + if (freq < 161000000) + band = 1; + else if (freq < 444000000) + band = 2; + else + band = 4; + + buf[3] |= band; + + /* setup PLL filter */ + if (bandwidth == BANDWIDTH_8_MHZ) + buf[3] |= 1 << 3; +} + +struct dvb_pll_desc dvb_pll_philips_td1316 = { + .name = "Philips TD1316", + .min = 87000000, + .max = 895000000, + .setbw = td1316_bw, + .count = 9, + .entries = { + { 130000000, 36166000, 166666, 0xca, 0x60}, + { 160000000, 36166000, 166666, 0xca, 0xa0}, + { 200000000, 36166000, 166666, 0xca, 0xc0}, + { 290000000, 36166000, 166666, 0xca, 0x60}, + { 420000000, 36166000, 166666, 0xca, 0xa0}, + { 480000000, 36166000, 166666, 0xca, 0xc0}, + { 620000000, 36166000, 166666, 0xca, 0x60}, + { 830000000, 36166000, 166666, 0xca, 0xa0}, + { 895000000, 36166000, 166666, 0xca, 0xe0}, + }, +}; +EXPORT_SYMBOL(dvb_pll_philips_td1316); + /* ----------------------------------------------------------- */ /* code */ diff --git a/linux/drivers/media/dvb/frontends/dvb-pll.h b/linux/drivers/media/dvb/frontends/dvb-pll.h index 872e3b4c1..56c3cd76a 100644 --- a/linux/drivers/media/dvb/frontends/dvb-pll.h +++ b/linux/drivers/media/dvb/frontends/dvb-pll.h @@ -40,6 +40,7 @@ extern struct dvb_pll_desc dvb_pll_tuv1236d; extern struct dvb_pll_desc dvb_pll_tdhu2; extern struct dvb_pll_desc dvb_pll_samsung_tbmv; extern struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261; +extern struct dvb_pll_desc dvb_pll_philips_td1316; int dvb_pll_configure(struct dvb_pll_desc *desc, u8 *buf, u32 freq, int bandwidth); diff --git a/linux/drivers/media/video/saa7134/saa7134-dvb.c b/linux/drivers/media/video/saa7134/saa7134-dvb.c index 996486394..5e2e28bb3 100644 --- a/linux/drivers/media/video/saa7134/saa7134-dvb.c +++ b/linux/drivers/media/video/saa7134/saa7134-dvb.c @@ -34,6 +34,7 @@ #include "saa7134-reg.h" #include "saa7134.h" #include <media/v4l2-common.h> +#include "dvb-pll.h" #ifdef HAVE_MT352 # include "mt352.h" @@ -44,7 +45,6 @@ #endif #ifdef HAVE_NXT200X # include "nxt200x.h" -# include "dvb-pll.h" #endif MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]"); @@ -122,9 +122,6 @@ static int mt352_aver777_init(struct dvb_frontend* fe) static u8 adc_ctl_1_cfg [] = { ADC_CTL_1, 0x40 }; static u8 agc_cfg [] = { AGC_TARGET, 0x28, 0xa0 }; static u8 capt_range_cfg[] = { CAPT_RANGE, 0x33 }; - struct saa7134_dev *dev= fe->dvb->priv; - - printk("%s: %s called\n",dev->name,__FUNCTION__); mt352_write(fe, clock_config, sizeof(clock_config)); udelay(200); @@ -167,76 +164,10 @@ static int mt352_pinnacle_pll_set(struct dvb_frontend* fe, static int mt352_aver777_pll_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params, u8* pllbuf) { - int tuner_frequency = 0; - u8 band, cp, filter; - - /* determine charge pump */ - tuner_frequency = params->frequency + 36166000; - if (tuner_frequency < 87000000) - return -EINVAL; - else if (tuner_frequency < 130000000) - cp = 3; - else if (tuner_frequency < 160000000) - cp = 5; - else if (tuner_frequency < 200000000) - cp = 6; - else if (tuner_frequency < 290000000) - cp = 3; - else if (tuner_frequency < 420000000) - cp = 5; - else if (tuner_frequency < 480000000) - cp = 6; - else if (tuner_frequency < 620000000) - cp = 3; - else if (tuner_frequency < 830000000) - cp = 5; - else if (tuner_frequency < 895000000) - cp = 7; - else - return -EINVAL; - - /* determine band */ - if (params->frequency < 49000000) - return -EINVAL; - else if (params->frequency < 161000000) - band = 1; - else if (params->frequency < 444000000) - band = 2; - else if (params->frequency < 861000000) - band = 4; - else - return -EINVAL; - - /* setup PLL filter */ - switch (params->u.ofdm.bandwidth) { - case BANDWIDTH_6_MHZ: - filter = 0; - break; - - case BANDWIDTH_7_MHZ: - filter = 0; - break; - - case BANDWIDTH_8_MHZ: - filter = 1; - break; - - default: - return -EINVAL; - } - - /* calculate divisor - * ((36166000+((1000000/6)/2)) + Finput)/(1000000/6) - */ - tuner_frequency = (((params->frequency / 1000) * 6) + 217496) / 1000; - - /* setup tuner buffer */ pllbuf[0] = 0xc2; - pllbuf[1] = (tuner_frequency >> 8) & 0x7f; - pllbuf[2] = tuner_frequency & 0xff; - pllbuf[3] = 0xca; - pllbuf[4] = (cp << 5) | (filter << 3) | band; - + dvb_pll_configure(&dvb_pll_philips_td1316, pllbuf+1, + params->frequency, + params->u.ofdm.bandwidth); return 0; } diff --git a/linux/drivers/media/video/saa7134/saa7134.h b/linux/drivers/media/video/saa7134/saa7134.h index c6780aeab..0a93d0167 100644 --- a/linux/drivers/media/video/saa7134/saa7134.h +++ b/linux/drivers/media/video/saa7134/saa7134.h @@ -68,7 +68,6 @@ enum saa7134_tvaudio_mode { TVAUDIO_FM_K_STEREO = 4, TVAUDIO_NICAM_AM = 5, TVAUDIO_NICAM_FM = 6, - TVAUDIO_AM_MONO = 7 }; enum saa7134_audio_in { |