Remove the dependency on PCI initialization for SWIOTLB initialization. So that PCI can be initialized at proper time. SWIOTLB is partly determined by PCI inbound/outbound map which is assigned in PCI initialization. But swiotlb_init() should be done at the stage of mem_init() which is much earlier than PCI initialization. So we reserve the memory for SWIOTLB first and free it if not necessary. All boards are converted to fit this change. Signed-off-by: Jia Hongtao <B38951@freescale.com> Signed-off-by: Li Yang <leoli@freescale.com> Acked-by: Tony Breeds <tony@bakeyournoodle.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			804 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			804 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (C) 2009 Becky Bruce, Freescale Semiconductor
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute  it and/or modify it
 | 
						|
 * under  the terms of  the GNU General  Public License as published by the
 | 
						|
 * Free Software Foundation;  either version 2 of the  License, or (at your
 | 
						|
 * option) any later version.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __ASM_SWIOTLB_H
 | 
						|
#define __ASM_SWIOTLB_H
 | 
						|
 | 
						|
#include <linux/swiotlb.h>
 | 
						|
 | 
						|
extern struct dma_map_ops swiotlb_dma_ops;
 | 
						|
 | 
						|
static inline void dma_mark_clean(void *addr, size_t size) {}
 | 
						|
 | 
						|
extern unsigned int ppc_swiotlb_enable;
 | 
						|
int __init swiotlb_setup_bus_notifier(void);
 | 
						|
 | 
						|
extern void pci_dma_dev_setup_swiotlb(struct pci_dev *pdev);
 | 
						|
 | 
						|
#ifdef CONFIG_SWIOTLB
 | 
						|
void swiotlb_detect_4g(void);
 | 
						|
#else
 | 
						|
static inline void swiotlb_detect_4g(void) {}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* __ASM_SWIOTLB_H */
 |