Unverified Commit a977ee94 authored by Thippeswamy Havalige's avatar Thippeswamy Havalige Committed by Krzysztof Wilczyński
Browse files

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: default avatarThippeswamy Havalige <thippeswamy.havalige@amd.com>
Signed-off-by: default avatarBharat Kumar Gogada <bharat.kumar.gogada@amd.com>
Signed-off-by: default avatarKrzysztof Wilczyński <kwilczynski@kernel.org>
parent 0bb80ecc
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
/* 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
+7 −31
Original line number Diff line number Diff line
@@ -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;