perf/dwc_pcie: Move common DWC struct definitions to 'pcie-dwc.h'

Move the common DWC struct definitions, which are shared across all the
DesginWare PCIe IPs, to a new header file called 'pcie-dwc.h', so that
other users e.g., debugfs, perf and sysfs can make use of them.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Shradha Todi <shradha.t@samsung.com>
Reviewed-by: Shuai Xue <xueshuai@linux.alibaba.com>
Reviewed-by: Fan Ni <fan.ni@samsung.com>
Tested-by: Hrishikesh Deleep <hrishikesh.d@samsung.com>
Link: https://lore.kernel.org/r/20250221131548.59616-2-shradha.t@samsung.com
[kwilczynski: commit log, tidy up the new header file]
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
This commit is contained in:
Manivannan Sadhasivam 2025-02-21 18:45:44 +05:30 committed by Krzysztof Wilczyński
parent 2014c95afe
commit 5d2b978ff9
No known key found for this signature in database
GPG Key ID: 7C64768D3DE334E7
3 changed files with 38 additions and 22 deletions

View File

@ -18123,6 +18123,7 @@ S: Maintained
F: Documentation/devicetree/bindings/pci/snps,dw-pcie-ep.yaml
F: Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml
F: drivers/pci/controller/dwc/*designware*
F: include/linux/pcie-dwc.h
PCI DRIVER FOR TI DRA7XX/J721E
M: Vignesh Raghavendra <vigneshr@ti.com>

View File

@ -13,6 +13,7 @@
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/pcie-dwc.h>
#include <linux/perf_event.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
@ -99,26 +100,6 @@ struct dwc_pcie_dev_info {
struct list_head dev_node;
};
struct dwc_pcie_pmu_vsec_id {
u16 vendor_id;
u16 vsec_id;
u8 vsec_rev;
};
/*
* VSEC IDs are allocated by the vendor, so a given ID may mean different
* things to different vendors. See PCIe r6.0, sec 7.9.5.2.
*/
static const struct dwc_pcie_pmu_vsec_id dwc_pcie_pmu_vsec_ids[] = {
{ .vendor_id = PCI_VENDOR_ID_ALIBABA,
.vsec_id = 0x02, .vsec_rev = 0x4 },
{ .vendor_id = PCI_VENDOR_ID_AMPERE,
.vsec_id = 0x02, .vsec_rev = 0x4 },
{ .vendor_id = PCI_VENDOR_ID_QCOM,
.vsec_id = 0x02, .vsec_rev = 0x4 },
{} /* terminator */
};
static ssize_t cpumask_show(struct device *dev,
struct device_attribute *attr,
char *buf)
@ -529,14 +510,14 @@ static void dwc_pcie_unregister_pmu(void *data)
static u16 dwc_pcie_des_cap(struct pci_dev *pdev)
{
const struct dwc_pcie_pmu_vsec_id *vid;
const struct dwc_pcie_vsec_id *vid;
u16 vsec;
u32 val;
if (!pci_is_pcie(pdev) || !(pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT))
return 0;
for (vid = dwc_pcie_pmu_vsec_ids; vid->vendor_id; vid++) {
for (vid = dwc_pcie_rasdes_vsec_ids; vid->vendor_id; vid++) {
vsec = pci_find_vsec_capability(pdev, vid->vendor_id,
vid->vsec_id);
if (vsec) {

34
include/linux/pcie-dwc.h Normal file
View File

@ -0,0 +1,34 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2021-2023 Alibaba Inc.
* Copyright (C) 2025 Linaro Ltd.
*
* Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
*/
#ifndef LINUX_PCIE_DWC_H
#define LINUX_PCIE_DWC_H
#include <linux/pci_ids.h>
struct dwc_pcie_vsec_id {
u16 vendor_id;
u16 vsec_id;
u8 vsec_rev;
};
/*
* VSEC IDs are allocated by the vendor, so a given ID may mean different
* things to different vendors. See PCIe r6.0, sec 7.9.5.2.
*/
static const struct dwc_pcie_vsec_id dwc_pcie_rasdes_vsec_ids[] = {
{ .vendor_id = PCI_VENDOR_ID_ALIBABA,
.vsec_id = 0x02, .vsec_rev = 0x4 },
{ .vendor_id = PCI_VENDOR_ID_AMPERE,
.vsec_id = 0x02, .vsec_rev = 0x4 },
{ .vendor_id = PCI_VENDOR_ID_QCOM,
.vsec_id = 0x02, .vsec_rev = 0x4 },
{}
};
#endif /* LINUX_PCIE_DWC_H */