162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2020 Western Digital Corporation or its affiliates. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci#ifndef _ASM_EFI_H 662306a36Sopenharmony_ci#define _ASM_EFI_H 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <asm/csr.h> 962306a36Sopenharmony_ci#include <asm/io.h> 1062306a36Sopenharmony_ci#include <asm/mmu_context.h> 1162306a36Sopenharmony_ci#include <asm/ptrace.h> 1262306a36Sopenharmony_ci#include <asm/tlbflush.h> 1362306a36Sopenharmony_ci#include <asm/pgalloc.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#ifdef CONFIG_EFI 1662306a36Sopenharmony_ciextern void efi_init(void); 1762306a36Sopenharmony_ci#else 1862306a36Sopenharmony_ci#define efi_init() 1962306a36Sopenharmony_ci#endif 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciint efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md); 2262306a36Sopenharmony_ciint efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md, bool); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE) 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci/* Load initrd anywhere in system RAM */ 2762306a36Sopenharmony_cistatic inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr) 2862306a36Sopenharmony_ci{ 2962306a36Sopenharmony_ci return ULONG_MAX; 3062306a36Sopenharmony_ci} 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_cistatic inline unsigned long efi_get_kimg_min_align(void) 3362306a36Sopenharmony_ci{ 3462306a36Sopenharmony_ci /* 3562306a36Sopenharmony_ci * RISC-V requires the kernel image to placed 2 MB aligned base for 64 3662306a36Sopenharmony_ci * bit and 4MB for 32 bit. 3762306a36Sopenharmony_ci */ 3862306a36Sopenharmony_ci return IS_ENABLED(CONFIG_64BIT) ? SZ_2M : SZ_4M; 3962306a36Sopenharmony_ci} 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#define EFI_KIMG_PREFERRED_ADDRESS efi_get_kimg_min_align() 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_civoid arch_efi_call_virt_setup(void); 4462306a36Sopenharmony_civoid arch_efi_call_virt_teardown(void); 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ciunsigned long stext_offset(void); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_civoid efi_icache_sync(unsigned long start, unsigned long end); 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci#endif /* _ASM_EFI_H */ 51