#define PC236_DRIVER_NAME      "amplc_pc236"
 
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA_MODULE
+#define CONFIG_COMEDI_AMPLC_PC236_ISA
+#endif
+
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI_MODULE
+#define CONFIG_COMEDI_AMPLC_PC236_PCI
+#endif
+
 /* PCI236 PCI configuration register information */
 #define PCI_VENDOR_ID_AMPLICON 0x14dc
 #define PCI_DEVICE_ID_AMPLICON_PCI236 0x0009
        enum pc236_model model;
 };
 static const struct pc236_board pc236_boards[] = {
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA
        {
         .name = "pc36at",
         .fancy_name = "PC36AT",
         .bustype = isa_bustype,
         .model = pc36at_model,
         },
-#ifdef CONFIG_COMEDI_PCI
+#endif
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
        {
         .name = "pci236",
         .fancy_name = "PCI236",
         .bustype = pci_bustype,
         .model = pci236_model,
         },
-#endif
-#ifdef CONFIG_COMEDI_PCI
        {
         .name = PC236_DRIVER_NAME,
         .fancy_name = PC236_DRIVER_NAME,
 #endif
 };
 
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
 static DEFINE_PCI_DEVICE_TABLE(pc236_pci_table) = {
        { PCI_DEVICE(PCI_VENDOR_ID_AMPLICON, PCI_DEVICE_ID_AMPLICON_PCI236) },
        {0}
 };
 
 MODULE_DEVICE_TABLE(pci, pc236_pci_table);
-#endif /* CONFIG_COMEDI_PCI */
+#endif /* CONFIG_COMEDI_AMPLC_PC236_PCI */
 
 /*
  * Useful for shorthand access to the particular board structure
    feel free to suggest moving the variable to the struct comedi_device struct.
  */
 struct pc236_private {
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
        /* PCI device */
        struct pci_dev *pci_dev;
        unsigned long lcr_iobase; /* PLX PCI9052 config registers in PCIBAR1 */
        .num_names = ARRAY_SIZE(pc236_boards),
 };
 
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
 static int __devinit driver_amplc_pc236_pci_probe(struct pci_dev *dev,
                                                  const struct pci_device_id
                                                  *ent)
 module_exit(driver_amplc_pc236_cleanup_module);
 #endif
 
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA
 static int pc236_request_region(unsigned minor, unsigned long from,
                                unsigned long extent);
+#endif
 static void pc236_intr_disable(struct comedi_device *dev);
 static void pc236_intr_enable(struct comedi_device *dev);
 static int pc236_intr_check(struct comedi_device *dev);
  * This function looks for a PCI device matching the requested board name,
  * bus and slot.
  */
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
 static int
 pc236_find_pci(struct comedi_device *dev, int bus, int slot,
               struct pci_dev **pci_dev_p)
        struct comedi_subdevice *s;
        unsigned long iobase = 0;
        unsigned int irq = 0;
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
        struct pci_dev *pci_dev = NULL;
        int bus = 0, slot = 0;
 #endif
        }
        /* Process options. */
        switch (thisboard->bustype) {
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA
        case isa_bustype:
                iobase = it->options[0];
                irq = it->options[1];
                share_irq = 0;
                break;
-#ifdef CONFIG_COMEDI_PCI
+#endif
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
        case pci_bustype:
                bus = it->options[0];
                slot = it->options[1];
                        return ret;
                devpriv->pci_dev = pci_dev;
                break;
-#endif /* CONFIG_COMEDI_PCI */
+#endif
        default:
                printk(KERN_ERR
                       "comedi%d: %s: BUG! cannot determine board type!\n",
        dev->board_name = thisboard->name;
 
        /* Enable device and reserve I/O spaces. */
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
        if (pci_dev) {
 
                ret = comedi_pci_enable(pci_dev, PC236_DRIVER_NAME);
        } else
 #endif
        {
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA
                ret = pc236_request_region(dev->minor, iobase, PC236_IO_SIZE);
                if (ret < 0)
                        return ret;
+#endif
        }
        dev->iobase = iobase;
 
                }
        }
        printk(KERN_INFO "comedi%d: %s ", dev->minor, dev->board_name);
-       if (thisboard->bustype == isa_bustype) {
+       switch (thisboard->bustype) {
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA
+       case isa_bustype:
                printk("(base %#lx) ", iobase);
-       } else {
-#ifdef CONFIG_COMEDI_PCI
+               break;
+#endif
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
+       case pci_bustype:
                printk("(pci %s) ", pci_name(pci_dev));
+               break;
 #endif
+       default:
+               break;
        }
        if (irq)
                printk("(irq %u%s) ", irq, (dev->irq ? "" : " UNAVAILABLE"));
        if (dev->subdevices)
                subdev_8255_cleanup(dev, dev->subdevices + 0);
        if (devpriv) {
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
                if (devpriv->pci_dev) {
                        if (dev->iobase)
                                comedi_pci_disable(devpriv->pci_dev);
                } else
 #endif
                {
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA
                        if (dev->iobase)
                                release_region(dev->iobase, PC236_IO_SIZE);
+#endif
                }
        }
        if (dev->board_name) {
  * This function checks and requests an I/O region, reporting an error
  * if there is a conflict.
  */
+#ifdef CONFIG_COMEDI_AMPLC_PC236_ISA
 static int pc236_request_region(unsigned minor, unsigned long from,
                                unsigned long extent)
 {
        }
        return 0;
 }
+#endif
 
 /*
  * This function is called to mark the interrupt as disabled (no command
 
        spin_lock_irqsave(&dev->spinlock, flags);
        devpriv->enable_irq = 0;
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
        if (devpriv->lcr_iobase)
                outl(PCI236_INTR_DISABLE, devpriv->lcr_iobase + PLX9052_INTCSR);
 #endif
 
        spin_lock_irqsave(&dev->spinlock, flags);
        devpriv->enable_irq = 1;
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
        if (devpriv->lcr_iobase)
                outl(PCI236_INTR_ENABLE, devpriv->lcr_iobase + PLX9052_INTCSR);
 #endif
        spin_lock_irqsave(&dev->spinlock, flags);
        if (devpriv->enable_irq) {
                retval = 1;
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC236_PCI
                if (devpriv->lcr_iobase) {
                        if ((inl(devpriv->lcr_iobase + PLX9052_INTCSR)
                             & PLX9052_INTCSR_LI1STAT_MASK)