1*628c3bb4SHuacai Chen /* SPDX-License-Identifier: GPL-2.0 */ 2*628c3bb4SHuacai Chen /* 3*628c3bb4SHuacai Chen * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 4*628c3bb4SHuacai Chen */ 5*628c3bb4SHuacai Chen #ifndef _ASM_LOONGARCH_EFI_H 6*628c3bb4SHuacai Chen #define _ASM_LOONGARCH_EFI_H 7*628c3bb4SHuacai Chen 8*628c3bb4SHuacai Chen #include <linux/efi.h> 9*628c3bb4SHuacai Chen 10*628c3bb4SHuacai Chen void __init efi_init(void); 11*628c3bb4SHuacai Chen void __init efi_runtime_init(void); 12*628c3bb4SHuacai Chen void efifb_setup_from_dmi(struct screen_info *si, const char *opt); 13*628c3bb4SHuacai Chen 14*628c3bb4SHuacai Chen #define ARCH_EFI_IRQ_FLAGS_MASK 0x00000004 /* Bit 2: CSR.CRMD.IE */ 15*628c3bb4SHuacai Chen 16*628c3bb4SHuacai Chen #define arch_efi_call_virt_setup() \ 17*628c3bb4SHuacai Chen ({ \ 18*628c3bb4SHuacai Chen }) 19*628c3bb4SHuacai Chen 20*628c3bb4SHuacai Chen #define arch_efi_call_virt(p, f, args...) \ 21*628c3bb4SHuacai Chen ({ \ 22*628c3bb4SHuacai Chen efi_##f##_t * __f; \ 23*628c3bb4SHuacai Chen __f = p->f; \ 24*628c3bb4SHuacai Chen __f(args); \ 25*628c3bb4SHuacai Chen }) 26*628c3bb4SHuacai Chen 27*628c3bb4SHuacai Chen #define arch_efi_call_virt_teardown() \ 28*628c3bb4SHuacai Chen ({ \ 29*628c3bb4SHuacai Chen }) 30*628c3bb4SHuacai Chen 31*628c3bb4SHuacai Chen #define EFI_ALLOC_ALIGN SZ_64K 32*628c3bb4SHuacai Chen 33*628c3bb4SHuacai Chen struct screen_info *alloc_screen_info(void); 34*628c3bb4SHuacai Chen void free_screen_info(struct screen_info *si); 35*628c3bb4SHuacai Chen 36*628c3bb4SHuacai Chen static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr) 37*628c3bb4SHuacai Chen { 38*628c3bb4SHuacai Chen return ULONG_MAX; 39*628c3bb4SHuacai Chen } 40*628c3bb4SHuacai Chen 41*628c3bb4SHuacai Chen #endif /* _ASM_LOONGARCH_EFI_H */ 42