48 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _ASM_EARLY_IOREMAP_H_3#define _ASM_EARLY_IOREMAP_H_4 5#include <linux/types.h>6 7/*8 * early_ioremap() and early_iounmap() are for temporary early boot-time9 * mappings, before the real ioremap() is functional.10 */11extern void __iomem *early_ioremap(resource_size_t phys_addr,12 unsigned long size);13extern void *early_memremap(resource_size_t phys_addr,14 unsigned long size);15extern void *early_memremap_ro(resource_size_t phys_addr,16 unsigned long size);17extern void *early_memremap_prot(resource_size_t phys_addr,18 unsigned long size, unsigned long prot_val);19extern void early_iounmap(void __iomem *addr, unsigned long size);20extern void early_memunmap(void *addr, unsigned long size);21 22#if defined(CONFIG_GENERIC_EARLY_IOREMAP) && defined(CONFIG_MMU)23/* Arch-specific initialization */24extern void early_ioremap_init(void);25 26/* Generic initialization called by architecture code */27extern void early_ioremap_setup(void);28 29/*30 * Called as last step in paging_init() so library can act31 * accordingly for subsequent map/unmap requests.32 */33extern void early_ioremap_reset(void);34 35/*36 * Early copy from unmapped memory to kernel mapped memory.37 */38extern void copy_from_early_mem(void *dest, phys_addr_t src,39 unsigned long size);40 41#else42static inline void early_ioremap_init(void) { }43static inline void early_ioremap_setup(void) { }44static inline void early_ioremap_reset(void) { }45#endif46 47#endif /* _ASM_EARLY_IOREMAP_H_ */48