I'm reading pci_mapreg_type(9) and I'm wondering about the returns of
this function.  The documentation says it can return either
PCI_MAPREG_TYPE_IO or PCI_MAPREG_TYPE_MEM. But I also see at least one
driver checking the type for PCI_MAPREG_MEM_TYPE_64BIT

Looking at the definitions of these in sys/dev/pci/pcireg.h I see the 
two defines listed above but also some others that seem specific to
memory mapped registers.

#define PCI_MAPREG_TYPE(mr)                                             \
            ((mr) & PCI_MAPREG_TYPE_MASK)
#define PCI_MAPREG_TYPE_MASK                    0x00000001

#define PCI_MAPREG_TYPE_MEM                     0x00000000
#define PCI_MAPREG_TYPE_IO                      0x00000001

#define PCI_MAPREG_MEM_TYPE(mr)                                         \
            ((mr) & PCI_MAPREG_MEM_TYPE_MASK)
#define PCI_MAPREG_MEM_TYPE_MASK                0x00000006

#define PCI_MAPREG_MEM_TYPE_32BIT               0x00000000
#define PCI_MAPREG_MEM_TYPE_32BIT_1M            0x00000002
#define PCI_MAPREG_MEM_TYPE_64BIT               0x00000004

So, I am curious about the correct way to be using these,
pci_mapreg_type(9) doesn't seem to light the way very far here. Please
send help I'm in a maze of twisty little passages, all alike.

-- 
Ted Bullock <tbull...@comlore.com>

Reply via email to