#define PC263_DRIVER_NAME      "amplc_pc263"
 
+#ifdef CONFIG_COMEDI_AMPLC_PC263_ISA_MODULE
+#define CONFIG_COMEDI_AMPLC_PC263_ISA
+#endif
+
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI_MODULE
+#define CONFIG_COMEDI_AMPLC_PC263_PCI
+#endif
+
 /* PCI263 PCI configuration register information */
 #define PCI_VENDOR_ID_AMPLICON 0x14dc
 #define PCI_DEVICE_ID_AMPLICON_PCI263 0x000c
        enum pc263_model model;
 };
 static const struct pc263_board pc263_boards[] = {
+#ifdef CONFIG_COMEDI_AMPLC_PC263_ISA
        {
         .name = "pc263",
         .fancy_name = "PC263",
         .bustype = isa_bustype,
         .model = pc263_model,
         },
-#ifdef CONFIG_COMEDI_PCI
+#endif
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
        {
         .name = "pci263",
         .fancy_name = "PCI263",
         .bustype = pci_bustype,
         .model = pci263_model,
         },
-#endif
-#ifdef CONFIG_COMEDI_PCI
        {
         .name = PC263_DRIVER_NAME,
         .fancy_name = PC263_DRIVER_NAME,
 #endif
 };
 
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
 static DEFINE_PCI_DEVICE_TABLE(pc263_pci_table) = {
        { PCI_DEVICE(PCI_VENDOR_ID_AMPLICON, PCI_DEVICE_ID_AMPLICON_PCI263) },
        {0}
 };
 
 MODULE_DEVICE_TABLE(pci, pc263_pci_table);
-#endif /* CONFIG_COMEDI_PCI */
+#endif /* CONFIG_COMEDI_AMPLC_PC263_PCI */
 
 /*
  * Useful for shorthand access to the particular board structure
    several hardware drivers keep similar information in this structure,
    feel free to suggest moving the variable to the struct comedi_device struct.
 */
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
 struct pc263_private {
        /* PCI device. */
        struct pci_dev *pci_dev;
 };
 
 #define devpriv ((struct pc263_private *)dev->private)
-#endif /* CONFIG_COMEDI_PCI */
+#endif /* CONFIG_COMEDI_AMPLC_PC263_PCI */
 
 /*
  * The struct comedi_driver structure tells the Comedi core module
        .num_names = ARRAY_SIZE(pc263_boards),
 };
 
+#ifdef CONFIG_COMEDI_AMPLC_PC263_ISA
 static int pc263_request_region(unsigned minor, unsigned long from,
                                unsigned long extent);
+#endif
 static int pc263_dio_insn_bits(struct comedi_device *dev,
                               struct comedi_subdevice *s,
                               struct comedi_insn *insn, unsigned int *data);
  * This function looks for a PCI device matching the requested board name,
  * bus and slot.
  */
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
 static int
 pc263_find_pci(struct comedi_device *dev, int bus, int slot,
               struct pci_dev **pci_dev_p)
 {
        struct comedi_subdevice *s;
        unsigned long iobase = 0;
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
        struct pci_dev *pci_dev = NULL;
        int bus = 0, slot = 0;
 #endif
  * Allocate the private structure area.  alloc_private() is a
  * convenient macro defined in comedidev.h.
  */
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
        ret = alloc_private(dev, sizeof(struct pc263_private));
        if (ret < 0) {
                printk(KERN_ERR "comedi%d: error! out of memory!\n",
 #endif
        /* Process options. */
        switch (thisboard->bustype) {
+#ifdef CONFIG_COMEDI_AMPLC_PC263_ISA
        case isa_bustype:
                iobase = it->options[0];
                break;
-#ifdef CONFIG_COMEDI_PCI
+#endif
+#ifdef CONFIG_COMEDI_AMPLC_PC263_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_PC263_PCI
        if (pci_dev) {
                ret = comedi_pci_enable(pci_dev, PC263_DRIVER_NAME);
                if (ret < 0) {
        } else
 #endif
        {
+#ifdef CONFIG_COMEDI_AMPLC_PC263_ISA
                ret = pc263_request_region(dev->minor, iobase, PC263_IO_SIZE);
                if (ret < 0)
                        return ret;
+#endif
        }
        dev->iobase = iobase;
 
        s->state = s->state | (inb(dev->iobase) << 8);
 
        printk(KERN_INFO "comedi%d: %s ", dev->minor, dev->board_name);
-       if (thisboard->bustype == isa_bustype) {
+       switch (thisboard->bustype) {
+#ifdef CONFIG_COMEDI_AMPLC_PC263_ISA
+       case isa_bustype:
                printk("(base %#lx) ", iobase);
-       } else {
-#ifdef CONFIG_COMEDI_PCI
+               break;
+#endif
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
                printk("(pci %s) ", pci_name(pci_dev));
+               break;
 #endif
+       default:
+               break;
        }
 
        printk("attached\n");
        printk(KERN_DEBUG "comedi%d: %s: detach\n", dev->minor,
               PC263_DRIVER_NAME);
 
-#ifdef CONFIG_COMEDI_PCI
-       if (devpriv) {
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
+       if (devpriv)
 #endif
-#ifdef CONFIG_COMEDI_PCI
+       {
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
                if (devpriv->pci_dev) {
                        if (dev->iobase)
                                comedi_pci_disable(devpriv->pci_dev);
                } else
 #endif
                {
+#ifdef CONFIG_COMEDI_AMPLC_PC263_ISA
                        if (dev->iobase)
                                release_region(dev->iobase, PC263_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_PC263_ISA
 static int pc263_request_region(unsigned minor, unsigned long from,
                                unsigned long extent)
 {
        }
        return 0;
 }
+#endif
 
 /* DIO devices are slightly special.  Although it is possible to
  * implement the insn_read/insn_write interface, it is much more
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-#ifdef CONFIG_COMEDI_PCI
+#ifdef CONFIG_COMEDI_AMPLC_PC263_PCI
 static int __devinit driver_amplc_pc263_pci_probe(struct pci_dev *dev,
                                                  const struct pci_device_id
                                                  *ent)