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_28BIT_MASK) < 0 || pci_set_consistent_dma_mask(pci, DMA_28BIT_MASK) < 0) { printk(KERN_ERR "error to set 28bit mask DMA\n"); pci_disable_device(pci); return -ENXIO; }