From 7a3cf454655ce9b049cda9cfdeee7aed0d83590d Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Wed, 18 Jul 2007 23:14:25 -0300 Subject: [PATCH] --- yaml --- r: 76299 b: refs/heads/master c: d4e7668104f7f17fa093121bf13e9728b88da57d h: refs/heads/master i: 76297: 31f584e0c046f5dbe78084a51f7fc19fc0055c45 76295: 01c5c9dacd57927eb27ee18a23298ae80f8d1974 v: v3 --- [refs] | 2 +- trunk/drivers/media/video/tuner-xc2028.c | 41 ++++++------------------ 2 files changed, 11 insertions(+), 32 deletions(-) diff --git a/[refs] b/[refs] index d8deb01688e6..86242be8ebfd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2e4160ca8046e3c35277bed62b2c180427d57dd7 +refs/heads/master: d4e7668104f7f17fa093121bf13e9728b88da57d diff --git a/trunk/drivers/media/video/tuner-xc2028.c b/trunk/drivers/media/video/tuner-xc2028.c index 838db8187a9c..f514c5ce5c8f 100644 --- a/trunk/drivers/media/video/tuner-xc2028.c +++ b/trunk/drivers/media/video/tuner-xc2028.c @@ -314,28 +314,11 @@ static void generic_set_tv_freq(struct i2c_client *c, u32 freq /* in Hz */, struct tuner *t = i2c_get_clientdata(c); u32 div, offset = 0; - printk("xc3028: should set frequency %d kHz)\n", freq / 1000); - - if (check_firmware(c, new_mode, bandwidth)<0) - return; - - if(new_mode == T_DIGITAL_TV) { - switch(bandwidth) { - case BANDWIDTH_8_MHZ: - offset = 2750000; - break; - - case BANDWIDTH_7_MHZ: - offset = 2750000; - break; - - case BANDWIDTH_6_MHZ: - default: - printk(KERN_ERR "xc2028: bandwidth not implemented!\n"); - } - } + /* HACK: It seems that specific firmware need to be reloaded + when freq is changed */ + struct xc2028_data *xc2028 = t->priv; - div = (freq - offset + DIV/2)/DIV; + xc2028->firm_type=0; /* Reset GPIO 1 */ if (t->tuner_callback) { @@ -345,17 +328,16 @@ static void generic_set_tv_freq(struct i2c_client *c, u32 freq /* in Hz */, return; } msleep(10); + printk("xc3028: should set frequency %d kHz)\n", freq / 1000); - char *name; + if (check_firmware(c, new_mode, bandwidth)<0) + return; - rc = load_firmware(c,firmware_INIT1); + if(new_mode == T_DIGITAL_TV) + offset = 2750000; - if (t->std & V4L2_STD_MN) - name=firmware_MN; - else - name=firmware_DK; + div = (freq - offset + DIV/2)/DIV; - rc = load_firmware(c,name); /* CMD= Set frequency */ send_seq(c, {0x00, 0x02, 0x00, 0x00}); if (t->tuner_callback) { @@ -366,8 +348,6 @@ static void generic_set_tv_freq(struct i2c_client *c, u32 freq /* in Hz */, } msleep(10); -// send_seq(c, {0x00, 0x00, 0x10, 0xd0, 0x00}); -// msleep(100); buf[0]= 0xff & (div>>24); buf[1]= 0xff & (div>>16); @@ -383,7 +363,6 @@ static void generic_set_tv_freq(struct i2c_client *c, u32 freq /* in Hz */, printk("divider= %02x %02x %02x %02x (freq=%d.%02d)\n", buf[1],buf[2],buf[3],buf[4], freq / 16, freq % 16 * 100 / 16); -// printk("signal=%d\n",xc2028_signal(c)); }