Lines Matching refs:client
96 struct s3c_adc_client *client) in s3c_adc_select() argument
101 client->select_cb(client, 1); in s3c_adc_select()
108 if (!client->is_ts) { in s3c_adc_select()
110 writel(client->channel & 0xf, adc->regs + S5P_ADCMUX); in s3c_adc_select()
112 writel(client->channel & 0xf, in s3c_adc_select()
115 con |= S3C2410_ADCCON_SELMUX(client->channel); in s3c_adc_select()
149 int s3c_adc_start(struct s3c_adc_client *client, in s3c_adc_start() argument
162 if (client->is_ts && adc->ts_pend) { in s3c_adc_start()
167 client->channel = channel; in s3c_adc_start()
168 client->nr_samples = nr_samples; in s3c_adc_start()
170 if (client->is_ts) in s3c_adc_start()
171 adc->ts_pend = client; in s3c_adc_start()
173 list_add_tail(&client->pend, &adc_pending); in s3c_adc_start()
184 static void s3c_convert_done(struct s3c_adc_client *client, in s3c_convert_done() argument
187 client->result = v; in s3c_convert_done()
188 wake_up(client->wait); in s3c_convert_done()
191 int s3c_adc_read(struct s3c_adc_client *client, unsigned int ch) in s3c_adc_read() argument
196 client->convert_cb = s3c_convert_done; in s3c_adc_read()
197 client->wait = &wake; in s3c_adc_read()
198 client->result = -1; in s3c_adc_read()
200 ret = s3c_adc_start(client, ch, 1); in s3c_adc_read()
204 ret = wait_event_timeout(wake, client->result >= 0, HZ / 2); in s3c_adc_read()
205 if (client->result < 0) { in s3c_adc_read()
210 client->convert_cb = NULL; in s3c_adc_read()
211 return client->result; in s3c_adc_read()
218 static void s3c_adc_default_select(struct s3c_adc_client *client, in s3c_adc_default_select() argument
224 void (*select)(struct s3c_adc_client *client, in s3c_adc_register() argument
226 void (*conv)(struct s3c_adc_client *client, in s3c_adc_register() argument
231 struct s3c_adc_client *client; in s3c_adc_register() local
241 client = kzalloc(sizeof(struct s3c_adc_client), GFP_KERNEL); in s3c_adc_register()
242 if (!client) { in s3c_adc_register()
247 client->pdev = pdev; in s3c_adc_register()
248 client->is_ts = is_ts; in s3c_adc_register()
249 client->select_cb = select; in s3c_adc_register()
250 client->convert_cb = conv; in s3c_adc_register()
252 return client; in s3c_adc_register()
256 void s3c_adc_release(struct s3c_adc_client *client) in s3c_adc_release() argument
263 if (adc_dev->cur == client) in s3c_adc_release()
265 if (adc_dev->ts_pend == client) in s3c_adc_release()
273 if (tmp == client) in s3c_adc_release()
282 kfree(client); in s3c_adc_release()
289 struct s3c_adc_client *client = adc->cur; in s3c_adc_irq() local
293 if (!client) { in s3c_adc_irq()
300 adc_dbg(adc, "read %d: 0x%04x, 0x%04x\n", client->nr_samples, data0, data1); in s3c_adc_irq()
302 client->nr_samples--; in s3c_adc_irq()
313 if (client->convert_cb) in s3c_adc_irq()
314 (client->convert_cb)(client, data0, data1, &client->nr_samples); in s3c_adc_irq()
316 if (client->nr_samples > 0) { in s3c_adc_irq()
319 client->select_cb(client, 1); in s3c_adc_irq()
323 (client->select_cb)(client, 0); in s3c_adc_irq()