-#define io_remap_page_range(vma, start, busaddr, size, prot) \
- remap_page_range(vma, start, virt_to_phys((void *)__ioremap(busaddr, size)), size, prot)
+#define io_remap_page_range(vma, start, busaddr, size, prot) \
+({ \
+ void *va = (void __force *)ioremap(busaddr, size); \
+ unsigned long pfn = virt_to_phys(va) >> PAGE_SHIFT; \
+ remap_pfn_range(vma, start, pfn, size, prot); \
+})