12874c5fdSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
2ec3cf2ecSBecky Bruce /*
3ec3cf2ecSBecky Bruce  * Contains routines needed to support swiotlb for ppc.
4ec3cf2ecSBecky Bruce  *
5b8b14c66SKumar Gala  * Copyright (C) 2009-2010 Freescale Semiconductor, Inc.
6b8b14c66SKumar Gala  * Author: Becky Bruce
7ec3cf2ecSBecky Bruce  */
8beacc6daSMichael Ellerman #include <linux/memblock.h>
9ec3cf2ecSBecky Bruce #include <asm/machdep.h>
10ec3cf2ecSBecky Bruce #include <asm/swiotlb.h>
11ec3cf2ecSBecky Bruce 
12ec3cf2ecSBecky Bruce unsigned int ppc_swiotlb_enable;
13*8ba2ed1bSChristoph Hellwig unsigned int ppc_swiotlb_flags;
14ec3cf2ecSBecky Bruce 
swiotlb_detect_4g(void)15cf562103SScott Wood void __init swiotlb_detect_4g(void)
16688ba1dbSJia Hongtao {
1725078dc1SChristoph Hellwig 	if ((memblock_end_of_DRAM() - 1) > 0xffffffff)
18688ba1dbSJia Hongtao 		ppc_swiotlb_enable = 1;
19688ba1dbSJia Hongtao }
20688ba1dbSJia Hongtao 
check_swiotlb_enabled(void)2197884e00SDaniel Axtens static int __init check_swiotlb_enabled(void)
22688ba1dbSJia Hongtao {
2397884e00SDaniel Axtens 	if (ppc_swiotlb_enable)
24688ba1dbSJia Hongtao 		swiotlb_print_info();
2597884e00SDaniel Axtens 	else
267f2c8bbdSChristoph Hellwig 		swiotlb_exit();
27688ba1dbSJia Hongtao 
28688ba1dbSJia Hongtao 	return 0;
29688ba1dbSJia Hongtao }
3097884e00SDaniel Axtens subsys_initcall(check_swiotlb_enabled);
31