162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (C) 2023, Intel Corporation. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _ICE_IRQ_H_ 562306a36Sopenharmony_ci#define _ICE_IRQ_H_ 662306a36Sopenharmony_ci 762306a36Sopenharmony_cistruct ice_irq_entry { 862306a36Sopenharmony_ci unsigned int index; 962306a36Sopenharmony_ci bool dynamic; /* allocation type flag */ 1062306a36Sopenharmony_ci}; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct ice_irq_tracker { 1362306a36Sopenharmony_ci struct xarray entries; 1462306a36Sopenharmony_ci u16 num_entries; /* total vectors available */ 1562306a36Sopenharmony_ci u16 num_static; /* preallocated entries */ 1662306a36Sopenharmony_ci}; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciint ice_init_interrupt_scheme(struct ice_pf *pf); 1962306a36Sopenharmony_civoid ice_clear_interrupt_scheme(struct ice_pf *pf); 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistruct msi_map ice_alloc_irq(struct ice_pf *pf, bool dyn_only); 2262306a36Sopenharmony_civoid ice_free_irq(struct ice_pf *pf, struct msi_map map); 2362306a36Sopenharmony_ciint ice_get_max_used_msix_vector(struct ice_pf *pf); 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#endif 26