0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/pci/intel,ixp4xx-pci.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: Intel IXP4xx PCI controller
0008
0009 maintainers:
0010 - Linus Walleij <linus.walleij@linaro.org>
0011
0012 description: PCI host controller found in the Intel IXP4xx SoC series.
0013
0014 allOf:
0015 - $ref: /schemas/pci/pci-bus.yaml#
0016
0017 properties:
0018 compatible:
0019 items:
0020 - enum:
0021 - intel,ixp42x-pci
0022 - intel,ixp43x-pci
0023 description: The two supported variants are ixp42x and ixp43x,
0024 though more variants may exist.
0025
0026 reg:
0027 items:
0028 - description: IXP4xx-specific registers
0029
0030 interrupts:
0031 items:
0032 - description: Main PCI interrupt
0033 - description: PCI DMA interrupt 1
0034 - description: PCI DMA interrupt 2
0035
0036 ranges:
0037 maxItems: 2
0038 description: Typically one memory range of 64MB and one IO
0039 space range of 64KB.
0040
0041 dma-ranges:
0042 maxItems: 1
0043 description: The DMA range tells the PCI host which addresses
0044 the RAM is at. It can map only 64MB so if the RAM is bigger
0045 than 64MB the DMA access has to be restricted to these
0046 addresses.
0047
0048 "#interrupt-cells": true
0049
0050 interrupt-map: true
0051
0052 interrupt-map-mask:
0053 items:
0054 - const: 0xf800
0055 - const: 0
0056 - const: 0
0057 - const: 7
0058
0059 required:
0060 - compatible
0061 - reg
0062 - dma-ranges
0063 - "#interrupt-cells"
0064 - interrupt-map
0065 - interrupt-map-mask
0066
0067 unevaluatedProperties: false
0068
0069 examples:
0070 - |
0071 pci@c0000000 {
0072 compatible = "intel,ixp43x-pci";
0073 reg = <0xc0000000 0x1000>;
0074 #address-cells = <3>;
0075 #size-cells = <2>;
0076 device_type = "pci";
0077 bus-range = <0x00 0xff>;
0078
0079 ranges =
0080 <0x02000000 0 0x48000000 0x48000000 0 0x04000000>,
0081 <0x01000000 0 0x00000000 0x4c000000 0 0x00010000>;
0082 dma-ranges =
0083 <0x02000000 0 0x00000000 0x00000000 0 0x04000000>;
0084
0085 #interrupt-cells = <1>;
0086 interrupt-map-mask = <0xf800 0 0 7>;
0087 interrupt-map =
0088 <0x0800 0 0 1 &gpio0 11 3>, /* INT A on slot 1 is irq 11 */
0089 <0x0800 0 0 2 &gpio0 10 3>, /* INT B on slot 1 is irq 10 */
0090 <0x0800 0 0 3 &gpio0 9 3>, /* INT C on slot 1 is irq 9 */
0091 <0x0800 0 0 4 &gpio0 8 3>, /* INT D on slot 1 is irq 8 */
0092 <0x1000 0 0 1 &gpio0 10 3>, /* INT A on slot 2 is irq 10 */
0093 <0x1000 0 0 2 &gpio0 9 3>, /* INT B on slot 2 is irq 9 */
0094 <0x1000 0 0 3 &gpio0 8 3>, /* INT C on slot 2 is irq 8 */
0095 <0x1000 0 0 4 &gpio0 11 3>, /* INT D on slot 2 is irq 11 */
0096 <0x1800 0 0 1 &gpio0 9 3>, /* INT A on slot 3 is irq 9 */
0097 <0x1800 0 0 2 &gpio0 8 3>, /* INT B on slot 3 is irq 8 */
0098 <0x1800 0 0 3 &gpio0 11 3>, /* INT C on slot 3 is irq 11 */
0099 <0x1800 0 0 4 &gpio0 10 3>; /* INT D on slot 3 is irq 10 */
0100 };