El Miércoles, 20 de Diciembre de 2006, Patrick Boettcher escribió:
> Hi Olivier,
>
> On Fri, 15 Dec 2006, [EMAIL PROTECTED] wrote:
> > Here is a patch for Hauppage Nova-T-Stick and Nova-T-500 users.
> > It sets the MT2060 IF1 frequency according to the
> > calibration values stored in the EEPROM.
> >
> > It is supposed to enhance the signal quality, but, hey,
> > there is no guarantee.
> > Feedbacks would be much appreciated, to know whether it
> > deserves being applied.
> >
> > For those who have a MT2060 based device, very low signal
> > levels and feel _very_ lucky,
> > they can also activate MT2060_SPURCHECK in the mt2060_priv.h
> > file. At worst case it will change nothing.
> >
> > Patrick, the (dib0700_state.mt2060_if1 field in dib0700.h
> > becomes useless with this patch, is it right or shall I move
> > the code to the "frontend_attach" functions ?)
> >
> > Signed-off-by: Olivier DANET <[EMAIL PROTECTED]>
>
> Thank you very much for taking a look at that.
>
> I inserted the mt2060_if1-field in the state, because I thought about
> adding a complete eeprom-parser...
>
> I'm wondering also if the eeprom-address for the if1-offset is always the
> same for each design. How did you find 0x48 and 0x49? Normally the
> addresses are dynamic, depending on the strings before (afaik).
>
> Furthermore the bristol-card has two mt2060-if1-offsets - one for each
> path.
>
> The best would be, but it will take some time, to write the eeprom-parser
> to always find the correct offset....
>
> Would you have the time to do have a look at that?
>
> thanks again,
> Patrick.
>
In the NOVA-T 500 the if1 offsets are the two last valid values of the epprom.
The rest are filled with 0xff, except byte 127. This patch work for me.
Jose Alberto
diff -r b238e85abb88 linux/drivers/media/dvb/dvb-usb/dib0700_devices.c
--- a/linux/drivers/media/dvb/dvb-usb/dib0700_devices.c Wed Feb 28 01:06:50 2007 -0200
+++ b/linux/drivers/media/dvb/dvb-usb/dib0700_devices.c Wed Feb 28 21:39:24 2007 +0100
@@ -88,12 +88,37 @@ static int bristol_frontend_attach(struc
(10 + adap->id) << 1, &bristol_dib3000mc_config[adap->id])) == NULL ? -ENODEV : 0;
}
+static int eeprom_read(struct i2c_adapter *adap, u8 adrs, u8 *pval)
+{
+ struct i2c_msg msg[2] = {
+ { .addr = 0x50, .flags = 0, .buf = &adrs, .len = 1 },
+ { .addr = 0x50, .flags = I2C_M_RD, .buf = pval, .len = 1 },
+ };
+ if (i2c_transfer(adap, msg, 2) != 2) return -EREMOTEIO;
+ return 0;
+}
+
static int bristol_tuner_attach(struct dvb_usb_adapter *adap)
{
- struct dib0700_state *st = adap->dev->priv;
+ struct i2c_adapter *prim_i2c = &adap->dev->i2c_adap;
struct i2c_adapter *tun_i2c = dib3000mc_get_tuner_i2c_master(adap->fe, 1);
+ int if1=1220;
+ s8 a;
+ int i;
+ if (adap->dev->udev->descriptor.idVendor == USB_VID_HAUPPAUGE &&
+ adap->dev->udev->descriptor.idProduct == USB_PID_HAUPPAUGE_NOVA_T_500_2) {
+ i = 126;
+ do {
+ eeprom_read(prim_i2c, i, &a);
+ i--;
+ } while ((u8)a == 0xff);
+ if (adap->id == 0)
+ eeprom_read(prim_i2c, i, &a);
+ if1 = 1220 + a;
+
+ }
return dvb_attach(mt2060_attach,adap->fe, tun_i2c, &bristol_mt2060_config[adap->id],
- st->mt2060_if1[adap->id]) == NULL ? -ENODEV : 0;
+ if1) == NULL ? -ENODEV : 0;
}
/* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb