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;
13ec3cf2ecSBecky Bruce 
14cf562103SScott Wood void __init swiotlb_detect_4g(void)
15688ba1dbSJia Hongtao {
1625078dc1SChristoph Hellwig 	if ((memblock_end_of_DRAM() - 1) > 0xffffffff)
17688ba1dbSJia Hongtao 		ppc_swiotlb_enable = 1;
18688ba1dbSJia Hongtao }
19688ba1dbSJia Hongtao 
2097884e00SDaniel Axtens static int __init check_swiotlb_enabled(void)
21688ba1dbSJia Hongtao {
2297884e00SDaniel Axtens 	if (ppc_swiotlb_enable)
23688ba1dbSJia Hongtao 		swiotlb_print_info();
2497884e00SDaniel Axtens 	else
257f2c8bbdSChristoph Hellwig 		swiotlb_exit();
26688ba1dbSJia Hongtao 
27688ba1dbSJia Hongtao 	return 0;
28688ba1dbSJia Hongtao }
2997884e00SDaniel Axtens subsys_initcall(check_swiotlb_enabled);
30