Index: drivers/input/touchscreen/ts-adc-debounce.c =================================================================== RCS file: /cvs/linux/kernel26/drivers/input/touchscreen/ts-adc-debounce.c,v retrieving revision 1.30 diff -u -r1.30 ts-adc-debounce.c --- drivers/input/touchscreen/ts-adc-debounce.c 17 Feb 2007 19:39:56 -0000 1.30 +++ drivers/input/touchscreen/ts-adc-debounce.c 17 Feb 2007 22:59:13 -0000 @@ -154,7 +154,9 @@ } if (!pen_up) { - params->sense(params->adc_dev, &ts->req); + adc_methods *methods = dev_get_drvdata(params->adc_dev); + if (methods) + methods->sense(params->adc_dev, &ts->req); debounce_samples(ts->req.sense, &ts_pos); } Index: drivers/misc/adc/ads7846_adc_ssp.c =================================================================== RCS file: /cvs/linux/kernel26/drivers/misc/adc/ads7846_adc_ssp.c,v retrieving revision 1.15 diff -u -r1.15 ads7846_adc_ssp.c --- drivers/misc/adc/ads7846_adc_ssp.c 17 Feb 2007 16:57:20 -0000 1.15 +++ drivers/misc/adc/ads7846_adc_ssp.c 17 Feb 2007 22:59:13 -0000 @@ -91,7 +91,7 @@ CTRL_AUX_N, }; -int ads7846_sense(struct device *dev, struct adc_request *req) +static int ads7846_sense(struct device *dev, struct adc_request *req) { struct ads7846_ssp_platform_data *params = dev->platform_data; int i; @@ -114,7 +114,10 @@ ads7846_ssp_putget(CTRL_START); return 0; } -EXPORT_SYMBOL(ads7846_sense); + +struct adc_methods ads7846_methods = { + .sense = ads7846_sense, +}; static void ads7846_ssp_init(int freq) { @@ -150,6 +153,7 @@ printk(KERN_ERR "ads7846_ssp: Invalid port\n"); return -EINVAL; } + platform_set_drvdata(dev, &ads7846_methods); pxa_set_cken(CKEN_SSP(port), 1); /* ~1.8Mhz - max frequency for PXA25x */ @@ -162,6 +166,8 @@ { SSCR0_P(port) &= ~SSCR0_SSE; pxa_set_cken(CKEN_SSP(port), 0); + + platform_set_drvdata(dev, NULL); return 0; } Index: include/linux/adc.h =================================================================== RCS file: /cvs/linux/kernel26/include/linux/adc.h,v retrieving revision 1.1 diff -u -r1.1 adc.h --- include/linux/adc.h 28 Jan 2007 18:28:57 -0000 1.1 +++ include/linux/adc.h 17 Feb 2007 22:59:13 -0000 @@ -26,4 +26,8 @@ #define adc_request_entry(ptr) container_of(ptr, struct adc_request, requests) +struct adc_methods { + int (*sense)(struct device *this, struct adc_request *req); +}; + #endif // adc.h