Skip to content

Commit 286db45

Browse files
Hans ZhangMani-Sadhasivam
authored andcommitted
PCI: Add common TLP type macros and convert aspeed/mediatek
Introduce a set of unified TLP type macros in pci.h according to PCIe spec r7.0, sec 2.2.1: - PCIE_TLP_TYPE_MEM_RDWR (0x00) for Memory Read/Write - PCIE_TLP_TYPE_IO_RDWR (0x02) for I/O Read/Write - PCIE_TLP_TYPE_CFG0_RDWR (0x04) for Type 0 Config Read/Write - PCIE_TLP_TYPE_CFG1_RDWR (0x05) for Type 1 Config Read/Write - PCIE_TLP_TYPE_MSG (0x10) for Message Request (routing to RC) These replace the old per-driver hardcoded values or local macros, and also replace the previous PCIE_TLP_TYPE_CFG0_RD/WR and PCIE_TLP_TYPE_CFG1_RD/WR definitions which had identical numeric values. The read/write distinction is already handled by the TLP Format field (Fmt), so a single type macro suffices. Convert the aspeed and mediatek drivers to use the new macros, and remove the obsolete definitions from pci.h. No functional change intended. Signed-off-by: Hans Zhang <18255117159@163.com> Signed-off-by: Manivannan Sadhasivam <mani@kernel.org> Link: https://patch.msgid.link/20260516153657.65214-2-18255117159@163.com
1 parent 254f496 commit 286db45

3 files changed

Lines changed: 11 additions & 14 deletions

File tree

drivers/pci/controller/pcie-aspeed.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,19 +127,19 @@
127127
#define CFG0_READ_FMTTYPE \
128128
FIELD_PREP(ASPEED_TLP_COMMON_FIELDS, \
129129
ASPEED_TLP_FMT_TYPE(PCIE_TLP_FMT_3DW_NO_DATA, \
130-
PCIE_TLP_TYPE_CFG0_RD))
130+
PCIE_TLP_TYPE_CFG0_RDWR))
131131
#define CFG0_WRITE_FMTTYPE \
132132
FIELD_PREP(ASPEED_TLP_COMMON_FIELDS, \
133133
ASPEED_TLP_FMT_TYPE(PCIE_TLP_FMT_3DW_DATA, \
134-
PCIE_TLP_TYPE_CFG0_WR))
134+
PCIE_TLP_TYPE_CFG0_RDWR))
135135
#define CFG1_READ_FMTTYPE \
136136
FIELD_PREP(ASPEED_TLP_COMMON_FIELDS, \
137137
ASPEED_TLP_FMT_TYPE(PCIE_TLP_FMT_3DW_NO_DATA, \
138-
PCIE_TLP_TYPE_CFG1_RD))
138+
PCIE_TLP_TYPE_CFG1_RDWR))
139139
#define CFG1_WRITE_FMTTYPE \
140140
FIELD_PREP(ASPEED_TLP_COMMON_FIELDS, \
141141
ASPEED_TLP_FMT_TYPE(PCIE_TLP_FMT_3DW_DATA, \
142-
PCIE_TLP_TYPE_CFG1_WR))
142+
PCIE_TLP_TYPE_CFG1_RDWR))
143143
#define CFG_PAYLOAD_SIZE 0x01 /* 1 DWORD */
144144
#define TLP_HEADER_BYTE_EN(x, y) ((GENMASK((x) - 1, 0) << ((y) % 4)))
145145
#define TLP_GET_VALUE(x, y, z) \

drivers/pci/controller/pcie-mediatek.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,6 @@
111111
#define APP_CFG_REQ BIT(0)
112112
#define APP_CPL_STATUS GENMASK(7, 5)
113113

114-
#define CFG_WRRD_TYPE_0 4
115-
#define CFG_WR_FMT 2
116-
#define CFG_RD_FMT 0
117-
118114
#define CFG_DW0_LENGTH(length) ((length) & GENMASK(9, 0))
119115
#define CFG_DW0_TYPE(type) (((type) << 24) & GENMASK(28, 24))
120116
#define CFG_DW0_FMT(fmt) (((fmt) << 29) & GENMASK(31, 29))
@@ -295,7 +291,7 @@ static int mtk_pcie_hw_rd_cfg(struct mtk_pcie_port *port, u32 bus, u32 devfn,
295291
u32 tmp;
296292

297293
/* Write PCIe configuration transaction header for Cfgrd */
298-
writel(CFG_HEADER_DW0(CFG_WRRD_TYPE_0, CFG_RD_FMT),
294+
writel(CFG_HEADER_DW0(PCIE_TLP_TYPE_CFG0_RDWR, PCIE_TLP_FMT_3DW_NO_DATA),
299295
port->base + PCIE_CFG_HEADER0);
300296
writel(CFG_HEADER_DW1(where, size), port->base + PCIE_CFG_HEADER1);
301297
writel(CFG_HEADER_DW2(where, PCI_FUNC(devfn), PCI_SLOT(devfn), bus),
@@ -325,7 +321,7 @@ static int mtk_pcie_hw_wr_cfg(struct mtk_pcie_port *port, u32 bus, u32 devfn,
325321
int where, int size, u32 val)
326322
{
327323
/* Write PCIe configuration transaction header for Cfgwr */
328-
writel(CFG_HEADER_DW0(CFG_WRRD_TYPE_0, CFG_WR_FMT),
324+
writel(CFG_HEADER_DW0(PCIE_TLP_TYPE_CFG0_RDWR, PCIE_TLP_FMT_3DW_DATA),
329325
port->base + PCIE_CFG_HEADER0);
330326
writel(CFG_HEADER_DW1(where, size), port->base + PCIE_CFG_HEADER1);
331327
writel(CFG_HEADER_DW2(where, PCI_FUNC(devfn), PCI_SLOT(devfn), bus),

drivers/pci/pci.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,11 @@ struct pcie_tlp_log;
7171
#define PCIE_TLP_FMT_4DW_DATA 0x03 /* 4DW header, with data */
7272

7373
/* Type of TLP; PCIe r7.0, sec 2.2.1 */
74-
#define PCIE_TLP_TYPE_CFG0_RD 0x04 /* Config Type 0 Read Request */
75-
#define PCIE_TLP_TYPE_CFG0_WR 0x04 /* Config Type 0 Write Request */
76-
#define PCIE_TLP_TYPE_CFG1_RD 0x05 /* Config Type 1 Read Request */
77-
#define PCIE_TLP_TYPE_CFG1_WR 0x05 /* Config Type 1 Write Request */
74+
#define PCIE_TLP_TYPE_MEM_RDWR 0x00 /* Memory Read/Write Request */
75+
#define PCIE_TLP_TYPE_IO_RDWR 0x02 /* I/O Read/Write Request */
76+
#define PCIE_TLP_TYPE_CFG0_RDWR 0x04 /* Config Type 0 Read/Write Request */
77+
#define PCIE_TLP_TYPE_CFG1_RDWR 0x05 /* Config Type 1 Read/Write Request */
78+
#define PCIE_TLP_TYPE_MSG 0x10 /* Message With/Without data Request */
7879

7980
/* Message Routing (r[2:0]); PCIe r6.0, sec 2.2.8 */
8081
#define PCIE_MSG_TYPE_R_RC 0

0 commit comments

Comments
 (0)