PCIE device tree bindings - Could you help me to understand?

Murali Karicheri m-karicheri2 at ti.com
Fri Mar 8 02:01:39 EST 2013


On 3/7/2013 4:34 AM, Prabhakar Lad wrote:
> Hi Murali,
>
> On Wed, Mar 6, 2013 at 11:37 PM, Murali Karicheri <m-karicheri2 at ti.com> wrote:
>> Hello All,
>>
>> I am working to develop a PCIE driver that requires DT bindings. Could
>> someone point me to a documentation or code or explain how to interpret the
>> following device tree bindings. I understand the reg property only. There is
>> outbound PCIE memory and inbound PCIE memory. But can't understand the below
>> bindings for the same. Also how the interrupt mapping works? Below dts
> Refer the following links [1] [2] it gives the good explanation for
> your above query.
>
> [1] http://devicetree.org/Device_Tree_Usage#PCI_Host_Bridge
> [2] http://devicetree.org/MPC5200:PCI
>
> Regards,
> --Prabhakar Lad
Prabhakar,

Thanks. I will take a look. Do you know if there is example PCI/PCIE 
host controller driver running on ARM that I can refer to?

Murali
>> bindings is copied from powerpc/boot/dts/ep405.dts. Surprisingly I am not
>> seeing any example pcie bindings on ARM architecture even though there PCI
>> or PCIE drivers available on ARM. Your help is appreciated.
>>
>>                  PCI0: pci at ec000000 {
>>                          device_type = "pci";
>>                          #interrupt-cells = <1>;
>>                          #size-cells = <2>;
>>                          #address-cells = <3>;
>>                          compatible = "ibm,plb405gp-pci", "ibm,plb-pci";
>>                          primary;
>>                          reg = <0xeec00000 0x00000008    /* Config space
>> access */
>>                                 0xeed80000 0x00000004    /* IACK */
>>                                 0xeed80000 0x00000004    /* Special cycle */
>>                                 0xef480000 0x00000040>;  /* Internal
>> registers */
>>
>>                          /* Outbound ranges, one memory and one IO,
>>                           * later cannot be changed. Chip supports a second
>>                           * IO range but we don't use it for now
>>                           */
>>                          ranges = <0x02000000 0x00000000 0x80000000
>> 0x80000000 0x00000000 0x20000000
>>                                    0x01000000 0x00000000 0x00000000
>> 0xe8000000 0x00000000 0x00010000>;
>>
>>                          /* Inbound 2GB range starting at 0 */
>>                          dma-ranges = <0x42000000 0x0 0x0 0x0 0x0
>> 0x80000000>;
>>
>>                          /* That's all I know about IRQs on that thing ... */
>>                          interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
>>                          interrupt-map = <
>>                                  /* USB */
>>                                  0x7000 0x0 0x0 0x0 &UIC0 0x1e 0x8 /* IRQ5 */
>>                          >;
>>                  };
>>
>>
>> _______________________________________________
>> devicetree-discuss mailing list
>> devicetree-discuss at lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/devicetree-discuss



More information about the devicetree-discuss mailing list