Lines Matching refs:accel_dev
21 static int adf_enable_msix(struct adf_accel_dev *accel_dev) in adf_enable_msix() argument
23 struct adf_accel_pci *pci_dev_info = &accel_dev->accel_pci_dev; in adf_enable_msix()
24 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_enable_msix()
29 hw_data->set_msix_rttable(accel_dev); in adf_enable_msix()
34 dev_err(&GET_DEV(accel_dev), in adf_enable_msix()
50 struct adf_hw_csr_ops *csr_ops = GET_CSR_OPS(bank->accel_dev); in adf_msix_isr_bundle()
59 void adf_enable_vf2pf_interrupts(struct adf_accel_dev *accel_dev, u32 vf_mask) in adf_enable_vf2pf_interrupts() argument
61 void __iomem *pmisc_addr = adf_get_pmisc_base(accel_dev); in adf_enable_vf2pf_interrupts()
64 spin_lock_irqsave(&accel_dev->pf.vf2pf_ints_lock, flags); in adf_enable_vf2pf_interrupts()
65 GET_PFVF_OPS(accel_dev)->enable_vf2pf_interrupts(pmisc_addr, vf_mask); in adf_enable_vf2pf_interrupts()
66 spin_unlock_irqrestore(&accel_dev->pf.vf2pf_ints_lock, flags); in adf_enable_vf2pf_interrupts()
69 void adf_disable_all_vf2pf_interrupts(struct adf_accel_dev *accel_dev) in adf_disable_all_vf2pf_interrupts() argument
71 void __iomem *pmisc_addr = adf_get_pmisc_base(accel_dev); in adf_disable_all_vf2pf_interrupts()
74 spin_lock_irqsave(&accel_dev->pf.vf2pf_ints_lock, flags); in adf_disable_all_vf2pf_interrupts()
75 GET_PFVF_OPS(accel_dev)->disable_all_vf2pf_interrupts(pmisc_addr); in adf_disable_all_vf2pf_interrupts()
76 spin_unlock_irqrestore(&accel_dev->pf.vf2pf_ints_lock, flags); in adf_disable_all_vf2pf_interrupts()
79 static u32 adf_disable_pending_vf2pf_interrupts(struct adf_accel_dev *accel_dev) in adf_disable_pending_vf2pf_interrupts() argument
81 void __iomem *pmisc_addr = adf_get_pmisc_base(accel_dev); in adf_disable_pending_vf2pf_interrupts()
84 spin_lock(&accel_dev->pf.vf2pf_ints_lock); in adf_disable_pending_vf2pf_interrupts()
85 pending = GET_PFVF_OPS(accel_dev)->disable_pending_vf2pf_interrupts(pmisc_addr); in adf_disable_pending_vf2pf_interrupts()
86 spin_unlock(&accel_dev->pf.vf2pf_ints_lock); in adf_disable_pending_vf2pf_interrupts()
91 static bool adf_handle_vf2pf_int(struct adf_accel_dev *accel_dev) in adf_handle_vf2pf_int() argument
97 vf_mask = adf_disable_pending_vf2pf_interrupts(accel_dev); in adf_handle_vf2pf_int()
107 vf_info = accel_dev->pf.vf_info + i; in adf_handle_vf2pf_int()
110 dev_info(&GET_DEV(accel_dev), in adf_handle_vf2pf_int()
124 static bool adf_handle_pm_int(struct adf_accel_dev *accel_dev) in adf_handle_pm_int() argument
126 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_handle_pm_int()
129 hw_data->handle_pm_interrupt(accel_dev)) in adf_handle_pm_int()
137 struct adf_accel_dev *accel_dev = dev_ptr; in adf_msix_isr_ae() local
141 if (accel_dev->pf.vf_info && adf_handle_vf2pf_int(accel_dev)) in adf_msix_isr_ae()
145 if (adf_handle_pm_int(accel_dev)) in adf_msix_isr_ae()
148 dev_dbg(&GET_DEV(accel_dev), "qat_dev%d spurious AE interrupt\n", in adf_msix_isr_ae()
149 accel_dev->accel_id); in adf_msix_isr_ae()
154 static void adf_free_irqs(struct adf_accel_dev *accel_dev) in adf_free_irqs() argument
156 struct adf_accel_pci *pci_dev_info = &accel_dev->accel_pci_dev; in adf_free_irqs()
157 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_free_irqs()
159 struct adf_etr_data *etr_data = accel_dev->transport; in adf_free_irqs()
175 free_irq(irq, accel_dev); in adf_free_irqs()
179 static int adf_request_irqs(struct adf_accel_dev *accel_dev) in adf_request_irqs() argument
181 struct adf_accel_pci *pci_dev_info = &accel_dev->accel_pci_dev; in adf_request_irqs()
182 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_request_irqs()
184 struct adf_etr_data *etr_data = accel_dev->transport; in adf_request_irqs()
190 if (!accel_dev->pf.vf_info) { in adf_request_irqs()
197 "qat%d-bundle%d", accel_dev->accel_id, i); in adf_request_irqs()
200 dev_err(&GET_DEV(accel_dev), in adf_request_irqs()
209 dev_err(&GET_DEV(accel_dev), in adf_request_irqs()
215 cpu = ((accel_dev->accel_id * hw_data->num_banks) + in adf_request_irqs()
225 "qat%d-ae-cluster", accel_dev->accel_id); in adf_request_irqs()
228 dev_err(&GET_DEV(accel_dev), in adf_request_irqs()
234 ret = request_irq(irq, adf_msix_isr_ae, 0, &name[0], accel_dev); in adf_request_irqs()
236 dev_err(&GET_DEV(accel_dev), in adf_request_irqs()
243 adf_free_irqs(accel_dev); in adf_request_irqs()
247 static int adf_isr_alloc_msix_vectors_data(struct adf_accel_dev *accel_dev) in adf_isr_alloc_msix_vectors_data() argument
249 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_isr_alloc_msix_vectors_data()
254 if (!accel_dev->pf.vf_info) in adf_isr_alloc_msix_vectors_data()
258 GFP_KERNEL, dev_to_node(&GET_DEV(accel_dev))); in adf_isr_alloc_msix_vectors_data()
262 accel_dev->accel_pci_dev.msix_entries.num_entries = msix_num_entries; in adf_isr_alloc_msix_vectors_data()
263 accel_dev->accel_pci_dev.msix_entries.irqs = irqs; in adf_isr_alloc_msix_vectors_data()
267 static void adf_isr_free_msix_vectors_data(struct adf_accel_dev *accel_dev) in adf_isr_free_msix_vectors_data() argument
269 kfree(accel_dev->accel_pci_dev.msix_entries.irqs); in adf_isr_free_msix_vectors_data()
270 accel_dev->accel_pci_dev.msix_entries.irqs = NULL; in adf_isr_free_msix_vectors_data()
273 static int adf_setup_bh(struct adf_accel_dev *accel_dev) in adf_setup_bh() argument
275 struct adf_etr_data *priv_data = accel_dev->transport; in adf_setup_bh()
276 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_setup_bh()
286 static void adf_cleanup_bh(struct adf_accel_dev *accel_dev) in adf_cleanup_bh() argument
288 struct adf_etr_data *priv_data = accel_dev->transport; in adf_cleanup_bh()
289 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_cleanup_bh()
304 void adf_isr_resource_free(struct adf_accel_dev *accel_dev) in adf_isr_resource_free() argument
306 adf_free_irqs(accel_dev); in adf_isr_resource_free()
307 adf_cleanup_bh(accel_dev); in adf_isr_resource_free()
308 adf_disable_msix(&accel_dev->accel_pci_dev); in adf_isr_resource_free()
309 adf_isr_free_msix_vectors_data(accel_dev); in adf_isr_resource_free()
321 int adf_isr_resource_alloc(struct adf_accel_dev *accel_dev) in adf_isr_resource_alloc() argument
325 ret = adf_isr_alloc_msix_vectors_data(accel_dev); in adf_isr_resource_alloc()
329 ret = adf_enable_msix(accel_dev); in adf_isr_resource_alloc()
333 ret = adf_setup_bh(accel_dev); in adf_isr_resource_alloc()
337 ret = adf_request_irqs(accel_dev); in adf_isr_resource_alloc()
344 adf_cleanup_bh(accel_dev); in adf_isr_resource_alloc()
347 adf_disable_msix(&accel_dev->accel_pci_dev); in adf_isr_resource_alloc()
350 adf_isr_free_msix_vectors_data(accel_dev); in adf_isr_resource_alloc()