/* * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2021 Western Digital Corporation or its affiliates. * Copyright (c) 2022 Ventana Micro Systems Inc. * * Authors: * Anup Patel */ #ifndef __IRQCHIP_IMSIC_H__ #define __IRQCHIP_IMSIC_H__ #include #define IMSIC_MMIO_PAGE_SHIFT 12 #define IMSIC_MMIO_PAGE_SZ (1UL << IMSIC_MMIO_PAGE_SHIFT) #define IMSIC_MAX_REGS 16 struct imsic_regs { unsigned long addr; unsigned long size; }; struct imsic_data { bool targets_mmode; u32 guest_index_bits; u32 hart_index_bits; u32 group_index_bits; u32 group_index_shift; unsigned long num_ids; struct imsic_regs regs[IMSIC_MAX_REGS]; }; #ifdef CONFIG_IRQCHIP_IMSIC int imsic_map_hartid_to_data(u32 hartid, struct imsic_data *imsic, int file); struct imsic_data *imsic_get_data(u32 hartindex); int imsic_get_target_file(u32 hartindex); void imsic_local_irqchip_init(void); int imsic_data_check(struct imsic_data *imsic); int imsic_cold_irqchip_init(struct imsic_data *imsic); #else static inline void imsic_local_irqchip_init(void) { } static inline int imsic_data_check(struct imsic_data *imsic) { return 0; } #endif #endif