mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-04 06:26:54 +00:00
This adds few functions to access the daata structures defined inside ioapic.c. Removes the same data structures from ioapic.h Also this modifies some of the names of existing APIs to conform to the ioapic module name. Modified gsi_table identifier to gs_table_data, to avoid a MISRA C Violation. Tracked-On: #1842 Signed-off-by: Arindam Roy <arindam.roy@intel.com>
68 lines
1.5 KiB
C
68 lines
1.5 KiB
C
/*
|
|
* Copyright (C) 2018 Intel Corporation. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef IOAPIC_H
|
|
#define IOAPIC_H
|
|
|
|
#include <bsp_extern.h>
|
|
|
|
#define NR_LEGACY_IRQ 16U
|
|
#define NR_LEGACY_PIN NR_LEGACY_IRQ
|
|
void ioapic_setup_irqs(void);
|
|
|
|
bool ioapic_irq_is_gsi(uint32_t irq);
|
|
uint8_t ioapic_irq_to_pin(uint32_t irq);
|
|
|
|
/**
|
|
* @brief Get irq num from pin num
|
|
*
|
|
* @param[in] pin The pin number
|
|
*/
|
|
uint32_t ioapic_pin_to_irq(uint8_t pin);
|
|
|
|
/**
|
|
* @brief Set the redirection table entry
|
|
*
|
|
* Set the redirection table entry of an interrupt
|
|
*
|
|
* @param[in] irq The number of irq to set
|
|
* @param[in] rte Union of ioapic_rte to set
|
|
*/
|
|
void ioapic_set_rte(uint32_t irq, union ioapic_rte rte);
|
|
|
|
/**
|
|
* @brief Get the redirection table entry
|
|
*
|
|
* Get the redirection table entry of an interrupt
|
|
*
|
|
* @param[in] irq The number of irq to fetch RTE
|
|
* @param[inout] rte Pointer to union ioapic_rte to return result RTE
|
|
*
|
|
* @pre rte != NULL
|
|
*/
|
|
void ioapic_get_rte(uint32_t irq, union ioapic_rte *rte);
|
|
|
|
void suspend_ioapic(void);
|
|
void resume_ioapic(void);
|
|
|
|
void ioapic_gsi_mask_irq(uint32_t irq);
|
|
void ioapic_gsi_unmask_irq(uint32_t irq);
|
|
|
|
void ioapic_get_rte_entry(void *ioapic_addr, uint8_t pin, union ioapic_rte *rte);
|
|
|
|
struct gsi_table {
|
|
uint8_t ioapic_id;
|
|
uint8_t pin;
|
|
void *addr;
|
|
};
|
|
|
|
void *ioapic_get_gsi_irq_addr(uint32_t irq_num);
|
|
uint32_t ioapic_get_nr_gsi(void);
|
|
uint8_t get_pic_pin_from_ioapic_pin(uint8_t pin_index);
|
|
bool ioapic_is_pin_valid(uint8_t pin);
|
|
|
|
#endif /* IOAPIC_H */
|