diff options
Diffstat (limited to 'drivers/iio/adc/at91_adc.c')
-rw-r--r-- | drivers/iio/adc/at91_adc.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c index 3b5bacd4d8da..2b6a9ce9927c 100644 --- a/drivers/iio/adc/at91_adc.c +++ b/drivers/iio/adc/at91_adc.c | |||
@@ -510,12 +510,11 @@ static int at91_adc_channel_init(struct iio_dev *idev) | |||
510 | return idev->num_channels; | 510 | return idev->num_channels; |
511 | } | 511 | } |
512 | 512 | ||
513 | static u8 at91_adc_get_trigger_value_by_name(struct iio_dev *idev, | 513 | static int at91_adc_get_trigger_value_by_name(struct iio_dev *idev, |
514 | struct at91_adc_trigger *triggers, | 514 | struct at91_adc_trigger *triggers, |
515 | const char *trigger_name) | 515 | const char *trigger_name) |
516 | { | 516 | { |
517 | struct at91_adc_state *st = iio_priv(idev); | 517 | struct at91_adc_state *st = iio_priv(idev); |
518 | u8 value = 0; | ||
519 | int i; | 518 | int i; |
520 | 519 | ||
521 | for (i = 0; i < st->trigger_number; i++) { | 520 | for (i = 0; i < st->trigger_number; i++) { |
@@ -528,15 +527,16 @@ static u8 at91_adc_get_trigger_value_by_name(struct iio_dev *idev, | |||
528 | return -ENOMEM; | 527 | return -ENOMEM; |
529 | 528 | ||
530 | if (strcmp(trigger_name, name) == 0) { | 529 | if (strcmp(trigger_name, name) == 0) { |
531 | value = triggers[i].value; | ||
532 | kfree(name); | 530 | kfree(name); |
533 | break; | 531 | if (triggers[i].value == 0) |
532 | return -EINVAL; | ||
533 | return triggers[i].value; | ||
534 | } | 534 | } |
535 | 535 | ||
536 | kfree(name); | 536 | kfree(name); |
537 | } | 537 | } |
538 | 538 | ||
539 | return value; | 539 | return -EINVAL; |
540 | } | 540 | } |
541 | 541 | ||
542 | static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state) | 542 | static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state) |
@@ -546,14 +546,14 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state) | |||
546 | struct iio_buffer *buffer = idev->buffer; | 546 | struct iio_buffer *buffer = idev->buffer; |
547 | struct at91_adc_reg_desc *reg = st->registers; | 547 | struct at91_adc_reg_desc *reg = st->registers; |
548 | u32 status = at91_adc_readl(st, reg->trigger_register); | 548 | u32 status = at91_adc_readl(st, reg->trigger_register); |
549 | u8 value; | 549 | int value; |
550 | u8 bit; | 550 | u8 bit; |
551 | 551 | ||
552 | value = at91_adc_get_trigger_value_by_name(idev, | 552 | value = at91_adc_get_trigger_value_by_name(idev, |
553 | st->trigger_list, | 553 | st->trigger_list, |
554 | idev->trig->name); | 554 | idev->trig->name); |
555 | if (value == 0) | 555 | if (value < 0) |
556 | return -EINVAL; | 556 | return value; |
557 | 557 | ||
558 | if (state) { | 558 | if (state) { |
559 | st->buffer = kmalloc(idev->scan_bytes, GFP_KERNEL); | 559 | st->buffer = kmalloc(idev->scan_bytes, GFP_KERNEL); |