Hi, how about moving some of the board dependent stuff of the frontend functions out of the adapter drivers? Making the PLL functions independent of the adapter driver works by passing the i2c adapter pointer to the PLL callback instead of getting it from private data pointers (which only works for a single bus per adapter). So this change is needed anyway, because there can be adapters with multiple frontends on multiple i2c buses. I've created a patch which moves most of the code for frontends with known manufacturer and model into small, well maintainable files. Frontends I left out for now include those who need a request_firmware callback, because I am not yet sure how to get that out of the config structs. Maybe passing the required dev pointer to the attach function will be sufficient. The files have been run through Lindent and i2c error code checking has been improved, thus making the old functions larger. Anyway, now there are fewer lines of code than before, after removing all the duplicates. It even fixes a bug by accident which would not allow a ttusb device != rev 2.2 be plugged in after a ttusb device with revision 2.2. Because the patch's size is 111 kilobytes I've put it on my web server: http://www.saftware.de/frontend.diff It's not finished yet, but I hope to get some comments from you. Here's the diffstat: build-2.6/Makefile | 2 linux/drivers/media/dvb/b2c2/flexcop-fe-tuner.c | 194 -------- linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c | 38 - linux/drivers/media/dvb/bt8xx/dvb-bt8xx.h | 2 linux/drivers/media/dvb/frontends/Makefile | 2 linux/drivers/media/dvb/frontends/at76c651.c | 4 linux/drivers/media/dvb/frontends/at76c651.h | 5 linux/drivers/media/dvb/frontends/bsbe1.c | 137 +++++ linux/drivers/media/dvb/frontends/bsbe1.h | 9 linux/drivers/media/dvb/frontends/bsru6.c | 139 ++++++ linux/drivers/media/dvb/frontends/bsru6.h | 9 linux/drivers/media/dvb/frontends/bsrv2.c | 70 +++ linux/drivers/media/dvb/frontends/bsrv2.h | 9 linux/drivers/media/dvb/frontends/cd1516.c | 61 ++ linux/drivers/media/dvb/frontends/cd1516.h | 9 linux/drivers/media/dvb/frontends/cu1216.c | 54 ++ linux/drivers/media/dvb/frontends/cu1216.h | 9 linux/drivers/media/dvb/frontends/cx22700.c | 4 linux/drivers/media/dvb/frontends/cx22700.h | 5 linux/drivers/media/dvb/frontends/g29504-401.c | 68 ++ linux/drivers/media/dvb/frontends/g29504-401.h | 9 linux/drivers/media/dvb/frontends/g29504-451.c | 51 ++ linux/drivers/media/dvb/frontends/g29504-451.h | 9 linux/drivers/media/dvb/frontends/l64781.c | 5 linux/drivers/media/dvb/frontends/l64781.h | 5 linux/drivers/media/dvb/frontends/mt312.c | 4 linux/drivers/media/dvb/frontends/mt312.h | 5 linux/drivers/media/dvb/frontends/nxt6000.c | 4 linux/drivers/media/dvb/frontends/nxt6000.h | 5 linux/drivers/media/dvb/frontends/stv0299.h | 2 linux/drivers/media/dvb/frontends/tbdu18132.c | 55 ++ linux/drivers/media/dvb/frontends/tbdu18132.h | 9 linux/drivers/media/dvb/frontends/tbmu24112.c | 144 ++++++ linux/drivers/media/dvb/frontends/tbmu24112.h | 9 linux/drivers/media/dvb/frontends/tda10021.c | 4 linux/drivers/media/dvb/frontends/tda10021.h | 5 linux/drivers/media/dvb/frontends/tda8083.c | 5 linux/drivers/media/dvb/frontends/tda8083.h | 5 linux/drivers/media/dvb/frontends/tda80xx.c | 6 linux/drivers/media/dvb/frontends/tda80xx.h | 5 linux/drivers/media/dvb/frontends/tdbe2.c | 61 ++ linux/drivers/media/dvb/frontends/tdbe2.h | 9 linux/drivers/media/dvb/frontends/tded4.c | 60 ++ linux/drivers/media/dvb/frontends/tded4.h | 9 linux/drivers/media/dvb/frontends/tdmb7.c | 49 ++ linux/drivers/media/dvb/frontends/tdmb7.h | 9 linux/drivers/media/dvb/frontends/tdtc9251dh0.c | 68 ++ linux/drivers/media/dvb/frontends/tdtc9251dh0.h | 9 linux/drivers/media/dvb/frontends/ves1820.c | 5 linux/drivers/media/dvb/frontends/ves1820.h | 5 linux/drivers/media/dvb/frontends/ves1x93.c | 4 linux/drivers/media/dvb/frontends/ves1x93.h | 5 linux/drivers/media/dvb/ttpci/av7110.c | 366 ---------------- linux/drivers/media/dvb/ttpci/av7110.h | 14 linux/drivers/media/dvb/ttpci/budget-av.c | 44 - linux/drivers/media/dvb/ttpci/budget-ci.c | 123 ----- linux/drivers/media/dvb/ttpci/budget-patch.c | 164 ------- linux/drivers/media/dvb/ttpci/budget.c | 243 ---------- linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 277 ------------ 59 files changed, 1265 insertions(+), 1435 deletions(-) Regards, Andreas