[PATCH 6/8] S3C: merge ADC drivers and add support for the S3C64xx

Maurus Cuelenaere mcuelenaere at gmail.com
Fri Nov 20 09:34:28 EST 2009


Op 20-11-09 13:16, Vasily Khoruzhick schreef:
> В сообщении от 20 ноября 2009 14:04:10 автор Maurus Cuelenaere написал:
>    
>> This moves the S3C24xx ADC driver to plat-s3c and adds support
>> for the S3C64xx.
>>
>> Signed-off-by: Maurus Cuelenaere<mcuelenaere at gmail.com>
>> ---
>>   arch/arm/plat-s3c/Kconfig                 |    7 +++++
>>   arch/arm/plat-s3c/Makefile                |    4 +++
>>   arch/arm/{plat-s3c24xx =>  plat-s3c}/adc.c |   17 +++++++++--
>>   arch/arm/plat-s3c/include/plat/regs-adc.h |    3 ++
>>   arch/arm/plat-s3c24xx/Kconfig             |    7 -----
>>   arch/arm/plat-s3c24xx/Makefile            |    1 -
>>   arch/arm/plat-s3c64xx/Makefile            |    1 +
>>   arch/arm/plat-s3c64xx/dev-adc.c           |   42
>>   +++++++++++++++++++++++++++++ 8 files changed, 71 insertions(+), 11
>>   deletions(-)
>>   rename arch/arm/{plat-s3c24xx =>  plat-s3c}/adc.c (95%)
>>   create mode 100644 arch/arm/plat-s3c64xx/dev-adc.c
>>
>> diff --git a/arch/arm/plat-s3c/Kconfig b/arch/arm/plat-s3c/Kconfig
>> index 57e685b..4184084 100644
>> --- a/arch/arm/plat-s3c/Kconfig
>> +++ b/arch/arm/plat-s3c/Kconfig
>> @@ -159,6 +159,13 @@ config S3C_GPIO_CFG_S3C64XX
>>   	  Internal configuration to enable S3C64XX style GPIO configuration
>>   	  functions.
>>
>> +config S3C_ADC
>> +	bool "ADC common driver support"
>> +	help
>> +	  Core support for the ADC block found in the S3C SoC systems
>> +	  for drivers such as the touchscreen and hwmon to use to share
>> +	  this resource.
>> +
>>   # DMA
>>
>>   config S3C_DMA
>> diff --git a/arch/arm/plat-s3c/Makefile b/arch/arm/plat-s3c/Makefile
>> index 50444da..960fb43 100644
>> --- a/arch/arm/plat-s3c/Makefile
>> +++ b/arch/arm/plat-s3c/Makefile
>> @@ -32,6 +32,10 @@ obj-$(CONFIG_S3C2410_PM_CHECK)	+= pm-check.o
>>
>>   obj-$(CONFIG_HAVE_PWM)		+= pwm.o
>>
>> +# ADC support
>> +
>> +obj-$(CONFIG_S3C_ADC)		+= adc.o
>> +
>>   # devices
>>
>>   obj-$(CONFIG_S3C_DEV_HSMMC)	+= dev-hsmmc.o
>> diff --git a/arch/arm/plat-s3c24xx/adc.c b/arch/arm/plat-s3c/adc.c
>> similarity index 95%
>> rename from arch/arm/plat-s3c24xx/adc.c
>> rename to arch/arm/plat-s3c/adc.c
>> index df47322..572b7be 100644
>> --- a/arch/arm/plat-s3c24xx/adc.c
>> +++ b/arch/arm/plat-s3c/adc.c
>> @@ -1,10 +1,10 @@
>> -/* arch/arm/plat-s3c24xx/adc.c
>> +/* arch/arm/plat-s3c/adc.c
>>    *
>>    * Copyright (c) 2008 Simtec Electronics
>>    *	http://armlinux.simtec.co.uk/
>>    *	Ben Dooks<ben at simtec.co.uk>,<ben-linux at fluff.org>
>>    *
>> - * S3C24XX ADC device core
>> + * S3C ADC device core
>>    *
>>    * This program is free software; you can redistribute it and/or modify
>>    * it under the terms of the GNU General Public License as published by
>> @@ -72,10 +72,18 @@ static LIST_HEAD(adc_pending);
>>
>>   #define adc_dbg(_adc, msg...) dev_dbg(&(_adc)->pdev->dev, msg)
>>
>> +#define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | \
>> +		S3C2410_ADCTSC_XP_SEN | S3C2410_ADCTSC_AUTO_PST | \
>> +		S3C2410_ADCTSC_XY_PST(0))
>> +
>>   static inline void s3c_adc_convert(struct adc_device *adc)
>>   {
>>   	unsigned con = readl(adc->regs + S3C2410_ADCCON);
>>
>> +	if (adc->cur->is_ts)
>> +		writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST,
>> +			adc->regs + S3C2410_ADCTSC);
>> +
>>   	con |= S3C2410_ADCCON_ENABLE_START;
>>   	writel(con, adc->regs + S3C2410_ADCCON);
>>   }
>> @@ -260,6 +268,9 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw)
>>   	unsigned long flags;
>>   	unsigned data0, data1;
>>
>> +	/* Clear ADC interrupt */
>> +	__raw_writel(0x0, adc->regs + S3C6400_ADCCLRINT);
>> +
>>      
> s3c24xx has not ADCCLRINT register, so I suspect it'll break s3c24xx-
> compatibility
Hmm right, that doesn't seem right; this should in an if(adc->type == 
S3C64XX) check..

Also that if(adc->cur->is_ts) change above seems unrelated, let me 
resend this patch.

Regards,
Maurus Cuelenaere




More information about the linux-arm-kernel mailing list