Skip to content

Commit 927e9d9

Browse files
committed
Merge branch 'pci/controller/dwc-eswin'
- Add DT binding and driver for ESWIN PCIe Root Complex (Senchuan Zhang) * pci/controller/dwc-eswin: PCI: eswin: Add ESWIN PCIe Root Complex driver dt-bindings: PCI: eswin: Add ESWIN PCIe Root Complex # Conflicts: # drivers/pci/controller/dwc/Kconfig # drivers/pci/controller/dwc/Makefile
2 parents d52e027 + b593c26 commit 927e9d9

5 files changed

Lines changed: 592 additions & 0 deletions

File tree

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/pci/eswin,pcie.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: ESWIN PCIe Root Complex
8+
9+
maintainers:
10+
- Yu Ning <ningyu@eswincomputing.com>
11+
- Senchuan Zhang <zhangsenchuan@eswincomputing.com>
12+
- Yanghui Ou <ouyanghui@eswincomputing.com>
13+
14+
description:
15+
ESWIN SoCs PCIe Root Complex is based on the Synopsys DesignWare PCIe IP.
16+
17+
properties:
18+
compatible:
19+
const: eswin,eic7700-pcie
20+
21+
reg:
22+
maxItems: 3
23+
24+
reg-names:
25+
items:
26+
- const: dbi
27+
- const: config
28+
- const: elbi
29+
30+
ranges:
31+
maxItems: 3
32+
33+
'#interrupt-cells':
34+
const: 1
35+
36+
interrupt-names:
37+
items:
38+
- const: msi
39+
- const: inta
40+
- const: intb
41+
- const: intc
42+
- const: intd
43+
44+
interrupt-map:
45+
maxItems: 4
46+
47+
interrupt-map-mask:
48+
items:
49+
- const: 0
50+
- const: 0
51+
- const: 0
52+
- const: 7
53+
54+
clocks:
55+
maxItems: 4
56+
57+
clock-names:
58+
items:
59+
- const: mstr
60+
- const: dbi
61+
- const: phy_reg
62+
- const: aux
63+
64+
resets:
65+
maxItems: 2
66+
67+
reset-names:
68+
items:
69+
- const: dbi
70+
- const: pwr
71+
72+
patternProperties:
73+
"^pcie@":
74+
type: object
75+
$ref: /schemas/pci/pci-pci-bridge.yaml#
76+
77+
properties:
78+
reg:
79+
maxItems: 1
80+
81+
num-lanes:
82+
maximum: 4
83+
84+
resets:
85+
maxItems: 1
86+
87+
reset-names:
88+
items:
89+
- const: perst
90+
91+
required:
92+
- reg
93+
- ranges
94+
- num-lanes
95+
- resets
96+
- reset-names
97+
98+
unevaluatedProperties: false
99+
100+
required:
101+
- compatible
102+
- reg
103+
- ranges
104+
- interrupts
105+
- interrupt-names
106+
- interrupt-map-mask
107+
- interrupt-map
108+
- '#interrupt-cells'
109+
- clocks
110+
- clock-names
111+
- resets
112+
- reset-names
113+
114+
allOf:
115+
- $ref: /schemas/pci/snps,dw-pcie.yaml#
116+
117+
unevaluatedProperties: false
118+
119+
examples:
120+
- |
121+
soc {
122+
#address-cells = <2>;
123+
#size-cells = <2>;
124+
125+
pcie@54000000 {
126+
compatible = "eswin,eic7700-pcie";
127+
reg = <0x0 0x54000000 0x0 0x4000000>,
128+
<0x0 0x40000000 0x0 0x800000>,
129+
<0x0 0x50000000 0x0 0x100000>;
130+
reg-names = "dbi", "config", "elbi";
131+
#address-cells = <3>;
132+
#size-cells = <2>;
133+
#interrupt-cells = <1>;
134+
ranges = <0x01000000 0x0 0x40800000 0x0 0x40800000 0x0 0x800000>,
135+
<0x02000000 0x0 0x41000000 0x0 0x41000000 0x0 0xf000000>,
136+
<0x43000000 0x80 0x00000000 0x80 0x00000000 0x2 0x00000000>;
137+
bus-range = <0x00 0xff>;
138+
clocks = <&clock 144>,
139+
<&clock 145>,
140+
<&clock 146>,
141+
<&clock 147>;
142+
clock-names = "mstr", "dbi", "phy_reg", "aux";
143+
resets = <&reset 97>,
144+
<&reset 98>;
145+
reset-names = "dbi", "pwr";
146+
interrupts = <220>, <179>, <180>, <181>, <182>, <183>, <184>, <185>, <186>;
147+
interrupt-names = "msi", "inta", "intb", "intc", "intd";
148+
interrupt-parent = <&plic>;
149+
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
150+
interrupt-map = <0x0 0x0 0x0 0x1 &plic 179>,
151+
<0x0 0x0 0x0 0x2 &plic 180>,
152+
<0x0 0x0 0x0 0x3 &plic 181>,
153+
<0x0 0x0 0x0 0x4 &plic 182>;
154+
device_type = "pci";
155+
pcie@0 {
156+
reg = <0x0 0x0 0x0 0x0 0x0>;
157+
#address-cells = <3>;
158+
#size-cells = <2>;
159+
ranges;
160+
device_type = "pci";
161+
num-lanes = <4>;
162+
resets = <&reset 99>;
163+
reset-names = "perst";
164+
};
165+
};
166+
};

MAINTAINERS

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20501,6 +20501,13 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
2050120501
S: Odd Fixes
2050220502
F: drivers/pci/controller/pci-thunder-*
2050320503

20504+
PCIE DRIVER FOR ESWIN
20505+
M: Senchuan Zhang <zhangsenchuan@eswincomputing.com>
20506+
L: linux-pci@vger.kernel.org
20507+
S: Maintained
20508+
F: Documentation/devicetree/bindings/pci/eswin,pcie.yaml
20509+
F: drivers/pci/controller/dwc/pcie-eswin.c
20510+
2050420511
PCIE DRIVER FOR HISILICON
2050520512
M: Zhou Wang <wangzhou1@hisilicon.com>
2050620513
L: linux-pci@vger.kernel.org

drivers/pci/controller/dwc/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,16 @@ config PCIE_ARTPEC6_EP
9595
Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
9696
endpoint mode. This uses the DesignWare core.
9797

98+
config PCIE_ESWIN
99+
tristate "ESWIN PCIe controller"
100+
depends on ARCH_ESWIN || COMPILE_TEST
101+
depends on PCI_MSI
102+
select PCIE_DW_HOST
103+
help
104+
Say Y here if you want PCIe controller support for the ESWIN SoCs.
105+
The PCIe controller in ESWIN SoCs is based on DesignWare hardware, and
106+
works only in host mode.
107+
98108
config PCI_IMX6
99109
bool
100110

drivers/pci/controller/dwc/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ obj-$(CONFIG_PCIE_DW_EP) += pcie-designware-ep.o
66
obj-$(CONFIG_PCIE_DW_PLAT) += pcie-designware-plat.o
77
obj-$(CONFIG_PCIE_AMD_MDB) += pcie-amd-mdb.o
88
obj-$(CONFIG_PCIE_ANDES_QILAI) += pcie-andes-qilai.o
9+
obj-$(CONFIG_PCIE_ESWIN) += pcie-eswin.o
910
obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
1011
obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
1112
obj-$(CONFIG_PCIE_FU740) += pcie-fu740.o

0 commit comments

Comments
 (0)