pci.c (5f8f965287494d55e8ba3551e3727a5e9d0eb702) pci.c (0f01dcb89b8b24b8d99d2ca25ed12676edae95ce)
1// SPDX-License-Identifier: BSD-3-Clause-Clear
2/*
3 * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
4 */
5
6#include <linux/module.h>
7#include <linux/msi.h>
8#include <linux/pci.h>

--- 366 unchanged lines hidden (view full) ---

375 if (ath11k_ce_get_attr_flags(ab, i) & CE_ATTR_DIS_INTR)
376 continue;
377
378 irq_idx = ATH11K_PCI_IRQ_CE0_OFFSET + i;
379 synchronize_irq(ab->irq_num[irq_idx]);
380 }
381}
382
1// SPDX-License-Identifier: BSD-3-Clause-Clear
2/*
3 * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
4 */
5
6#include <linux/module.h>
7#include <linux/msi.h>
8#include <linux/pci.h>

--- 366 unchanged lines hidden (view full) ---

375 if (ath11k_ce_get_attr_flags(ab, i) & CE_ATTR_DIS_INTR)
376 continue;
377
378 irq_idx = ATH11K_PCI_IRQ_CE0_OFFSET + i;
379 synchronize_irq(ab->irq_num[irq_idx]);
380 }
381}
382
383static void ath11k_pci_ce_tasklet(unsigned long data)
383static void ath11k_pci_ce_tasklet(struct tasklet_struct *t)
384{
384{
385 struct ath11k_ce_pipe *ce_pipe = (struct ath11k_ce_pipe *)data;
385 struct ath11k_ce_pipe *ce_pipe = from_tasklet(ce_pipe, t, intr_tq);
386
387 ath11k_ce_per_engine_service(ce_pipe->ab, ce_pipe->pipe_num);
388
389 ath11k_pci_ce_irq_enable(ce_pipe->ab, ce_pipe->pipe_num);
390}
391
392static irqreturn_t ath11k_pci_ce_interrupt_handler(int irq, void *arg)
393{

--- 182 unchanged lines hidden (view full) ---

576 irq = ath11k_pci_get_msi_irq(ab->dev, msi_data);
577 ce_pipe = &ab->ce.ce_pipe[i];
578
579 if (ath11k_ce_get_attr_flags(ab, i) & CE_ATTR_DIS_INTR)
580 continue;
581
582 irq_idx = ATH11K_PCI_IRQ_CE0_OFFSET + i;
583
386
387 ath11k_ce_per_engine_service(ce_pipe->ab, ce_pipe->pipe_num);
388
389 ath11k_pci_ce_irq_enable(ce_pipe->ab, ce_pipe->pipe_num);
390}
391
392static irqreturn_t ath11k_pci_ce_interrupt_handler(int irq, void *arg)
393{

--- 182 unchanged lines hidden (view full) ---

576 irq = ath11k_pci_get_msi_irq(ab->dev, msi_data);
577 ce_pipe = &ab->ce.ce_pipe[i];
578
579 if (ath11k_ce_get_attr_flags(ab, i) & CE_ATTR_DIS_INTR)
580 continue;
581
582 irq_idx = ATH11K_PCI_IRQ_CE0_OFFSET + i;
583
584 tasklet_init(&ce_pipe->intr_tq, ath11k_pci_ce_tasklet,
585 (unsigned long)ce_pipe);
584 tasklet_setup(&ce_pipe->intr_tq, ath11k_pci_ce_tasklet);
586
587 ret = request_irq(irq, ath11k_pci_ce_interrupt_handler,
588 IRQF_SHARED, irq_name[irq_idx],
589 ce_pipe);
590 if (ret) {
591 ath11k_err(ab, "failed to request irq %d: %d\n",
592 irq_idx, ret);
593 return ret;

--- 469 unchanged lines hidden ---
585
586 ret = request_irq(irq, ath11k_pci_ce_interrupt_handler,
587 IRQF_SHARED, irq_name[irq_idx],
588 ce_pipe);
589 if (ret) {
590 ath11k_err(ab, "failed to request irq %d: %d\n",
591 irq_idx, ret);
592 return ret;

--- 469 unchanged lines hidden ---