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;
}