aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-s3c24xx/adc.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-s3c24xx/adc.c')
-rw-r--r--arch/arm/plat-s3c24xx/adc.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/arch/arm/plat-s3c24xx/adc.c b/arch/arm/plat-s3c24xx/adc.c
index 9a5c767e0a42..91adfa71c172 100644
--- a/arch/arm/plat-s3c24xx/adc.c
+++ b/arch/arm/plat-s3c24xx/adc.c
@@ -100,7 +100,7 @@ static void s3c_adc_dbgshow(struct adc_device *adc)
100 readl(adc->regs + S3C2410_ADCDLY)); 100 readl(adc->regs + S3C2410_ADCDLY));
101} 101}
102 102
103void s3c_adc_try(struct adc_device *adc) 103static void s3c_adc_try(struct adc_device *adc)
104{ 104{
105 struct s3c_adc_client *next = adc->ts_pend; 105 struct s3c_adc_client *next = adc->ts_pend;
106 106
@@ -190,6 +190,23 @@ EXPORT_SYMBOL_GPL(s3c_adc_register);
190void s3c_adc_release(struct s3c_adc_client *client) 190void s3c_adc_release(struct s3c_adc_client *client)
191{ 191{
192 /* We should really check that nothing is in progress. */ 192 /* We should really check that nothing is in progress. */
193 if (adc_dev->cur == client)
194 adc_dev->cur = NULL;
195 if (adc_dev->ts_pend == client)
196 adc_dev->ts_pend = NULL;
197 else {
198 struct list_head *p, *n;
199 struct s3c_adc_client *tmp;
200
201 list_for_each_safe(p, n, &adc_pending) {
202 tmp = list_entry(p, struct s3c_adc_client, pend);
203 if (tmp == client)
204 list_del(&tmp->pend);
205 }
206 }
207
208 if (adc_dev->cur == NULL)
209 s3c_adc_try(adc_dev);
193 kfree(client); 210 kfree(client);
194} 211}
195EXPORT_SYMBOL_GPL(s3c_adc_release); 212EXPORT_SYMBOL_GPL(s3c_adc_release);