--- ves1x93.c.org	2004-07-29 22:00:28.162808320 +0200
+++ ves1x93.c	2004-07-29 23:13:09.000000000 +0200
@@ -51,7 +51,7 @@
 	.type			= FE_QPSK,
 	.frequency_min		= 950000,
 	.frequency_max		= 2150000,
-	.frequency_stepsize	= 250,		 /* kHz for QPSK frontends */
+	.frequency_stepsize	= 125,		 /* kHz for QPSK frontends */
 	.frequency_tolerance	= 29500,
 	.symbol_rate_min	= 1000000,
 	.symbol_rate_max	= 45000000,
@@ -173,9 +173,19 @@
  *   set up the downconverter frequency divisor for a
  *   reference clock comparision frequency of 125 kHz.
  */
-static int sp5659_set_tv_freq (struct i2c_adapter *i2c, u32 freq, u8 pwr)
+static int sp5659_set_tv_freq (struct i2c_adapter *i2c, u32 freq)
 {
+	u8 pwr = 0;
+
 	u32 div = (freq + 479500) / 125;
+
+	if (freq > 2000000)
+		pwr = 3;
+	if ((freq < 1100000)||((freq <= 2000000)&&(freq > 1800000)))
+		pwr = 2;
+	if (((freq >= 1100000)&&(freq <= 1200000))||((freq > 1600000)&&(freq <=1800000)))
+		pwr = 1;
+
 	u8 buf [4] = { (div >> 8) & 0x7f, div & 0xff, 0x95, (pwr << 5) | 0x30 };
 
 	return tuner_write (i2c, buf, sizeof(buf));
@@ -198,10 +208,10 @@
 }
 
 
-static int tuner_set_tv_freq (struct i2c_adapter *i2c, u32 freq, u8 pwr)
+static int tuner_set_tv_freq (struct i2c_adapter *i2c, u32 freq)
 {
 	if ((demod_type == DEMOD_VES1893) && (board_type == BOARD_SIEMENS_PCI))
-		return sp5659_set_tv_freq (i2c, freq, pwr);
+		return sp5659_set_tv_freq (i2c, freq);
 	else if (demod_type == DEMOD_VES1993)
 		return tsa5059_set_tv_freq (i2c, freq);
 
@@ -255,9 +265,10 @@
 
 static int ves1x93_clr_bit (struct i2c_adapter *i2c)
 {
+	dvb_delay(10);
 	ves1x93_writereg (i2c, 0, init_1x93_tab[0] & 0xfe);
 	ves1x93_writereg (i2c, 0, init_1x93_tab[0]);
-	dvb_delay(5);
+	dvb_delay(50);
 	return 0;
 }
 
@@ -265,7 +276,7 @@
 {
 	ves1x93_writereg (i2c, 3, 0x00);
 	ves1x93_writereg (i2c, 3, init_1x93_tab[3]);
-	dvb_delay(5);
+	dvb_delay(50);
 	return 0;
 }
 
@@ -429,7 +440,7 @@
 	
 		freq -= afc;
 
-		tuner_set_tv_freq (i2c, freq, 0);
+		tuner_set_tv_freq (i2c, freq);
 
 		ves1x93_init_aquire (i2c);
 	}
@@ -528,7 +539,7 @@
 	{
 		struct dvb_frontend_parameters *p = arg;
 
-		tuner_set_tv_freq (i2c, p->frequency, 0);
+		tuner_set_tv_freq (i2c, p->frequency);
 		ves1x93_set_inversion (i2c, p->inversion);
 		ves1x93_set_fec (i2c, p->u.qpsk.fec_inner);
 		ves1x93_set_symbolrate (i2c, p->u.qpsk.symbol_rate);
