| Brcmstb PCIe Host Controller Device Tree Bindings |
| |
| Introduction: |
| |
| The brcmstb host controller closely follows the example set in |
| |
| [1] http://devicetree.org/Device_Tree_Usage#PCI_Host_Bridge |
| |
| The rest of this document explains some added customizations and |
| offers an example Brcmstb PCIe host controller DT node. |
| |
| Required Properties: |
| reg -- the register start address and length for the PCIe block. |
| Additional start,length pairs may be specified for clock addresses. |
| interrupts -- this must be specified but it is used indirectly. Interrupt |
| zero must be specified; the Brcmstb driver code uses this interrupt |
| to determine the offset used for all interrupts, specifically, those |
| listed in interrupt-map. |
| compatible -- must specify the string "brcm,pci-plat-dev". |
| #address-cells -- the number of address cells for PCI-space. |
| #size-cells -- the number of size cells for PCI-space. |
| ranges -- See [1]; a specification of the outbound windows for the host |
| controller. Each outbound window is described by a 7-tuple: |
| (3 entries) -- PCIe space start address (0th entry is ignored). |
| (2 entries) -- CPU/System start address |
| (2 entries) -- Size of region. |
| Due to hardware limitations, there may be a maximum of four windows |
| specified. |
| #interrupt-cells -- number of cells used to describe the interrupt. |
| interrupt-map -- See [1]; each interrupt requires 7 entries, and |
| currently all but the fifth entry (order 0) -- the interrupt |
| number -- is ignored. There must be four interrupts specified |
| for the PCI's INTA, INTB, INTC, and INTD. |
| |
| Optional Properties: |
| interrupt-names -- names of the interrupts listed in the interrupt map. |
| clocks -- list of clock phandles. If specified, this should list one |
| clock. |
| clock-names -- the "local" names of the clocks specified in 'clocks'. Note |
| that if the 'clocks' property is given, 'clock-names' is mandatory, |
| and the name of the clock is expected to be "sw_pcie". |
| brcm,ssc -- (boolean) indicates usage of spread-spectrum clocking. |
| brcm,gen -- (integer) indicates desired generation of link: |
| 1 => 2.5 Gbps, 2 => 5.0 Gbps, 3 => 8.0 Gbps. |
| |
| Example Node: |
| |
| pcie@f0460000 { |
| reg = <0x0 0xf0460000 0x0 0x9310>; |
| interrupts = <0x0 0x0 0x4>; |
| compatible = "brcm,pci-plat-dev"; |
| #address-cells = <3>; |
| #size-cells = <2>; |
| ranges = <0x02000000 0x00000000 0x00000000 0x00000000 0xc0000000 0x00000000 0x08000000 |
| 0x02000000 0x00000000 0x08000000 0x00000000 0xc8000000 0x00000000 0x08000000>; |
| #interrupt-cells = <1>; |
| interrupt-map-mask = <0xf800 0 0 7>; |
| interrupt-map = <0 0 0 1 &intc 47 3 |
| 0 0 0 2 &intc 48 3 |
| 0 0 0 3 &intc 49 3 |
| 0 0 0 4 &intc 50 3>; |
| interrupt-names = "pcie_0_inta", |
| "pcie_0_intb", |
| "pcie_0_intc", |
| "pcie_0_intd"; |
| clocks = <&sw_pcie0>; |
| clock-names = "sw_pcie"; |
| brcm,ssc; |
| brcm,gen = <1>; |
| }; |