1*c66ec88fSEmmanuel Vadot* Xilinx AXI PCIe Root Port Bridge DT description 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotRequired properties: 4*c66ec88fSEmmanuel Vadot- #address-cells: Address representation for root ports, set to <3> 5*c66ec88fSEmmanuel Vadot- #size-cells: Size representation for root ports, set to <2> 6*c66ec88fSEmmanuel Vadot- #interrupt-cells: specifies the number of cells needed to encode an 7*c66ec88fSEmmanuel Vadot interrupt source. The value must be 1. 8*c66ec88fSEmmanuel Vadot- compatible: Should contain "xlnx,axi-pcie-host-1.00.a" 9*c66ec88fSEmmanuel Vadot- reg: Should contain AXI PCIe registers location and length 10*c66ec88fSEmmanuel Vadot- device_type: must be "pci" 11*c66ec88fSEmmanuel Vadot- interrupts: Should contain AXI PCIe interrupt 12*c66ec88fSEmmanuel Vadot- interrupt-map-mask, 13*c66ec88fSEmmanuel Vadot interrupt-map: standard PCI properties to define the mapping of the 14*c66ec88fSEmmanuel Vadot PCI interface to interrupt numbers. 15*c66ec88fSEmmanuel Vadot- ranges: ranges for the PCI memory regions (I/O space region is not 16*c66ec88fSEmmanuel Vadot supported by hardware) 17*c66ec88fSEmmanuel Vadot Please refer to the standard PCI bus binding document for a more 18*c66ec88fSEmmanuel Vadot detailed explanation 19*c66ec88fSEmmanuel Vadot 20*c66ec88fSEmmanuel VadotOptional properties for Zynq/Microblaze: 21*c66ec88fSEmmanuel Vadot- bus-range: PCI bus numbers covered 22*c66ec88fSEmmanuel Vadot 23*c66ec88fSEmmanuel VadotInterrupt controller child node 24*c66ec88fSEmmanuel Vadot+++++++++++++++++++++++++++++++ 25*c66ec88fSEmmanuel VadotRequired properties: 26*c66ec88fSEmmanuel Vadot- interrupt-controller: identifies the node as an interrupt controller 27*c66ec88fSEmmanuel Vadot- #address-cells: specifies the number of cells needed to encode an 28*c66ec88fSEmmanuel Vadot address. The value must be 0. 29*c66ec88fSEmmanuel Vadot- #interrupt-cells: specifies the number of cells needed to encode an 30*c66ec88fSEmmanuel Vadot interrupt source. The value must be 1. 31*c66ec88fSEmmanuel Vadot 32*c66ec88fSEmmanuel VadotNOTE: 33*c66ec88fSEmmanuel VadotThe core provides a single interrupt for both INTx/MSI messages. So, 34*c66ec88fSEmmanuel Vadotcreated a interrupt controller node to support 'interrupt-map' DT 35*c66ec88fSEmmanuel Vadotfunctionality. The driver will create an IRQ domain for this map, decode 36*c66ec88fSEmmanuel Vadotthe four INTx interrupts in ISR and route them to this domain. 37*c66ec88fSEmmanuel Vadot 38*c66ec88fSEmmanuel Vadot 39*c66ec88fSEmmanuel VadotExample: 40*c66ec88fSEmmanuel Vadot++++++++ 41*c66ec88fSEmmanuel VadotZynq: 42*c66ec88fSEmmanuel Vadot pci_express: axi-pcie@50000000 { 43*c66ec88fSEmmanuel Vadot #address-cells = <3>; 44*c66ec88fSEmmanuel Vadot #size-cells = <2>; 45*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 46*c66ec88fSEmmanuel Vadot compatible = "xlnx,axi-pcie-host-1.00.a"; 47*c66ec88fSEmmanuel Vadot reg = < 0x50000000 0x1000000 >; 48*c66ec88fSEmmanuel Vadot device_type = "pci"; 49*c66ec88fSEmmanuel Vadot interrupts = < 0 52 4 >; 50*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0 0 0 7>; 51*c66ec88fSEmmanuel Vadot interrupt-map = <0 0 0 1 &pcie_intc 1>, 52*c66ec88fSEmmanuel Vadot <0 0 0 2 &pcie_intc 2>, 53*c66ec88fSEmmanuel Vadot <0 0 0 3 &pcie_intc 3>, 54*c66ec88fSEmmanuel Vadot <0 0 0 4 &pcie_intc 4>; 55*c66ec88fSEmmanuel Vadot ranges = < 0x02000000 0 0x60000000 0x60000000 0 0x10000000 >; 56*c66ec88fSEmmanuel Vadot 57*c66ec88fSEmmanuel Vadot pcie_intc: interrupt-controller { 58*c66ec88fSEmmanuel Vadot interrupt-controller; 59*c66ec88fSEmmanuel Vadot #address-cells = <0>; 60*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 61*c66ec88fSEmmanuel Vadot }; 62*c66ec88fSEmmanuel Vadot }; 63*c66ec88fSEmmanuel Vadot 64*c66ec88fSEmmanuel Vadot 65*c66ec88fSEmmanuel VadotMicroblaze: 66*c66ec88fSEmmanuel Vadot pci_express: axi-pcie@10000000 { 67*c66ec88fSEmmanuel Vadot #address-cells = <3>; 68*c66ec88fSEmmanuel Vadot #size-cells = <2>; 69*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 70*c66ec88fSEmmanuel Vadot compatible = "xlnx,axi-pcie-host-1.00.a"; 71*c66ec88fSEmmanuel Vadot reg = <0x10000000 0x4000000>; 72*c66ec88fSEmmanuel Vadot device_type = "pci"; 73*c66ec88fSEmmanuel Vadot interrupt-parent = <µblaze_0_intc>; 74*c66ec88fSEmmanuel Vadot interrupts = <1 2>; 75*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0 0 0 7>; 76*c66ec88fSEmmanuel Vadot interrupt-map = <0 0 0 1 &pcie_intc 1>, 77*c66ec88fSEmmanuel Vadot <0 0 0 2 &pcie_intc 2>, 78*c66ec88fSEmmanuel Vadot <0 0 0 3 &pcie_intc 3>, 79*c66ec88fSEmmanuel Vadot <0 0 0 4 &pcie_intc 4>; 80*c66ec88fSEmmanuel Vadot ranges = <0x02000000 0x00000000 0x80000000 0x80000000 0x00000000 0x10000000>; 81*c66ec88fSEmmanuel Vadot 82*c66ec88fSEmmanuel Vadot pcie_intc: interrupt-controller { 83*c66ec88fSEmmanuel Vadot interrupt-controller; 84*c66ec88fSEmmanuel Vadot #address-cells = <0>; 85*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 86*c66ec88fSEmmanuel Vadot }; 87*c66ec88fSEmmanuel Vadot 88*c66ec88fSEmmanuel Vadot }; 89