diff --git a/sys/compat/linuxkpi/common/include/linux/device.h b/sys/compat/linuxkpi/common/include/linux/device.h --- a/sys/compat/linuxkpi/common/include/linux/device.h +++ b/sys/compat/linuxkpi/common/include/linux/device.h @@ -317,6 +317,9 @@ dev->driver_data = data; } +/* XXX-BZ this is a hack as DMA bits are in PCI instead of here. */ +uint64_t lkpi_dma_get_mask(struct device *dev); + static inline struct device * get_device(struct device *dev) { diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -138,6 +138,7 @@ struct resource *res_table[PCIR_MAX_BAR_0 + 1]; }; +/* XXX-BZ this is device not pci specific */ struct linux_dma_priv { uint64_t dma_mask; bus_dma_tag_t dmat; @@ -242,6 +243,19 @@ return (-error); } +uint64_t +lkpi_dma_get_mask(struct device *dev) +{ + struct linux_dma_priv *priv; + + priv = dev->dma_priv; + if (priv != NULL) + return (priv->dma_mask); + + /* If in doubt return 32bit. */ + return (DMA_BIT_MASK(32)); +} + int linux_dma_tag_init_coherent(struct device *dev, u64 dma_mask) {