1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2023, Intel Corporation. */
3 
4 #ifndef _ICE_IRQ_H_
5 #define _ICE_IRQ_H_
6 
7 struct ice_irq_entry {
8 	unsigned int index;
9 	bool dynamic;	/* allocation type flag */
10 };
11 
12 struct ice_irq_tracker {
13 	struct xarray entries;
14 	u16 num_entries;	/* total vectors available */
15 	u16 num_static;	/* preallocated entries */
16 };
17 
18 int ice_init_interrupt_scheme(struct ice_pf *pf);
19 void ice_clear_interrupt_scheme(struct ice_pf *pf);
20 
21 struct msi_map ice_alloc_irq(struct ice_pf *pf, bool dyn_only);
22 void ice_free_irq(struct ice_pf *pf, struct msi_map map);
23 int ice_get_max_used_msix_vector(struct ice_pf *pf);
24 
25 #endif
26