[PATCH 3/5] s3c24xx: introduce s3c-adc delay

Nelson Castillo arhuaco at freaks-unidos.net
Fri Sep 18 08:45:31 CEST 2009


From: Vasily Khoruzhick <anarsoul at gmail.com>

Without this patch we cannot make the s3c2410/s3c2440 touchscreen
driver work.

Is this delay device-dependant?
Is there a better way to do this?

We specify the delay value (S3C2410_ADCDLY).

Signed-off-by: Vasily Khoruzhick <anarsoul at gmail.com>
Signed-off-by: Nelson Castillo <arhuaco at freaks-unidos.net>
---

 arch/arm/plat-s3c24xx/adc.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-s3c24xx/adc.c b/arch/arm/plat-s3c24xx/adc.c
index 03429b2..a9eec95 100644
--- a/arch/arm/plat-s3c24xx/adc.c
+++ b/arch/arm/plat-s3c24xx/adc.c
@@ -58,6 +58,7 @@ struct adc_device {
 	void __iomem		*regs;
 
 	unsigned int		 prescale;
+	unsigned int		 delay;
 
 	int			 irq;
 };
@@ -247,6 +248,7 @@ static int s3c_adc_probe(struct platform_device *pdev)
 
 	adc->pdev = pdev;
 	adc->prescale = S3C2410_ADCCON_PRSCVL(49);
+	adc->delay = 0x2710;
 
 	adc->irq = platform_get_irq(pdev, 1);
 	if (adc->irq <= 0) {
@@ -286,6 +288,7 @@ static int s3c_adc_probe(struct platform_device *pdev)
 
 	writel(adc->prescale | S3C2410_ADCCON_PRSCEN,
 	       adc->regs + S3C2410_ADCCON);
+	writel(adc->delay, adc->regs + S3C2410_ADCDLY);
 
 	dev_info(dev, "attached adc driver\n");
 
@@ -341,6 +344,7 @@ static int s3c_adc_resume(struct platform_device *pdev)
 
 	writel(adc->prescale | S3C2410_ADCCON_PRSCEN,
 	       adc->regs + S3C2410_ADCCON);
+	writel(adc->delay, adc->regs + S3C2410_ADCDLY);
 
 	return 0;
 }




More information about the openmoko-kernel mailing list