diff options
Diffstat (limited to 'arch/arm/plat-s3c24xx/adc.c')
| -rw-r--r-- | arch/arm/plat-s3c24xx/adc.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm/plat-s3c24xx/adc.c b/arch/arm/plat-s3c24xx/adc.c index 91adfa71c172..ee1baf11ad9e 100644 --- a/arch/arm/plat-s3c24xx/adc.c +++ b/arch/arm/plat-s3c24xx/adc.c | |||
| @@ -45,7 +45,8 @@ struct s3c_adc_client { | |||
| 45 | unsigned char channel; | 45 | unsigned char channel; |
| 46 | 46 | ||
| 47 | void (*select_cb)(unsigned selected); | 47 | void (*select_cb)(unsigned selected); |
| 48 | void (*convert_cb)(unsigned val1, unsigned val2); | 48 | void (*convert_cb)(unsigned val1, unsigned val2, |
| 49 | unsigned *samples_left); | ||
| 49 | }; | 50 | }; |
| 50 | 51 | ||
| 51 | struct adc_device { | 52 | struct adc_device { |
| @@ -158,7 +159,8 @@ static void s3c_adc_default_select(unsigned select) | |||
| 158 | 159 | ||
| 159 | struct s3c_adc_client *s3c_adc_register(struct platform_device *pdev, | 160 | struct s3c_adc_client *s3c_adc_register(struct platform_device *pdev, |
| 160 | void (*select)(unsigned int selected), | 161 | void (*select)(unsigned int selected), |
| 161 | void (*conv)(unsigned d0, unsigned d1), | 162 | void (*conv)(unsigned d0, unsigned d1, |
| 163 | unsigned *samples_left), | ||
| 162 | unsigned int is_ts) | 164 | unsigned int is_ts) |
| 163 | { | 165 | { |
| 164 | struct s3c_adc_client *client; | 166 | struct s3c_adc_client *client; |
| @@ -227,9 +229,10 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw) | |||
| 227 | data1 = readl(adc->regs + S3C2410_ADCDAT1); | 229 | data1 = readl(adc->regs + S3C2410_ADCDAT1); |
| 228 | adc_dbg(adc, "read %d: 0x%04x, 0x%04x\n", client->nr_samples, data0, data1); | 230 | adc_dbg(adc, "read %d: 0x%04x, 0x%04x\n", client->nr_samples, data0, data1); |
| 229 | 231 | ||
| 230 | (client->convert_cb)(data0 & 0x3ff, data1 & 0x3ff); | 232 | client->nr_samples--; |
| 233 | (client->convert_cb)(data0 & 0x3ff, data1 & 0x3ff, &client->nr_samples); | ||
| 231 | 234 | ||
| 232 | if (--client->nr_samples > 0) { | 235 | if (client->nr_samples > 0) { |
| 233 | /* fire another conversion for this */ | 236 | /* fire another conversion for this */ |
| 234 | 237 | ||
| 235 | client->select_cb(1); | 238 | client->select_cb(1); |
