From f9c5edfdc82e57980630c4d670c9abff2f940bf3 Mon Sep 17 00:00:00 2001 From: kfx Date: Wed, 9 May 2012 10:26:37 +0800 Subject: [PATCH] rk30: adc: irq function: add spin_lock --- drivers/adc/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/adc/core.c b/drivers/adc/core.c index 4dba47194588..011dcb0a19d1 100755 --- a/drivers/adc/core.c +++ b/drivers/adc/core.c @@ -84,7 +84,7 @@ static inline void trigger_next_adc_job_if_any(struct adc_host *adc) if(req == NULL) return; - list_del(&req->entry); + list_del_init(&req->entry); adc->cur = req->client; kfree(req); adc->ops->start(adc); @@ -118,6 +118,7 @@ void adc_core_irq_handle(struct adc_host *adc) { int result = adc->ops->read(adc); + spin_lock(&adc->lock); adc->ops->stop(adc); adc->cur->callback(adc->cur, adc->cur->callback_param, result); adc_sync_read_callback(adc->cur, NULL, result); @@ -125,6 +126,7 @@ void adc_core_irq_handle(struct adc_host *adc) wake_up(&adc->cur->wait); trigger_next_adc_job_if_any(adc); + spin_unlock(&adc->lock); } int adc_host_read(struct adc_client *client, enum read_type type) -- 2.34.1