aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-04-22 21:34:00 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-04-23 13:41:38 -0400
commitc1a5917157c115875d71c94fac75071a8b88ba15 (patch)
treefb567516d8149f45ca120fd6bb297b9217aae4d6
parentb678075f9a9bad493ddb6dda833c9f334bf2dc1d (diff)
staging: comedi: das800: cleanup the boardinfo
For aesthetic reasons, name the enum used for the boardinfo indexes and change them to uppercase with the prefix BOARD_. Add some whitespace to the boardinfo declaration and use the enum values to clarify the table. Tidy up the das800_probe() function and only output a dev_dbg() message if a board model is actually probed. If the user provided the correct boardname when attaching to this driver the message is just added noise. For the 'default' case when checking the proded id, output the id_bits and return -EINVAL. It should not be assumed that unknown boards will work with this driver. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/comedi/drivers/das800.c146
1 files changed, 65 insertions, 81 deletions
diff --git a/drivers/staging/comedi/drivers/das800.c b/drivers/staging/comedi/drivers/das800.c
index a71a290739cc..e2bd371114be 100644
--- a/drivers/staging/comedi/drivers/das800.c
+++ b/drivers/staging/comedi/drivers/das800.c
@@ -169,51 +169,59 @@ static const struct comedi_lrange range_das80216_ai = {
169 } 169 }
170}; 170};
171 171
172enum { das800, ciodas800, das801, ciodas801, das802, ciodas802, ciodas80216 }; 172enum das800_boardinfo {
173 BOARD_DAS800,
174 BOARD_CIODAS800,
175 BOARD_DAS801,
176 BOARD_CIODAS801,
177 BOARD_DAS802,
178 BOARD_CIODAS802,
179 BOARD_CIODAS80216,
180};
173 181
174static const struct das800_board das800_boards[] = { 182static const struct das800_board das800_boards[] = {
175 { 183 [BOARD_DAS800] = {
176 .name = "das-800", 184 .name = "das-800",
177 .ai_speed = 25000, 185 .ai_speed = 25000,
178 .ai_range = &range_bipolar5, 186 .ai_range = &range_bipolar5,
179 .resolution = 12, 187 .resolution = 12,
180 }, 188 },
181 { 189 [BOARD_CIODAS800] = {
182 .name = "cio-das800", 190 .name = "cio-das800",
183 .ai_speed = 20000, 191 .ai_speed = 20000,
184 .ai_range = &range_bipolar5, 192 .ai_range = &range_bipolar5,
185 .resolution = 12, 193 .resolution = 12,
186 }, 194 },
187 { 195 [BOARD_DAS801] = {
188 .name = "das-801", 196 .name = "das-801",
189 .ai_speed = 25000, 197 .ai_speed = 25000,
190 .ai_range = &range_das801_ai, 198 .ai_range = &range_das801_ai,
191 .resolution = 12, 199 .resolution = 12,
192 }, 200 },
193 { 201 [BOARD_CIODAS801] = {
194 .name = "cio-das801", 202 .name = "cio-das801",
195 .ai_speed = 20000, 203 .ai_speed = 20000,
196 .ai_range = &range_cio_das801_ai, 204 .ai_range = &range_cio_das801_ai,
197 .resolution = 12, 205 .resolution = 12,
198 }, 206 },
199 { 207 [BOARD_DAS802] = {
200 .name = "das-802", 208 .name = "das-802",
201 .ai_speed = 25000, 209 .ai_speed = 25000,
202 .ai_range = &range_das802_ai, 210 .ai_range = &range_das802_ai,
203 .resolution = 12, 211 .resolution = 12,
204 }, 212 },
205 { 213 [BOARD_CIODAS802] = {
206 .name = "cio-das802", 214 .name = "cio-das802",
207 .ai_speed = 20000, 215 .ai_speed = 20000,
208 .ai_range = &range_das802_ai, 216 .ai_range = &range_das802_ai,
209 .resolution = 12, 217 .resolution = 12,
210 }, 218 },
211 { 219 [BOARD_CIODAS80216] = {
212 .name = "cio-das802/16", 220 .name = "cio-das802/16",
213 .ai_speed = 10000, 221 .ai_speed = 10000,
214 .ai_range = &range_das80216_ai, 222 .ai_range = &range_das80216_ai,
215 .resolution = 16, 223 .resolution = 16,
216 }, 224 },
217}; 225};
218 226
219struct das800_private { 227struct das800_private {
@@ -670,65 +678,41 @@ static int das800_do_wbits(struct comedi_device *dev,
670static int das800_probe(struct comedi_device *dev) 678static int das800_probe(struct comedi_device *dev)
671{ 679{
672 const struct das800_board *thisboard = comedi_board(dev); 680 const struct das800_board *thisboard = comedi_board(dev);
681 int board = thisboard ? thisboard - das800_boards : -EINVAL;
673 int id_bits; 682 int id_bits;
674 unsigned long irq_flags; 683 unsigned long irq_flags;
675 int board;
676 684
677 spin_lock_irqsave(&dev->spinlock, irq_flags); 685 spin_lock_irqsave(&dev->spinlock, irq_flags);
678 id_bits = das800_ind_read(dev, ID) & 0x3; 686 id_bits = das800_ind_read(dev, ID) & 0x3;
679 spin_unlock_irqrestore(&dev->spinlock, irq_flags); 687 spin_unlock_irqrestore(&dev->spinlock, irq_flags);
680 688
681 board = thisboard - das800_boards;
682
683 switch (id_bits) { 689 switch (id_bits) {
684 case 0x0: 690 case 0x0:
685 if (board == das800) { 691 if (board == BOARD_DAS800 || board == BOARD_CIODAS800)
686 dev_dbg(dev->class_dev, "Board model: DAS-800\n"); 692 break;
687 return board;
688 }
689 if (board == ciodas800) {
690 dev_dbg(dev->class_dev, "Board model: CIO-DAS800\n");
691 return board;
692 }
693 dev_dbg(dev->class_dev, "Board model (probed): DAS-800\n"); 693 dev_dbg(dev->class_dev, "Board model (probed): DAS-800\n");
694 return das800; 694 board = BOARD_DAS800;
695 break; 695 break;
696 case 0x2: 696 case 0x2:
697 if (board == das801) { 697 if (board == BOARD_DAS801 || board == BOARD_CIODAS801)
698 dev_dbg(dev->class_dev, "Board model: DAS-801\n"); 698 break;
699 return board;
700 }
701 if (board == ciodas801) {
702 dev_dbg(dev->class_dev, "Board model: CIO-DAS801\n");
703 return board;
704 }
705 dev_dbg(dev->class_dev, "Board model (probed): DAS-801\n"); 699 dev_dbg(dev->class_dev, "Board model (probed): DAS-801\n");
706 return das801; 700 board = BOARD_DAS801;
707 break; 701 break;
708 case 0x3: 702 case 0x3:
709 if (board == das802) { 703 if (board == BOARD_DAS802 || board == BOARD_CIODAS802 ||
710 dev_dbg(dev->class_dev, "Board model: DAS-802\n"); 704 board == BOARD_CIODAS80216)
711 return board; 705 break;
712 }
713 if (board == ciodas802) {
714 dev_dbg(dev->class_dev, "Board model: CIO-DAS802\n");
715 return board;
716 }
717 if (board == ciodas80216) {
718 dev_dbg(dev->class_dev, "Board model: CIO-DAS802/16\n");
719 return board;
720 }
721 dev_dbg(dev->class_dev, "Board model (probed): DAS-802\n"); 706 dev_dbg(dev->class_dev, "Board model (probed): DAS-802\n");
722 return das802; 707 board = BOARD_DAS802;
723 break; 708 break;
724 default: 709 default:
725 dev_dbg(dev->class_dev, 710 dev_dbg(dev->class_dev, "Board model: 0x%x (unknown)\n",
726 "Board model: probe returned 0x%x (unknown)\n",
727 id_bits); 711 id_bits);
728 return board; 712 board = -EINVAL;
729 break; 713 break;
730 } 714 }
731 return -1; 715 return board;
732} 716}
733 717
734static int das800_attach(struct comedi_device *dev, struct comedi_devconfig *it) 718static int das800_attach(struct comedi_device *dev, struct comedi_devconfig *it)