|
@@ -105,3 +105,23 @@ int __init swiotlb_setup_bus_notifier(void)
|
|
|
&ppc_swiotlb_plat_bus_notifier);
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+void swiotlb_detect_4g(void)
|
|
|
+{
|
|
|
+ if ((memblock_end_of_DRAM() - 1) > 0xffffffff)
|
|
|
+ ppc_swiotlb_enable = 1;
|
|
|
+}
|
|
|
+
|
|
|
+static int __init swiotlb_late_init(void)
|
|
|
+{
|
|
|
+ if (ppc_swiotlb_enable) {
|
|
|
+ swiotlb_print_info();
|
|
|
+ set_pci_dma_ops(&swiotlb_dma_ops);
|
|
|
+ ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
|
|
|
+ } else {
|
|
|
+ swiotlb_free();
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+subsys_initcall(swiotlb_late_init);
|