Merge remote-tracking branch 'origin/master' into isa/arm64
[lunaix-os.git] / lunaix-os / includes / hal / pci.h
index 37815fefb8a41e71a12ce0981225dae5fc438128..22b3dd918a5ff86c83bca5c29e8a707e8f86c691 100644 (file)
@@ -8,7 +8,7 @@
 #include <lunaix/types.h>
 #include <lunaix/changeling.h>
 
-#include <asm-generic/isrm.h>
+#include "irq.h"
 
 #define PCI_VENDOR_INVLD 0xffff
 
@@ -86,6 +86,7 @@ struct pci_probe
     struct pci_base_addr bar[6];
 
     struct device* bind;
+    struct irq_domain* irq_domain;
 };
 #define pci_probe_morpher   morphable_attrs(pci_probe, mobj)
 
@@ -115,6 +116,12 @@ pci_register_driver(struct device_def* def, pci_id_checker_t checker);
 size_t
 pci_bar_sizing(struct pci_probe* probe, u32_t* bar_out, u32_t bar_num);
 
+irq_t
+pci_declare_msi_irq(irq_servant callback, struct pci_probe* probe);
+
+int
+pci_assign_msi(struct pci_probe* probe, irq_t irq, void* irq_spec);
+
 /**
  * @brief Bind an abstract device instance to the pci device
  *
@@ -128,32 +135,6 @@ pci_bind_instance(struct pci_probe* probe, struct device* dev)
 
 }
 
-msienv_t
-pci_msi_start(struct pci_probe* probe);
-
-msi_vector_t
-pci_msi_setup_at(msienv_t msienv, struct pci_probe* probe, 
-                 int i, isr_cb handler);
-
-static inline void
-pci_msi_done(msienv_t env)
-{
-    isrm_msi_done(env);
-}
-
-static inline msi_vector_t
-pci_msi_setup_simple(struct pci_probe* probe, isr_cb handler)
-{
-    msienv_t env;
-    msi_vector_t msiv;
-    
-    env = pci_msi_start(probe);
-    msiv = pci_msi_setup_at(env, probe, 0, handler);
-    pci_msi_done(env);
-
-    return msiv;
-}
-
 int
 pci_bind_driver(struct pci_registry* reg);