What are the different address spaces that a PCI driver can access?
The PCI address domain consists of three distinct address spaces, as we know, the memory space, the IO space and the configuration space. A driver can access all three address spaces, by setting up appropriate mappings and using the memory, I/O or configuration space access routines provided in the DDI/DKI framework. As a common example, during the driver attach routine the driver could read the configuration space by setting up a mapping via the DDI call pci_config_setup(9f), read the configuration registers using the pci_config_get* routines and write to the configuration registers using pci_config_put * routines. 3.14 I am trying to access my PCI device IO registers through the driver using DDI calls. The driver is mapping the device IO space. I read all zeros, but I was able to read the configuration space and read the contents. Any clues why IO map is not working? First, check that IO_ENABLE bit is set in the device command register. This will permit access to the device IO space.