forked from Minki/linux
b9c1153f7a
The "hisilicon,pcie-almost-ecam" binding goes against the usual DT conventions, and is non-sensical in that it describes the IP based on what it isn't. Fix the DT binding with "hisilicon,hip06-pcie-ecam" and "hisilicon,hip07-pcie-ecam". Signed-off-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Dongdong Liu <liudongdong3@huawei.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
88 lines
3.0 KiB
Plaintext
88 lines
3.0 KiB
Plaintext
HiSilicon Hip05 and Hip06 PCIe host bridge DT description
|
|
|
|
HiSilicon PCIe host controller is based on Designware PCI core.
|
|
It shares common functions with PCIe Designware core driver and inherits
|
|
common properties defined in
|
|
Documentation/devicetree/bindings/pci/designware-pci.txt.
|
|
|
|
Additional properties are described here:
|
|
|
|
Required properties
|
|
- compatible: Should contain "hisilicon,hip05-pcie" or "hisilicon,hip06-pcie".
|
|
- reg: Should contain rc_dbi, config registers location and length.
|
|
- reg-names: Must include the following entries:
|
|
"rc_dbi": controller configuration registers;
|
|
"config": PCIe configuration space registers.
|
|
- msi-parent: Should be its_pcie which is an ITS receiving MSI interrupts.
|
|
- port-id: Should be 0, 1, 2 or 3.
|
|
|
|
Optional properties:
|
|
- status: Either "ok" or "disabled".
|
|
- dma-coherent: Present if DMA operations are coherent.
|
|
|
|
Hip05 Example (note that Hip06 is the same except compatible):
|
|
pcie@0xb0080000 {
|
|
compatible = "hisilicon,hip05-pcie", "snps,dw-pcie";
|
|
reg = <0 0xb0080000 0 0x10000>, <0x220 0x00000000 0 0x2000>;
|
|
reg-names = "rc_dbi", "config";
|
|
bus-range = <0 15>;
|
|
msi-parent = <&its_pcie>;
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
device_type = "pci";
|
|
dma-coherent;
|
|
ranges = <0x82000000 0 0x00000000 0x220 0x00000000 0 0x10000000>;
|
|
num-lanes = <8>;
|
|
port-id = <1>;
|
|
#interrupt-cells = <1>;
|
|
interrupt-map-mask = <0xf800 0 0 7>;
|
|
interrupt-map = <0x0 0 0 1 &mbigen_pcie 1 10
|
|
0x0 0 0 2 &mbigen_pcie 2 11
|
|
0x0 0 0 3 &mbigen_pcie 3 12
|
|
0x0 0 0 4 &mbigen_pcie 4 13>;
|
|
status = "ok";
|
|
};
|
|
|
|
HiSilicon Hip06/Hip07 PCIe host bridge DT (almost-ECAM) description.
|
|
|
|
Some BIOSes place the host controller in a mode where it is ECAM
|
|
compliant for all devices other than the root complex. In such cases,
|
|
the host controller should be described as below.
|
|
|
|
The properties and their meanings are identical to those described in
|
|
host-generic-pci.txt except as listed below.
|
|
|
|
Properties of the host controller node that differ from
|
|
host-generic-pci.txt:
|
|
|
|
- compatible : Must be "hisilicon,hip06-pcie-ecam", or
|
|
"hisilicon,hip07-pcie-ecam"
|
|
|
|
- reg : Two entries: First the ECAM configuration space for any
|
|
other bus underneath the root bus. Second, the base
|
|
and size of the HiSilicon host bridge registers include
|
|
the RC's own config space.
|
|
|
|
Example:
|
|
pcie0: pcie@a0090000 {
|
|
compatible = "hisilicon,hip06-pcie-ecam";
|
|
reg = <0 0xb0000000 0 0x2000000>, /* ECAM configuration space */
|
|
<0 0xa0090000 0 0x10000>; /* host bridge registers */
|
|
bus-range = <0 31>;
|
|
msi-map = <0x0000 &its_dsa 0x0000 0x2000>;
|
|
msi-map-mask = <0xffff>;
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
device_type = "pci";
|
|
dma-coherent;
|
|
ranges = <0x02000000 0 0xb2000000 0x0 0xb2000000 0 0x5ff0000
|
|
0x01000000 0 0 0 0xb7ff0000 0 0x10000>;
|
|
#interrupt-cells = <1>;
|
|
interrupt-map-mask = <0xf800 0 0 7>;
|
|
interrupt-map = <0x0 0 0 1 &mbigen_pcie0 650 4
|
|
0x0 0 0 2 &mbigen_pcie0 650 4
|
|
0x0 0 0 3 &mbigen_pcie0 650 4
|
|
0x0 0 0 4 &mbigen_pcie0 650 4>;
|
|
status = "ok";
|
|
};
|