Skip to content

Commit 78e531d

Browse files
committed
Merge branch 'pci/controller/tlp_macros'
- Add common TLP Type macros (MRd/Wr, IORd/Wr, CfgRd/Wr 0, CfgRd/Wr 1, Msg) and use them in aspeed, cadence, dwc, mediatek, tegra drivers (Hans Zhang) * pci/controller/tlp_macros: PCI: cadence: Use common TLP type macros PCI: dwc: Replace ATU type macros with common TLP type macros PCI: Add common TLP type macros and convert aspeed/mediatek
2 parents 7c97ee7 + 5201533 commit 78e531d

9 files changed

Lines changed: 34 additions & 40 deletions

File tree

drivers/pci/controller/cadence/pcie-cadence-hpa-regs.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#include <linux/phy/phy.h>
1515
#include <linux/bitfield.h>
1616

17+
#include "../../pci.h"
18+
1719
/* High Performance Architecture (HPA) PCIe controller registers */
1820
#define CDNS_PCIE_HPA_IP_REG_BANK 0x01000000
1921
#define CDNS_PCIE_HPA_IP_CFG_CTRL_REG_BANK 0x01003C00
@@ -119,15 +121,15 @@
119121
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0(r) (0x1008 + ((r) & 0x1F) * 0x0080)
120122
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK GENMASK(28, 24)
121123
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MEM \
122-
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x0)
124+
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, PCIE_TLP_TYPE_MEM_RDWR)
123125
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_IO \
124-
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x2)
126+
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, PCIE_TLP_TYPE_IO_RDWR)
125127
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_CONF_TYPE0 \
126-
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x4)
128+
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, PCIE_TLP_TYPE_CFG0_RDWR)
127129
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_CONF_TYPE1 \
128-
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x5)
130+
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, PCIE_TLP_TYPE_CFG1_RDWR)
129131
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_NORMAL_MSG \
130-
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x10)
132+
FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, PCIE_TLP_TYPE_MSG)
131133

132134
/* Region r Outbound PCIe Descriptor Register */
133135
#define CDNS_PCIE_HPA_AT_OB_REGION_DESC1(r) (0x100C + ((r) & 0x1F) * 0x0080)

drivers/pci/controller/dwc/pcie-designware-ep.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -585,9 +585,9 @@ static int dw_pcie_ep_set_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
585585

586586
config_atu:
587587
if (!(flags & PCI_BASE_ADDRESS_SPACE))
588-
type = PCIE_ATU_TYPE_MEM;
588+
type = PCIE_TLP_TYPE_MEM_RDWR;
589589
else
590-
type = PCIE_ATU_TYPE_IO;
590+
type = PCIE_TLP_TYPE_IO_RDWR;
591591

