Go to the source code of this file.
 | 
| typedef int(*  | vtd_alloc_entries_f) (const struct device *dev, uint8_t n_entries) | 
|   | 
| typedef uint32_t(*  | vtd_remap_msi_f) (const struct device *dev, msi_vector_t *vector, uint8_t n_vector) | 
|   | 
| typedef int(*  | vtd_remap_f) (const struct device *dev, uint8_t irte_idx, uint16_t vector, uint32_t flags, uint16_t src_id) | 
|   | 
| typedef int(*  | vtd_set_irte_vector_f) (const struct device *dev, uint8_t irte_idx, uint16_t vector) | 
|   | 
| typedef int(*  | vtd_get_irte_by_vector_f) (const struct device *dev, uint16_t vector) | 
|   | 
| typedef uint16_t(*  | vtd_get_irte_vector_f) (const struct device *dev, uint8_t irte_idx) | 
|   | 
| typedef int(*  | vtd_set_irte_irq_f) (const struct device *dev, uint8_t irte_idx, unsigned int irq) | 
|   | 
| typedef int(*  | vtd_get_irte_by_irq_f) (const struct device *dev, unsigned int irq) | 
|   | 
| typedef void(*  | vtd_set_irte_msi_f) (const struct device *dev, uint8_t irte_idx, bool msi) | 
|   | 
| typedef bool(*  | vtd_irte_is_msi_f) (const struct device *dev, uint8_t irte_idx) | 
|   | 
 | 
| static int  | vtd_allocate_entries (const struct device *dev, uint8_t n_entries) | 
|   | Allocate contiguous IRTEs.  More...
  | 
|   | 
| static uint32_t  | vtd_remap_msi (const struct device *dev, msi_vector_t *vector, uint8_t n_vector) | 
|   | Generate the MSI Message Address data for the given vector.  More...
  | 
|   | 
| static int  | vtd_remap (const struct device *dev, uint8_t irte_idx, uint16_t vector, uint32_t flags, uint16_t src_id) | 
|   | Remap the given vector.  More...
  | 
|   | 
| static int  | vtd_set_irte_vector (const struct device *dev, uint8_t irte_idx, uint16_t vector) | 
|   | Set the vector on the allocated irte.  More...
  | 
|   | 
| static int  | vtd_get_irte_by_vector (const struct device *dev, uint16_t vector) | 
|   | Get the irte allocated for the given vector.  More...
  | 
|   | 
| static uint16_t  | vtd_get_irte_vector (const struct device *dev, uint8_t irte_idx) | 
|   | Get the vector given to the IRTE.  More...
  | 
|   | 
| static int  | vtd_set_irte_irq (const struct device *dev, uint8_t irte_idx, unsigned int irq) | 
|   | Set the irq on the allocated irte.  More...
  | 
|   | 
| static int  | vtd_get_irte_by_irq (const struct device *dev, unsigned int irq) | 
|   | Get the irte allocated for the given irq.  More...
  | 
|   | 
| static void  | vtd_set_irte_msi (const struct device *dev, uint8_t irte_idx, bool msi) | 
|   | 
| static bool  | vtd_irte_is_msi (const struct device *dev, uint8_t irte_idx) | 
|   | 
◆ vtd_alloc_entries_f
      
        
          | typedef int(* vtd_alloc_entries_f) (const struct device *dev, uint8_t n_entries) | 
        
      
 
 
◆ vtd_get_irte_by_irq_f
      
        
          | typedef int(* vtd_get_irte_by_irq_f) (const struct device *dev, unsigned int irq) | 
        
      
 
 
◆ vtd_get_irte_by_vector_f
      
        
          | typedef int(* vtd_get_irte_by_vector_f) (const struct device *dev, uint16_t vector) | 
        
      
 
 
◆ vtd_get_irte_vector_f
◆ vtd_irte_is_msi_f
◆ vtd_remap_f
◆ vtd_remap_msi_f
◆ vtd_set_irte_irq_f
◆ vtd_set_irte_msi_f
      
        
          | typedef void(* vtd_set_irte_msi_f) (const struct device *dev, uint8_t irte_idx, bool msi) | 
        
      
 
 
◆ vtd_set_irte_vector_f
◆ vtd_allocate_entries()
  
  
      
        
          | static int vtd_allocate_entries  | 
          ( | 
          const struct device *  | 
          dev,  | 
         
        
           | 
           | 
          uint8_t  | 
          n_entries  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlinestatic   | 
  
 
Allocate contiguous IRTEs. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | n_entries | How many IRTE to allocate | 
  
   
Note: It will try to allocate all, or it will fail.
- Returns
 - The first allocated IRTE index, or -EBUSY on failure 
 
 
 
◆ vtd_get_irte_by_irq()
  
  
      
        
          | static int vtd_get_irte_by_irq  | 
          ( | 
          const struct device *  | 
          dev,  | 
         
        
           | 
           | 
          unsigned int  | 
          irq  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlinestatic   | 
  
 
Get the irte allocated for the given irq. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | irq | A valid IRQ number | 
  
   
- Returns
 - 0 or positive value on success, a negative errno otherwise 
 
 
 
◆ vtd_get_irte_by_vector()
  
  
      
        
          | static int vtd_get_irte_by_vector  | 
          ( | 
          const struct device *  | 
          dev,  | 
         
        
           | 
           | 
          uint16_t  | 
          vector  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlinestatic   | 
  
 
Get the irte allocated for the given vector. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | vector | An allocated interrupt vector | 
  
   
- Returns
 - 0 or positive value on success, a negative errno otherwise 
 
 
 
◆ vtd_get_irte_vector()
Get the vector given to the IRTE. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | irte_idx | A previously allocated irte entry index number | 
  
   
- Returns
 - the vector set to this IRTE 
 
 
 
◆ vtd_irte_is_msi()
◆ vtd_remap()
Remap the given vector. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | irte_idx | A previously allocated irte entry index number  | 
    | vector | An allocated interrupt vector  | 
    | flags | interrupt flags  | 
    | src_id | a valid source ID or USHRT_MAX if none | 
  
   
- Returns
 - 0 on success, a negative errno otherwise 
 
 
 
◆ vtd_remap_msi()
Generate the MSI Message Address data for the given vector. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | vector | A valid allocated MSI vector array  | 
    | n_vector | the size of the vector array | 
  
   
- Returns
 - The MSI Message Address value 
 
 
 
◆ vtd_set_irte_irq()
Set the irq on the allocated irte. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | irte_idx | A previously allocated irte entry index number  | 
    | irq | A valid IRQ number | 
  
   
- Returns
 - 0, a negative errno otherwise 
 
 
 
◆ vtd_set_irte_msi()
  
  
      
        
          | static void vtd_set_irte_msi  | 
          ( | 
          const struct device *  | 
          dev,  | 
         
        
           | 
           | 
          uint8_t  | 
          irte_idx,  | 
         
        
           | 
           | 
          bool  | 
          msi  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlinestatic   | 
  
 
 
◆ vtd_set_irte_vector()
Set the vector on the allocated irte. 
- Parameters
 - 
  
    | dev | Pointer to the device structure for the driver instance  | 
    | irte_idx | A previously allocated irte entry index number  | 
    | vector | An allocated interrupt vector | 
  
   
- Returns
 - 0, a negative errno otherwise