From: "michal" <michal@etc.cz>Revision 1.9:There appear to be several typos in this code:cpump = div < 175000000 ? 2 : div < 390000000 ? 1 : div < 470000000 ? 2 : div < 750000000 ? 1 : 3; band_select = div < 175000000 ? 0x0e : div < 470000000 ? 0x05 : 0x03;These comparions should apparently be against the *frequency*, not the divider. Thus, replace all "div" with "freq" in above lines.buf [3] = cpump | band_select;Another bug. The charge pump bits are 7 and 6, not 1 and 0. Try buf [3] = (cpump << 6) | band-select; instead. Hope this helps, -- Robert Schlabbach e-mail: robert_s@gmx.net Berlin, Germany
--- DVB/driver/frontends/grundig_29504-401.c.old 2003-04-09 13:24:35.000000000 +0200 +++ DVB/driver/frontends/grundig_29504-401.c 2003-06-04 14:37:34.000000000 +0200 @@ -110,15 +110,15 @@ div = (36125000 + freq) / 166666; cfg = 0x88; - cpump = div < 175000000 ? 2 : div < 390000000 ? 1 : - div < 470000000 ? 2 : div < 750000000 ? 1 : 3; + cpump = freq < 175000000 ? 2 : freq < 390000000 ? 1 : + freq < 470000000 ? 2 : freq < 750000000 ? 1 : 3; - band_select = div < 175000000 ? 0x0e : div < 470000000 ? 0x05 : 0x03; + band_select = freq < 175000000 ? 0x0e : freq < 470000000 ? 0x05 : 0x03; buf [0] = (div >> 8) & 0x7f; buf [1] = div & 0xff; buf [2] = ((div >> 10) & 0x60) | cfg; - buf [3] = cpump | band_select; + buf [3] = (cpump<<6) | band_select; return tsa5060_write(i2c, buf); }
--- dvb-kernel/linux/drivers/media/dvb/frontends/grundig_29504-401.c.old 2003-05-27 13:06:47.000000000 +0200 +++ dvb-kernel/linux/drivers/media/dvb/frontends/grundig_29504-401.c 2003-06-04 14:30:43.000000000 +0200 @@ -113,15 +113,15 @@ div = (36125000 + freq) / 166666; cfg = 0x88; - cpump = div < 175000000 ? 2 : div < 390000000 ? 1 : - div < 470000000 ? 2 : div < 750000000 ? 1 : 3; + cpump = freq < 175000000 ? 2 : freq < 390000000 ? 1 : + freq < 470000000 ? 2 : freq < 750000000 ? 1 : 3; - band_select = div < 175000000 ? 0x0e : div < 470000000 ? 0x05 : 0x03; + band_select = freq < 175000000 ? 0x0e : freq < 470000000 ? 0x05 : 0x03; buf [0] = (div >> 8) & 0x7f; buf [1] = div & 0xff; buf [2] = ((div >> 10) & 0x60) | cfg; - buf [3] = cpump | band_select; + buf [3] = (cpump << 6) | band_select; return tsa5060_write(i2c, buf); }