diff --git a/arch/powerpc/include/asm/dma-mapping.h b/arch/powerpc/include/asm/dma-mapping.h
index 7816087..22eae53 100644
--- a/arch/powerpc/include/asm/dma-mapping.h
+++ b/arch/powerpc/include/asm/dma-mapping.h
@@ -126,8 +126,11 @@ static inline int dma_supported(struct device *dev, u64 mask)
 {
 	struct dma_map_ops *dma_ops = get_dma_ops(dev);
 
-	if (unlikely(dma_ops == NULL))
-		return 0;
+	if (unlikely(dma_ops == NULL)) {
+		set_dma_ops(dev, &dma_direct_ops);
+		set_dma_offset(dev, PCI_DRAM_OFFSET);
+		dma_ops = &dma_direct_ops;
+	}
 	if (dma_ops->dma_supported == NULL)
 		return 1;
 	return dma_ops->dma_supported(dev, mask);
