PCI: xilinx-cpm: Move IRQ definitions to a common header
Move the interrupt bit definitions to the pcie-xilinx-common.h file, which then can be shared between pcie-xilinx-cpm and the new xilinx-xdma drivers. While at it, also rename them so these definitions are not CPM-specific. No functional change intended. [kwilczynski: commit log] Link: https://lore.kernel.org/linux-pci/20231003173453.938190-2-thippeswamy.havalige@amd.com Signed-off-by: Thippeswamy Havalige <thippeswamy.havalige@amd.com> Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@amd.com> Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
This commit is contained in:
parent
0bb80ecc33
commit
a977ee945e
30
drivers/pci/controller/pcie-xilinx-common.h
Normal file
30
drivers/pci/controller/pcie-xilinx-common.h
Normal file
@ -0,0 +1,30 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* (C) Copyright 2023, Xilinx, Inc.
|
||||
*/
|
||||
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pci-ecam.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
/* Interrupt registers definitions */
|
||||
#define XILINX_PCIE_INTR_LINK_DOWN 0
|
||||
#define XILINX_PCIE_INTR_HOT_RESET 3
|
||||
#define XILINX_PCIE_INTR_CFG_PCIE_TIMEOUT 4
|
||||
#define XILINX_PCIE_INTR_CFG_TIMEOUT 8
|
||||
#define XILINX_PCIE_INTR_CORRECTABLE 9
|
||||
#define XILINX_PCIE_INTR_NONFATAL 10
|
||||
#define XILINX_PCIE_INTR_FATAL 11
|
||||
#define XILINX_PCIE_INTR_CFG_ERR_POISON 12
|
||||
#define XILINX_PCIE_INTR_PME_TO_ACK_RCVD 15
|
||||
#define XILINX_PCIE_INTR_INTX 16
|
||||
#define XILINX_PCIE_INTR_PM_PME_RCVD 17
|
||||
#define XILINX_PCIE_INTR_SLV_UNSUPP 20
|
||||
#define XILINX_PCIE_INTR_SLV_UNEXP 21
|
||||
#define XILINX_PCIE_INTR_SLV_COMPL 22
|
||||
#define XILINX_PCIE_INTR_SLV_ERRP 23
|
||||
#define XILINX_PCIE_INTR_SLV_CMPABT 24
|
||||
#define XILINX_PCIE_INTR_SLV_ILLBUR 25
|
||||
#define XILINX_PCIE_INTR_MST_DECERR 26
|
||||
#define XILINX_PCIE_INTR_MST_SLVERR 27
|
||||
#define XILINX_PCIE_INTR_SLV_PCIE_TIMEOUT 28
|
@ -16,11 +16,9 @@
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pci-ecam.h>
|
||||
|
||||
#include "../pci.h"
|
||||
#include "pcie-xilinx-common.h"
|
||||
|
||||
/* Register definitions */
|
||||
#define XILINX_CPM_PCIE_REG_IDR 0x00000E10
|
||||
@ -38,29 +36,7 @@
|
||||
#define XILINX_CPM_PCIE_IR_ENABLE 0x000002A8
|
||||
#define XILINX_CPM_PCIE_IR_LOCAL BIT(0)
|
||||
|
||||
/* Interrupt registers definitions */
|
||||
#define XILINX_CPM_PCIE_INTR_LINK_DOWN 0
|
||||
#define XILINX_CPM_PCIE_INTR_HOT_RESET 3
|
||||
#define XILINX_CPM_PCIE_INTR_CFG_PCIE_TIMEOUT 4
|
||||
#define XILINX_CPM_PCIE_INTR_CFG_TIMEOUT 8
|
||||
#define XILINX_CPM_PCIE_INTR_CORRECTABLE 9
|
||||
#define XILINX_CPM_PCIE_INTR_NONFATAL 10
|
||||
#define XILINX_CPM_PCIE_INTR_FATAL 11
|
||||
#define XILINX_CPM_PCIE_INTR_CFG_ERR_POISON 12
|
||||
#define XILINX_CPM_PCIE_INTR_PME_TO_ACK_RCVD 15
|
||||
#define XILINX_CPM_PCIE_INTR_INTX 16
|
||||
#define XILINX_CPM_PCIE_INTR_PM_PME_RCVD 17
|
||||
#define XILINX_CPM_PCIE_INTR_SLV_UNSUPP 20
|
||||
#define XILINX_CPM_PCIE_INTR_SLV_UNEXP 21
|
||||
#define XILINX_CPM_PCIE_INTR_SLV_COMPL 22
|
||||
#define XILINX_CPM_PCIE_INTR_SLV_ERRP 23
|
||||
#define XILINX_CPM_PCIE_INTR_SLV_CMPABT 24
|
||||
#define XILINX_CPM_PCIE_INTR_SLV_ILLBUR 25
|
||||
#define XILINX_CPM_PCIE_INTR_MST_DECERR 26
|
||||
#define XILINX_CPM_PCIE_INTR_MST_SLVERR 27
|
||||
#define XILINX_CPM_PCIE_INTR_SLV_PCIE_TIMEOUT 28
|
||||
|
||||
#define IMR(x) BIT(XILINX_CPM_PCIE_INTR_ ##x)
|
||||
#define IMR(x) BIT(XILINX_PCIE_INTR_ ##x)
|
||||
|
||||
#define XILINX_CPM_PCIE_IMR_ALL_MASK \
|
||||
( \
|
||||
@ -323,7 +299,7 @@ static void xilinx_cpm_pcie_event_flow(struct irq_desc *desc)
|
||||
}
|
||||
|
||||
#define _IC(x, s) \
|
||||
[XILINX_CPM_PCIE_INTR_ ## x] = { __stringify(x), s }
|
||||
[XILINX_PCIE_INTR_ ## x] = { __stringify(x), s }
|
||||
|
||||
static const struct {
|
||||
const char *sym;
|
||||
@ -359,9 +335,9 @@ static irqreturn_t xilinx_cpm_pcie_intr_handler(int irq, void *dev_id)
|
||||
d = irq_domain_get_irq_data(port->cpm_domain, irq);
|
||||
|
||||
switch (d->hwirq) {
|
||||
case XILINX_CPM_PCIE_INTR_CORRECTABLE:
|
||||
case XILINX_CPM_PCIE_INTR_NONFATAL:
|
||||
case XILINX_CPM_PCIE_INTR_FATAL:
|
||||
case XILINX_PCIE_INTR_CORRECTABLE:
|
||||
case XILINX_PCIE_INTR_NONFATAL:
|
||||
case XILINX_PCIE_INTR_FATAL:
|
||||
cpm_pcie_clear_err_interrupts(port);
|
||||
fallthrough;
|
||||
|
||||
@ -466,7 +442,7 @@ static int xilinx_cpm_setup_irq(struct xilinx_cpm_pcie *port)
|
||||
}
|
||||
|
||||
port->intx_irq = irq_create_mapping(port->cpm_domain,
|
||||
XILINX_CPM_PCIE_INTR_INTX);
|
||||
XILINX_PCIE_INTR_INTX);
|
||||
if (!port->intx_irq) {
|
||||
dev_err(dev, "Failed to map INTx interrupt\n");
|
||||
return -ENXIO;
|
||||
|
Loading…
x
Reference in New Issue
Block a user