19e5c33d7SMark Salter #ifndef _ASM_EARLY_IOREMAP_H_
29e5c33d7SMark Salter #define _ASM_EARLY_IOREMAP_H_
39e5c33d7SMark Salter 
49e5c33d7SMark Salter #include <linux/types.h>
59e5c33d7SMark Salter 
69e5c33d7SMark Salter /*
79e5c33d7SMark Salter  * early_ioremap() and early_iounmap() are for temporary early boot-time
89e5c33d7SMark Salter  * mappings, before the real ioremap() is functional.
99e5c33d7SMark Salter  */
109e5c33d7SMark Salter extern void __iomem *early_ioremap(resource_size_t phys_addr,
119e5c33d7SMark Salter 				   unsigned long size);
129e5c33d7SMark Salter extern void *early_memremap(resource_size_t phys_addr,
139e5c33d7SMark Salter 			    unsigned long size);
149e5c33d7SMark Salter extern void early_iounmap(void __iomem *addr, unsigned long size);
159e5c33d7SMark Salter extern void early_memunmap(void *addr, unsigned long size);
169e5c33d7SMark Salter 
179e5c33d7SMark Salter /*
189e5c33d7SMark Salter  * Weak function called by early_ioremap_reset(). It does nothing, but
199e5c33d7SMark Salter  * architectures may provide their own version to do any needed cleanups.
209e5c33d7SMark Salter  */
219e5c33d7SMark Salter extern void early_ioremap_shutdown(void);
229e5c33d7SMark Salter 
239e5c33d7SMark Salter #if defined(CONFIG_GENERIC_EARLY_IOREMAP) && defined(CONFIG_MMU)
249e5c33d7SMark Salter /* Arch-specific initialization */
259e5c33d7SMark Salter extern void early_ioremap_init(void);
269e5c33d7SMark Salter 
279e5c33d7SMark Salter /* Generic initialization called by architecture code */
289e5c33d7SMark Salter extern void early_ioremap_setup(void);
299e5c33d7SMark Salter 
309e5c33d7SMark Salter /*
319e5c33d7SMark Salter  * Called as last step in paging_init() so library can act
329e5c33d7SMark Salter  * accordingly for subsequent map/unmap requests.
339e5c33d7SMark Salter  */
349e5c33d7SMark Salter extern void early_ioremap_reset(void);
359e5c33d7SMark Salter 
366b0f68e3SMark Salter /*
376b0f68e3SMark Salter  * Early copy from unmapped memory to kernel mapped memory.
386b0f68e3SMark Salter  */
396b0f68e3SMark Salter extern void copy_from_early_mem(void *dest, phys_addr_t src,
406b0f68e3SMark Salter 				unsigned long size);
416b0f68e3SMark Salter 
429e5c33d7SMark Salter #else
439e5c33d7SMark Salter static inline void early_ioremap_init(void) { }
449e5c33d7SMark Salter static inline void early_ioremap_setup(void) { }
459e5c33d7SMark Salter static inline void early_ioremap_reset(void) { }
469e5c33d7SMark Salter #endif
479e5c33d7SMark Salter 
489e5c33d7SMark Salter #endif /* _ASM_EARLY_IOREMAP_H_ */
49