diff options
author | Gustavo Silva <silvagustavosilva@gmail.com> | 2010-06-16 01:17:52 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-06-17 18:54:24 -0400 |
commit | 4c68fb42c2a39b89daca2b7175eb93ffe6860da4 (patch) | |
tree | f2df8f0d8212dd969af003cdddcb504d096f3e49 /drivers/staging/comedi | |
parent | 8f4e80af3aa509902bd2319c3b5512580f64868f (diff) |
Staging: comedi: drivers: fix coding style issues in pcl816.c
This is a patch to the pcl816.c file that fixes up the following
issues:
ERROR: code indent should use tabs where possible x 2
WARNING: line over 80 characters x 34
WARNING: please, no space before tabs x 1
WARNING: braces {} are not necessary for single statement blocks x 6
WARNING: printk() should include KERN_ facility level x 15
WARNING: braces {} are not necessary for any arm of this statement x 1
Signed-off-by: Gustavo Silva <silvagustavo@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r-- | drivers/staging/comedi/drivers/pcl816.c | 223 |
1 files changed, 140 insertions, 83 deletions
diff --git a/drivers/staging/comedi/drivers/pcl816.c b/drivers/staging/comedi/drivers/pcl816.c index a84b942c5a9..3d0f018faa6 100644 --- a/drivers/staging/comedi/drivers/pcl816.c +++ b/drivers/staging/comedi/drivers/pcl816.c | |||
@@ -2,7 +2,7 @@ | |||
2 | comedi/drivers/pcl816.c | 2 | comedi/drivers/pcl816.c |
3 | 3 | ||
4 | Author: Juan Grigera <juan@grigera.com.ar> | 4 | Author: Juan Grigera <juan@grigera.com.ar> |
5 | based on pcl818 by Michal Dobes <dobes@tesnet.cz> and bits of pcl812 | 5 | based on pcl818 by Michal Dobes <dobes@tesnet.cz> and bits of pcl812 |
6 | 6 | ||
7 | hardware driver for Advantech cards: | 7 | hardware driver for Advantech cards: |
8 | card: PCL-816, PCL814B | 8 | card: PCL-816, PCL814B |
@@ -28,7 +28,7 @@ Configuration Options: | |||
28 | [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7) | 28 | [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7) |
29 | [2] - DMA (0=disable, 1, 3) | 29 | [2] - DMA (0=disable, 1, 3) |
30 | [3] - 0, 10=10MHz clock for 8254 | 30 | [3] - 0, 10=10MHz clock for 8254 |
31 | 1= 1MHz clock for 8254 | 31 | 1= 1MHz clock for 8254 |
32 | 32 | ||
33 | */ | 33 | */ |
34 | 34 | ||
@@ -85,7 +85,7 @@ Configuration Options: | |||
85 | #define INT_TYPE_AI3_DMA_RTC 10 | 85 | #define INT_TYPE_AI3_DMA_RTC 10 |
86 | 86 | ||
87 | /* RTC stuff... */ | 87 | /* RTC stuff... */ |
88 | #define RTC_IRQ 8 | 88 | #define RTC_IRQ 8 |
89 | #define RTC_IO_EXTENT 0x10 | 89 | #define RTC_IO_EXTENT 0x10 |
90 | #endif | 90 | #endif |
91 | 91 | ||
@@ -264,7 +264,8 @@ static int pcl816_ai_insn_read(struct comedi_device *dev, | |||
264 | 264 | ||
265 | /* Set the input channel */ | 265 | /* Set the input channel */ |
266 | outb(CR_CHAN(insn->chanspec) & 0xf, dev->iobase + PCL816_MUX); | 266 | outb(CR_CHAN(insn->chanspec) & 0xf, dev->iobase + PCL816_MUX); |
267 | outb(CR_RANGE(insn->chanspec), dev->iobase + PCL816_RANGE); /* select gain */ | 267 | /* select gain */ |
268 | outb(CR_RANGE(insn->chanspec), dev->iobase + PCL816_RANGE); | ||
268 | 269 | ||
269 | for (n = 0; n < insn->n; n++) { | 270 | for (n = 0; n < insn->n; n++) { |
270 | 271 | ||
@@ -279,8 +280,8 @@ static int pcl816_ai_insn_read(struct comedi_device *dev, | |||
279 | ((inb(dev->iobase + | 280 | ((inb(dev->iobase + |
280 | PCL816_AD_HI) << 8) | | 281 | PCL816_AD_HI) << 8) | |
281 | (inb(dev->iobase + PCL816_AD_LO))); | 282 | (inb(dev->iobase + PCL816_AD_LO))); |
282 | 283 | /* clear INT (conversion end) flag */ | |
283 | outb(0, dev->iobase + PCL816_CLRINT); /* clear INT (conversion end) flag */ | 284 | outb(0, dev->iobase + PCL816_CLRINT); |
284 | break; | 285 | break; |
285 | } | 286 | } |
286 | udelay(1); | 287 | udelay(1); |
@@ -289,7 +290,8 @@ static int pcl816_ai_insn_read(struct comedi_device *dev, | |||
289 | if (!timeout) { | 290 | if (!timeout) { |
290 | comedi_error(dev, "A/D insn timeout\n"); | 291 | comedi_error(dev, "A/D insn timeout\n"); |
291 | data[0] = 0; | 292 | data[0] = 0; |
292 | outb(0, dev->iobase + PCL816_CLRINT); /* clear INT (conversion end) flag */ | 293 | /* clear INT (conversion end) flag */ |
294 | outb(0, dev->iobase + PCL816_CLRINT); | ||
293 | return -EIO; | 295 | return -EIO; |
294 | } | 296 | } |
295 | 297 | ||
@@ -343,7 +345,8 @@ static irqreturn_t interrupt_pcl816_ai_mode13_int(int irq, void *d) | |||
343 | } | 345 | } |
344 | 346 | ||
345 | if (!devpriv->ai_neverending) | 347 | if (!devpriv->ai_neverending) |
346 | if (devpriv->ai_act_scan >= devpriv->ai_scans) { /* all data sampled */ | 348 | /* all data sampled */ |
349 | if (devpriv->ai_act_scan >= devpriv->ai_scans) { | ||
347 | /* all data sampled */ | 350 | /* all data sampled */ |
348 | pcl816_ai_cancel(dev, s); | 351 | pcl816_ai_cancel(dev, s); |
349 | s->async->events |= COMEDI_CB_EOA; | 352 | s->async->events |= COMEDI_CB_EOA; |
@@ -380,7 +383,8 @@ static void transfer_from_dma_buf(struct comedi_device *dev, | |||
380 | } | 383 | } |
381 | 384 | ||
382 | if (!devpriv->ai_neverending) | 385 | if (!devpriv->ai_neverending) |
383 | if (devpriv->ai_act_scan >= devpriv->ai_scans) { /* all data sampled */ | 386 | /* all data sampled */ |
387 | if (devpriv->ai_act_scan >= devpriv->ai_scans) { | ||
384 | pcl816_ai_cancel(dev, s); | 388 | pcl816_ai_cancel(dev, s); |
385 | s->async->events |= COMEDI_CB_EOA; | 389 | s->async->events |= COMEDI_CB_EOA; |
386 | s->async->events |= COMEDI_CB_BLOCK; | 390 | s->async->events |= COMEDI_CB_BLOCK; |
@@ -402,7 +406,8 @@ static irqreturn_t interrupt_pcl816_ai_mode13_dma(int irq, void *d) | |||
402 | disable_dma(devpriv->dma); | 406 | disable_dma(devpriv->dma); |
403 | this_dma_buf = devpriv->next_dma_buf; | 407 | this_dma_buf = devpriv->next_dma_buf; |
404 | 408 | ||
405 | if ((devpriv->dma_runs_to_end > -1) || devpriv->ai_neverending) { /* switch dma bufs */ | 409 | /* switch dma bufs */ |
410 | if ((devpriv->dma_runs_to_end > -1) || devpriv->ai_neverending) { | ||
406 | 411 | ||
407 | devpriv->next_dma_buf = 1 - devpriv->next_dma_buf; | 412 | devpriv->next_dma_buf = 1 - devpriv->next_dma_buf; |
408 | set_dma_mode(devpriv->dma, DMA_MODE_READ); | 413 | set_dma_mode(devpriv->dma, DMA_MODE_READ); |
@@ -478,14 +483,14 @@ static irqreturn_t interrupt_pcl816(int irq, void *d) | |||
478 | */ | 483 | */ |
479 | static void pcl816_cmdtest_out(int e, struct comedi_cmd *cmd) | 484 | static void pcl816_cmdtest_out(int e, struct comedi_cmd *cmd) |
480 | { | 485 | { |
481 | printk("pcl816 e=%d startsrc=%x scansrc=%x convsrc=%x\n", e, | 486 | printk(KERN_INFO "pcl816 e=%d startsrc=%x scansrc=%x convsrc=%x\n", e, |
482 | cmd->start_src, cmd->scan_begin_src, cmd->convert_src); | 487 | cmd->start_src, cmd->scan_begin_src, cmd->convert_src); |
483 | printk("pcl816 e=%d startarg=%d scanarg=%d convarg=%d\n", e, | 488 | printk(KERN_INFO "pcl816 e=%d startarg=%d scanarg=%d convarg=%d\n", e, |
484 | cmd->start_arg, cmd->scan_begin_arg, cmd->convert_arg); | 489 | cmd->start_arg, cmd->scan_begin_arg, cmd->convert_arg); |
485 | printk("pcl816 e=%d stopsrc=%x scanend=%x\n", e, cmd->stop_src, | 490 | printk(KERN_INFO "pcl816 e=%d stopsrc=%x scanend=%x\n", e, |
486 | cmd->scan_end_src); | 491 | cmd->stop_src, cmd->scan_end_src); |
487 | printk("pcl816 e=%d stoparg=%d scanendarg=%d chanlistlen=%d\n", e, | 492 | printk(KERN_INFO "pcl816 e=%d stoparg=%d scanendarg=%d chanlistlen=%d\n", |
488 | cmd->stop_arg, cmd->scan_end_arg, cmd->chanlist_len); | 493 | e, cmd->stop_arg, cmd->scan_end_arg, cmd->chanlist_len); |
489 | } | 494 | } |
490 | 495 | ||
491 | /* | 496 | /* |
@@ -497,8 +502,9 @@ static int pcl816_ai_cmdtest(struct comedi_device *dev, | |||
497 | int err = 0; | 502 | int err = 0; |
498 | int tmp, divisor1 = 0, divisor2 = 0; | 503 | int tmp, divisor1 = 0, divisor2 = 0; |
499 | 504 | ||
500 | DEBUG(printk("pcl816 pcl812_ai_cmdtest\n"); pcl816_cmdtest_out(-1, cmd); | 505 | DEBUG(printk(KERN_INFO "pcl816 pcl812_ai_cmdtest\n"); |
501 | ); | 506 | pcl816_cmdtest_out(-1, cmd); |
507 | ); | ||
502 | 508 | ||
503 | /* step 1: make sure trigger sources are trivially valid */ | 509 | /* step 1: make sure trigger sources are trivially valid */ |
504 | tmp = cmd->start_src; | 510 | tmp = cmd->start_src; |
@@ -526,11 +532,14 @@ static int pcl816_ai_cmdtest(struct comedi_device *dev, | |||
526 | if (!cmd->stop_src || tmp != cmd->stop_src) | 532 | if (!cmd->stop_src || tmp != cmd->stop_src) |
527 | err++; | 533 | err++; |
528 | 534 | ||
529 | if (err) { | 535 | if (err) |
530 | return 1; | 536 | return 1; |
531 | } | ||
532 | 537 | ||
533 | /* step 2: make sure trigger sources are unique and mutually compatible */ | 538 | |
539 | /* | ||
540 | * step 2: make sure trigger sources | ||
541 | * are unique and mutually compatible | ||
542 | */ | ||
534 | 543 | ||
535 | if (cmd->start_src != TRIG_NOW) { | 544 | if (cmd->start_src != TRIG_NOW) { |
536 | cmd->start_src = TRIG_NOW; | 545 | cmd->start_src = TRIG_NOW; |
@@ -555,9 +564,9 @@ static int pcl816_ai_cmdtest(struct comedi_device *dev, | |||
555 | if (cmd->stop_src != TRIG_NONE && cmd->stop_src != TRIG_COUNT) | 564 | if (cmd->stop_src != TRIG_NONE && cmd->stop_src != TRIG_COUNT) |
556 | err++; | 565 | err++; |
557 | 566 | ||
558 | if (err) { | 567 | if (err) |
559 | return 2; | 568 | return 2; |
560 | } | 569 | |
561 | 570 | ||
562 | /* step 3: make sure arguments are trivially compatible */ | 571 | /* step 3: make sure arguments are trivially compatible */ |
563 | if (cmd->start_arg != 0) { | 572 | if (cmd->start_arg != 0) { |
@@ -597,9 +606,9 @@ static int pcl816_ai_cmdtest(struct comedi_device *dev, | |||
597 | } | 606 | } |
598 | } | 607 | } |
599 | 608 | ||
600 | if (err) { | 609 | if (err) |
601 | return 3; | 610 | return 3; |
602 | } | 611 | |
603 | 612 | ||
604 | /* step 4: fix up any arguments */ | 613 | /* step 4: fix up any arguments */ |
605 | if (cmd->convert_src == TRIG_TIMER) { | 614 | if (cmd->convert_src == TRIG_TIMER) { |
@@ -614,9 +623,9 @@ static int pcl816_ai_cmdtest(struct comedi_device *dev, | |||
614 | err++; | 623 | err++; |
615 | } | 624 | } |
616 | 625 | ||
617 | if (err) { | 626 | if (err) |
618 | return 4; | 627 | return 4; |
619 | } | 628 | |
620 | 629 | ||
621 | /* step 5: complain about special chanlist considerations */ | 630 | /* step 5: complain about special chanlist considerations */ |
622 | 631 | ||
@@ -654,7 +663,9 @@ static int pcl816_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) | |||
654 | i8253_cascade_ns_to_timer(this_board->i8254_osc_base, &divisor1, | 663 | i8253_cascade_ns_to_timer(this_board->i8254_osc_base, &divisor1, |
655 | &divisor2, &cmd->convert_arg, | 664 | &divisor2, &cmd->convert_arg, |
656 | cmd->flags & TRIG_ROUND_MASK); | 665 | cmd->flags & TRIG_ROUND_MASK); |
657 | if (divisor1 == 1) { /* PCL816 crash if any divisor is set to 1 */ | 666 | |
667 | /* PCL816 crash if any divisor is set to 1 */ | ||
668 | if (divisor1 == 1) { | ||
658 | divisor1 = 2; | 669 | divisor1 = 2; |
659 | divisor2 /= 2; | 670 | divisor2 /= 2; |
660 | } | 671 | } |
@@ -687,8 +698,10 @@ static int pcl816_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) | |||
687 | devpriv->ai_neverending = 1; | 698 | devpriv->ai_neverending = 1; |
688 | } | 699 | } |
689 | 700 | ||
690 | if ((cmd->flags & TRIG_WAKE_EOS)) { /* don't we want wake up every scan? */ | 701 | /* don't we want wake up every scan? */ |
691 | printk("pl816: You wankt WAKE_EOS but I dont want handle it"); | 702 | if ((cmd->flags & TRIG_WAKE_EOS)) { |
703 | printk(KERN_INFO | ||
704 | "pl816: You wankt WAKE_EOS but I dont want handle it"); | ||
692 | /* devpriv->ai_eos=1; */ | 705 | /* devpriv->ai_eos=1; */ |
693 | /* if (devpriv->ai_n_chan==1) */ | 706 | /* if (devpriv->ai_n_chan==1) */ |
694 | /* devpriv->dma=0; // DMA is useless for this situation */ | 707 | /* devpriv->dma=0; // DMA is useless for this situation */ |
@@ -697,9 +710,17 @@ static int pcl816_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) | |||
697 | if (devpriv->dma) { | 710 | if (devpriv->dma) { |
698 | bytes = devpriv->hwdmasize[0]; | 711 | bytes = devpriv->hwdmasize[0]; |
699 | if (!devpriv->ai_neverending) { | 712 | if (!devpriv->ai_neverending) { |
700 | bytes = s->async->cmd.chanlist_len * s->async->cmd.chanlist_len * sizeof(short); /* how many */ | 713 | /* how many */ |
701 | devpriv->dma_runs_to_end = bytes / devpriv->hwdmasize[0]; /* how many DMA pages we must fill */ | 714 | bytes = s->async->cmd.chanlist_len * |
702 | devpriv->last_dma_run = bytes % devpriv->hwdmasize[0]; /* on last dma transfer must be moved */ | 715 | s->async->cmd.chanlist_len * |
716 | sizeof(short); | ||
717 | |||
718 | /* how many DMA pages we must fill */ | ||
719 | devpriv->dma_runs_to_end = bytes / | ||
720 | devpriv->hwdmasize[0]; | ||
721 | |||
722 | /* on last dma transfer must be moved */ | ||
723 | devpriv->last_dma_run = bytes % devpriv->hwdmasize[0]; | ||
703 | devpriv->dma_runs_to_end--; | 724 | devpriv->dma_runs_to_end--; |
704 | if (devpriv->dma_runs_to_end >= 0) | 725 | if (devpriv->dma_runs_to_end >= 0) |
705 | bytes = devpriv->hwdmasize[0]; | 726 | bytes = devpriv->hwdmasize[0]; |
@@ -722,14 +743,22 @@ static int pcl816_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) | |||
722 | switch (cmd->convert_src) { | 743 | switch (cmd->convert_src) { |
723 | case TRIG_TIMER: | 744 | case TRIG_TIMER: |
724 | devpriv->int816_mode = INT_TYPE_AI1_DMA; | 745 | devpriv->int816_mode = INT_TYPE_AI1_DMA; |
725 | outb(0x32, dev->iobase + PCL816_CONTROL); /* Pacer+IRQ+DMA */ | 746 | |
726 | outb(dmairq, dev->iobase + PCL816_STATUS); /* write irq and DMA to card */ | 747 | /* Pacer+IRQ+DMA */ |
748 | outb(0x32, dev->iobase + PCL816_CONTROL); | ||
749 | |||
750 | /* write irq and DMA to card */ | ||
751 | outb(dmairq, dev->iobase + PCL816_STATUS); | ||
727 | break; | 752 | break; |
728 | 753 | ||
729 | default: | 754 | default: |
730 | devpriv->int816_mode = INT_TYPE_AI3_DMA; | 755 | devpriv->int816_mode = INT_TYPE_AI3_DMA; |
731 | outb(0x34, dev->iobase + PCL816_CONTROL); /* Ext trig+IRQ+DMA */ | 756 | |
732 | outb(dmairq, dev->iobase + PCL816_STATUS); /* write irq to card */ | 757 | /* Ext trig+IRQ+DMA */ |
758 | outb(0x34, dev->iobase + PCL816_CONTROL); | ||
759 | |||
760 | /* write irq to card */ | ||
761 | outb(dmairq, dev->iobase + PCL816_STATUS); | ||
733 | break; | 762 | break; |
734 | } | 763 | } |
735 | 764 | ||
@@ -758,7 +787,8 @@ static int pcl816_ai_poll(struct comedi_device *dev, struct comedi_subdevice *s) | |||
758 | return 0; | 787 | return 0; |
759 | } | 788 | } |
760 | 789 | ||
761 | top1 = devpriv->hwdmasize[0] - top1; /* where is now DMA in buffer */ | 790 | /* where is now DMA in buffer */ |
791 | top1 = devpriv->hwdmasize[0] - top1; | ||
762 | top1 >>= 1; /* sample position */ | 792 | top1 >>= 1; /* sample position */ |
763 | top2 = top1 - devpriv->ai_poll_ptr; | 793 | top2 = top1 - devpriv->ai_poll_ptr; |
764 | if (top2 < 1) { /* no new samples */ | 794 | if (top2 < 1) { /* no new samples */ |
@@ -798,16 +828,23 @@ static int pcl816_ai_cancel(struct comedi_device *dev, | |||
798 | disable_dma(devpriv->dma); | 828 | disable_dma(devpriv->dma); |
799 | case INT_TYPE_AI1_INT: | 829 | case INT_TYPE_AI1_INT: |
800 | case INT_TYPE_AI3_INT: | 830 | case INT_TYPE_AI3_INT: |
801 | outb(inb(dev->iobase + PCL816_CONTROL) & 0x73, dev->iobase + PCL816_CONTROL); /* Stop A/D */ | 831 | outb(inb(dev->iobase + PCL816_CONTROL) & 0x73, |
832 | dev->iobase + PCL816_CONTROL); /* Stop A/D */ | ||
802 | udelay(1); | 833 | udelay(1); |
803 | outb(0, dev->iobase + PCL816_CONTROL); /* Stop A/D */ | 834 | outb(0, dev->iobase + PCL816_CONTROL); /* Stop A/D */ |
804 | outb(0xb0, dev->iobase + PCL816_CTRCTL); /* Stop pacer */ | 835 | |
836 | /* Stop pacer */ | ||
837 | outb(0xb0, dev->iobase + PCL816_CTRCTL); | ||
805 | outb(0x70, dev->iobase + PCL816_CTRCTL); | 838 | outb(0x70, dev->iobase + PCL816_CTRCTL); |
806 | outb(0, dev->iobase + PCL816_AD_LO); | 839 | outb(0, dev->iobase + PCL816_AD_LO); |
807 | inb(dev->iobase + PCL816_AD_LO); | 840 | inb(dev->iobase + PCL816_AD_LO); |
808 | inb(dev->iobase + PCL816_AD_HI); | 841 | inb(dev->iobase + PCL816_AD_HI); |
809 | outb(0, dev->iobase + PCL816_CLRINT); /* clear INT request */ | 842 | |
810 | outb(0, dev->iobase + PCL816_CONTROL); /* Stop A/D */ | 843 | /* clear INT request */ |
844 | outb(0, dev->iobase + PCL816_CLRINT); | ||
845 | |||
846 | /* Stop A/D */ | ||
847 | outb(0, dev->iobase + PCL816_CONTROL); | ||
811 | devpriv->irq_blocked = 0; | 848 | devpriv->irq_blocked = 0; |
812 | devpriv->irq_was_now_closed = devpriv->int816_mode; | 849 | devpriv->irq_was_now_closed = devpriv->int816_mode; |
813 | devpriv->int816_mode = 0; | 850 | devpriv->int816_mode = 0; |
@@ -877,8 +914,11 @@ start_pacer(struct comedi_device *dev, int mode, unsigned int divisor1, | |||
877 | outb(0xff, dev->iobase + PCL816_CTR0); | 914 | outb(0xff, dev->iobase + PCL816_CTR0); |
878 | outb(0x00, dev->iobase + PCL816_CTR0); | 915 | outb(0x00, dev->iobase + PCL816_CTR0); |
879 | udelay(1); | 916 | udelay(1); |
880 | outb(0xb4, dev->iobase + PCL816_CTRCTL); /* set counter 2 as mode 3 */ | 917 | |
881 | outb(0x74, dev->iobase + PCL816_CTRCTL); /* set counter 1 as mode 3 */ | 918 | /* set counter 2 as mode 3 */ |
919 | outb(0xb4, dev->iobase + PCL816_CTRCTL); | ||
920 | /* set counter 1 as mode 3 */ | ||
921 | outb(0x74, dev->iobase + PCL816_CTRCTL); | ||
882 | udelay(1); | 922 | udelay(1); |
883 | 923 | ||
884 | if (mode == 1) { | 924 | if (mode == 1) { |
@@ -914,41 +954,51 @@ check_channel_list(struct comedi_device *dev, | |||
914 | } | 954 | } |
915 | 955 | ||
916 | if (chanlen > 1) { | 956 | if (chanlen > 1) { |
917 | chansegment[0] = chanlist[0]; /* first channel is everytime ok */ | 957 | /* first channel is everytime ok */ |
958 | chansegment[0] = chanlist[0]; | ||
918 | for (i = 1, seglen = 1; i < chanlen; i++, seglen++) { | 959 | for (i = 1, seglen = 1; i < chanlen; i++, seglen++) { |
919 | /* build part of chanlist */ | 960 | /* build part of chanlist */ |
920 | DEBUG(printk("%d. %d %d\n", i, CR_CHAN(chanlist[i]), | 961 | DEBUG(printk(KERN_INFO "%d. %d %d\n", i, |
962 | CR_CHAN(chanlist[i]), | ||
921 | CR_RANGE(chanlist[i]));) | 963 | CR_RANGE(chanlist[i]));) |
964 | |||
965 | /* we detect loop, this must by finish */ | ||
922 | if (chanlist[0] == chanlist[i]) | 966 | if (chanlist[0] == chanlist[i]) |
923 | break; /* we detect loop, this must by finish */ | 967 | break; |
924 | nowmustbechan = | 968 | nowmustbechan = |
925 | (CR_CHAN(chansegment[i - 1]) + 1) % chanlen; | 969 | (CR_CHAN(chansegment[i - 1]) + 1) % chanlen; |
926 | if (nowmustbechan != CR_CHAN(chanlist[i])) { | 970 | if (nowmustbechan != CR_CHAN(chanlist[i])) { |
927 | /* channel list isn't continous :-( */ | 971 | /* channel list isn't continous :-( */ |
928 | printk | 972 | printk(KERN_WARNING |
929 | ("comedi%d: pcl816: channel list must be continous! chanlist[%i]=%d but must be %d or %d!\n", | 973 | "comedi%d: pcl816: channel list must " |
930 | dev->minor, i, CR_CHAN(chanlist[i]), | 974 | "be continous! chanlist[%i]=%d but " |
931 | nowmustbechan, CR_CHAN(chanlist[0])); | 975 | "must be %d or %d!\n", dev->minor, |
976 | i, CR_CHAN(chanlist[i]), nowmustbechan, | ||
977 | CR_CHAN(chanlist[0])); | ||
932 | return 0; | 978 | return 0; |
933 | } | 979 | } |
934 | chansegment[i] = chanlist[i]; /* well, this is next correct channel in list */ | 980 | /* well, this is next correct channel in list */ |
981 | chansegment[i] = chanlist[i]; | ||
935 | } | 982 | } |
936 | 983 | ||
937 | for (i = 0, segpos = 0; i < chanlen; i++) { /* check whole chanlist */ | 984 | /* check whole chanlist */ |
985 | for (i = 0, segpos = 0; i < chanlen; i++) { | ||
938 | DEBUG(printk("%d %d=%d %d\n", | 986 | DEBUG(printk("%d %d=%d %d\n", |
939 | CR_CHAN(chansegment[i % seglen]), | 987 | CR_CHAN(chansegment[i % seglen]), |
940 | CR_RANGE(chansegment[i % seglen]), | 988 | CR_RANGE(chansegment[i % seglen]), |
941 | CR_CHAN(chanlist[i]), | 989 | CR_CHAN(chanlist[i]), |
942 | CR_RANGE(chanlist[i]));) | 990 | CR_RANGE(chanlist[i]));) |
943 | if (chanlist[i] != chansegment[i % seglen]) { | 991 | if (chanlist[i] != chansegment[i % seglen]) { |
944 | printk | 992 | printk(KERN_WARNING |
945 | ("comedi%d: pcl816: bad channel or range number! chanlist[%i]=%d,%d,%d and not %d,%d,%d!\n", | 993 | "comedi%d: pcl816: bad channel or range" |
946 | dev->minor, i, CR_CHAN(chansegment[i]), | 994 | " number! chanlist[%i]=%d,%d,%d and not" |
947 | CR_RANGE(chansegment[i]), | 995 | " %d,%d,%d!\n", dev->minor, i, |
948 | CR_AREF(chansegment[i]), | 996 | CR_CHAN(chansegment[i]), |
949 | CR_CHAN(chanlist[i % seglen]), | 997 | CR_RANGE(chansegment[i]), |
950 | CR_RANGE(chanlist[i % seglen]), | 998 | CR_AREF(chansegment[i]), |
951 | CR_AREF(chansegment[i % seglen])); | 999 | CR_CHAN(chanlist[i % seglen]), |
1000 | CR_RANGE(chanlist[i % seglen]), | ||
1001 | CR_AREF(chansegment[i % seglen])); | ||
952 | return 0; /* chan/gain list is strange */ | 1002 | return 0; /* chan/gain list is strange */ |
953 | } | 1003 | } |
954 | } | 1004 | } |
@@ -976,12 +1026,15 @@ setup_channel_list(struct comedi_device *dev, | |||
976 | for (i = 0; i < seglen; i++) { /* store range list to card */ | 1026 | for (i = 0; i < seglen; i++) { /* store range list to card */ |
977 | devpriv->ai_act_chanlist[i] = CR_CHAN(chanlist[i]); | 1027 | devpriv->ai_act_chanlist[i] = CR_CHAN(chanlist[i]); |
978 | outb(CR_CHAN(chanlist[0]) & 0xf, dev->iobase + PCL816_MUX); | 1028 | outb(CR_CHAN(chanlist[0]) & 0xf, dev->iobase + PCL816_MUX); |
979 | outb(CR_RANGE(chanlist[0]), dev->iobase + PCL816_RANGE); /* select gain */ | 1029 | /* select gain */ |
1030 | outb(CR_RANGE(chanlist[0]), dev->iobase + PCL816_RANGE); | ||
980 | } | 1031 | } |
981 | 1032 | ||
982 | udelay(1); | 1033 | udelay(1); |
983 | 1034 | /* select channel interval to scan */ | |
984 | outb(devpriv->ai_act_chanlist[0] | (devpriv->ai_act_chanlist[seglen - 1] << 4), dev->iobase + PCL816_MUX); /* select channel interval to scan */ | 1035 | outb(devpriv->ai_act_chanlist[0] | |
1036 | (devpriv->ai_act_chanlist[seglen - 1] << 4), | ||
1037 | dev->iobase + PCL816_MUX); | ||
985 | } | 1038 | } |
986 | 1039 | ||
987 | #ifdef unused | 1040 | #ifdef unused |
@@ -1009,11 +1062,11 @@ static int set_rtc_irq_bit(unsigned char bit) | |||
1009 | save_flags(flags); | 1062 | save_flags(flags); |
1010 | cli(); | 1063 | cli(); |
1011 | val = CMOS_READ(RTC_CONTROL); | 1064 | val = CMOS_READ(RTC_CONTROL); |
1012 | if (bit) { | 1065 | if (bit) |
1013 | val |= RTC_PIE; | 1066 | val |= RTC_PIE; |
1014 | } else { | 1067 | else |
1015 | val &= ~RTC_PIE; | 1068 | val &= ~RTC_PIE; |
1016 | } | 1069 | |
1017 | CMOS_WRITE(val, RTC_CONTROL); | 1070 | CMOS_WRITE(val, RTC_CONTROL); |
1018 | CMOS_READ(RTC_INTR_FLAGS); | 1071 | CMOS_READ(RTC_INTR_FLAGS); |
1019 | restore_flags(flags); | 1072 | restore_flags(flags); |
@@ -1083,7 +1136,7 @@ static int pcl816_attach(struct comedi_device *dev, struct comedi_devconfig *it) | |||
1083 | dev->iobase = iobase; | 1136 | dev->iobase = iobase; |
1084 | 1137 | ||
1085 | if (pcl816_check(iobase)) { | 1138 | if (pcl816_check(iobase)) { |
1086 | printk(", I cann't detect board. FAIL!\n"); | 1139 | printk(KERN_ERR ", I cann't detect board. FAIL!\n"); |
1087 | return -EIO; | 1140 | return -EIO; |
1088 | } | 1141 | } |
1089 | 1142 | ||
@@ -1101,30 +1154,29 @@ static int pcl816_attach(struct comedi_device *dev, struct comedi_devconfig *it) | |||
1101 | if (irq) { /* we want to use IRQ */ | 1154 | if (irq) { /* we want to use IRQ */ |
1102 | if (((1 << irq) & this_board->IRQbits) == 0) { | 1155 | if (((1 << irq) & this_board->IRQbits) == 0) { |
1103 | printk | 1156 | printk |
1104 | (", IRQ %u is out of allowed range, DISABLING IT", | 1157 | (", IRQ %u is out of allowed range, " |
1105 | irq); | 1158 | "DISABLING IT", irq); |
1106 | irq = 0; /* Bad IRQ */ | 1159 | irq = 0; /* Bad IRQ */ |
1107 | } else { | 1160 | } else { |
1108 | if (request_irq | 1161 | if (request_irq |
1109 | (irq, interrupt_pcl816, 0, "pcl816", dev)) { | 1162 | (irq, interrupt_pcl816, 0, "pcl816", dev)) { |
1110 | printk | 1163 | printk |
1111 | (", unable to allocate IRQ %u, DISABLING IT", | 1164 | (", unable to allocate IRQ %u, " |
1112 | irq); | 1165 | "DISABLING IT", irq); |
1113 | irq = 0; /* Can't use IRQ */ | 1166 | irq = 0; /* Can't use IRQ */ |
1114 | } else { | 1167 | } else { |
1115 | printk(", irq=%u", irq); | 1168 | printk(KERN_INFO ", irq=%u", irq); |
1116 | } | 1169 | } |
1117 | } | 1170 | } |
1118 | } | 1171 | } |
1119 | } | 1172 | } |
1120 | 1173 | ||
1121 | dev->irq = irq; | 1174 | dev->irq = irq; |
1122 | if (irq) { | 1175 | if (irq) /* 1=we have allocated irq */ |
1123 | devpriv->irq_free = 1; | 1176 | devpriv->irq_free = 1; |
1124 | } /* 1=we have allocated irq */ | 1177 | else |
1125 | else { | ||
1126 | devpriv->irq_free = 0; | 1178 | devpriv->irq_free = 0; |
1127 | } | 1179 | |
1128 | devpriv->irq_blocked = 0; /* number of subdevice which use IRQ */ | 1180 | devpriv->irq_blocked = 0; /* number of subdevice which use IRQ */ |
1129 | devpriv->int816_mode = 0; /* mode of irq */ | 1181 | devpriv->int816_mode = 0; /* mode of irq */ |
1130 | 1182 | ||
@@ -1181,18 +1233,22 @@ no_rtc: | |||
1181 | } | 1233 | } |
1182 | ret = request_dma(dma, "pcl816"); | 1234 | ret = request_dma(dma, "pcl816"); |
1183 | if (ret) { | 1235 | if (ret) { |
1184 | printk(", unable to allocate DMA %u, FAIL!\n", dma); | 1236 | printk(KERN_ERR |
1237 | ", unable to allocate DMA %u, FAIL!\n", dma); | ||
1185 | return -EBUSY; /* DMA isn't free */ | 1238 | return -EBUSY; /* DMA isn't free */ |
1186 | } | 1239 | } |
1187 | 1240 | ||
1188 | devpriv->dma = dma; | 1241 | devpriv->dma = dma; |
1189 | printk(", dma=%u", dma); | 1242 | printk(KERN_INFO ", dma=%u", dma); |
1190 | pages = 2; /* we need 16KB */ | 1243 | pages = 2; /* we need 16KB */ |
1191 | devpriv->dmabuf[0] = __get_dma_pages(GFP_KERNEL, pages); | 1244 | devpriv->dmabuf[0] = __get_dma_pages(GFP_KERNEL, pages); |
1192 | 1245 | ||
1193 | if (!devpriv->dmabuf[0]) { | 1246 | if (!devpriv->dmabuf[0]) { |
1194 | printk(", unable to allocate DMA buffer, FAIL!\n"); | 1247 | printk(", unable to allocate DMA buffer, FAIL!\n"); |
1195 | /* maybe experiment with try_to_free_pages() will help .... */ | 1248 | /* |
1249 | * maybe experiment with try_to_free_pages() | ||
1250 | * will help .... | ||
1251 | */ | ||
1196 | return -EBUSY; /* no buffer :-( */ | 1252 | return -EBUSY; /* no buffer :-( */ |
1197 | } | 1253 | } |
1198 | devpriv->dmapages[0] = pages; | 1254 | devpriv->dmapages[0] = pages; |
@@ -1203,8 +1259,9 @@ no_rtc: | |||
1203 | if (devpriv->dma_rtc == 0) { /* we must do duble buff :-( */ | 1259 | if (devpriv->dma_rtc == 0) { /* we must do duble buff :-( */ |
1204 | devpriv->dmabuf[1] = __get_dma_pages(GFP_KERNEL, pages); | 1260 | devpriv->dmabuf[1] = __get_dma_pages(GFP_KERNEL, pages); |
1205 | if (!devpriv->dmabuf[1]) { | 1261 | if (!devpriv->dmabuf[1]) { |
1206 | printk | 1262 | printk(KERN_ERR |
1207 | (", unable to allocate DMA buffer, FAIL!\n"); | 1263 | ", unable to allocate DMA buffer, " |
1264 | "FAIL!\n"); | ||
1208 | return -EBUSY; | 1265 | return -EBUSY; |
1209 | } | 1266 | } |
1210 | devpriv->dmapages[1] = pages; | 1267 | devpriv->dmapages[1] = pages; |
@@ -1288,7 +1345,7 @@ case COMEDI_SUBD_DO: | |||
1288 | */ | 1345 | */ |
1289 | static int pcl816_detach(struct comedi_device *dev) | 1346 | static int pcl816_detach(struct comedi_device *dev) |
1290 | { | 1347 | { |
1291 | DEBUG(printk("comedi%d: pcl816: remove\n", dev->minor);) | 1348 | DEBUG(printk(KERN_INFO "comedi%d: pcl816: remove\n", dev->minor);) |
1292 | free_resources(dev); | 1349 | free_resources(dev); |
1293 | #ifdef unused | 1350 | #ifdef unused |
1294 | if (devpriv->dma_rtc) | 1351 | if (devpriv->dma_rtc) |