Some Hafta's

The allocation of PCI resources is done in the probe() function, and usually an extra xxx_create() function is written for this purpose.

In the case of PCI devices, you first have to call the pci_enable_device() function before allocating resources. Also, you need to set the proper PCI DMA mask to limit the accessed I/O range. In some cases, you might need to call pci_set_master() function, too.

Suppose the 28bit mask, and the code to be added would be like:


  err = pci_enable_device(pci);
  if (err < 0)
          return err;
  if (pci_set_dma_mask(pci, DMA_BIT_MASK(28)) < 0 ||
      pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(28)) < 0) {
          printk(KERN_ERR "error to set 28bit mask DMA\n");
          pci_disable_device(pci);
          return -ENXIO;
  }