592592
if (epf_bar->num_submap)
593593
ret = dw_pcie_ep_ib_atu_addr(ep, func_no, type, epf_bar);
@@ -660,7 +660,7 @@ static int dw_pcie_ep_map_addr(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
660660
struct dw_pcie_ob_atu_cfg atu = { 0 };
661661

662662
atu.func_no = func_no;
663-
atu.type = PCIE_ATU_TYPE_MEM;
663+
atu.type = PCIE_TLP_TYPE_MEM_RDWR;
664664
atu.parent_bus_addr = addr - pci->parent_bus_offset;
665665
atu.pci_addr = pci_addr;
666666
atu.size = size;

drivers/pci/controller/dwc/pcie-designware-host.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ static int dw_pcie_config_ecam_iatu(struct dw_pcie_rp *pp)
436436
* remaining buses need type 1 iATU configuration.
437437
*/
438438
atu.index = 0;
439-
atu.type = PCIE_ATU_TYPE_CFG0;
439+
atu.type = PCIE_TLP_TYPE_CFG0_RDWR;
440440
atu.parent_bus_addr = pp->cfg0_base + SZ_1M;
441441
/* 1MiB is to cover 1 (bus) * 32 (devices) * 8 (functions) */
442442
atu.size = SZ_1M;
@@ -452,7 +452,7 @@ static int dw_pcie_config_ecam_iatu(struct dw_pcie_rp *pp)
452452

453453
/* Configure remaining buses in type 1 iATU configuration */
454454
atu.index = 1;
455-
atu.type = PCIE_ATU_TYPE_CFG1;
455+
atu.type = PCIE_TLP_TYPE_CFG1_RDWR;
456456
atu.parent_bus_addr = pp->cfg0_base + SZ_2M;
457457
atu.size = (SZ_1M * bus_range_max) - SZ_2M;
458458
atu.ctrl2 = PCIE_ATU_CFG_SHIFT_MODE_ENABLE;
@@ -749,9 +749,9 @@ static void __iomem *dw_pcie_other_conf_map_bus(struct pci_bus *bus,
749749
PCIE_ATU_FUNC(PCI_FUNC(devfn));
750750

751751
if (pci_is_root_bus(bus->parent))
752-
type = PCIE_ATU_TYPE_CFG0;
752+
type = PCIE_TLP_TYPE_CFG0_RDWR;
753753
else
754-
type = PCIE_ATU_TYPE_CFG1;
754+
type = PCIE_TLP_TYPE_CFG1_RDWR;
755755

756756
atu.type = type;
757757
atu.parent_bus_addr = pp->cfg0_base - pci->parent_bus_offset;
@@ -778,7 +778,7 @@ static int dw_pcie_rd_other_conf(struct pci_bus *bus, unsigned int devfn,
778778
return ret;
779779

780780
if (pp->cfg0_io_shared) {
781-
atu.type = PCIE_ATU_TYPE_IO;
781+
atu.type = PCIE_TLP_TYPE_IO_RDWR;
782782
atu.parent_bus_addr = pp->io_base - pci->parent_bus_offset;
783783
atu.pci_addr = pp->io_bus_addr;
784784
atu.size = pp->io_size;
@@ -804,7 +804,7 @@ static int dw_pcie_wr_other_conf(struct pci_bus *bus, unsigned int devfn,
804804
return ret;
805805

806806
if (pp->cfg0_io_shared) {
807-
atu.type = PCIE_ATU_TYPE_IO;
807+
atu.type = PCIE_TLP_TYPE_IO_RDWR;
808808
atu.parent_bus_addr = pp->io_base - pci->parent_bus_offset;
809809
atu.pci_addr = pp->io_bus_addr;
810810
atu.size = pp->io_size;
@@ -912,7 +912,7 @@ static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp)
912912
if (resource_type(entry->res) != IORESOURCE_MEM)
913913
continue;
914914

915-
atu.type = PCIE_ATU_TYPE_MEM;
915+
atu.type = PCIE_TLP_TYPE_MEM_RDWR;
916916
atu.parent_bus_addr = entry->res->start - pci->parent_bus_offset;
917917
atu.pci_addr = entry->res->start - entry->offset;
918918

@@ -955,7 +955,7 @@ static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp)
955955
if (pp->io_size) {
956956
if (ob_iatu_index < pci->num_ob_windows) {
957957
atu.index = ob_iatu_index;
958-
atu.type = PCIE_ATU_TYPE_IO;
958+
atu.type = PCIE_TLP_TYPE_IO_RDWR;
959959
atu.parent_bus_addr = pp->io_base - pci->parent_bus_offset;
960960
atu.pci_addr = pp->io_bus_addr;
961961
atu.size = pp->io_size;
@@ -1017,7 +1017,7 @@ static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp)
10171017

10181018
window_size = MIN(pci->region_limit + 1, res_size);
10191019
ret = dw_pcie_prog_inbound_atu(pci, ib_iatu_index,
1020-
PCIE_ATU_TYPE_MEM, res_start,
1020+
PCIE_TLP_TYPE_MEM_RDWR, res_start,
10211021
res_start - entry->offset, window_size);
10221022
if (ret) {
10231023
dev_err(pci->dev, "Failed to set DMA range %pr\n",
@@ -1198,7 +1198,7 @@ static int dw_pcie_pme_turn_off(struct dw_pcie *pci)
11981198

11991199
atu.code = PCIE_MSG_CODE_PME_TURN_OFF;
12001200
atu.routing = PCIE_MSG_TYPE_R_BC;
1201-
atu.type = PCIE_ATU_TYPE_MSG;
1201+
atu.type = PCIE_TLP_TYPE_MSG;
12021202
atu.size = resource_size(pci->pp.msg_res);
12031203
atu.index = pci->pp.msg_atu_index;
12041204

drivers/pci/controller/dwc/pcie-designware.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@ int dw_pcie_prog_outbound_atu(struct dw_pcie *pci,
573573
dw_pcie_writel_atu_ob(pci, atu->index, PCIE_ATU_REGION_CTRL1, val);
574574

575575
val = PCIE_ATU_ENABLE | atu->ctrl2;
576-
if (atu->type == PCIE_ATU_TYPE_MSG) {
576+
if (atu->type == PCIE_TLP_TYPE_MSG) {
577577
/* The data-less messages only for now */
578578
val |= PCIE_ATU_INHIBIT_PAYLOAD | atu->code;
579579
}

drivers/pci/controller/dwc/pcie-designware.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,6 @@
195195
#define PCIE_ATU_VIEWPORT_SIZE 0x2C
196196
#define PCIE_ATU_REGION_CTRL1 0x000
197197
#define PCIE_ATU_INCREASE_REGION_SIZE BIT(13)
198-
#define PCIE_ATU_TYPE_MEM 0x0
199-
#define PCIE_ATU_TYPE_IO 0x2
200-
#define PCIE_ATU_TYPE_CFG0 0x4
201-
#define PCIE_ATU_TYPE_CFG1 0x5
202-
#define PCIE_ATU_TYPE_MSG 0x10
203198
#define PCIE_ATU_TD BIT(8)
204199
#define PCIE_ATU_FUNC_NUM(pf) ((pf) << 20)
205200
#define PCIE_ATU_REGION_CTRL2 0x004

drivers/pci/controller/dwc/pcie-tegra194-acpi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ static void __iomem *tegra194_map_bus(struct pci_bus *bus,
8686

8787
if (bus->parent->number == cfg->busr.start) {
8888
if (PCI_SLOT(devfn) == 0)
89-
type = PCIE_ATU_TYPE_CFG0;
89+
type = PCIE_TLP_TYPE_CFG0_RDWR;
9090
else
9191
return NULL;
9292
} else {
93-
type = PCIE_ATU_TYPE_CFG1;
93+
type = PCIE_TLP_TYPE_CFG1_RDWR;
9494
}
9595

9696
program_outbound_atu(pcie_ecam, 0, type, cfg->res.start, busdev,

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
@@ -112,10 +112,6 @@
112112
#define APP_CFG_REQ BIT(0)
113113
#define APP_CPL_STATUS GENMASK(7, 5)
114114

115-
#define CFG_WRRD_TYPE_0 4
116-
#define CFG_WR_FMT 2
117-
#define CFG_RD_FMT 0
118-
119115
#define CFG_DW0_LENGTH(length) ((length) & GENMASK(9, 0))
120116
#define CFG_DW0_TYPE(type) (((type) << 24) & GENMASK(28, 24))
121117
#define CFG_DW0_FMT(fmt) (((fmt) << 29) & GENMASK(31, 29))
@@ -298,7 +294,7 @@ static int mtk_pcie_hw_rd_cfg(struct mtk_pcie_port *port, u32 bus, u32 devfn,
298294
u32 tmp;
299295

300296
/* Write PCIe configuration transaction header for Cfgrd */
301-
writel(CFG_HEADER_DW0(CFG_WRRD_TYPE_0, CFG_RD_FMT),
297+
writel(CFG_HEADER_DW0(PCIE_TLP_TYPE_CFG0_RDWR, PCIE_TLP_FMT_3DW_NO_DATA),
302298
port->base + PCIE_CFG_HEADER0);
303299
writel(CFG_HEADER_DW1(where, size), port->base + PCIE_CFG_HEADER1);
304300
writel(CFG_HEADER_DW2(where, PCI_FUNC(devfn), PCI_SLOT(devfn), bus),
@@ -328,7 +324,7 @@ static int mtk_pcie_hw_wr_cfg(struct mtk_pcie_port *port, u32 bus, u32 devfn,
328324
int where, int size, u32 val)
329325
{
330326
/* Write PCIe configuration transaction header for Cfgwr */
331-
writel(CFG_HEADER_DW0(CFG_WRRD_TYPE_0, CFG_WR_FMT),
327+
writel(CFG_HEADER_DW0(PCIE_TLP_TYPE_CFG0_RDWR, PCIE_TLP_FMT_3DW_DATA),
332328
port->base + PCIE_CFG_HEADER0);
333329
writel(CFG_HEADER_DW1(where, size), port->base + PCIE_CFG_HEADER1);
334330
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)