138e97a98SPiotr Raczynski /* SPDX-License-Identifier: GPL-2.0 */ 238e97a98SPiotr Raczynski /* Copyright (C) 2023, Intel Corporation. */ 338e97a98SPiotr Raczynski 438e97a98SPiotr Raczynski #ifndef _ICE_IRQ_H_ 538e97a98SPiotr Raczynski #define _ICE_IRQ_H_ 638e97a98SPiotr Raczynski 7cfebc0a3SPiotr Raczynski struct ice_irq_entry { 8cfebc0a3SPiotr Raczynski unsigned int index; 9*011670ccSPiotr Raczynski bool dynamic; /* allocation type flag */ 10cfebc0a3SPiotr Raczynski }; 11cfebc0a3SPiotr Raczynski 12cfebc0a3SPiotr Raczynski struct ice_irq_tracker { 13cfebc0a3SPiotr Raczynski struct xarray entries; 14cfebc0a3SPiotr Raczynski u16 num_entries; /* total vectors available */ 15*011670ccSPiotr Raczynski u16 num_static; /* preallocated entries */ 16cfebc0a3SPiotr Raczynski }; 17cfebc0a3SPiotr Raczynski 1838e97a98SPiotr Raczynski int ice_init_interrupt_scheme(struct ice_pf *pf); 1938e97a98SPiotr Raczynski void ice_clear_interrupt_scheme(struct ice_pf *pf); 2038e97a98SPiotr Raczynski 21*011670ccSPiotr Raczynski struct msi_map ice_alloc_irq(struct ice_pf *pf, bool dyn_only); 224aad5335SPiotr Raczynski void ice_free_irq(struct ice_pf *pf, struct msi_map map); 23*011670ccSPiotr Raczynski int ice_get_max_used_msix_vector(struct ice_pf *pf); 244aad5335SPiotr Raczynski 2538e97a98SPiotr Raczynski #endif 26