Index: drivers/misc/adc/ads7846_adc_ssp.c =================================================================== RCS file: /cvs/linux/kernel26/drivers/misc/adc/ads7846_adc_ssp.c,v retrieving revision 1.11 diff -u -r1.11 ads7846_adc_ssp.c --- drivers/misc/adc/ads7846_adc_ssp.c 13 Feb 2007 12:01:10 -0000 1.11 +++ drivers/misc/adc/ads7846_adc_ssp.c 13 Feb 2007 13:29:39 -0000 @@ -22,6 +22,12 @@ #include #include +#if defined (CONFIG_PXA27x) || defined (CONFIG_PXA26x) +#define CKEN_SSP(x) (((x) == 1) ? CKEN23_SSP1 : ((x) == 2) ? CKEN3_SSP2 : ((x) == 3) ? CKEN4_SSP3 : 0) +#else +#define CKEN_SSP(x) (((x) == 1) ? CKEN3_SSP : ((x) == 2) ? CKEN9_NSSP : 0) +#endif + static int initialized = 0; static int port; static spinlock_t ads7846_ssp_lock = SPIN_LOCK_UNLOCKED; @@ -80,6 +86,7 @@ SSCR0_P(port) |= 0x11 << 8; /* ~100 KHz */ SSCR1_P(port) = 0; + SSPSP_P(port) = 0; SSCR0_P(port) |= SSCR0_SSE; } @@ -94,6 +101,7 @@ return -EINVAL; } + pxa_set_cken(CKEN_SSP(port), 1); ads7846_init_chip(); initialized = 1; return 0; @@ -102,6 +110,7 @@ static int __devexit ads7846_ssp_remove(struct platform_device *dev) { SSCR0_P(port) &= ~SSCR0_SSE; + pxa_set_cken(CKEN_SSP(port), 0); return 0; }