1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 29e5c33d7SMark Salter #ifndef _ASM_EARLY_IOREMAP_H_ 39e5c33d7SMark Salter #define _ASM_EARLY_IOREMAP_H_ 49e5c33d7SMark Salter 59e5c33d7SMark Salter #include <linux/types.h> 69e5c33d7SMark Salter 79e5c33d7SMark Salter /* 89e5c33d7SMark Salter * early_ioremap() and early_iounmap() are for temporary early boot-time 99e5c33d7SMark Salter * mappings, before the real ioremap() is functional. 109e5c33d7SMark Salter */ 119e5c33d7SMark Salter extern void __iomem *early_ioremap(resource_size_t phys_addr, 129e5c33d7SMark Salter unsigned long size); 139e5c33d7SMark Salter extern void *early_memremap(resource_size_t phys_addr, 149e5c33d7SMark Salter unsigned long size); 152592dbbbSJuergen Gross extern void *early_memremap_ro(resource_size_t phys_addr, 162592dbbbSJuergen Gross unsigned long size); 17f88a68faSTom Lendacky extern void *early_memremap_prot(resource_size_t phys_addr, 18f88a68faSTom Lendacky unsigned long size, unsigned long prot_val); 199e5c33d7SMark Salter extern void early_iounmap(void __iomem *addr, unsigned long size); 209e5c33d7SMark Salter extern void early_memunmap(void *addr, unsigned long size); 219e5c33d7SMark Salter 229e5c33d7SMark Salter /* 239e5c33d7SMark Salter * Weak function called by early_ioremap_reset(). It does nothing, but 249e5c33d7SMark Salter * architectures may provide their own version to do any needed cleanups. 259e5c33d7SMark Salter */ 269e5c33d7SMark Salter extern void early_ioremap_shutdown(void); 279e5c33d7SMark Salter 289e5c33d7SMark Salter #if defined(CONFIG_GENERIC_EARLY_IOREMAP) && defined(CONFIG_MMU) 299e5c33d7SMark Salter /* Arch-specific initialization */ 309e5c33d7SMark Salter extern void early_ioremap_init(void); 319e5c33d7SMark Salter 329e5c33d7SMark Salter /* Generic initialization called by architecture code */ 339e5c33d7SMark Salter extern void early_ioremap_setup(void); 349e5c33d7SMark Salter 359e5c33d7SMark Salter /* 369e5c33d7SMark Salter * Called as last step in paging_init() so library can act 379e5c33d7SMark Salter * accordingly for subsequent map/unmap requests. 389e5c33d7SMark Salter */ 399e5c33d7SMark Salter extern void early_ioremap_reset(void); 409e5c33d7SMark Salter 416b0f68e3SMark Salter /* 426b0f68e3SMark Salter * Early copy from unmapped memory to kernel mapped memory. 436b0f68e3SMark Salter */ 446b0f68e3SMark Salter extern void copy_from_early_mem(void *dest, phys_addr_t src, 456b0f68e3SMark Salter unsigned long size); 466b0f68e3SMark Salter 479e5c33d7SMark Salter #else 489e5c33d7SMark Salter static inline void early_ioremap_init(void) { } 499e5c33d7SMark Salter static inline void early_ioremap_setup(void) { } 509e5c33d7SMark Salter static inline void early_ioremap_reset(void) { } 519e5c33d7SMark Salter #endif 529e5c33d7SMark Salter 539e5c33d7SMark Salter #endif /* _ASM_EARLY_IOREMAP_H_ */ 54