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) {
                        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) {
        }
 
        msleep(10);
-//     send_seq(c, {0x00, 0x00, 0x10, 0xd0, 0x00});
-//     msleep(100);
 
        buf[0]= 0xff & (div>>24);
        buf[1]= 0xff & (div>>16);
        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));
 }